@udondan/avanti 0.12.0 → 0.13.0

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.
Files changed (75) hide show
  1. package/README.md +161 -87
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/diff.d.ts.map +1 -1
  5. package/dist/commands/diff.js +7 -0
  6. package/dist/commands/diff.js.map +1 -1
  7. package/dist/commands/lock.d.ts +3 -0
  8. package/dist/commands/lock.d.ts.map +1 -0
  9. package/dist/commands/lock.js +103 -0
  10. package/dist/commands/lock.js.map +1 -0
  11. package/dist/commands/log.d.ts.map +1 -1
  12. package/dist/commands/log.js +37 -3
  13. package/dist/commands/log.js.map +1 -1
  14. package/dist/commands/pull.d.ts.map +1 -1
  15. package/dist/commands/pull.js +126 -15
  16. package/dist/commands/pull.js.map +1 -1
  17. package/dist/commands/reset.d.ts.map +1 -1
  18. package/dist/commands/reset.js +1 -1
  19. package/dist/commands/reset.js.map +1 -1
  20. package/dist/commands/revert.d.ts.map +1 -1
  21. package/dist/commands/revert.js +1 -1
  22. package/dist/commands/revert.js.map +1 -1
  23. package/dist/config-writeback.d.ts +12 -0
  24. package/dist/config-writeback.d.ts.map +1 -0
  25. package/dist/config-writeback.js +183 -0
  26. package/dist/config-writeback.js.map +1 -0
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +53 -47
  29. package/dist/config.js.map +1 -1
  30. package/dist/fetch.d.ts +3 -0
  31. package/dist/fetch.d.ts.map +1 -1
  32. package/dist/fetch.js +6 -5
  33. package/dist/fetch.js.map +1 -1
  34. package/dist/history.d.ts +9 -1
  35. package/dist/history.d.ts.map +1 -1
  36. package/dist/history.js +21 -15
  37. package/dist/history.js.map +1 -1
  38. package/dist/processors/post.js +1 -1
  39. package/dist/processors/post.js.map +1 -1
  40. package/dist/sha.d.ts +2 -0
  41. package/dist/sha.d.ts.map +1 -0
  42. package/dist/sha.js +32 -0
  43. package/dist/sha.js.map +1 -0
  44. package/dist/sources/bitbucket.d.ts.map +1 -1
  45. package/dist/sources/bitbucket.js +8 -6
  46. package/dist/sources/bitbucket.js.map +1 -1
  47. package/dist/sources/git.js +1 -1
  48. package/dist/sources/git.js.map +1 -1
  49. package/dist/sources/github.d.ts.map +1 -1
  50. package/dist/sources/github.js +44 -36
  51. package/dist/sources/github.js.map +1 -1
  52. package/dist/sources/gitlab.d.ts.map +1 -1
  53. package/dist/sources/gitlab.js +5 -3
  54. package/dist/sources/gitlab.js.map +1 -1
  55. package/dist/sources/index.d.ts +7 -0
  56. package/dist/sources/index.d.ts.map +1 -1
  57. package/dist/sources/index.js +154 -97
  58. package/dist/sources/index.js.map +1 -1
  59. package/dist/sources/local.d.ts.map +1 -1
  60. package/dist/sources/local.js +5 -1
  61. package/dist/sources/local.js.map +1 -1
  62. package/dist/sources/s3.js +1 -1
  63. package/dist/sources/s3.js.map +1 -1
  64. package/dist/sources/vault.js +1 -1
  65. package/dist/sources/vault.js.map +1 -1
  66. package/dist/types.d.ts +13 -1
  67. package/dist/types.d.ts.map +1 -1
  68. package/dist/variables.d.ts +1 -0
  69. package/dist/variables.d.ts.map +1 -1
  70. package/dist/variables.js +27 -1
  71. package/dist/variables.js.map +1 -1
  72. package/dist/writer.d.ts.map +1 -1
  73. package/dist/writer.js +18 -12
  74. package/dist/writer.js.map +1 -1
  75. package/package.json +3 -3
