5 Commits

Author SHA1 Message Date
56318f28cf 1.2.1 2016-11-23 12:44:37 +01:00
32b26f21cd improve README 2016-11-23 12:44:31 +01:00
32c2698af7 1.2.0 2016-11-23 12:38:45 +01:00
27237f14c7 update to latest standards 2016-11-23 12:38:38 +01:00
8f29f234f1 introducde more flexible pathing 2016-06-28 02:10:51 +02:00
29 changed files with 640 additions and 600 deletions

9
.gitignore vendored
View File

@ -1,8 +1,5 @@
.idea/
node_modules/ node_modules/
coverage/ coverage/
docs/ pages/
ts/typings/ public/
ts/*.js test/temp/
ts/*.js.map
test/temp/

View File

@ -3,7 +3,16 @@ image: hosttoday/ht-docker-node:npmts
stages: stages:
- test - test
- release - release
- page - trigger
- pages
testLEGACY:
stage: test
script:
- npmci test legacy
tags:
- docker
allow_failure: true
testLTS: testLTS:
stage: test stage: test
@ -11,7 +20,6 @@ testLTS:
- npmci test lts - npmci test lts
tags: tags:
- docker - docker
- lossless
testSTABLE: testSTABLE:
stage: test stage: test
@ -19,13 +27,6 @@ testSTABLE:
- npmci test stable - npmci test stable
tags: tags:
- docker - docker
- lossless
testLEGACY:
stage: test
script:
- npmci test legacy
allow_failure: true
release: release:
stage: release stage: release
@ -35,4 +36,24 @@ release:
- tags - tags
tags: tags:
- docker - docker
- lossless
trigger:
stage: trigger
script:
- npmci trigger
only:
- tags
tags:
- docker
pages:
image: hosttoday/ht-docker-node:npmpage
stage: pages
script:
- npmci command npmpage --host gitlab
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public

View File

@ -3,6 +3,23 @@ setups SSH quickly and in a painless manner
> Attention: This is still alpha, so some things won't work, not all things are inplemented. > Attention: This is still alpha, so some things won't work, not all things are inplemented.
## Availabililty
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartssh)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/smartssh)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartssh)
[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartssh/)
## Status for master
[![build status](https://gitlab.com/pushrocks/smartssh/badges/master/build.svg)](https://gitlab.com/pushrocks/smartssh/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartssh/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartssh/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/smartssh.svg)](https://www.npmjs.com/package/smartssh)
[![Dependency Status](https://david-dm.org/pushrocks/smartssh.svg)](https://david-dm.org/pushrocks/smartssh)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartssh/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartssh/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/smartssh/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartssh)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
```javascript ```javascript
@ -32,3 +49,5 @@ sshInstance.getKey({ // returns ssh key in the form sshKey, read more about the
sshInstance.getKeys() // returns array of all available getKeys. Each key is in form of class sshKey sshInstance.getKeys() // returns array of all available getKeys. Each key is in form of class sshKey
``` ```
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

10
dist/index.d.ts vendored
View File

@ -1,5 +1,5 @@
import "typings-global"; import 'typings-global';
export { SshInstance } from "./smartssh.classes.sshinstance"; export { SshInstance } from './smartssh.classes.sshinstance';
export { SshKey } from "./smartssh.classes.sshkey"; export { SshKey } from './smartssh.classes.sshkey';
export { SshDir } from "./smartssh.classes.sshdir"; export { SshDir } from './smartssh.classes.sshdir';
export { SshConfig } from "./smartssh.classes.sshconfig"; export { SshConfig } from './smartssh.classes.sshconfig';

3
dist/index.js vendored
View File

@ -8,5 +8,4 @@ var smartssh_classes_sshdir_1 = require("./smartssh.classes.sshdir");
exports.SshDir = smartssh_classes_sshdir_1.SshDir; exports.SshDir = smartssh_classes_sshdir_1.SshDir;
var smartssh_classes_sshconfig_1 = require("./smartssh.classes.sshconfig"); var smartssh_classes_sshconfig_1 = require("./smartssh.classes.sshconfig");
exports.SshConfig = smartssh_classes_sshconfig_1.SshConfig; exports.SshConfig = smartssh_classes_sshconfig_1.SshConfig;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBR3ZCLCtFQUEwRDtBQUFsRCxxREFBQSxXQUFXLENBQUE7QUFDbkIscUVBQWdEO0FBQXhDLDJDQUFBLE1BQU0sQ0FBQTtBQUNkLHFFQUFnRDtBQUF4QywyQ0FBQSxNQUFNLENBQUE7QUFDZCwyRUFBc0Q7QUFBOUMsaURBQUEsU0FBUyxDQUFBIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUNQLENBQUMsQ0FEc0I7QUFHdkIsNkNBQTBCLGdDQUFnQyxDQUFDO0FBQW5ELGlFQUFtRDtBQUMzRCx3Q0FBcUIsMkJBQTJCLENBQUM7QUFBekMsa0RBQXlDO0FBQ2pELHdDQUFxQiwyQkFBMkIsQ0FBQztBQUF6QyxrREFBeUM7QUFDakQsMkNBQXdCLDhCQUE4QixDQUFDO0FBQS9DLDJEQUErQyIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCJcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vc21hcnRzc2gucGx1Z2luc1wiO1xuXG5leHBvcnQge1NzaEluc3RhbmNlfSBmcm9tIFwiLi9zbWFydHNzaC5jbGFzc2VzLnNzaGluc3RhbmNlXCI7XG5leHBvcnQge1NzaEtleX0gZnJvbSBcIi4vc21hcnRzc2guY2xhc3Nlcy5zc2hrZXlcIjtcbmV4cG9ydCB7U3NoRGlyfSBmcm9tIFwiLi9zbWFydHNzaC5jbGFzc2VzLnNzaGRpclwiO1xuZXhwb3J0IHtTc2hDb25maWd9IGZyb20gXCIuL3NtYXJ0c3NoLmNsYXNzZXMuc3NoY29uZmlnXCI7Il19

View File

@ -1,3 +1,3 @@
import "typings-global"; import 'typings-global';
import { SshKey } from "./smartssh.classes.sshkey"; import { SshKey } from './smartssh.classes.sshkey';
export declare let sshKeyArrayFromDir: (dirArg: string) => SshKey[]; export declare let sshKeyArrayFromDir: (dirArg: string) => SshKey[];

View File

@ -1,8 +1,7 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
exports.sshKeyArrayFromDir = function (dirArg) { exports.sshKeyArrayFromDir = function (dirArg) {
var sshKeyArray = []; //TODO let sshKeyArray = []; // TODO
return sshKeyArray; return sshKeyArray;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzc2guY2xhc3Nlcy5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRzc2guY2xhc3Nlcy5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBdUI7QUFJWixRQUFBLGtCQUFrQixHQUFHLFVBQVMsTUFBYztJQUNuRCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUEsQ0FBQyxPQUFPO0lBQzVCLE1BQU0sQ0FBQyxXQUFXLENBQUE7QUFDdEIsQ0FBQyxDQUFBIn0=
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0c3NoLmNsYXNzZXMuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFDUCxDQUFDLENBRHNCO0FBSVosMEJBQWtCLEdBQUcsVUFBUyxNQUFhO0lBQ2xELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07SUFDNUIsTUFBTSxDQUFDLFdBQVcsQ0FBQztBQUN2QixDQUFDLENBQUEiLCJmaWxlIjoic21hcnRzc2guY2xhc3Nlcy5oZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIlxuaW1wb3J0ICogYXMgcGx1Z2lucyBmcm9tIFwiLi9zbWFydHNzaC5wbHVnaW5zXCI7XG5pbXBvcnQge1NzaEtleX0gZnJvbSBcIi4vc21hcnRzc2guY2xhc3Nlcy5zc2hrZXlcIjtcblxuZXhwb3J0IGxldCBzc2hLZXlBcnJheUZyb21EaXIgPSBmdW5jdGlvbihkaXJBcmc6c3RyaW5nKTpTc2hLZXlbXXtcbiAgICBsZXQgc3NoS2V5QXJyYXkgPSBbXTsgLy9UT0RPXG4gICAgcmV0dXJuIHNzaEtleUFycmF5O1xufSJdfQ==

View File

@ -1,13 +1,14 @@
import "typings-global"; /// <reference types="q" />
import { SshKey } from "./smartssh.classes.sshkey"; import 'typings-global';
import { SshKey } from './smartssh.classes.sshkey';
export declare class SshConfig { export declare class SshConfig {
sshKeyArray: SshKey[]; private _sshKeyArray;
constructor(sshKeyArrayArg: SshKey[]); constructor(sshKeyArrayArg: SshKey[]);
/** /**
* stores a config file * stores a config file
*/ */
store(dirPathArg: string): any; store(dirPathArg: string): Q.Promise<{}>;
read(dirPathArg: any): any; read(dirPathArg: any): Q.Promise<{}>;
} }
export interface configObject { export interface configObject {
configString: string; configString: string;

View File

@ -1,24 +1,24 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./smartssh.plugins"); const plugins = require("./smartssh.plugins");
var SshConfig = (function () { class SshConfig {
function SshConfig(sshKeyArrayArg) { constructor(sshKeyArrayArg) {
this.sshKeyArray = sshKeyArrayArg; this._sshKeyArray = sshKeyArrayArg;
} }
/** /**
* stores a config file * stores a config file
*/ */
SshConfig.prototype.store = function (dirPathArg) { store(dirPathArg) {
var done = plugins.q.defer(); let done = plugins.q.defer();
var configArray = []; let configArray = [];
var configString; let configString;
for (var key in this.sshKeyArray) { for (let key in this._sshKeyArray) {
var sshKey = this.sshKeyArray[key]; let sshKey = this._sshKeyArray[key];
if (sshKey.host) { if (sshKey.host) {
configString = "Host " + sshKey.host + "\n" + configString = 'Host ' + sshKey.host + '\n' +
" HostName " + sshKey.host + "\n" + ' HostName ' + sshKey.host + '\n' +
" IdentityFile ~/.ssh/" + sshKey.host + "\n" + ' IdentityFile ~/.ssh/' + sshKey.host + '\n' +
" StrictHostKeyChecking no" + "\n"; ' StrictHostKeyChecking no' + '\n';
} }
configArray.push({ configArray.push({
configString: configString, configString: configString,
@ -26,23 +26,22 @@ var SshConfig = (function () {
sshKey: sshKey sshKey: sshKey
}); });
} }
var configFile = ""; let configFile = '';
for (var key in configArray) { for (let key in configArray) {
configFile = configFile + configArray[key].configString + "\n"; configFile = configFile + configArray[key].configString + '\n';
} }
; ;
plugins.smartfile.memory.toFsSync(configFile, plugins.path.join(dirPathArg, "config")); plugins.smartfile.memory.toFsSync(configFile, plugins.path.join(dirPathArg, 'config'));
return done.promise; return done.promise;
}; }
SshConfig.prototype.read = function (dirPathArg) { read(dirPathArg) {
var done = plugins.q.defer(); let done = plugins.q.defer();
var configArray; let configArray;
plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, 'config'));
return done.promise; return done.promise;
}; }
return SshConfig; }
}());
exports.SshConfig = SshConfig; exports.SshConfig = SshConfig;
; ;
; ;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzc2guY2xhc3Nlcy5zc2hjb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNzaC5jbGFzc2VzLnNzaGNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLDhDQUE2QztBQUk3QztJQUVJLFlBQVksY0FBd0I7UUFDaEMsSUFBSSxDQUFDLFlBQVksR0FBRyxjQUFjLENBQUE7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQWtCO1FBQ3BCLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDNUIsSUFBSSxXQUFXLEdBQW1CLEVBQUUsQ0FBQTtRQUNwQyxJQUFJLFlBQVksQ0FBQTtRQUNoQixHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ25DLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNkLFlBQVksR0FBRyxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJO29CQUN4QixhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJO29CQUNsQyx3QkFBd0IsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUk7b0JBQzdDLDRCQUE0QixHQUFHLElBQUksQ0FBQTtZQUMxRCxDQUFDO1lBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQztnQkFDYixZQUFZLEVBQUUsWUFBWTtnQkFDMUIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO2dCQUM3QixNQUFNLEVBQUUsTUFBTTthQUNqQixDQUFDLENBQUE7UUFDTixDQUFDO1FBQ0QsSUFBSSxVQUFVLEdBQVcsRUFBRSxDQUFBO1FBQzNCLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsVUFBVSxHQUFHLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQTtRQUNsRSxDQUFDO1FBQUEsQ0FBQztRQUNGLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7UUFDcEYsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7SUFDdkIsQ0FBQztJQUNELElBQUksQ0FBQyxVQUFVO1FBQ1gsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUM1QixJQUFJLFdBQTJCLENBQUE7UUFDL0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO1FBRXpFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBQ3ZCLENBQUM7Q0FDSjtBQXpDRCw4QkF5Q0M7QUFBQSxDQUFDO0FBTUQsQ0FBQyJ9
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0c3NoLmNsYXNzZXMuc3NoY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBWSxPQUFPLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUk5QztJQUVJLG1CQUFZLGNBQXVCO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILHlCQUFLLEdBQUwsVUFBTSxVQUFpQjtRQUNuQixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksV0FBVyxHQUFrQixFQUFFLENBQUM7UUFDcEMsSUFBSSxZQUFZLENBQUM7UUFDakIsR0FBRyxDQUFBLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBLENBQUM7WUFDN0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxFQUFFLENBQUEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQztnQkFDWixZQUFZLEdBQUcsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSTtvQkFDeEIsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSTtvQkFDbEMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJO29CQUM3Qyw0QkFBNEIsR0FBRyxJQUFJLENBQUE7WUFDMUQsQ0FBQztZQUNELFdBQVcsQ0FBQyxJQUFJLENBQUM7Z0JBQ2IsWUFBWSxFQUFDLFlBQVk7Z0JBQ3pCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsTUFBTSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksVUFBVSxHQUFVLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQSxDQUFDO1lBQ3hCLFVBQVUsR0FBRyxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDbkUsQ0FBQztRQUFBLENBQUM7UUFDRixPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDRCx3QkFBSSxHQUFKLFVBQUssVUFBVTtRQUNYLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxXQUEwQixDQUFDO1FBRS9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFDTCxnQkFBQztBQUFELENBeENBLEFBd0NDLElBQUE7QUF4Q1ksaUJBQVMsWUF3Q3JCLENBQUE7QUFBQSxDQUFDO0FBTUQsQ0FBQyIsImZpbGUiOiJzbWFydHNzaC5jbGFzc2VzLnNzaGNvbmZpZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInR5cGluZ3MtZ2xvYmFsXCI7XG5pbXBvcnQgKiBhcyBwbHVnaW5zIGZyb20gXCIuL3NtYXJ0c3NoLnBsdWdpbnNcIjtcbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSBcIi4vc21hcnRzc2guY2xhc3Nlcy5oZWxwZXJzXCI7XG5pbXBvcnQge1NzaEtleX0gZnJvbSBcIi4vc21hcnRzc2guY2xhc3Nlcy5zc2hrZXlcIlxuXG5leHBvcnQgY2xhc3MgU3NoQ29uZmlnIHtcbiAgICBzc2hLZXlBcnJheTpTc2hLZXlbXTtcbiAgICBjb25zdHJ1Y3Rvcihzc2hLZXlBcnJheUFyZzpTc2hLZXlbXSl7XG4gICAgICAgIHRoaXMuc3NoS2V5QXJyYXkgPSBzc2hLZXlBcnJheUFyZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzdG9yZXMgYSBjb25maWcgZmlsZVxuICAgICAqL1xuICAgIHN0b3JlKGRpclBhdGhBcmc6c3RyaW5nKXtcbiAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICAgICAgbGV0IGNvbmZpZ0FycmF5OmNvbmZpZ09iamVjdFtdID0gW107XG4gICAgICAgIGxldCBjb25maWdTdHJpbmc7XG4gICAgICAgIGZvcihsZXQga2V5IGluIHRoaXMuc3NoS2V5QXJyYXkpe1xuICAgICAgICAgICAgbGV0IHNzaEtleSA9IHRoaXMuc3NoS2V5QXJyYXlba2V5XTtcbiAgICAgICAgICAgIGlmKHNzaEtleS5ob3N0KXtcbiAgICAgICAgICAgICAgICBjb25maWdTdHJpbmcgPSBcIkhvc3QgXCIgKyBzc2hLZXkuaG9zdCArIFwiXFxuXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAgSG9zdE5hbWUgXCIgKyBzc2hLZXkuaG9zdCArIFwiXFxuXCIgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAgSWRlbnRpdHlGaWxlIH4vLnNzaC9cIiArIHNzaEtleS5ob3N0ICsgXCJcXG5cIiArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICBTdHJpY3RIb3N0S2V5Q2hlY2tpbmcgbm9cIiArIFwiXFxuXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LnB1c2goe1xuICAgICAgICAgICAgICAgIGNvbmZpZ1N0cmluZzpjb25maWdTdHJpbmcsXG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogc3NoS2V5LmF1dGhvcml6ZWQsXG4gICAgICAgICAgICAgICAgc3NoS2V5OiBzc2hLZXlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb25maWdGaWxlOnN0cmluZyA9IFwiXCI7XG4gICAgICAgIGZvcihsZXQga2V5IGluIGNvbmZpZ0FycmF5KXtcbiAgICAgICAgICAgIGNvbmZpZ0ZpbGUgPSBjb25maWdGaWxlICsgY29uZmlnQXJyYXlba2V5XS5jb25maWdTdHJpbmcgKyBcIlxcblwiO1xuICAgICAgICB9O1xuICAgICAgICBwbHVnaW5zLnNtYXJ0ZmlsZS5tZW1vcnkudG9Gc1N5bmMoY29uZmlnRmlsZSxwbHVnaW5zLnBhdGguam9pbihkaXJQYXRoQXJnLFwiY29uZmlnXCIpKTtcbiAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbiAgICB9XG4gICAgcmVhZChkaXJQYXRoQXJnKXtcbiAgICAgICAgbGV0IGRvbmUgPSBwbHVnaW5zLnEuZGVmZXIoKTtcbiAgICAgICAgbGV0IGNvbmZpZ0FycmF5OmNvbmZpZ09iamVjdFtdO1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIGRvbmUucHJvbWlzZTtcbiAgICB9XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIGNvbmZpZ09iamVjdCB7XG4gICAgY29uZmlnU3RyaW5nOnN0cmluZztcbiAgICBhdXRob3JpemVkOmJvb2xlYW47XG4gICAgc3NoS2V5OlNzaEtleTtcbn07XG5cbiJdfQ==

View File

@ -1,13 +1,13 @@
import "typings-global"; import 'typings-global';
import { SshKey } from "./smartssh.classes.sshkey"; import { SshKey } from './smartssh.classes.sshkey';
import { SshConfig } from "./smartssh.classes.sshconfig"; import { SshConfig } from './smartssh.classes.sshconfig';
export declare class SshDir { export declare class SshDir {
private _path; private _path;
private _sshKeyArray; private _sshKeyArray;
private _sshConfig; private _sshConfig;
constructor(sshKeyArray: SshKey[], sshConfig: SshConfig, sshDirPathArg?: string); constructor(sshKeyArray: SshKey[], sshConfig: SshConfig, sshDirPathArg?: string);
writeToDir(): void; writeToDir(dirPathArg?: string): void;
readFromDir(): void; readFromDir(dirPathArg?: string): void;
updateDirPath(dirPathArg: string): void; updateDirPath(dirPathArg: string): void;
getKeys(): SshKey[]; getKeys(): SshKey[];
} }

View File

@ -1,38 +1,41 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./smartssh.plugins"); const plugins = require("./smartssh.plugins");
var helpers = require("./smartssh.classes.helpers"); const helpers = require("./smartssh.classes.helpers");
var SshDir = (function () { class SshDir {
function SshDir(sshKeyArray, sshConfig, sshDirPathArg) { constructor(sshKeyArray, sshConfig, sshDirPathArg) {
this._sshKeyArray = sshKeyArray; this._sshKeyArray = sshKeyArray;
this._sshConfig = sshConfig; this._sshConfig = sshConfig;
if (sshDirPathArg) { if (sshDirPathArg) {
this._path = sshDirPathArg; this._path = sshDirPathArg;
} }
else { else {
this._path = plugins.path.join(plugins.smartpath.get.home(), ".ssh/"); this._path = plugins.path.join(plugins.smartpath.get.home(), '.ssh/');
} }
; ;
} }
SshDir.prototype.writeToDir = function () { writeToDir(dirPathArg) {
var _this = this; let path = this._path;
this._sshKeyArray.forEach(function (sshKeyArg) { if (dirPathArg)
sshKeyArg.store(_this._path); path = dirPathArg;
this._sshKeyArray.forEach((sshKeyArg) => {
sshKeyArg.store(path);
}); });
this._sshConfig.store(this._path); this._sshConfig.store(path);
}; }
; ;
SshDir.prototype.readFromDir = function () { readFromDir(dirPathArg) {
}; let path = this._path;
SshDir.prototype.updateDirPath = function (dirPathArg) { if (dirPathArg)
path = dirPathArg;
}
updateDirPath(dirPathArg) {
this._path = dirPathArg; this._path = dirPathArg;
}; }
; ;
SshDir.prototype.getKeys = function () { getKeys() {
return helpers.sshKeyArrayFromDir(this._path); return helpers.sshKeyArrayFromDir(this._path);
}; }
return SshDir; }
}());
exports.SshDir = SshDir; exports.SshDir = SshDir;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzc2guY2xhc3Nlcy5zc2hkaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydHNzaC5jbGFzc2VzLnNzaGRpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLDhDQUE2QztBQUM3QyxzREFBcUQ7QUFJckQ7SUFJSSxZQUFZLFdBQXFCLEVBQUMsU0FBb0IsRUFBQyxhQUFzQjtRQUN6RSxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQTtRQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQTtRQUMzQixFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFBO1FBQzlCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEUsQ0FBQztRQUFBLENBQUM7SUFDTixDQUFDO0lBQ0QsVUFBVSxDQUFDLFVBQW1CO1FBQzFCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDckIsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQTtRQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVM7WUFDaEMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFBQSxDQUFDO0lBQ0YsV0FBVyxDQUFDLFVBQW1CO1FBQzNCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDckIsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDO1lBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQWtCO1FBQzVCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFBO0lBQzNCLENBQUM7SUFBQSxDQUFDO0lBQ0YsT0FBTztRQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2pELENBQUM7Q0FDSjtBQS9CRCx3QkErQkMifQ==
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0c3NoLmNsYXNzZXMuc3NoZGlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFDeEIsSUFBWSxPQUFPLFdBQU0sb0JBQW9CLENBQUMsQ0FBQTtBQUM5QyxJQUFZLE9BQU8sV0FBTSw0QkFBNEIsQ0FBQyxDQUFBO0FBSXREO0lBSUksZ0JBQVksV0FBb0IsRUFBQyxTQUFtQixFQUFDLGFBQXFCO1FBQ3RFLElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLEVBQUUsQ0FBQSxDQUFDLGFBQWEsQ0FBQyxDQUFBLENBQUM7WUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQztRQUMvQixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFBQSxDQUFDO0lBQ04sQ0FBQztJQUNELDJCQUFVLEdBQVY7UUFBQSxpQkFLQztRQUpHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQUMsU0FBUztZQUNoQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDOztJQUNELDRCQUFXLEdBQVg7SUFFQSxDQUFDO0lBQ0QsOEJBQWEsR0FBYixVQUFjLFVBQWlCO1FBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDO0lBQzVCLENBQUM7O0lBQ0Qsd0JBQU8sR0FBUDtRQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDTCxhQUFDO0FBQUQsQ0E1QkEsQUE0QkMsSUFBQTtBQTVCWSxjQUFNLFNBNEJsQixDQUFBIiwiZmlsZSI6InNtYXJ0c3NoLmNsYXNzZXMuc3NoZGlyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIjtcbmltcG9ydCAqIGFzIHBsdWdpbnMgZnJvbSBcIi4vc21hcnRzc2gucGx1Z2luc1wiO1xuaW1wb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi9zbWFydHNzaC5jbGFzc2VzLmhlbHBlcnNcIjtcbmltcG9ydCB7U3NoSW5zdGFuY2V9IGZyb20gXCIuL3NtYXJ0c3NoLmNsYXNzZXMuc3NoaW5zdGFuY2VcIjtcbmltcG9ydCB7U3NoS2V5fSBmcm9tIFwiLi9zbWFydHNzaC5jbGFzc2VzLnNzaGtleVwiO1xuaW1wb3J0IHtTc2hDb25maWd9IGZyb20gXCIuL3NtYXJ0c3NoLmNsYXNzZXMuc3NoY29uZmlnXCI7XG5leHBvcnQgY2xhc3MgU3NoRGlyIHsgLy8gc3NoRGlyIGNsYXNzIC0+IE5PVCBFWFBPUlRFRCwgT05MWSBGT1IgSU5URVJOQUwgVVNFXG4gICAgcHJpdmF0ZSBfcGF0aDpzdHJpbmc7IC8vIHRoZSBwYXRoIG9mIHRoZSBzc2ggZGlyZWN0b3J5XG4gICAgcHJpdmF0ZSBfc3NoS2V5QXJyYXk6U3NoS2V5W107XG4gICAgcHJpdmF0ZSBfc3NoQ29uZmlnOlNzaENvbmZpZztcbiAgICBjb25zdHJ1Y3Rvcihzc2hLZXlBcnJheTpTc2hLZXlbXSxzc2hDb25maWc6U3NoQ29uZmlnLHNzaERpclBhdGhBcmc/OnN0cmluZyl7XG4gICAgICAgIHRoaXMuX3NzaEtleUFycmF5ID0gc3NoS2V5QXJyYXk7XG4gICAgICAgIHRoaXMuX3NzaENvbmZpZyA9IHNzaENvbmZpZztcbiAgICAgICAgaWYoc3NoRGlyUGF0aEFyZyl7XG4gICAgICAgICAgICB0aGlzLl9wYXRoID0gc3NoRGlyUGF0aEFyZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3BhdGggPSBwbHVnaW5zLnBhdGguam9pbihwbHVnaW5zLnNtYXJ0cGF0aC5nZXQuaG9tZSgpLFwiLnNzaC9cIik7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHdyaXRlVG9EaXIoKXsgLy8gc3luY3Mgc3NoSW5zdGFuY2UgdG8gZGlyZWN0b3J5XG4gICAgICAgIHRoaXMuX3NzaEtleUFycmF5LmZvckVhY2goKHNzaEtleUFyZykgPT4ge1xuICAgICAgICAgICAgc3NoS2V5QXJnLnN0b3JlKHRoaXMuX3BhdGgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fc3NoQ29uZmlnLnN0b3JlKHRoaXMuX3BhdGgpO1xuICAgIH07XG4gICAgcmVhZEZyb21EaXIoKXsgLy8gc3luY3Mgc3NoSW5zdGFuY2UgZnJvbSBkaXJlY3RvcnlcbiAgICAgICAgXG4gICAgfVxuICAgIHVwZGF0ZURpclBhdGgoZGlyUGF0aEFyZzpzdHJpbmcpe1xuICAgICAgICB0aGlzLl9wYXRoID0gZGlyUGF0aEFyZztcbiAgICB9O1xuICAgIGdldEtleXMoKXtcbiAgICAgICAgcmV0dXJuIGhlbHBlcnMuc3NoS2V5QXJyYXlGcm9tRGlyKHRoaXMuX3BhdGgpO1xuICAgIH1cbn0iXX0=

View File

@ -1,5 +1,5 @@
import "typings-global"; import 'typings-global';
import { SshKey } from "./smartssh.classes.sshkey"; import { SshKey } from './smartssh.classes.sshkey';
export declare class SshInstance { export declare class SshInstance {
private _sshKeyArray; private _sshKeyArray;
private _sshConfig; private _sshConfig;
@ -13,15 +13,15 @@ export declare class SshInstance {
removeKey(sshKeyArg: SshKey): void; removeKey(sshKeyArg: SshKey): void;
replaceKey(sshKeyOldArg: SshKey, sshKeyNewArg: SshKey): void; replaceKey(sshKeyOldArg: SshKey, sshKeyNewArg: SshKey): void;
getKey(hostArg: string): SshKey; getKey(hostArg: string): SshKey;
sshKeys: SshKey[]; readonly sshKeys: SshKey[];
/** /**
* write SshInstance to disk * write SshInstance to disk
*/ */
writeToDisk(): void; writeToDisk(dirPathArg?: string): void;
/** /**
* read ab SshInstance from disk * read ab SshInstance from disk
*/ */
readFromDisk(): void; readFromDisk(dirPathArg?: string): void;
private _makeConfig(); private _makeConfig();
/** /**
* method to invoke SshInstance _sync automatically when sshSync is true * method to invoke SshInstance _sync automatically when sshSync is true
@ -30,5 +30,5 @@ export declare class SshInstance {
/** /**
* private method to sync SshInstance * private method to sync SshInstance
*/ */
private _sync(directionArg); private _sync(directionArg, dirPathArg?);
} }

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,12 @@
import "typings-global"; import 'typings-global';
export declare class SshKey { export declare class SshKey {
private _privKey; private _privKey;
private _pubKey; private _pubKey;
private _hostVar; private _hostVar;
private _authorized; private _authorized;
/**
* the constructor for class SshKey
*/
constructor(optionsArg?: { constructor(optionsArg?: {
private?: string; private?: string;
public?: string; public?: string;

File diff suppressed because one or more lines are too long

View File

@ -1,10 +1,11 @@
import "typings-global"; import 'typings-global';
export import beautylog = require("beautylog"); import * as beautylog from 'beautylog';
export declare let base64: any; import * as fs from 'fs-extra';
export declare let fs: any; import * as minimatch from 'minimatch';
export declare let minimatch: any; import * as path from 'path';
export import path = require("path"); import * as q from 'q';
export declare let q: any; import * as shelljs from 'shelljs';
export declare let shelljs: any; import * as smartfile from 'smartfile';
export import smartfile = require("smartfile"); import * as smartpath from 'smartpath';
export import smartpath = require("smartpath"); import * as smartstring from 'smartstring';
export { beautylog, fs, minimatch, path, q, shelljs, smartfile, smartpath, smartstring };

View File

@ -1,13 +1,21 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
exports.beautylog = require("beautylog"); const beautylog = require("beautylog");
exports.base64 = require("js-base64").Base64; exports.beautylog = beautylog;
exports.fs = require("fs-extra"); const fs = require("fs-extra");
exports.minimatch = require("minimatch"); exports.fs = fs;
exports.path = require("path"); const minimatch = require("minimatch");
exports.q = require("q"); exports.minimatch = minimatch;
exports.shelljs = require("shelljs"); const path = require("path");
exports.smartfile = require("smartfile"); exports.path = path;
exports.smartpath = require("smartpath"); const q = require("q");
exports.q = q;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNtYXJ0c3NoLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQ1AsQ0FBQyxDQURzQjtBQUNULGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDcEMsY0FBTSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUM7QUFDckMsVUFBRSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN6QixpQkFBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM5QixZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDMUIsU0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQixlQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzFCLGlCQUFTLFdBQVcsV0FBVyxDQUFDLENBQUM7QUFDakMsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQyIsImZpbGUiOiJzbWFydHNzaC5wbHVnaW5zLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwidHlwaW5ncy1nbG9iYWxcIlxuZXhwb3J0IGltcG9ydCBiZWF1dHlsb2cgPSByZXF1aXJlKFwiYmVhdXR5bG9nXCIpO1xuZXhwb3J0IGxldCBiYXNlNjQgPSByZXF1aXJlKFwianMtYmFzZTY0XCIpLkJhc2U2NDtcbmV4cG9ydCBsZXQgZnMgPSByZXF1aXJlKFwiZnMtZXh0cmFcIik7XG5leHBvcnQgbGV0IG1pbmltYXRjaCA9IHJlcXVpcmUoXCJtaW5pbWF0Y2hcIik7XG5leHBvcnQgaW1wb3J0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcbmV4cG9ydCBsZXQgcSA9IHJlcXVpcmUoXCJxXCIpO1xuZXhwb3J0IGxldCBzaGVsbGpzID0gcmVxdWlyZShcInNoZWxsanNcIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0ZmlsZSA9IHJlcXVpcmUoXCJzbWFydGZpbGVcIik7XG5leHBvcnQgaW1wb3J0IHNtYXJ0cGF0aCA9IHJlcXVpcmUoXCJzbWFydHBhdGhcIik7Il19 const shelljs = require("shelljs");
exports.shelljs = shelljs;
const smartfile = require("smartfile");
exports.smartfile = smartfile;
const smartpath = require("smartpath");
exports.smartpath = smartpath;
const smartstring = require("smartstring");
exports.smartstring = smartstring;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRzc2gucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0c3NoLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF1QjtBQUN2Qix1Q0FBc0M7QUFXbEMsOEJBQVM7QUFWYiwrQkFBOEI7QUFXMUIsZ0JBQUU7QUFWTix1Q0FBc0M7QUFXbEMsOEJBQVM7QUFWYiw2QkFBNEI7QUFXeEIsb0JBQUk7QUFWUix1QkFBc0I7QUFXbEIsY0FBQztBQVZMLG1DQUFrQztBQVc5QiwwQkFBTztBQVZYLHVDQUFzQztBQVdsQyw4QkFBUztBQVZiLHVDQUFzQztBQVdsQyw4QkFBUztBQVZiLDJDQUEwQztBQVd0QyxrQ0FBVyJ9

View File

@ -1,6 +1,6 @@
{ {
"name": "smartssh", "name": "smartssh",
"version": "1.1.5", "version": "1.2.1",
"description": "setups SSH quickly and in a painless manner", "description": "setups SSH quickly and in a painless manner",
"main": "dist/index.js", "main": "dist/index.js",
"typings": "dist/index.d.ts", "typings": "dist/index.d.ts",
@ -23,19 +23,25 @@
}, },
"homepage": "https://gitlab.com/pushrocks/smartssh#readme", "homepage": "https://gitlab.com/pushrocks/smartssh#readme",
"dependencies": { "dependencies": {
"beautylog": "^5.0.12", "@types/fs-extra": "0.0.35",
"fs-extra": "^0.30.0", "@types/js-base64": "^2.1.5",
"js-base64": "^2.1.9", "@types/minimatch": "^2.0.29",
"minimatch": "^3.0.2", "@types/q": "0.0.32",
"@types/shelljs": "^0.3.33",
"beautylog": "^6.0.0",
"fs-extra": "^1.0.0",
"minimatch": "^3.0.3",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.7.0", "shelljs": "^0.7.5",
"smartfile": "^4.0.5", "smartfile": "^4.1.0",
"smartpath": "^3.2.2", "smartpath": "^3.2.5",
"typings-global": "^1.0.3", "smartstring": "^2.0.22",
"typings-test": "^1.0.1" "typings-global": "^1.0.14"
}, },
"devDependencies": { "devDependencies": {
"npmts-g": "^5.2.6", "@types/should": "^8.1.30",
"should": "^9.0.2" "npmts-g": "^5.2.8",
"should": "^11.1.1",
"typings-test": "^1.0.3"
} }
} }

3
test/test.d.ts vendored
View File

@ -1,2 +1 @@
import "typings-test"; import 'typings-test';
import "should";

File diff suppressed because one or more lines are too long

View File

@ -1,75 +1,75 @@
import "typings-test" import 'typings-test'
import "should"; import * as should from 'should'
import smartssh = require("../dist/index"); import smartssh = require('../dist/index')
import path = require("path"); import path = require('path')
describe("smartssh",function(){ describe('smartssh',function(){
let testSshInstance:smartssh.SshInstance; let testSshInstance: smartssh.SshInstance
let testSshKey:smartssh.SshKey; let testSshKey: smartssh.SshKey
describe(".SshKey",function(){ describe('.SshKey',function(){
it("'new' keyword should create a valid SshKey object",function(){ it("'new' keyword should create a valid SshKey object",function(){
testSshKey = new smartssh.SshKey({ testSshKey = new smartssh.SshKey({
host:"example.com", host: 'example.com',
private:"someExamplePrivateKey", private: 'someExamplePrivateKey',
public:"someExamplePublicKey" public: 'someExamplePublicKey'
}); })
testSshKey.should.be.instanceof(smartssh.SshKey); should(testSshKey).be.instanceof(smartssh.SshKey)
}); })
it(".type should be a valid type",function(){ it('.type should be a valid type',function(){
testSshKey.type.should.equal("duplex"); should(testSshKey.type).equal('duplex')
}); })
it(".publicKey should be public key",function(){ it('.publicKey should be public key',function(){
testSshKey.pubKey.should.equal("someExamplePublicKey"); should(testSshKey.pubKey).equal('someExamplePublicKey')
}); })
it(".privateKey should be private key",function(){ it('.privateKey should be private key',function(){
testSshKey.privKey.should.equal("someExamplePrivateKey"); should(testSshKey.privKey).equal('someExamplePrivateKey')
}); })
it(".publicKeyBase64 should be public key base 64 encoded",function(){ it('.publicKeyBase64 should be public key base 64 encoded',function(){
testSshKey.pubKeyBase64; testSshKey.pubKeyBase64
}); })
it(".store() should store the file to disk",function(){ it('.store() should store the file to disk',function(){
testSshKey.store(path.join(process.cwd(),"test/temp")); testSshKey.store(path.join(process.cwd(),'test/temp'))
}); })
}); })
describe(".SshInstance",function(){ describe('.SshInstance',function(){
it("'new' keyword should create a new SshInstance object from class",function(){ it("'new' keyword should create a new SshInstance object from class",function(){
testSshInstance = new smartssh.SshInstance({ testSshInstance = new smartssh.SshInstance({
sshDirPath: path.join(process.cwd(),"test/temp/") sshDirPath: path.join(process.cwd(),'test/temp/')
}); })
testSshInstance.should.be.instanceof(smartssh.SshInstance); should(testSshInstance).be.instanceof(smartssh.SshInstance)
});
it(".addKey() should accept a new SshKey object",function(){
testSshInstance.addKey(new smartssh.SshKey({
public:"somePublicKey",
private:"somePrivateKey",
host:"gitlab.com"
}));
testSshInstance.addKey(new smartssh.SshKey({
public:"somePublicKey",
private:"somePrivateKey",
host:"bitbucket.org"
}));
testSshInstance.addKey(new smartssh.SshKey({
public:"someGitHubPublicKey",
private:"someGitHubPrivateKey",
host:"github.com"
}));
});
it(".sshKeys should point to an array of sshKeys",function(){
let sshKeyArray = testSshInstance.sshKeys;
sshKeyArray.should.be.Array();
sshKeyArray[0].host.should.equal("gitlab.com");
sshKeyArray[1].host.should.equal("bitbucket.org");
sshKeyArray[2].host.should.equal("github.com");
});
it(".getKey() should get a specific key selected by host",function(){
testSshInstance.getKey("github.com").pubKey.should.equal("someGitHubPublicKey");
}) })
it(".removeKey() should remove a key",function(){ it('.addKey() should accept a new SshKey object',function(){
testSshInstance.removeKey(testSshInstance.getKey("bitbucket.org")); testSshInstance.addKey(new smartssh.SshKey({
testSshInstance.sshKeys[1].host.should.equal("github.com"); public: 'somePublicKey',
}); private: 'somePrivateKey',
it("it should store to disk",function(){ host: 'gitlab.com'
testSshInstance.writeToDisk(); }))
testSshInstance.addKey(new smartssh.SshKey({
public: 'somePublicKey',
private: 'somePrivateKey',
host: 'bitbucket.org'
}))
testSshInstance.addKey(new smartssh.SshKey({
public: 'someGitHubPublicKey',
private: 'someGitHubPrivateKey',
host: 'github.com'
}))
}) })
}); it('.sshKeys should point to an array of sshKeys',function(){
}) let sshKeyArray = testSshInstance.sshKeys
should(sshKeyArray).be.Array()
should(sshKeyArray[0].host).equal('gitlab.com')
should(sshKeyArray[1].host).equal('bitbucket.org')
should(sshKeyArray[2].host).equal('github.com')
})
it('.getKey() should get a specific key selected by host',function(){
should(testSshInstance.getKey('github.com').pubKey).equal('someGitHubPublicKey')
})
it('.removeKey() should remove a key',function(){
testSshInstance.removeKey(testSshInstance.getKey('bitbucket.org'))
should(testSshInstance.sshKeys[1].host).equal('github.com')
})
it('it should store to disk',function(){
testSshInstance.writeToDisk()
})
})
})

View File

@ -1,7 +1,7 @@
import "typings-global" import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
export {SshInstance} from "./smartssh.classes.sshinstance"; export {SshInstance} from './smartssh.classes.sshinstance'
export {SshKey} from "./smartssh.classes.sshkey"; export {SshKey} from './smartssh.classes.sshkey'
export {SshDir} from "./smartssh.classes.sshdir"; export {SshDir} from './smartssh.classes.sshdir'
export {SshConfig} from "./smartssh.classes.sshconfig"; export {SshConfig} from './smartssh.classes.sshconfig'

View File

@ -1,8 +1,8 @@
import "typings-global" import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
import {SshKey} from "./smartssh.classes.sshkey"; import {SshKey} from './smartssh.classes.sshkey'
export let sshKeyArrayFromDir = function(dirArg:string):SshKey[]{ export let sshKeyArrayFromDir = function(dirArg: string): SshKey[]{
let sshKeyArray = []; //TODO let sshKeyArray = [] // TODO
return sshKeyArray; return sshKeyArray
} }

View File

@ -1,53 +1,54 @@
import "typings-global"; import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
import * as helpers from "./smartssh.classes.helpers"; import * as helpers from './smartssh.classes.helpers'
import {SshKey} from "./smartssh.classes.sshkey" import {SshKey} from './smartssh.classes.sshkey'
export class SshConfig { export class SshConfig {
sshKeyArray:SshKey[]; private _sshKeyArray: SshKey[]
constructor(sshKeyArrayArg:SshKey[]){ constructor(sshKeyArrayArg: SshKey[]) {
this.sshKeyArray = sshKeyArrayArg; this._sshKeyArray = sshKeyArrayArg
} }
/** /**
* stores a config file * stores a config file
*/ */
store(dirPathArg:string){ store(dirPathArg: string) {
let done = plugins.q.defer(); let done = plugins.q.defer()
let configArray:configObject[] = []; let configArray: configObject[] = []
let configString; let configString
for(let key in this.sshKeyArray){ for (let key in this._sshKeyArray) {
let sshKey = this.sshKeyArray[key]; let sshKey = this._sshKeyArray[key]
if(sshKey.host){ if (sshKey.host) {
configString = "Host " + sshKey.host + "\n" + configString = 'Host ' + sshKey.host + '\n' +
" HostName " + sshKey.host + "\n" + ' HostName ' + sshKey.host + '\n' +
" IdentityFile ~/.ssh/" + sshKey.host + "\n" + ' IdentityFile ~/.ssh/' + sshKey.host + '\n' +
" StrictHostKeyChecking no" + "\n" ' StrictHostKeyChecking no' + '\n'
} }
configArray.push({ configArray.push({
configString:configString, configString: configString,
authorized: sshKey.authorized, authorized: sshKey.authorized,
sshKey: sshKey sshKey: sshKey
}); })
} }
let configFile:string = ""; let configFile: string = ''
for(let key in configArray){ for (let key in configArray) {
configFile = configFile + configArray[key].configString + "\n"; configFile = configFile + configArray[key].configString + '\n'
}; };
plugins.smartfile.memory.toFsSync(configFile,plugins.path.join(dirPathArg,"config")); plugins.smartfile.memory.toFsSync(configFile,plugins.path.join(dirPathArg,'config'))
return done.promise; return done.promise
} }
read(dirPathArg){ read(dirPathArg) {
let done = plugins.q.defer(); let done = plugins.q.defer()
let configArray:configObject[]; let configArray: configObject[]
plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg,'config'))
return done.promise;
return done.promise
} }
}; };
export interface configObject { export interface configObject {
configString:string; configString: string
authorized:boolean; authorized: boolean
sshKey:SshKey; sshKey: SshKey
}; };

View File

@ -1,35 +1,38 @@
import "typings-global"; import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
import * as helpers from "./smartssh.classes.helpers"; import * as helpers from './smartssh.classes.helpers'
import {SshInstance} from "./smartssh.classes.sshinstance"; import {SshInstance} from './smartssh.classes.sshinstance'
import {SshKey} from "./smartssh.classes.sshkey"; import {SshKey} from './smartssh.classes.sshkey'
import {SshConfig} from "./smartssh.classes.sshconfig"; import {SshConfig} from './smartssh.classes.sshconfig'
export class SshDir { // sshDir class -> NOT EXPORTED, ONLY FOR INTERNAL USE export class SshDir { // sshDir class -> NOT EXPORTED, ONLY FOR INTERNAL USE
private _path:string; // the path of the ssh directory private _path: string // the path of the ssh directory
private _sshKeyArray:SshKey[]; private _sshKeyArray: SshKey[]
private _sshConfig:SshConfig; private _sshConfig: SshConfig
constructor(sshKeyArray:SshKey[],sshConfig:SshConfig,sshDirPathArg?:string){ constructor(sshKeyArray: SshKey[],sshConfig: SshConfig,sshDirPathArg?: string) {
this._sshKeyArray = sshKeyArray; this._sshKeyArray = sshKeyArray
this._sshConfig = sshConfig; this._sshConfig = sshConfig
if(sshDirPathArg){ if (sshDirPathArg) {
this._path = sshDirPathArg; this._path = sshDirPathArg
} else { } else {
this._path = plugins.path.join(plugins.smartpath.get.home(),".ssh/"); this._path = plugins.path.join(plugins.smartpath.get.home(),'.ssh/')
}; };
} }
writeToDir(){ // syncs sshInstance to directory writeToDir(dirPathArg?: string) { // syncs sshInstance to directory
let path = this._path
if (dirPathArg) path = dirPathArg
this._sshKeyArray.forEach((sshKeyArg) => { this._sshKeyArray.forEach((sshKeyArg) => {
sshKeyArg.store(this._path); sshKeyArg.store(path)
}); })
this._sshConfig.store(this._path); this._sshConfig.store(path)
}; };
readFromDir(){ // syncs sshInstance from directory readFromDir(dirPathArg?: string) { // syncs sshInstance from directory
let path = this._path
if (dirPathArg) path = dirPathArg
} }
updateDirPath(dirPathArg:string){ updateDirPath(dirPathArg: string) {
this._path = dirPathArg; this._path = dirPathArg
}; };
getKeys(){ getKeys() {
return helpers.sshKeyArrayFromDir(this._path); return helpers.sshKeyArrayFromDir(this._path)
} }
} }

View File

@ -1,103 +1,103 @@
import "typings-global" import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
import * as helpers from "./smartssh.classes.helpers"; import * as helpers from './smartssh.classes.helpers'
import {SshDir} from "./smartssh.classes.sshdir"; import {SshDir} from './smartssh.classes.sshdir'
import {SshConfig} from "./smartssh.classes.sshconfig"; import {SshConfig} from './smartssh.classes.sshconfig'
import {SshKey} from "./smartssh.classes.sshkey"; import {SshKey} from './smartssh.classes.sshkey'
export class SshInstance { export class SshInstance {
private _sshKeyArray:SshKey[]; //holds all ssh keys private _sshKeyArray: SshKey[] // holds all ssh keys
private _sshConfig:SshConfig; // sshConfig (e.g. represents ~/.ssh/config) private _sshConfig: SshConfig // sshConfig (e.g. represents ~/.ssh/config)
private _sshDir:SshDir; // points to sshDir class instance. private _sshDir: SshDir // points to sshDir class instance.
private _sshSync:boolean; // if set to true, the ssh dir will be kept in sync automatically private _sshSync: boolean // if set to true, the ssh dir will be kept in sync automatically
constructor(optionsArg:{sshDirPath?:string,sshSync?:boolean}={}){ constructor(optionsArg: {sshDirPath?: string,sshSync?: boolean}= {}) {
optionsArg ? void(0) : optionsArg = {}; optionsArg ? void(0) : optionsArg = {}
this._sshKeyArray = []; this._sshKeyArray = []
this._sshConfig = new SshConfig(this._sshKeyArray); this._sshConfig = new SshConfig(this._sshKeyArray)
this._sshDir = new SshDir(this._sshKeyArray,this._sshConfig,optionsArg.sshDirPath); this._sshDir = new SshDir(this._sshKeyArray,this._sshConfig,optionsArg.sshDirPath)
this._sshSync = optionsArg.sshSync; this._sshSync = optionsArg.sshSync
};
//altering methods
addKey(sshKeyArg:SshKey){
this._syncAuto("from");
this._sshKeyArray.push(sshKeyArg);
this._syncAuto("to");
};
removeKey(sshKeyArg:SshKey){
this._syncAuto("from");
let filteredArray = this._sshKeyArray.filter((sshKeyArg2:SshKey) => {
return (sshKeyArg != sshKeyArg2);
});
this._sshKeyArray = filteredArray;
this._syncAuto("to");
};
replaceKey(sshKeyOldArg:SshKey,sshKeyNewArg:SshKey){
this._syncAuto("from");
this.removeKey(sshKeyOldArg);
this.addKey(sshKeyNewArg);
this._syncAuto("to");
};
//
getKey(hostArg:string):SshKey{
this._syncAuto("from");
let filteredArray = this._sshKeyArray.filter(function(keyArg){
return (keyArg.host == hostArg);
});
if(filteredArray.length > 0){
return filteredArray[0];
} else {
return undefined;
}
};
get sshKeys():SshKey[] {
this._syncAuto("from");
return this._sshKeyArray;
}; };
//FS methods // altering methods
addKey(sshKeyArg: SshKey) {
this._syncAuto('from')
this._sshKeyArray.push(sshKeyArg)
this._syncAuto('to')
};
removeKey(sshKeyArg: SshKey) {
this._syncAuto('from')
let filteredArray = this._sshKeyArray.filter((sshKeyArg2: SshKey) => {
return (sshKeyArg != sshKeyArg2)
})
this._sshKeyArray = filteredArray
this._syncAuto('to')
};
replaceKey(sshKeyOldArg: SshKey,sshKeyNewArg: SshKey) {
this._syncAuto('from')
this.removeKey(sshKeyOldArg)
this.addKey(sshKeyNewArg)
this._syncAuto('to')
};
//
getKey(hostArg: string): SshKey {
this._syncAuto('from')
let filteredArray = this._sshKeyArray.filter(function(keyArg){
return (keyArg.host === hostArg)
})
if (filteredArray.length > 0) {
return filteredArray[0]
} else {
return undefined
}
};
get sshKeys(): SshKey[] {
this._syncAuto('from')
return this._sshKeyArray
};
// FS methods
/** /**
* write SshInstance to disk * write SshInstance to disk
*/ */
writeToDisk(){ writeToDisk(dirPathArg?: string) {
this._sync("to"); this._sync('to',dirPathArg)
} }
/** /**
* read ab SshInstance from disk * read ab SshInstance from disk
*/ */
readFromDisk(){ readFromDisk(dirPathArg?: string) {
this._sync("from"); this._sync('from',dirPathArg)
} }
/* =============================================================== /* ===============================================================
========================= Private Methods ======================== ========================= Private Methods ========================
================================================================*/ ================================================================*/
private _makeConfig (){ private _makeConfig () {
} }
/** /**
* method to invoke SshInstance _sync automatically when sshSync is true * method to invoke SshInstance _sync automatically when sshSync is true
*/ */
private _syncAuto(directionArg){ private _syncAuto(directionArg) {
if(this._sshSync) this._sync(directionArg); if (this._sshSync) this._sync(directionArg)
} }
/** /**
* private method to sync SshInstance * private method to sync SshInstance
*/ */
private _sync(directionArg:string){ private _sync(directionArg: string,dirPathArg?: string) {
if(directionArg == "from"){ if (directionArg === 'from') {
this._sshDir.readFromDir(); // call sync method of sshDir class; this._sshDir.readFromDir(dirPathArg) // call sync method of sshDir class;
} else if(directionArg == "to") { } else if (directionArg === 'to') {
this._sshDir.writeToDir(); this._sshDir.writeToDir(dirPathArg)
} else { } else {
throw new Error("directionArg not recognised. Must be 'to' or 'from'"); throw new Error("directionArg not recognised. Must be 'to' or 'from'")
} }
}; };
} }

View File

@ -1,96 +1,99 @@
import "typings-global"; import 'typings-global'
import * as plugins from "./smartssh.plugins"; import * as plugins from './smartssh.plugins'
import * as helpers from "./smartssh.classes.helpers"; import * as helpers from './smartssh.classes.helpers'
export class SshKey { export class SshKey {
private _privKey:string; private _privKey: string
private _pubKey:string; private _pubKey: string
private _hostVar:string; private _hostVar: string
private _authorized:boolean; private _authorized: boolean
constructor(optionsArg:{private?:string,public?:string,host?:string,authorized?:boolean}={}){
this._privKey = optionsArg.private; /**
this._pubKey = optionsArg.public; * the constructor for class SshKey
this._hostVar = optionsArg.host; */
this._authorized = optionsArg.authorized; constructor(optionsArg: {private?: string,public?: string,host?: string,authorized?: boolean}= {}) {
this._privKey = optionsArg.private
this._pubKey = optionsArg.public
this._hostVar = optionsArg.host
this._authorized = optionsArg.authorized
}; };
// this.host // this.host
get host(){ get host(){
return this._hostVar; return this._hostVar
}; };
set host(hostArg:string){ set host(hostArg: string){
this._hostVar = hostArg; this._hostVar = hostArg
}; };
// this.privKey // this.privKey
get privKey(){ get privKey(){
return this._privKey; return this._privKey
}; };
set privKey(privateKeyArg:string){ set privKey(privateKeyArg: string){
this._privKey = privateKeyArg; this._privKey = privateKeyArg
}; };
// this.privKeyBase64 // this.privKeyBase64
get privKeyBase64(){ get privKeyBase64(){
return plugins.base64.encode(this._privKey); return plugins.smartstring.base64.encode(this._privKey)
} }
set privKeyBase64(privateKeyArg:string) { set privKeyBase64(privateKeyArg: string) {
this._privKey = plugins.base64.decode(privateKeyArg); this._privKey = plugins.smartstring.base64.decode(privateKeyArg)
} }
// this.pubKey // this.pubKey
get pubKey(){ get pubKey(){
return this._pubKey; return this._pubKey
} }
set pubKey(publicKeyArg:string){ set pubKey(publicKeyArg: string){
this._pubKey = publicKeyArg; this._pubKey = publicKeyArg
}; };
// this.pubKeyBase64 // this.pubKeyBase64
get pubKeyBase64(){ get pubKeyBase64(){
return plugins.base64.encode(this._pubKey); return plugins.smartstring.base64.encode(this._pubKey)
} }
set pubKeyBase64(publicKeyArg:string) { set pubKeyBase64(publicKeyArg: string) {
this._pubKey = plugins.base64.decode(publicKeyArg); this._pubKey = plugins.smartstring.base64.decode(publicKeyArg)
} }
get authorized(){ get authorized(){
return this._authorized; return this._authorized
} }
set authorized(authorizedArg:boolean){ set authorized(authorizedArg: boolean){
this._authorized = authorizedArg; this._authorized = authorizedArg
} }
get type(){ get type(){
if(this._privKey && this._pubKey){ if (this._privKey && this._pubKey) {
return "duplex"; return 'duplex'
} else if(this._privKey){ } else if (this._privKey) {
return "private"; return 'private'
} else if(this._pubKey){ } else if (this._pubKey) {
return "public"; return 'public'
} }
}; };
set type(someVlueArg:any){ set type(someVlueArg: any){
console.log("the type of an SshKey connot be set. This value is autpcomputed.") console.log('the type of an SshKey connot be set. This value is autpcomputed.')
} }
// methods // methods
read(filePathArg){ read(filePathArg) {
} }
store(dirPathArg:string){
plugins.fs.ensureDirSync(dirPathArg); store(dirPathArg: string) {
let fileNameBase = this.host; plugins.fs.ensureDirSync(dirPathArg)
if(this._privKey){ let fileNameBase = this.host
let filePath = plugins.path.join(dirPathArg,fileNameBase); if (this._privKey) {
plugins.smartfile.memory.toFsSync(this._privKey,filePath); let filePath = plugins.path.join(dirPathArg,fileNameBase)
plugins.shelljs.chmod(600,filePath); plugins.smartfile.memory.toFsSync(this._privKey,filePath)
plugins.shelljs.chmod(600,filePath)
}; };
if (this._pubKey){ if (this._pubKey) {
let filePath = plugins.path.join(dirPathArg,fileNameBase + ".pub"); let filePath = plugins.path.join(dirPathArg,fileNameBase + '.pub')
plugins.smartfile.memory.toFsSync(this._pubKey,filePath); plugins.smartfile.memory.toFsSync(this._pubKey,filePath)
plugins.shelljs.chmod(600,filePath); plugins.shelljs.chmod(600,filePath)
} }
} }
} }
let testKey = new SshKey();

View File

@ -1,10 +1,22 @@
import "typings-global" import 'typings-global'
export import beautylog = require("beautylog"); import * as beautylog from 'beautylog'
export let base64 = require("js-base64").Base64; import * as fs from 'fs-extra'
export let fs = require("fs-extra"); import * as minimatch from 'minimatch'
export let minimatch = require("minimatch"); import * as path from 'path'
export import path = require("path"); import * as q from 'q'
export let q = require("q"); import * as shelljs from 'shelljs'
export let shelljs = require("shelljs"); import * as smartfile from 'smartfile'
export import smartfile = require("smartfile"); import * as smartpath from 'smartpath'
export import smartpath = require("smartpath"); import * as smartstring from 'smartstring'
export {
beautylog,
fs,
minimatch,
path,
q,
shelljs,
smartfile,
smartpath,
smartstring
}

3
tslint.json Normal file
View File

@ -0,0 +1,3 @@
{
"extends": "tslint-config-standard"
}