@ps-aux/nodebup 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
package/lib/cli/app.js CHANGED
@@ -101,14 +101,22 @@ const createApp = () => _nclif.CliApp.of({
101
101
 
102
102
  exports.createApp = createApp;
103
103
  const restic = (0, _nclif.cmdGroup)({
104
+ options: singleStorageOptions,
104
105
  commands: {
105
106
  'init-repo': (0, _nclif.cmd)({
106
- options: singleStorageOptions,
107
107
  run: (_, c) => c.get(_ResticController.ResticController).initRepo()
108
108
  }),
109
109
  snapshots: (0, _nclif.cmd)({
110
- options: singleStorageOptions,
111
110
  run: (_, c, p) => c.get(_ResticController.ResticController).listSnapshots(p.stdout)
111
+ }),
112
+ cmd: (0, _nclif.cmd)({
113
+ positionals: [{
114
+ name: 'cmd',
115
+ required: true
116
+ }],
117
+ run: ({
118
+ cmd
119
+ }, c, p) => c.get(_ResticController.ResticController).runResticCmd(cmd, p.stdout)
112
120
  })
113
121
  }
114
122
  });
@@ -126,9 +134,11 @@ const pg = (0, _nclif.cmdGroup)({
126
134
  }],
127
135
  commands: {
128
136
  backup: (0, _nclif.cmd)({
137
+ options: backupOptions,
129
138
  run: (inp, c) => c.get(_PgBackupController.PgBackupController).backup(inp)
130
139
  }),
131
140
  restore: (0, _nclif.cmd)({
141
+ options: restoreOptions,
132
142
  run: (inp, c) => c.get(_PgBackupController.PgBackupController).restore(inp)
133
143
  })
134
144
  }
@@ -34,6 +34,12 @@ class ResticClient {
34
34
  });
35
35
  });
36
36
 
37
+ _defineProperty(this, "runCmd", cmd => {
38
+ return this.shell.execAndReturnBuffer(`restic ${cmd}`, {
39
+ env: this.env()
40
+ });
41
+ });
42
+
37
43
  _defineProperty(this, "backup", (cwd, from, tags = []) => {
38
44
  this.log.debug(`Running backup for repo=${this.url}`);
39
45
  let cmd = `restic backup ${from.str()}`;
@@ -56,12 +62,12 @@ class ResticClient {
56
62
  _defineProperty(this, "forget", () => {
57
63
  this.log.debug(`Pruning repo=${this.url}`);
58
64
  const cfg = {
59
- hourly: 12,
65
+ hourly: 6,
60
66
  daily: 7,
61
67
  weekly: 8,
62
- monthly: 24
68
+ monthly: 12
63
69
  };
64
- this.shell.exec(`restic forget --prune ` + `--tag '' ` + // Ignore the tagged snapshots
70
+ this.shell.exec(`restic forget --prune ` + `--group-by tags ` + // The paths are often different when using tmp dirs
65
71
  `--keep-hourly ${cfg.hourly} --keep-daily ${cfg.daily} ` + `--keep-weekly ${cfg.weekly} --keep-monthly ${cfg.monthly}`, {
66
72
  env: this.env()
67
73
  });
@@ -36,11 +36,12 @@ let ResticController = (_dec = (0, _inversify.injectable)(), _dec2 = function (t
36
36
  _defineProperty(this, "client", () => {
37
37
  const props = this.storageConfigProvider.provide();
38
38
  if (props.type !== _types.StorageType.Restic) throw new Error('Storage is not Restic storage');
39
- this.log.info('Initializing repo', props.repo);
40
39
  return this.restFact.createClient(props);
41
40
  });
42
41
 
43
42
  _defineProperty(this, "initRepo", () => {
43
+ const props = this.storageConfigProvider.provide();
44
+ this.log.info(`Initializing Restic repo ${props.repo}`);
44
45
  this.client().prepareRepo();
45
46
  });
46
47
 
@@ -48,6 +49,11 @@ let ResticController = (_dec = (0, _inversify.injectable)(), _dec2 = function (t
48
49
  const res = this.client().snapshots();
49
50
  print(JSON.stringify(res, null, 4));
50
51
  });
52
+
53
+ _defineProperty(this, "runResticCmd", (cmd, print) => {
54
+ const res = this.client().runCmd(cmd);
55
+ print(res.toString());
56
+ });
51
57
  }
52
58
 
53
59
  }) || _class) || _class) || _class) || _class);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ps-aux/nodebup",
3
- "version": "0.8.0",
3
+ "version": "0.9.1",
4
4
  "description": "",
5
5
  "module": "lib/index.js",
6
6
  "main": "lib/index.js",