package/dist/writer.js CHANGED
@@ -25,32 +25,38 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.atomicWrite = void 0;
27
27
  const fs = __importStar(require("fs"));
28
- const os = __importStar(require("os"));
29
28
  const path = __importStar(require("path"));
30
29
  function atomicWrite(targets, deletions = []) {
31
- const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'avanti-'));
30
+ // Stage each file as a sibling temp file on the same filesystem as the
31
+ // destination so that renameSync (rename(2)) is atomic on POSIX.
32
+ const staged = [];
32
33
  try {
33
- // Stage all files to temp dir first
34
- const staged = [];
35
34
  for (const t of targets) {
36
- const tmpFile = path.join(tmpDir, path.basename(t.targetPath) + '-' + staged.length);
35
+ const dir = path.dirname(t.targetPath);
36
+ if (!fs.existsSync(dir)) {
37
+ fs.mkdirSync(dir, { recursive: true });
38
+ }
39
+ const tmpFile = path.join(dir, '.' + path.basename(t.targetPath) + '.avanti-tmp');
37
40
  fs.writeFileSync(tmpFile, t.content, 'utf8');
38
41
  staged.push({ tmp: tmpFile, dest: t.targetPath, mode: t.mode });
39
42
  }
40
- // All staging succeeded — now write to real targets
43
+ // All staging succeeded — atomically rename each temp file into place
41
44
  for (const s of staged) {
42
- const dir = path.dirname(s.dest);
43
- if (!fs.existsSync(dir)) {
44
- fs.mkdirSync(dir, { recursive: true });
45
- }
46
- fs.copyFileSync(s.tmp, s.dest);
45
+ fs.renameSync(s.tmp, s.dest);
47
46
  if (s.mode) {
48
47
  fs.chmodSync(s.dest, parseInt(s.mode, 8));
49
48
  }
50
49
  }
51
50
  }
52
51
  finally {
53
- fs.rmSync(tmpDir, { recursive: true, force: true });
52
+ for (const s of staged) {
53
+ try {
54
+ fs.rmSync(s.tmp, { force: true });
55
+ }
56
+ catch {
57
+ // already renamed into place or never created
58
+ }
59
+ }
54
60
  }
55
61
  // Deletions happen after writes succeed; each failure is non-fatal
56
62
  for (const p of deletions) {
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAQ7B,SAAgB,WAAW,CACzB,OAAsB,EACtB,YAAsB,EAAE;IAExB,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,oCAAoC;QACpC,MAAM,MAAM,GAAwD,EAAE,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,MAAM,EACN,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAClD,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,oDAAoD;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAxCD,kCAwCC"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../src/writer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAQ7B,SAAgB,WAAW,CACzB,OAAsB,EACtB,YAAsB,EAAE;IAExB,uEAAuE;IACvE,iEAAiE;IACjE,MAAM,MAAM,GAAwD,EAAE,CAAC;IACvE,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,GAAG,EACH,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,aAAa,CAClD,CAAC;YACF,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,sEAAsE;QACtE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBACX,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,CAAC;YAAC,MAAM,CAAC;gBACP,8CAA8C;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AA9CD,kCA8CC"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@udondan/avanti",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Assemble local files from any source via a declarative YAML spec",
5
5
  "bin": {
6
6
  "avanti": "dist/cli.js"
7
7
  },
8
8
  "main": "./dist/cli.js",
9
9
  "scripts": {
10
- "build": "tsc && chmod +x dist/cli.js",
10
+ "build": "tsc -p tsconfig.build.json && chmod +x dist/cli.js",
11
11
  "dev": "tsx src/cli.ts",
12
12
  "test": "vitest run",
13
13
  "test:watch": "vitest",
14
- "lint": "eslint src",
14
+ "lint": "eslint src test",
15
15
  "format": "prettier --write .",
16
16
  "format:check": "prettier --check ."
17
17
  },