@ps-aux/nodebup 0.9.3 → 0.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bup/aggregate/AggregateBackupController.js +8 -7
- package/lib/bup/dir/DirBackupController.js +6 -5
- package/lib/bup/pg/PgBackupController.js +11 -7
- package/lib/config/Config.js +1 -4
- package/lib/ctx/Context.js +1 -6
- package/lib/ctx/ContextSymbols.js +1 -7
- package/lib/fs/Fs.js +12 -9
- package/lib/fs/Fs.test.js +1 -6
- package/lib/fs/fssync/FsSync.spec.js +1 -4
- package/lib/fs/fssync/FsSyncer.js +5 -4
- package/lib/log/logging.js +36 -0
- package/lib/log/logging.spec.js +10 -0
- package/lib/storage/rclone/RCloneFactory.js +7 -6
- package/lib/storage/rclone/RcloneBackupBackend.js +3 -3
- package/lib/storage/rclone/RcloneClient.js +8 -7
- package/lib/storage/rclone/RcloneClient.spec.js +3 -4
- package/lib/storage/restic/ResticBackupBackend.js +2 -2
- package/lib/storage/restic/ResticClient.js +10 -7
- package/lib/storage/restic/ResticClient.spec.js +2 -3
- package/lib/storage/restic/ResticController.js +3 -3
- package/lib/storage/restic/ResticFactory.js +3 -6
- package/lib/tools/compression/Zipper.js +8 -8
- package/lib/tools/compression/Zipper.test.js +1 -3
- package/lib/tools/gpg/Gpg.spec.js +1 -3
- package/lib/tools/shell/Shell.js +9 -9
- package/lib/tools/ssh/SshKeyManager.spec.js +1 -3
- package/package.json +3 -2
- package/lib/log/AppLogger.js +0 -35
- package/lib/log/ConsoleLogger.js +0 -33
- package/lib/log/MinimalLogger.js +0 -31
- package/lib/types.js +0 -5
@@ -17,30 +17,31 @@ var _inversify = require("inversify");
|
|
17
17
|
|
18
18
|
var _ContextSymbols = require("../../ctx/ContextSymbols");
|
19
19
|
|
20
|
-
var _AppLogger = require("../../log/AppLogger");
|
21
|
-
|
22
20
|
var _Path = require("../../fs/path/Path");
|
23
21
|
|
24
22
|
var _config = require("../../config");
|
25
23
|
|
26
24
|
var _BackupStorageProvider = require("../../storage/BackupStorageProvider");
|
27
25
|
|
26
|
+
var _logging = require("../../log/logging");
|
27
|
+
|
28
28
|
var _dec, _dec2, _dec3, _dec4, _class;
|
29
29
|
|
30
30
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
31
31
|
|
32
32
|
let AggregateBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = function (target, key) {
|
33
|
-
return (0, _inversify.inject)(_ContextSymbols.AppConfig_)(target, undefined,
|
34
|
-
}, _dec3 = Reflect.metadata("design:type", Function), _dec4 = Reflect.metadata("design:paramtypes", [typeof _Gpg.Gpg === "undefined" ? Object : _Gpg.Gpg, typeof _SshKeyManager.SshKeyManager === "undefined" ? Object : _SshKeyManager.SshKeyManager, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof _FsSyncer.FsSyncer === "undefined" ? Object : _FsSyncer.FsSyncer, typeof
|
35
|
-
constructor(gpg, ssh, fs, fsSyncer,
|
33
|
+
return (0, _inversify.inject)(_ContextSymbols.AppConfig_)(target, undefined, 5);
|
34
|
+
}, _dec3 = Reflect.metadata("design:type", Function), _dec4 = Reflect.metadata("design:paramtypes", [typeof _Gpg.Gpg === "undefined" ? Object : _Gpg.Gpg, typeof _SshKeyManager.SshKeyManager === "undefined" ? Object : _SshKeyManager.SshKeyManager, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof _FsSyncer.FsSyncer === "undefined" ? Object : _FsSyncer.FsSyncer, typeof _BackupStorageProvider.BackupStorageProvider === "undefined" ? Object : _BackupStorageProvider.BackupStorageProvider, typeof _config.Config === "undefined" ? Object : _config.Config]), _dec(_class = _dec2(_class = _dec3(_class = _dec4(_class = class AggregateBackupController {
|
35
|
+
constructor(gpg, ssh, fs, fsSyncer, storageProvider, cfg) {
|
36
36
|
this.gpg = gpg;
|
37
37
|
this.ssh = ssh;
|
38
38
|
this.fs = fs;
|
39
39
|
this.fsSyncer = fsSyncer;
|
40
|
-
this.log = log;
|
41
40
|
this.storageProvider = storageProvider;
|
42
41
|
this.cfg = cfg;
|
43
42
|
|
43
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
44
|
+
|
44
45
|
_defineProperty(this, "backup", async aggrName => {
|
45
46
|
const aggrDir = this.cfg.pwd.resolve('.aggr');
|
46
47
|
const aggr = this.cfg.aggregates.find(a => a.name === aggrName);
|
@@ -58,7 +59,7 @@ let AggregateBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = fu
|
|
58
59
|
gpgKey.forEach(k => this.runGpgKeyTask(k, aggrDir));
|
59
60
|
this.storageProvider.provide().store(aggrDir);
|
60
61
|
} finally {
|
61
|
-
this.log.debug();
|
62
|
+
this.log.debug('Removing dir');
|
62
63
|
this.fs.rmDir(aggrDir);
|
63
64
|
}
|
64
65
|
});
|
@@ -7,21 +7,22 @@ exports.DirBackupController = void 0;
|
|
7
7
|
|
8
8
|
var _inversify = require("inversify");
|
9
9
|
|
10
|
-
var _AppLogger = require("../../log/AppLogger");
|
11
|
-
|
12
10
|
var _Path = require("../../fs/path/Path");
|
13
11
|
|
14
12
|
var _BackupStorageProvider = require("../../storage/BackupStorageProvider");
|
15
13
|
|
14
|
+
var _logging = require("../../log/logging");
|
15
|
+
|
16
16
|
var _dec, _dec2, _dec3, _class;
|
17
17
|
|
18
18
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19
19
|
|
20
|
-
let DirBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof
|
21
|
-
constructor(
|
22
|
-
this.log = log;
|
20
|
+
let DirBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _BackupStorageProvider.BackupStorageProvider === "undefined" ? Object : _BackupStorageProvider.BackupStorageProvider]), _dec(_class = _dec2(_class = _dec3(_class = class DirBackupController {
|
21
|
+
constructor(storageProvider) {
|
23
22
|
this.storageProvider = storageProvider;
|
24
23
|
|
24
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
25
|
+
|
25
26
|
_defineProperty(this, "backup", inp => {
|
26
27
|
const storage = this.storageProvider.provide();
|
27
28
|
|
@@ -9,8 +9,6 @@ var _Fs = require("../../fs/Fs");
|
|
9
9
|
|
10
10
|
var _inversify = require("inversify");
|
11
11
|
|
12
|
-
var _AppLogger = require("../../log/AppLogger");
|
13
|
-
|
14
12
|
var _Shell = require("../../tools/shell/Shell");
|
15
13
|
|
16
14
|
var _Path = require("../../fs/path/Path");
|
@@ -19,6 +17,8 @@ var _BackupStorageProvider = require("../../storage/BackupStorageProvider");
|
|
19
17
|
|
20
18
|
var _Zipper = require("../../tools/compression/Zipper");
|
21
19
|
|
20
|
+
var _logging = require("../../log/logging");
|
21
|
+
|
22
22
|
var _dec, _dec2, _dec3, _class, _class2, _temp;
|
23
23
|
|
24
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
@@ -38,18 +38,19 @@ const parseConnectionUrl = url => {
|
|
38
38
|
};
|
39
39
|
};
|
40
40
|
|
41
|
-
let PgBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof
|
41
|
+
let PgBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof _BackupStorageProvider.BackupStorageProvider === "undefined" ? Object : _BackupStorageProvider.BackupStorageProvider, typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof _Zipper.Zipper === "undefined" ? Object : _Zipper.Zipper]), _dec(_class = _dec2(_class = _dec3(_class = (_temp = _class2 = class PgBackupController {
|
42
42
|
constructor( // private gpg: Gpg,
|
43
43
|
// private ssh: SshKeyManager,
|
44
44
|
fs, // private fsSyncer: FsSyncer,
|
45
|
-
|
45
|
+
storageBackendProvider, // @inject(AppConfig_) private cfg: Config,
|
46
46
|
sh, zip) {
|
47
47
|
this.fs = fs;
|
48
|
-
this.log = log;
|
49
48
|
this.storageBackendProvider = storageBackendProvider;
|
50
49
|
this.sh = sh;
|
51
50
|
this.zip = zip;
|
52
51
|
|
52
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
53
|
+
|
53
54
|
_defineProperty(this, "now", () => {
|
54
55
|
const d = new Date();
|
55
56
|
const fields = [d.getFullYear(), d.getMonth(), d.getDay(), d.getUTCHours(), d.getMinutes(), d.getSeconds()];
|
@@ -69,7 +70,9 @@ let PgBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.m
|
|
69
70
|
|
70
71
|
this.log.info(`Backing up Postgres database, version=${version}`);
|
71
72
|
const connParams = parseConnectionUrl(pgUrl);
|
72
|
-
const pass = connParams.password;
|
73
|
+
const pass = connParams.password; // if (3 > 2)
|
74
|
+
// return
|
75
|
+
|
73
76
|
await this.fs.inTmpDir('pg-backup', async dir => {
|
74
77
|
const outputDir = _Path.AbsPath.from(dir);
|
75
78
|
|
@@ -111,7 +114,8 @@ let PgBackupController = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.m
|
|
111
114
|
const zipFile = this.fs.listFiles(dir)[0];
|
112
115
|
this.zip.unzipDir(zipFile, dir);
|
113
116
|
this.fs.rmFile(zipFile);
|
114
|
-
const outFile = this.fs.listFiles(dir)[0];
|
117
|
+
const outFile = this.fs.listFiles(dir)[0];
|
118
|
+
this.log.debug('Will run psql import from %s', outFile.str()); // Don't forget that this itself might be run in docker
|
115
119
|
// therefore volume mounts are not usable (will apply to the location at host)
|
116
120
|
|
117
121
|
this.sh.exec(`docker run --network host -i ` + `postgres:${version} ` + `psql ${pgUrl} -v ON_ERROR_STOP=0 < ${outFile.str()}`);
|
package/lib/config/Config.js
CHANGED
@@ -15,8 +15,6 @@ var _expandAndCreatePath = require("./expandAndCreatePath");
|
|
15
15
|
|
16
16
|
var _Fs = require("../fs/Fs");
|
17
17
|
|
18
|
-
var _AppLogger = require("../log/AppLogger");
|
19
|
-
|
20
18
|
const expandPaths = (cfg, exp) => {
|
21
19
|
cfg.aggregates.forEach(a => {
|
22
20
|
a.sources.file.forEach(f => {
|
@@ -34,8 +32,7 @@ const expandPaths = (cfg, exp) => {
|
|
34
32
|
|
35
33
|
|
36
34
|
const readFromFile = cwd => {
|
37
|
-
|
38
|
-
const fs = new _Fs.Fs(cwd, new _AppLogger.AppLogger());
|
35
|
+
const fs = new _Fs.Fs(cwd);
|
39
36
|
const cfgPath = cwd.resolve('bup.yaml');
|
40
37
|
const cfg = fs.exists(cfgPath) ? (0, _readYaml.readYaml)(cfgPath.str()) : {
|
41
38
|
aggregates: [],
|
package/lib/ctx/Context.js
CHANGED
@@ -21,8 +21,6 @@ var _ContextSymbols = require("./ContextSymbols");
|
|
21
21
|
|
22
22
|
var _AggregateBackupController = require("../bup/aggregate/AggregateBackupController");
|
23
23
|
|
24
|
-
var _AppLogger = require("../log/AppLogger");
|
25
|
-
|
26
24
|
var _BackupStorageProvider = require("../storage/BackupStorageProvider");
|
27
25
|
|
28
26
|
var _ResticFactory = require("../storage/restic/ResticFactory");
|
@@ -45,10 +43,7 @@ const createContext = (cfg, inp) => {
|
|
45
43
|
const c = new _inversify.Container();
|
46
44
|
c.bind(_ContextSymbols.AppConfig_).toConstantValue(cfg);
|
47
45
|
c.bind(_ContextSymbols.Inputs_).toConstantValue(inp);
|
48
|
-
|
49
|
-
c.bind(_ContextSymbols.Log_).toConstantValue(log);
|
50
|
-
c.bind(_AppLogger.AppLogger).toConstantValue(log);
|
51
|
-
c.bind(_Fs.Fs).toConstantValue(new _Fs.Fs(cfg.pwd, log));
|
46
|
+
c.bind(_Fs.Fs).toConstantValue(new _Fs.Fs(cfg.pwd));
|
52
47
|
const self = [_Gpg.Gpg, _Shell.Shell, _FsSyncer.FsSyncer, _SshKeyManager.SshKeyManager, _BackupStorageProvider.BackupStorageProvider, _StorageConfigProvider.StorageConfigProvider, _ResticFactory.ResticFactory, _AggregateBackupController.AggregateBackupController, _ResticController.ResticController, _B2CredentialsProvider.B2CredentialsProvider, _RCloneFactory.RCloneFactory, _DirBackupController.DirBackupController, _PgBackupController.PgBackupController, _Zipper.Zipper];
|
53
48
|
self.forEach(s => c.bind(s).toSelf());
|
54
49
|
return c;
|
@@ -3,13 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.
|
7
|
-
const Log_ = Symbol.for('Log');
|
8
|
-
exports.Log_ = Log_;
|
9
|
-
const TaskConfig_ = Symbol.for('config.Tasks');
|
10
|
-
exports.TaskConfig_ = TaskConfig_;
|
11
|
-
const StorageConfig_ = Symbol.for('config.Storage');
|
12
|
-
exports.StorageConfig_ = StorageConfig_;
|
6
|
+
exports.Inputs_ = exports.AppConfig_ = void 0;
|
13
7
|
const AppConfig_ = Symbol.for('config.app');
|
14
8
|
exports.AppConfig_ = AppConfig_;
|
15
9
|
const Inputs_ = Symbol.for('cmd.input');
|
package/lib/fs/Fs.js
CHANGED
@@ -13,32 +13,33 @@ var _Path = require("./path/Path");
|
|
13
13
|
|
14
14
|
var _inversify = require("inversify");
|
15
15
|
|
16
|
-
var _AppLogger = require("../log/AppLogger");
|
17
|
-
|
18
16
|
var _expandAndCreatePath = require("../config/expandAndCreatePath");
|
19
17
|
|
20
18
|
var _os = _interopRequireDefault(require("os"));
|
21
19
|
|
20
|
+
var _logging = require("../log/logging");
|
21
|
+
|
22
22
|
var _dec, _dec2, _dec3, _class;
|
23
23
|
|
24
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
25
25
|
|
26
26
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
27
27
|
|
28
|
-
let Fs = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Path.AbsPath === "undefined" ? Object : _Path.AbsPath
|
29
|
-
constructor(cwd
|
28
|
+
let Fs = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Path.AbsPath === "undefined" ? Object : _Path.AbsPath]), _dec(_class = _dec2(_class = _dec3(_class = class Fs {
|
29
|
+
constructor(cwd) {
|
30
30
|
this.cwd = cwd;
|
31
|
-
|
31
|
+
|
32
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
32
33
|
|
33
34
|
_defineProperty(this, "writeFile", (path, content) => {
|
34
|
-
this.log.
|
35
|
+
this.log.trace('Writing into file %s', path.str());
|
35
36
|
this.ensureParentDir(path);
|
36
37
|
|
37
38
|
_fs.default.writeFileSync(path.str(), content);
|
38
39
|
});
|
39
40
|
|
40
41
|
_defineProperty(this, "writeStream", path => {
|
41
|
-
this.log.
|
42
|
+
this.log.trace('Writing into file %s', path.str());
|
42
43
|
return _fs.default.createWriteStream(path.str());
|
43
44
|
});
|
44
45
|
|
@@ -51,6 +52,8 @@ let Fs = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:
|
|
51
52
|
_defineProperty(this, "isDir", path => _fs.default.lstatSync(path.str()).isDirectory());
|
52
53
|
|
53
54
|
_defineProperty(this, "rmDir", path => {
|
55
|
+
this.log.trace('Removing file %s', path.str());
|
56
|
+
|
54
57
|
_fs.default.rmSync(path.str(), {
|
55
58
|
recursive: true
|
56
59
|
});
|
@@ -85,7 +88,7 @@ let Fs = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:
|
|
85
88
|
});
|
86
89
|
|
87
90
|
_defineProperty(this, "readFile", path => {
|
88
|
-
this.log.
|
91
|
+
this.log.trace('Reading from file %s', path.str());
|
89
92
|
return _fs.default.readFileSync(path.str()).toString();
|
90
93
|
});
|
91
94
|
|
@@ -96,7 +99,7 @@ let Fs = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:
|
|
96
99
|
|
97
100
|
_defineProperty(this, "ensureDir", path => {
|
98
101
|
if (!this.exists(path)) {
|
99
|
-
this.log.
|
102
|
+
this.log.trace('Dir %s does not exist. Wil be created', path.str());
|
100
103
|
|
101
104
|
_fs.default.mkdirSync(path.str(), {
|
102
105
|
recursive: true
|
package/lib/fs/Fs.test.js
CHANGED
@@ -4,17 +4,12 @@ var _Fs = require("./Fs");
|
|
4
4
|
|
5
5
|
var _Path = require("./path/Path");
|
6
6
|
|
7
|
-
var _AppLogger = require("../log/AppLogger");
|
8
|
-
|
9
7
|
it.skip('withTmpDir', async () => {
|
10
|
-
const fs = new _Fs.Fs(_Path.AbsPath.from(__dirname)
|
8
|
+
const fs = new _Fs.Fs(_Path.AbsPath.from(__dirname));
|
11
9
|
await fs.inTmpDir('foo', async () => {
|
12
|
-
console.log('before');
|
13
10
|
const wait = new Promise((res, rej) => {
|
14
11
|
setTimeout(res, 1000);
|
15
12
|
});
|
16
13
|
await wait;
|
17
|
-
console.log('after');
|
18
14
|
});
|
19
|
-
console.log('done');
|
20
15
|
});
|
@@ -12,8 +12,6 @@ var _Fs = require("../Fs");
|
|
12
12
|
|
13
13
|
var _Path = require("../path/Path");
|
14
14
|
|
15
|
-
var _AppLogger = require("../../log/AppLogger");
|
16
|
-
|
17
15
|
var _testHelper = require("../../../test/testHelper");
|
18
16
|
|
19
17
|
describe('FsSync', () => {
|
@@ -22,8 +20,7 @@ describe('FsSync', () => {
|
|
22
20
|
const to = _Path.AbsPath.from((0, _test.testDir)('fs/fssync/dst/inner'));
|
23
21
|
|
24
22
|
it('syncs dir', () => {
|
25
|
-
const
|
26
|
-
const sut = new _FsSyncer.FsSyncer(new _Shell.Shell(l), new _Fs.Fs(_Path.AbsPath.from(__dirname), l), l);
|
23
|
+
const sut = new _FsSyncer.FsSyncer(new _Shell.Shell(), new _Fs.Fs(_Path.AbsPath.from(__dirname)));
|
27
24
|
sut.syncDirs(from, to);
|
28
25
|
expect((0, _areDirsSame.areDirsSame)(from, to)).toBe(true);
|
29
26
|
});
|
@@ -11,7 +11,7 @@ var _Fs = require("../Fs");
|
|
11
11
|
|
12
12
|
var _inversify = require("inversify");
|
13
13
|
|
14
|
-
var
|
14
|
+
var _logging = require("../../log/logging");
|
15
15
|
|
16
16
|
var _dec, _dec2, _dec3, _class;
|
17
17
|
|
@@ -23,11 +23,12 @@ const toUnixDirString = path => {
|
|
23
23
|
return val + '/';
|
24
24
|
};
|
25
25
|
|
26
|
-
let FsSyncer = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs
|
27
|
-
constructor(sh, fs
|
26
|
+
let FsSyncer = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs]), _dec(_class = _dec2(_class = _dec3(_class = class FsSyncer {
|
27
|
+
constructor(sh, fs) {
|
28
28
|
this.sh = sh;
|
29
29
|
this.fs = fs;
|
30
|
-
|
30
|
+
|
31
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
31
32
|
|
32
33
|
_defineProperty(this, "sync", (from, to) => {
|
33
34
|
if (this.fs.isFile(from)) this.syncFile(from, to);else this.syncDirs(from, to);
|
@@ -0,0 +1,36 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.makeLog = exports.classObjLog = void 0;
|
7
|
+
|
8
|
+
var _pino = _interopRequireDefault(require("pino"));
|
9
|
+
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
11
|
+
|
12
|
+
// TODO set from config
|
13
|
+
const level = process.env.NODEBUP_LOG_LEVEL || 'trace';
|
14
|
+
const root = (0, _pino.default)({
|
15
|
+
name: 'root',
|
16
|
+
prettyPrint: true,
|
17
|
+
// - This will lead to problems with logging to stdout
|
18
|
+
// 1. No logging in Jest
|
19
|
+
// 2. Not logging when run as CLI app
|
20
|
+
// transport: { target: 'pino-pretty' },
|
21
|
+
level
|
22
|
+
});
|
23
|
+
|
24
|
+
const makeLog = name => {
|
25
|
+
return root.child({
|
26
|
+
name,
|
27
|
+
level
|
28
|
+
});
|
29
|
+
}; // TODO make type narrower
|
30
|
+
|
31
|
+
|
32
|
+
exports.makeLog = makeLog;
|
33
|
+
|
34
|
+
const classObjLog = obj => makeLog(obj.constructor.name);
|
35
|
+
|
36
|
+
exports.classObjLog = classObjLog;
|
@@ -9,8 +9,6 @@ var _inversify = require("inversify");
|
|
9
9
|
|
10
10
|
var _Shell = require("../../tools/shell/Shell");
|
11
11
|
|
12
|
-
var _AppLogger = require("../../log/AppLogger");
|
13
|
-
|
14
12
|
var _Fs = require("../../fs/Fs");
|
15
13
|
|
16
14
|
var _RcloneClient = require("./RcloneClient");
|
@@ -19,6 +17,8 @@ var _B2CredentialsProvider = require("../b2/B2CredentialsProvider");
|
|
19
17
|
|
20
18
|
var _RcloneBackupBackend = require("./RcloneBackupBackend");
|
21
19
|
|
20
|
+
var _logging = require("../../log/logging");
|
21
|
+
|
22
22
|
var _dec, _dec2, _dec3, _class;
|
23
23
|
|
24
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
@@ -34,13 +34,14 @@ const parseRepoUrl = url => {
|
|
34
34
|
};
|
35
35
|
};
|
36
36
|
|
37
|
-
let RCloneFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof
|
38
|
-
constructor(sh,
|
37
|
+
let RCloneFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof _B2CredentialsProvider.B2CredentialsProvider === "undefined" ? Object : _B2CredentialsProvider.B2CredentialsProvider]), _dec(_class = _dec2(_class = _dec3(_class = class RCloneFactory {
|
38
|
+
constructor(sh, fs, b2) {
|
39
39
|
this.sh = sh;
|
40
|
-
this.log = log;
|
41
40
|
this.fs = fs;
|
42
41
|
this.b2 = b2;
|
43
42
|
|
43
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
44
|
+
|
44
45
|
_defineProperty(this, "createBackupBackend", cfg => new _RcloneBackupBackend.RcloneBackupBackend(this.createClient(cfg)));
|
45
46
|
|
46
47
|
_defineProperty(this, "createClient", cfg => {
|
@@ -65,7 +66,7 @@ let RCloneFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metada
|
|
65
66
|
if (creds) throw new Error(`Credentials not supported for local rclone`);
|
66
67
|
}
|
67
68
|
|
68
|
-
return new _RcloneClient.RcloneClient(props, this.sh
|
69
|
+
return new _RcloneClient.RcloneClient(props, this.sh);
|
69
70
|
});
|
70
71
|
}
|
71
72
|
|
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.RcloneBackupBackend = void 0;
|
7
7
|
|
8
|
-
var _AppLogger = require("../../log/AppLogger");
|
9
|
-
|
10
8
|
var _nclif = require("@ps-aux/nclif");
|
11
9
|
|
10
|
+
var _logging = require("../../log/logging");
|
11
|
+
|
12
12
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
13
13
|
|
14
14
|
class RcloneBackupBackend {
|
15
15
|
constructor(rclone) {
|
16
16
|
this.rclone = rclone;
|
17
17
|
|
18
|
-
_defineProperty(this, "log", (0,
|
18
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
19
19
|
|
20
20
|
_defineProperty(this, "backup", (from, tags) => {
|
21
21
|
if (tags) throw new _nclif.InvalidInputError(`Rclone does not support tags`);
|
@@ -7,10 +7,10 @@ exports.RcloneClient = void 0;
|
|
7
7
|
|
8
8
|
var _inversify = require("inversify");
|
9
9
|
|
10
|
-
var _types = require("../../types");
|
11
|
-
|
12
10
|
var _Shell = require("../../tools/shell/Shell");
|
13
11
|
|
12
|
+
var _logging = require("../../log/logging");
|
13
|
+
|
14
14
|
var _dec, _dec2, _dec3, _class;
|
15
15
|
|
16
16
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
@@ -19,18 +19,19 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
19
19
|
* Tested with: rclone v1.57.0
|
20
20
|
* TODO forwarding stdout to the logger
|
21
21
|
*/
|
22
|
-
let RcloneClient = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof RcloneConfig === "undefined" ? Object : RcloneConfig, typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell
|
23
|
-
constructor(cfg, shell
|
22
|
+
let RcloneClient = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof RcloneConfig === "undefined" ? Object : RcloneConfig, typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell]), _dec(_class = _dec2(_class = _dec3(_class = class RcloneClient {
|
23
|
+
constructor(cfg, shell) {
|
24
24
|
this.cfg = cfg;
|
25
25
|
this.shell = shell;
|
26
|
-
this.log = log;
|
27
26
|
|
28
27
|
_defineProperty(this, "remoteName", 'my');
|
29
28
|
|
30
29
|
_defineProperty(this, "cryptRemoteName", 'crypt');
|
31
30
|
|
31
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
32
|
+
|
32
33
|
_defineProperty(this, "backup", from => {
|
33
|
-
this.log.debug('Running backup for ', this.cfg.type, this.cfg.location);
|
34
|
+
this.log.debug('Running backup for %s %s', this.cfg.type, this.cfg.location);
|
34
35
|
this.shell.exec(`rclone sync ${from.str()} ${this.actualRemoteName}:${this.cfg.location} --config=noconfig`, // Rclone logs error if the file is not set even though it supports env var interface
|
35
36
|
{
|
36
37
|
env: this.env()
|
@@ -38,7 +39,7 @@ let RcloneClient = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadat
|
|
38
39
|
});
|
39
40
|
|
40
41
|
_defineProperty(this, "restore", to => {
|
41
|
-
this.log.debug('Running restore for ', this.cfg.type, this.cfg.location);
|
42
|
+
this.log.debug('Running restore for %s %s', this.cfg.type, this.cfg.location);
|
42
43
|
this.shell.exec(`rclone sync ${this.actualRemoteName}:${this.cfg.location} ${to.str()} --config=noconfig`, {
|
43
44
|
env: this.env()
|
44
45
|
});
|
@@ -15,7 +15,6 @@ var _b2TestConfig = require("../../../test/b2TestConfig");
|
|
15
15
|
var _testHelper = require("../../../test/testHelper");
|
16
16
|
|
17
17
|
describe('RcloneClient', () => {
|
18
|
-
const l = _testHelper.testLog;
|
19
18
|
const getRestoreDir = (0, _test.testdataDirBuilder)('b2/restore');
|
20
19
|
describe('local', () => {
|
21
20
|
const backupDir = (0, _test.testDir)('backup/1');
|
@@ -33,7 +32,7 @@ describe('RcloneClient', () => {
|
|
33
32
|
(0, _testHelper.cleanDir)(restoreDir);
|
34
33
|
});
|
35
34
|
it('backup & restore', () => {
|
36
|
-
const sut = new _RcloneClient.RcloneClient(cfg, new _Shell.Shell(
|
35
|
+
const sut = new _RcloneClient.RcloneClient(cfg, new _Shell.Shell());
|
37
36
|
sut.backup(_Path.AbsPath.from(backupDir));
|
38
37
|
sut.restore(_Path.AbsPath.from(restoreDir));
|
39
38
|
const res = (0, _dirCompare.compareSync)(backupDir, restoreDir);
|
@@ -42,7 +41,7 @@ describe('RcloneClient', () => {
|
|
42
41
|
it('backup & restore unencrypted', () => {
|
43
42
|
const sut = new _RcloneClient.RcloneClient({ ...cfg,
|
44
43
|
encryption: undefined
|
45
|
-
}, new _Shell.Shell(
|
44
|
+
}, new _Shell.Shell());
|
46
45
|
sut.backup(_Path.AbsPath.from(backupDir));
|
47
46
|
sut.restore(_Path.AbsPath.from(restoreDir));
|
48
47
|
const res = (0, _dirCompare.compareSync)(backupDir, restoreDir);
|
@@ -68,7 +67,7 @@ describe('RcloneClient', () => {
|
|
68
67
|
encryption: {
|
69
68
|
password: 'foo123'
|
70
69
|
}
|
71
|
-
}, new _Shell.Shell(
|
70
|
+
}, new _Shell.Shell());
|
72
71
|
const restoreDir = getRestoreDir('b2');
|
73
72
|
afterAll(() => {
|
74
73
|
(0, _testHelper.cleanDir)(restoreDir);
|
@@ -7,7 +7,7 @@ exports.ResticBackupBackend = void 0;
|
|
7
7
|
|
8
8
|
var _Path = require("../../fs/path/Path");
|
9
9
|
|
10
|
-
var
|
10
|
+
var _logging = require("../../log/logging");
|
11
11
|
|
12
12
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
13
13
|
|
@@ -15,7 +15,7 @@ class ResticBackupBackend {
|
|
15
15
|
constructor(restic) {
|
16
16
|
this.restic = restic;
|
17
17
|
|
18
|
-
_defineProperty(this, "log", (0,
|
18
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
19
19
|
|
20
20
|
_defineProperty(this, "backup", (from, tags = []) => {
|
21
21
|
this.log.info(`Performing backup from=${from}, tags=${tags}`);
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.ResticClient = void 0;
|
7
7
|
|
8
|
+
var _logging = require("../../log/logging");
|
9
|
+
|
8
10
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
9
11
|
|
10
12
|
const normalizeUrl = url => {
|
@@ -20,15 +22,16 @@ const normalizeUrl = url => {
|
|
20
22
|
* TODO forwarding stdout to the logger
|
21
23
|
*/
|
22
24
|
class ResticClient {
|
23
|
-
constructor(cfg, shell
|
25
|
+
constructor(cfg, shell) {
|
24
26
|
this.cfg = cfg;
|
25
27
|
this.shell = shell;
|
26
|
-
this.log = log;
|
27
28
|
|
28
29
|
_defineProperty(this, "url", void 0);
|
29
30
|
|
31
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
32
|
+
|
30
33
|
_defineProperty(this, "prepareRepo", () => {
|
31
|
-
this.log.info(
|
34
|
+
this.log.info('Preparing a restic repo at %s', this.url);
|
32
35
|
this.shell.exec(`restic init`, {
|
33
36
|
env: this.env()
|
34
37
|
});
|
@@ -41,7 +44,7 @@ class ResticClient {
|
|
41
44
|
});
|
42
45
|
|
43
46
|
_defineProperty(this, "backup", (cwd, from, tags = []) => {
|
44
|
-
this.log.debug(
|
47
|
+
this.log.debug('Running backup for repo=%s', this.url);
|
45
48
|
let cmd = `restic backup ${from.str()}`;
|
46
49
|
tags.forEach(t => {
|
47
50
|
cmd += ` --tag=${t}`;
|
@@ -53,14 +56,14 @@ class ResticClient {
|
|
53
56
|
});
|
54
57
|
|
55
58
|
_defineProperty(this, "restore", (to, snapshotId = 'latest') => {
|
56
|
-
this.log.debug('Running restore for repo
|
59
|
+
this.log.debug('Running restore for repo=%s', this.url);
|
57
60
|
this.shell.exec(`restic restore ${snapshotId} --target ${to.str()}`, {
|
58
61
|
env: this.env()
|
59
62
|
});
|
60
63
|
});
|
61
64
|
|
62
65
|
_defineProperty(this, "forget", () => {
|
63
|
-
this.log.debug(
|
66
|
+
this.log.debug('Pruning repo=%s', this.url);
|
64
67
|
const cfg = {
|
65
68
|
hourly: 6,
|
66
69
|
daily: 7,
|
@@ -74,7 +77,7 @@ class ResticClient {
|
|
74
77
|
});
|
75
78
|
|
76
79
|
_defineProperty(this, "snapshots", () => {
|
77
|
-
this.log.debug(
|
80
|
+
this.log.debug('Listing snapshots of repo=%', this.url);
|
78
81
|
const out = this.shell.execAndReturnString(`restic snapshots --json`, {
|
79
82
|
env: this.env()
|
80
83
|
});
|
@@ -15,7 +15,6 @@ var _testHelper = require("../../../test/testHelper");
|
|
15
15
|
var _b2TestConfig = require("../../../test/b2TestConfig");
|
16
16
|
|
17
17
|
describe('ResticClient', () => {
|
18
|
-
const l = _testHelper.testLog;
|
19
18
|
const password = 'foo123';
|
20
19
|
describe('local', () => {
|
21
20
|
const backupDir = (0, _test.testDir)('backup/1');
|
@@ -26,7 +25,7 @@ describe('ResticClient', () => {
|
|
26
25
|
password,
|
27
26
|
url: `local:${repoDir}`
|
28
27
|
}
|
29
|
-
}, new _Shell.Shell(
|
28
|
+
}, new _Shell.Shell());
|
30
29
|
afterAll(() => {
|
31
30
|
(0, _testHelper.cleanDir)(repoDir);
|
32
31
|
(0, _testHelper.cleanDir)(restoreDir);
|
@@ -73,7 +72,7 @@ describe('ResticClient', () => {
|
|
73
72
|
url: repoUrl
|
74
73
|
},
|
75
74
|
backblaze: b2Cfg
|
76
|
-
}, new _Shell.Shell(
|
75
|
+
}, new _Shell.Shell());
|
77
76
|
afterAll(() => {
|
78
77
|
(0, _testHelper.cleanDir)(restoreDir);
|
79
78
|
});
|
@@ -13,12 +13,12 @@ var _config = require("../../config");
|
|
13
13
|
|
14
14
|
var _ResticFactory = require("./ResticFactory");
|
15
15
|
|
16
|
-
var _AppLogger = require("../../log/AppLogger");
|
17
|
-
|
18
16
|
var _StorageConfigProvider = require("../StorageConfigProvider");
|
19
17
|
|
20
18
|
var _types = require("../types");
|
21
19
|
|
20
|
+
var _logging = require("../../log/logging");
|
21
|
+
|
22
22
|
var _dec, _dec2, _dec3, _dec4, _class;
|
23
23
|
|
24
24
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
@@ -31,7 +31,7 @@ let ResticController = (_dec = (0, _inversify.injectable)(), _dec2 = function (t
|
|
31
31
|
this.cfg = cfg;
|
32
32
|
this.storageConfigProvider = storageConfigProvider;
|
33
33
|
|
34
|
-
_defineProperty(this, "log", (0,
|
34
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
35
35
|
|
36
36
|
_defineProperty(this, "client", () => {
|
37
37
|
const props = this.storageConfigProvider.provide();
|
@@ -11,8 +11,6 @@ var _ResticClient = require("./ResticClient");
|
|
11
11
|
|
12
12
|
var _Shell = require("../../tools/shell/Shell");
|
13
13
|
|
14
|
-
var _AppLogger = require("../../log/AppLogger");
|
15
|
-
|
16
14
|
var _Fs = require("../../fs/Fs");
|
17
15
|
|
18
16
|
var _B2CredentialsProvider = require("../b2/B2CredentialsProvider");
|
@@ -23,10 +21,9 @@ var _dec, _dec2, _dec3, _class;
|
|
23
21
|
|
24
22
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
25
23
|
|
26
|
-
let ResticFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof
|
27
|
-
constructor(sh,
|
24
|
+
let ResticFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [typeof _Shell.Shell === "undefined" ? Object : _Shell.Shell, typeof _Fs.Fs === "undefined" ? Object : _Fs.Fs, typeof _B2CredentialsProvider.B2CredentialsProvider === "undefined" ? Object : _B2CredentialsProvider.B2CredentialsProvider]), _dec(_class = _dec2(_class = _dec3(_class = class ResticFactory {
|
25
|
+
constructor(sh, fs, b2) {
|
28
26
|
this.sh = sh;
|
29
|
-
this.log = log;
|
30
27
|
this.fs = fs;
|
31
28
|
this.b2 = b2;
|
32
29
|
|
@@ -49,7 +46,7 @@ let ResticFactory = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metada
|
|
49
46
|
if (creds) throw new Error('Credentials can be set only for the B2 restic backend');
|
50
47
|
}
|
51
48
|
|
52
|
-
return new _ResticClient.ResticClient(props, this.sh
|
49
|
+
return new _ResticClient.ResticClient(props, this.sh);
|
53
50
|
});
|
54
51
|
}
|
55
52
|
|
@@ -9,31 +9,31 @@ var _admZip = _interopRequireDefault(require("adm-zip"));
|
|
9
9
|
|
10
10
|
var _inversify = require("inversify");
|
11
11
|
|
12
|
-
var
|
12
|
+
var _logging = require("../../log/logging");
|
13
13
|
|
14
|
-
var _dec,
|
14
|
+
var _dec, _class;
|
15
15
|
|
16
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
17
|
|
18
18
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19
19
|
|
20
|
-
let Zipper = (_dec = (0, _inversify.injectable)(),
|
21
|
-
constructor(
|
22
|
-
this
|
20
|
+
let Zipper = (_dec = (0, _inversify.injectable)(), _dec(_class = class Zipper {
|
21
|
+
constructor() {
|
22
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
23
23
|
|
24
24
|
_defineProperty(this, "zipDir", (dir, to) => {
|
25
|
-
this.log.debug(`Zipping
|
25
|
+
this.log.debug(`Zipping %s to %s`, dir.str(), to.str());
|
26
26
|
const z = new _admZip.default();
|
27
27
|
z.addLocalFolder(dir.str());
|
28
28
|
z.writeZip(to.str());
|
29
29
|
});
|
30
30
|
|
31
31
|
_defineProperty(this, "unzipDir", (zipFile, toDir) => {
|
32
|
-
this.log.debug(`Unzipping
|
32
|
+
this.log.debug(`Unzipping %s to %s`, zipFile.str(), toDir.str());
|
33
33
|
const z = new _admZip.default(zipFile.str());
|
34
34
|
z.extractAllTo(toDir.str());
|
35
35
|
});
|
36
36
|
}
|
37
37
|
|
38
|
-
}) || _class)
|
38
|
+
}) || _class);
|
39
39
|
exports.Zipper = Zipper;
|
@@ -6,10 +6,8 @@ var _Path = require("../../fs/path/Path");
|
|
6
6
|
|
7
7
|
var _testHelper = require("../../../test/testHelper");
|
8
8
|
|
9
|
-
var _AppLogger = require("../../log/AppLogger");
|
10
|
-
|
11
9
|
it('zip', () => {
|
12
|
-
const z = new _Zipper.Zipper(
|
10
|
+
const z = new _Zipper.Zipper();
|
13
11
|
|
14
12
|
const out = _Path.AbsPath.from(__dirname).resolve('../../test-data/out.zip');
|
15
13
|
|
@@ -8,12 +8,10 @@ var _test = require("../../../test");
|
|
8
8
|
|
9
9
|
var _fs = _interopRequireDefault(require("fs"));
|
10
10
|
|
11
|
-
var _testHelper = require("../../../test/testHelper");
|
12
|
-
|
13
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
14
12
|
|
15
13
|
it('works', () => {
|
16
|
-
const sut = new _Gpg.Gpg(new _Shell.Shell(
|
14
|
+
const sut = new _Gpg.Gpg(new _Shell.Shell());
|
17
15
|
|
18
16
|
const key = _fs.default.readFileSync((0, _test.testDir)('gpg/john.doe@foo.com.key.asc')).toString();
|
19
17
|
|
package/lib/tools/shell/Shell.js
CHANGED
@@ -9,22 +9,22 @@ var _shellCmd = require("./shellCmd");
|
|
9
9
|
|
10
10
|
var _inversify = require("inversify");
|
11
11
|
|
12
|
-
var _AppLogger = require("../../log/AppLogger");
|
13
|
-
|
14
12
|
var _child_process = require("child_process");
|
15
13
|
|
16
|
-
var
|
14
|
+
var _logging = require("../../log/logging");
|
15
|
+
|
16
|
+
var _dec, _class;
|
17
17
|
|
18
18
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19
19
|
|
20
20
|
// TODO copy pasted from my other project
|
21
21
|
// TODO don't log the full command as it contains secrets
|
22
|
-
let Shell = (_dec = (0, _inversify.injectable)(),
|
23
|
-
constructor(
|
24
|
-
this
|
22
|
+
let Shell = (_dec = (0, _inversify.injectable)(), _dec(_class = class Shell {
|
23
|
+
constructor() {
|
24
|
+
_defineProperty(this, "log", (0, _logging.classObjLog)(this));
|
25
25
|
|
26
26
|
_defineProperty(this, "exec", (cmd, opts = {}) => {
|
27
|
-
this.log.
|
27
|
+
this.log.trace(cmd);
|
28
28
|
(0, _shellCmd.shellCmd)(cmd, { ...opts
|
29
29
|
});
|
30
30
|
});
|
@@ -34,7 +34,7 @@ let Shell = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("desi
|
|
34
34
|
stdin,
|
35
35
|
opts = {}
|
36
36
|
}) => {
|
37
|
-
this.log.
|
37
|
+
this.log.trace(`<stdin> > ${cmd}`);
|
38
38
|
(0, _shellCmd.shellCmd)(cmd, { ...opts,
|
39
39
|
stdin
|
40
40
|
});
|
@@ -69,5 +69,5 @@ let Shell = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("desi
|
|
69
69
|
});
|
70
70
|
}
|
71
71
|
|
72
|
-
}) || _class)
|
72
|
+
}) || _class);
|
73
73
|
exports.Shell = Shell;
|
@@ -4,13 +4,11 @@ var _SshKeyManager = require("./SshKeyManager");
|
|
4
4
|
|
5
5
|
var _Fs = require("../../fs/Fs");
|
6
6
|
|
7
|
-
var _AppLogger = require("../../log/AppLogger");
|
8
|
-
|
9
7
|
var _Path = require("../../fs/path/Path");
|
10
8
|
|
11
9
|
// TODO setup ci to make tests work
|
12
10
|
it.skip('works', () => {
|
13
|
-
const sut = new _SshKeyManager.SshKeyManager(new _Fs.Fs(_Path.AbsPath.from(__dirname)
|
11
|
+
const sut = new _SshKeyManager.SshKeyManager(new _Fs.Fs(_Path.AbsPath.from(__dirname)));
|
14
12
|
const key = sut.exportKey('id_rsa');
|
15
13
|
console.log('key', key);
|
16
14
|
});
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ps-aux/nodebup",
|
3
|
-
"version": "0.9.
|
3
|
+
"version": "0.9.5",
|
4
4
|
"description": "",
|
5
5
|
"module": "lib/index.js",
|
6
6
|
"main": "lib/index.js",
|
@@ -86,7 +86,8 @@
|
|
86
86
|
"ini": "^2.0.0",
|
87
87
|
"inversify": "^6.0.1",
|
88
88
|
"js-yaml": "^4.1.0",
|
89
|
-
"pino": "^7.
|
89
|
+
"pino": "^7.11.0",
|
90
|
+
"pino-pretty": "^9.1.1",
|
90
91
|
"ramda": "^0.27.1",
|
91
92
|
"reflect-metadata": "^0.1.13",
|
92
93
|
"wait-on": "^6.0.0",
|
package/lib/log/AppLogger.js
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.logger = exports.AppLogger = void 0;
|
7
|
-
|
8
|
-
var _ConsoleLogger = require("./ConsoleLogger");
|
9
|
-
|
10
|
-
var _inversify = require("inversify");
|
11
|
-
|
12
|
-
var _dec, _dec2, _dec3, _class;
|
13
|
-
|
14
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
15
|
-
|
16
|
-
let AppLogger = (_dec = (0, _inversify.injectable)(), _dec2 = Reflect.metadata("design:type", Function), _dec3 = Reflect.metadata("design:paramtypes", [void 0]), _dec(_class = _dec2(_class = _dec3(_class = class AppLogger {
|
17
|
-
constructor(mute = false) {
|
18
|
-
_defineProperty(this, "log", new _ConsoleLogger.ConsoleLogger());
|
19
|
-
|
20
|
-
_defineProperty(this, "debug", this.log.debug);
|
21
|
-
|
22
|
-
_defineProperty(this, "info", this.log.info);
|
23
|
-
|
24
|
-
_defineProperty(this, "error", this.log.error);
|
25
|
-
|
26
|
-
if (mute) this.log.setEnabled(false);
|
27
|
-
}
|
28
|
-
|
29
|
-
}) || _class) || _class) || _class); // TODO make use of the name for logging
|
30
|
-
|
31
|
-
exports.AppLogger = AppLogger;
|
32
|
-
|
33
|
-
const logger = name => new AppLogger();
|
34
|
-
|
35
|
-
exports.logger = logger;
|
package/lib/log/ConsoleLogger.js
DELETED
@@ -1,33 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.ConsoleLogger = void 0;
|
7
|
-
|
8
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
9
|
-
|
10
|
-
class ConsoleLogger {
|
11
|
-
constructor() {
|
12
|
-
_defineProperty(this, "enabled", true);
|
13
|
-
|
14
|
-
_defineProperty(this, "print", (...args) => console.log(...args.map(a => a.toString())));
|
15
|
-
|
16
|
-
_defineProperty(this, "debug", (...args) => {
|
17
|
-
if (this.enabled) this.print(args);
|
18
|
-
});
|
19
|
-
|
20
|
-
_defineProperty(this, "info", (...args) => {
|
21
|
-
if (this.enabled) this.print(args);
|
22
|
-
});
|
23
|
-
|
24
|
-
_defineProperty(this, "error", this.print);
|
25
|
-
|
26
|
-
_defineProperty(this, "setEnabled", enabled => {
|
27
|
-
this.enabled = enabled;
|
28
|
-
});
|
29
|
-
}
|
30
|
-
|
31
|
-
}
|
32
|
-
|
33
|
-
exports.ConsoleLogger = ConsoleLogger;
|
package/lib/log/MinimalLogger.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.minimalLogger = void 0;
|
7
|
-
|
8
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
9
|
-
|
10
|
-
class MinimalLogger {
|
11
|
-
constructor(onlyError = true) {
|
12
|
-
this.onlyError = onlyError;
|
13
|
-
|
14
|
-
_defineProperty(this, "debug", (...args) => {
|
15
|
-
if (this.onlyError) return;
|
16
|
-
console.log(...args);
|
17
|
-
});
|
18
|
-
|
19
|
-
_defineProperty(this, "info", (...args) => {
|
20
|
-
if (this.onlyError) return;
|
21
|
-
console.log(...args);
|
22
|
-
});
|
23
|
-
|
24
|
-
_defineProperty(this, "error", console.error);
|
25
|
-
}
|
26
|
-
|
27
|
-
}
|
28
|
-
|
29
|
-
const minimalLogger = (onlyError = true) => new MinimalLogger(onlyError);
|
30
|
-
|
31
|
-
exports.minimalLogger = minimalLogger;
|