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