@udondan/avanti 0.23.0 → 0.24.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.
- package/README.md +129 -16
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +8 -4
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +66 -40
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +30 -6
- package/dist/commands/pull.js.map +1 -1
- package/dist/config-writeback.d.ts.map +1 -1
- package/dist/config-writeback.js +16 -4
- package/dist/config-writeback.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +152 -7
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +6 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +101 -24
- package/dist/diff.js.map +1 -1
- package/dist/history.d.ts +1 -0
- package/dist/history.d.ts.map +1 -1
- package/dist/history.js +32 -0
- package/dist/history.js.map +1 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +18 -8
- package/dist/paths.js.map +1 -1
- package/dist/sources/github.d.ts +1 -0
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +100 -0
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts +1 -0
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +161 -0
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +40 -14
- package/dist/sources/index.js.map +1 -1
- package/dist/types.d.ts +33 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/variables-remote.d.ts.map +1 -1
- package/dist/variables-remote.js +86 -6
- package/dist/variables-remote.js.map +1 -1
- package/dist/variables.d.ts.map +1 -1
- package/dist/variables.js +96 -10
- package/dist/variables.js.map +1 -1
- package/dist/writer.d.ts +1 -0
- package/dist/writer.d.ts.map +1 -1
- package/dist/writer.js +122 -7
- package/dist/writer.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ atomic rollbacks, and diff-before-apply safety.
|
|
|
36
36
|
- [Conditions](#conditions)
|
|
37
37
|
- [Scaffold Pattern](#scaffold-pattern)
|
|
38
38
|
- [Backup](#backup)
|
|
39
|
+
- [Write in Place](#write-in-place)
|
|
39
40
|
- [Variables](#variables)
|
|
40
41
|
- [$self — Self-managing Config](#self--self-managing-config)
|
|
41
42
|
- [Authentication](#authentication)
|
|
@@ -106,6 +107,7 @@ avanti revert # roll back instantly if something breaks
|
|
|
106
107
|
- **TOML merging** — deep-merge multiple TOML sources with configurable conflict, array, and table strategies
|
|
107
108
|
- **Variables** — define reusable values in a `variables:` block and reference them anywhere with `$name`; variables can be plain strings, `$env:NAME` environment variable references, or fetched from any remote/local source (the same source types as `files:`)
|
|
108
109
|
- **Post-processing** — apply text replacements (string or regex) and/or pipe content through a shell script
|
|
110
|
+
- **Release artifacts** — download release assets attached to a GitHub or GitLab release by tag, or use `$latest` for the newest release (GitLab prefers `package`-type links; falls back to all links)
|
|
109
111
|
- **Directory sync** — recursively sync directories from GitLab/GitHub/Bitbucket/git/S3/local sources
|
|
110
112
|
- **SHA pinning** — pin any remote source to a content fingerprint with `sha:`; use `avanti lock` to compute and write SHAs automatically; `avanti pull --accept-changes` reviews a mismatch and updates the pin
|
|
111
113
|
- **`$self`** — avanti can manage its own config file; declare `$self` in `files:` and the fetched content becomes the active config for the rest of the run, including YAML/JSON merge from multiple sources
|
|
@@ -323,6 +325,7 @@ Avanti enforces that target paths cannot escape the working directory:
|
|
|
323
325
|
|
|
324
326
|
- **Relative targets** are resolved under the working directory. A path like `../../etc/passwd` is rejected.
|
|
325
327
|
- **Absolute targets** (e.g. `/etc/hosts`) are only permitted when the working directory is `/`. If your working directory is any other path, absolute targets are an error.
|
|
328
|
+
- **Home-directory targets** (`~/…`) are expanded to the home directory and then subject to the same working-directory constraint — the expanded path must fall within the working directory. The most common case is running `avanti` from `~` so that all `~/…` targets resolve within it.
|
|
326
329
|
|
|
327
330
|
These rules apply to `target` values in your config. Source (`src`) paths are reads-only and are not restricted.
|
|
328
331
|
|
|
@@ -404,18 +407,19 @@ A brace group is only expanded when it contains **at least one comma** (e.g. `{f
|
|
|
404
407
|
|
|
405
408
|
> **YAML quoting:** YAML treats `{` at the start of a plain key as a flow mapping. If the brace group is the first character of a key, quote it: `'{dev,prod}.yml':` or `"{dev,prod}.yml":`. Keys where the brace group appears after a path prefix (e.g. `config/{dev,prod}.yml`) do not need quoting.
|
|
406
409
|
|
|
407
|
-
| Field
|
|
408
|
-
|
|
|
409
|
-
| `src`
|
|
410
|
-
| `if`
|
|
411
|
-
| `ifAny`
|
|
412
|
-
| `mode`
|
|
413
|
-
| `replace`
|
|
414
|
-
| `post`
|
|
415
|
-
| `template`
|
|
416
|
-
| `json`
|
|
417
|
-
| `yaml`
|
|
418
|
-
| `strategy`
|
|
410
|
+
| Field | Required | Description |
|
|
411
|
+
| -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
412
|
+
| `src` | Yes | Source (see below). May be a single source or a **list** of sources to concatenate. |
|
|
413
|
+
| `if` | No | Condition object (or list of objects). All must pass for the entry to be processed. See [Conditions](#conditions). |
|
|
414
|
+
| `ifAny` | No | List of condition objects. At least one must pass. See [Conditions](#conditions). |
|
|
415
|
+
| `mode` | No | File permission mode. Use a quoted octal string (`"0755"`) or a YAML octal literal (`0o755`). Mode-only changes (content unchanged) are detected by `diff` and applied by `pull`. **POSIX only** — ignored on Windows. |
|
|
416
|
+
| `replace` | No | List of `{from, to}` replacement rules. `from` may be a plain string or `/pattern/flags` regex. |
|
|
417
|
+
| `post` | No | Shell script. Content is piped via stdin; stdout is used as the result. Runs after `replace`. |
|
|
418
|
+
| `template` | No | Treat the fetched content as a template and render it with avanti config variables as context. See [Template Rendering](#template-rendering). |
|
|
419
|
+
| `json` | No | JSON merge/format options (see below). When omitted, merging is auto-enabled if all sources have a `.json` or `.jsonc` extension. Use `true`/`false` to force on or off regardless of extension. |
|
|
420
|
+
| `yaml` | No | YAML merge/format options (see below). When omitted, merging is auto-enabled if all sources have a `.yaml` or `.yml` extension. Use `true`/`false` to force on or off regardless of extension. Comments are preserved in merged output. |
|
|
421
|
+
| `strategy` | No | Write strategy: `replace` _(default)_ — overwrite the target file entirely; `insert` — merge content into the existing file without clobbering unrelated content. See [Insert Mode](#insert-mode). |
|
|
422
|
+
| `writeInPlace` | No | If `true`, replaces file content in-place instead of using an atomic rename. Preserves the existing inode. **Not atomic** — use only when inode stability is required. See [Write in Place](#write-in-place). |
|
|
419
423
|
|
|
420
424
|
### Source Types
|
|
421
425
|
|
|
@@ -456,21 +460,39 @@ src:
|
|
|
456
460
|
src:
|
|
457
461
|
gitlab:
|
|
458
462
|
project: group/repo # GitLab project path
|
|
459
|
-
file: path/to/file.txt # file or directory in repo
|
|
463
|
+
file: path/to/file.txt # file or directory in repo (mutually exclusive with release)
|
|
460
464
|
ref: main # branch, tag, or $latest (optional)
|
|
461
465
|
sha: abc123... # optional SHA-256 fingerprint
|
|
462
466
|
host: gitlab.mycompany.com # override default gitlab.com (optional)
|
|
463
467
|
via: cli # api, cli, or list (default: [api, cli])
|
|
464
468
|
|
|
469
|
+
# GitLab release artifacts — downloads package-type links (falls back to all links)
|
|
470
|
+
src:
|
|
471
|
+
gitlab:
|
|
472
|
+
project: group/repo # GitLab project path
|
|
473
|
+
release: v1.2.3 # release tag, or $latest (mutually exclusive with file)
|
|
474
|
+
sha: abc123... # optional SHA-256 fingerprint
|
|
475
|
+
host: gitlab.mycompany.com # override default gitlab.com (optional)
|
|
476
|
+
via: cli # api, cli, or list (default: [api, cli])
|
|
477
|
+
|
|
465
478
|
src:
|
|
466
479
|
github:
|
|
467
480
|
repo: owner/repo # GitHub owner/repo
|
|
468
|
-
file: path/to/file.txt # file or directory in repo
|
|
481
|
+
file: path/to/file.txt # file or directory in repo (mutually exclusive with release)
|
|
469
482
|
ref: main # branch, tag, or $latest (optional)
|
|
470
483
|
sha: abc123... # optional SHA-256 fingerprint
|
|
471
484
|
host: github.mycompany.com # GitHub Enterprise Server hostname (optional)
|
|
472
485
|
via: cli # api, cli, or list (default: [api, cli])
|
|
473
486
|
|
|
487
|
+
# GitHub release artifacts — downloads all assets attached to a release
|
|
488
|
+
src:
|
|
489
|
+
github:
|
|
490
|
+
repo: owner/repo # GitHub owner/repo
|
|
491
|
+
release: v1.2.3 # release tag, or $latest (mutually exclusive with file)
|
|
492
|
+
sha: abc123... # optional SHA-256 fingerprint
|
|
493
|
+
host: github.mycompany.com # GitHub Enterprise Server hostname (optional)
|
|
494
|
+
via: cli # api, cli, or list (default: [api, cli])
|
|
495
|
+
|
|
474
496
|
src:
|
|
475
497
|
bitbucket:
|
|
476
498
|
workspace: my-workspace # Bitbucket workspace slug
|
|
@@ -1102,6 +1124,31 @@ backup: $dirname/$basename.%dd.$ext # config.01.yaml, config.02.yaml, …
|
|
|
1102
1124
|
backup: ~/backups/$filename
|
|
1103
1125
|
```
|
|
1104
1126
|
|
|
1127
|
+
### Write in Place
|
|
1128
|
+
|
|
1129
|
+
By default avanti writes files using an atomic rename: content is staged to a temporary file in the same directory, then `rename(2)` replaces the target atomically. This creates a new inode on every pull.
|
|
1130
|
+
|
|
1131
|
+
Some environments track files by inode — file watchers (`inotifywait IN_CLOSE_WRITE`), Docker bind-mount hot-reload, certain editors. When the inode changes those watchers lose the file. Set `writeInPlace: true` to replace the file's content in-place instead:
|
|
1132
|
+
|
|
1133
|
+
```yaml
|
|
1134
|
+
files:
|
|
1135
|
+
docker/config.json:
|
|
1136
|
+
src:
|
|
1137
|
+
github:
|
|
1138
|
+
repo: org/repo
|
|
1139
|
+
file: docker/config.json
|
|
1140
|
+
writeInPlace: true
|
|
1141
|
+
```
|
|
1142
|
+
|
|
1143
|
+
| | default | `writeInPlace: true` |
|
|
1144
|
+
| ---------------- | ----------------- | ---------------------------- |
|
|
1145
|
+
| Atomic? | Yes — `rename(2)` | **No** — truncate then write |
|
|
1146
|
+
| Inode preserved? | No | Yes |
|
|
1147
|
+
| New file | Created normally | Created normally |
|
|
1148
|
+
| Backup | Yes | Yes |
|
|
1149
|
+
|
|
1150
|
+
> **Warning:** `writeInPlace: true` is **not atomic**. Between the truncate and the completed write, a concurrent reader will see empty or partial content. Use the default atomic rename when correctness under concurrent reads matters more than inode stability.
|
|
1151
|
+
|
|
1105
1152
|
### Variables
|
|
1106
1153
|
|
|
1107
1154
|
Define reusable values at the top level under `variables:`:
|
|
@@ -1155,7 +1202,73 @@ files:
|
|
|
1155
1202
|
post: sed 's/$$HOME/redacted/g' # $HOME would be treated as an avanti variable
|
|
1156
1203
|
```
|
|
1157
1204
|
|
|
1158
|
-
`$$` produces a single `$` after substitution. `$$$name` produces `$` followed by the value of `name`.
|
|
1205
|
+
`$$` produces a single `$` after substitution. `$$$name` produces `$` followed by the value of `name`. `$${expr}` produces a literal `${expr}` — use this to include shell-style `${VAR}` or template placeholders verbatim in a string without avanti interpreting them.
|
|
1206
|
+
|
|
1207
|
+
#### List and object variables
|
|
1208
|
+
|
|
1209
|
+
Variables can hold lists (arrays) and objects (dictionaries), including nested structures. Declare them using standard YAML syntax:
|
|
1210
|
+
|
|
1211
|
+
```yaml
|
|
1212
|
+
variables:
|
|
1213
|
+
# list variable
|
|
1214
|
+
envs:
|
|
1215
|
+
- staging
|
|
1216
|
+
- production
|
|
1217
|
+
|
|
1218
|
+
# object variable
|
|
1219
|
+
db:
|
|
1220
|
+
host: postgres.internal
|
|
1221
|
+
port: 5432
|
|
1222
|
+
creds:
|
|
1223
|
+
user: admin
|
|
1224
|
+
```
|
|
1225
|
+
|
|
1226
|
+
Any `$var` references inside string leaves are resolved against previously defined variables, just like plain string variables.
|
|
1227
|
+
|
|
1228
|
+
> **Note:** `src` is a reserved key name at the top level of an object variable. An object whose top-level key is `src` is interpreted as a source-backed variable (fetched from a URL, file, `exec:`, etc.), not as a plain data object. If you need to pass an object that has a `src` property, nest it one level deeper (e.g. `data: {src: "..."}`).
|
|
1229
|
+
|
|
1230
|
+
#### Accessing nested values with `${expr}`
|
|
1231
|
+
|
|
1232
|
+
Use the braced `${expr}` syntax to access a specific element from a list or object variable in any string field. The expression supports dot notation for object properties, bracket notation for array indices, and combinations of both:
|
|
1233
|
+
|
|
1234
|
+
| Syntax | Description | Example result |
|
|
1235
|
+
| ----------------- | --------------------------------------- | ---------------------------------- |
|
|
1236
|
+
| `$name` | Variable value (stringified if complex) | `$version` → `1.2.3` |
|
|
1237
|
+
| `${name}` | Braced form of the above | `${version}` → `1.2.3` |
|
|
1238
|
+
| `${name.prop}` | Object property access | `${db.host}` → `postgres.internal` |
|
|
1239
|
+
| `${name[n]}` | Array index access (zero-based) | `${envs[0]}` → `staging` |
|
|
1240
|
+
| `${name[n].prop}` | Array element property | `${servers[1].host}` → `web2` |
|
|
1241
|
+
| `${name.a.b.c}` | Deeply nested property | `${db.creds.user}` → `admin` |
|
|
1242
|
+
|
|
1243
|
+
When a leaf value is a number or boolean it is coerced to a string. When the expression resolves to an object or array it is JSON-serialised. Using a plain `$name` reference where `name` holds a list or object also JSON-serialises the value.
|
|
1244
|
+
|
|
1245
|
+
> **Identifier restriction:** Variable names and dot-accessed property keys must be valid identifiers (`[A-Za-z_][A-Za-z0-9_]*`). Object keys containing hyphens, spaces, or other special characters (e.g. `my-key`) cannot be accessed via `${expr}`. Use a template engine if you need to reference such keys.
|
|
1246
|
+
>
|
|
1247
|
+
> **Note:** Any `${...}` in a config string is now parsed as a path expression. Shell-style expansions such as `${HOME:-/tmp}` or external template placeholders like `${MY_VAR}` must be escaped as `$${HOME:-/tmp}` / `$${MY_VAR}` to be passed through literally.
|
|
1248
|
+
|
|
1249
|
+
```yaml
|
|
1250
|
+
variables:
|
|
1251
|
+
envs:
|
|
1252
|
+
- staging
|
|
1253
|
+
- production
|
|
1254
|
+
db:
|
|
1255
|
+
host: postgres.internal
|
|
1256
|
+
port: 5432
|
|
1257
|
+
creds:
|
|
1258
|
+
user: admin
|
|
1259
|
+
|
|
1260
|
+
# derive further string variables from complex ones
|
|
1261
|
+
primary_env: ${envs[0]} # → "staging"
|
|
1262
|
+
db_host: ${db.host} # → "postgres.internal"
|
|
1263
|
+
db_user: ${db.creds.user} # → "admin"
|
|
1264
|
+
|
|
1265
|
+
files:
|
|
1266
|
+
deploy.sh:
|
|
1267
|
+
src:
|
|
1268
|
+
raw: 'psql -h ${db.host} -p ${db.port} -U ${db.creds.user}'
|
|
1269
|
+
```
|
|
1270
|
+
|
|
1271
|
+
When using a [template engine](#template-rendering), the full list or object is passed as context and all native template features — loops, conditionals, filters — work on them directly. The `${expr}` syntax is only needed for plain string interpolation outside of templates.
|
|
1159
1272
|
|
|
1160
1273
|
**Environment variables** use the `$env:NAME` form:
|
|
1161
1274
|
|
|
@@ -1213,7 +1326,7 @@ variables:
|
|
|
1213
1326
|
registry_line: //$host/:_authToken=$token # both $host and $token are available
|
|
1214
1327
|
```
|
|
1215
1328
|
|
|
1216
|
-
`$latest` is a reserved keyword that resolves to the latest published version and cannot be used as a variable name. For GitLab it resolves to the latest tag sorted by semantic version. For GitHub it resolves to the tag of the latest release; if the repository has no releases, it falls back to the most recently created tag. For Bitbucket it resolves to the latest tag sorted by name; if no tags exist, it falls back to the repository's default branch.
|
|
1329
|
+
`$latest` is a reserved keyword that resolves to the latest published version and cannot be used as a variable name. For GitLab it resolves to the latest tag sorted by semantic version (for `file:` sources) or the latest release (for `release:` sources, falling back to tags on older instances). For GitHub it resolves to the tag of the latest release (for both `file:` and `release:` sources); if the repository has no releases, it falls back to the most recently created tag. For Bitbucket it resolves to the latest tag sorted by name; if no tags exist, it falls back to the repository's default branch.
|
|
1217
1330
|
|
|
1218
1331
|
When `ref` is omitted, all source types (GitHub, GitLab, Bitbucket, git) resolve to the repository's default branch.
|
|
1219
1332
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4MpC,wBAAgB,WAAW,IAAI,OAAO,CAgKrC"}
|
package/dist/commands/diff.js
CHANGED
|
@@ -67,6 +67,7 @@ async function runDiffLoop(config, workingDir, dateVars, cache, configPath, hist
|
|
|
67
67
|
const pendingWrites = new Map();
|
|
68
68
|
let hasError = false;
|
|
69
69
|
let selfContent;
|
|
70
|
+
let selfMode;
|
|
70
71
|
let hasSelf = config_1.SELF_KEY in config.files;
|
|
71
72
|
if (hasSelf) {
|
|
72
73
|
const selfEntry = config.files[config_1.SELF_KEY];
|
|
@@ -147,9 +148,10 @@ async function runDiffLoop(config, workingDir, dateVars, cache, configPath, hist
|
|
|
147
148
|
}
|
|
148
149
|
if (isSelf) {
|
|
149
150
|
selfContent = content.toString('utf8');
|
|
151
|
+
selfMode = entry.mode;
|
|
150
152
|
continue;
|
|
151
153
|
}
|
|
152
|
-
allDiffs.push((0, diff_1.computeDiff)(targetPath, content));
|
|
154
|
+
allDiffs.push((0, diff_1.computeDiff)(targetPath, content, entry.mode));
|
|
153
155
|
pendingWrites.set(targetPath, content);
|
|
154
156
|
}
|
|
155
157
|
}
|
|
@@ -158,7 +160,7 @@ async function runDiffLoop(config, workingDir, dateVars, cache, configPath, hist
|
|
|
158
160
|
hasError = true;
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
|
-
return { allDiffs, hasError, selfContent };
|
|
163
|
+
return { allDiffs, hasError, selfContent, selfMode };
|
|
162
164
|
}
|
|
163
165
|
function diffCommand() {
|
|
164
166
|
return new commander_1.Command('diff')
|
|
@@ -193,6 +195,7 @@ function diffCommand() {
|
|
|
193
195
|
if (firstPass.selfContent !== undefined) {
|
|
194
196
|
let prevSelfContent;
|
|
195
197
|
let currentSelfContent = firstPass.selfContent;
|
|
198
|
+
let currentSelfMode = firstPass.selfMode;
|
|
196
199
|
let stableConfig;
|
|
197
200
|
while (stableConfig === undefined) {
|
|
198
201
|
let currentConfig;
|
|
@@ -220,6 +223,7 @@ function diffCommand() {
|
|
|
220
223
|
}
|
|
221
224
|
prevSelfContent = currentSelfContent;
|
|
222
225
|
currentSelfContent = next.selfContent;
|
|
226
|
+
currentSelfMode = next.selfMode;
|
|
223
227
|
}
|
|
224
228
|
if (stableConfig !== undefined) {
|
|
225
229
|
// Use Object.create(null) to preserve the null-prototype invariant
|
|
@@ -238,10 +242,10 @@ function diffCommand() {
|
|
|
238
242
|
const existingIdx = allDiffs.findIndex((d) => d.targetPath === configPath);
|
|
239
243
|
const selfBuf = Buffer.from(currentSelfContent, 'utf8');
|
|
240
244
|
if (existingIdx === -1) {
|
|
241
|
-
allDiffs.push((0, diff_1.computeDiff)(configPath, selfBuf));
|
|
245
|
+
allDiffs.push((0, diff_1.computeDiff)(configPath, selfBuf, currentSelfMode));
|
|
242
246
|
}
|
|
243
247
|
else {
|
|
244
|
-
allDiffs[existingIdx] = (0, diff_1.computeDiff)(configPath, selfBuf);
|
|
248
|
+
allDiffs[existingIdx] = (0, diff_1.computeDiff)(configPath, selfBuf, currentSelfMode);
|
|
245
249
|
}
|
|
246
250
|
}
|
|
247
251
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/commands/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,UAAU,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,UAAU,IAAI,OAAO,CAmCpC"}
|
package/dist/commands/log.js
CHANGED
|
@@ -43,22 +43,41 @@ function logCommand() {
|
|
|
43
43
|
.description('Show pull history for the current project')
|
|
44
44
|
.argument('[file]', 'show version history for a specific file')
|
|
45
45
|
.action((file, _options, cmd) => {
|
|
46
|
-
const
|
|
46
|
+
const rawConfig = cmd.parent?.opts().config;
|
|
47
47
|
const rawWorkingDir = cmd.parent?.opts().workingDir;
|
|
48
48
|
const workingDir = rawWorkingDir
|
|
49
49
|
? path.resolve(rawWorkingDir)
|
|
50
50
|
: process.cwd();
|
|
51
|
-
|
|
51
|
+
let managers;
|
|
52
|
+
if (rawConfig !== undefined) {
|
|
53
|
+
const configPath = (0, config_1.resolveConfigPath)(rawConfig);
|
|
54
|
+
managers = [
|
|
55
|
+
new history_1.HistoryManager((0, config_1.normalizeConfigKey)(configPath), workingDir),
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
managers = history_1.HistoryManager.findByWorkingDir(workingDir);
|
|
60
|
+
if (managers.length === 0) {
|
|
61
|
+
// No history found for this workingDir; create an empty manager so
|
|
62
|
+
// the "No history recorded yet." message is shown consistently.
|
|
63
|
+
const configPath = (0, config_1.resolveConfigPath)(undefined);
|
|
64
|
+
managers = [
|
|
65
|
+
new history_1.HistoryManager((0, config_1.normalizeConfigKey)(configPath), workingDir),
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
52
69
|
if (file !== undefined) {
|
|
53
|
-
showFileHistory(
|
|
70
|
+
showFileHistory(managers, file, workingDir);
|
|
54
71
|
}
|
|
55
72
|
else {
|
|
56
|
-
showPullHistory(
|
|
73
|
+
showPullHistory(managers);
|
|
57
74
|
}
|
|
58
75
|
});
|
|
59
76
|
}
|
|
60
|
-
function showPullHistory(
|
|
61
|
-
const pulls =
|
|
77
|
+
function showPullHistory(managers) {
|
|
78
|
+
const pulls = managers
|
|
79
|
+
.flatMap((m) => m.listPulls())
|
|
80
|
+
.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
|
|
62
81
|
if (pulls.length === 0) {
|
|
63
82
|
console.log('No history recorded yet.');
|
|
64
83
|
return;
|
|
@@ -87,48 +106,55 @@ function showPullHistory(history) {
|
|
|
87
106
|
console.log('');
|
|
88
107
|
}
|
|
89
108
|
}
|
|
90
|
-
function showFileHistory(
|
|
109
|
+
function showFileHistory(managers, filePath, workingDir) {
|
|
91
110
|
const absolutePath = path.isAbsolute(filePath)
|
|
92
111
|
? filePath
|
|
93
112
|
: path.resolve(workingDir, filePath);
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
suffix = '
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
113
|
+
const sortedManagers = [...managers].sort((a, b) => {
|
|
114
|
+
const aTs = a.listPulls()[0]?.timestamp ?? '';
|
|
115
|
+
const bTs = b.listPulls()[0]?.timestamp ?? '';
|
|
116
|
+
return bTs.localeCompare(aTs);
|
|
117
|
+
});
|
|
118
|
+
for (const history of sortedManagers) {
|
|
119
|
+
const fileHistory = history.getFileHistory(absolutePath);
|
|
120
|
+
if (!fileHistory)
|
|
121
|
+
continue;
|
|
122
|
+
console.log(`${absolutePath}\n`);
|
|
123
|
+
const pulls = history.listPulls();
|
|
124
|
+
const pullsById = new Map(pulls.map((p) => [p.pullId, p]));
|
|
125
|
+
const versions = [...fileHistory.versions].reverse();
|
|
126
|
+
for (const v of versions) {
|
|
127
|
+
const vLabel = `v${v.version}`;
|
|
128
|
+
const ts = v.pulledAt
|
|
129
|
+
? formatTimestamp(v.pulledAt)
|
|
130
|
+
: '— ';
|
|
131
|
+
const pullRef = v.pullId ? `pull ${v.pullId.slice(0, 8)}` : '— ';
|
|
132
|
+
let suffix = '';
|
|
133
|
+
if (v.version === fileHistory.currentVersion)
|
|
134
|
+
suffix = ' (current)';
|
|
135
|
+
if (v.isOriginal)
|
|
136
|
+
suffix = ' (original, before avanti)';
|
|
137
|
+
console.log(` ${vLabel.padEnd(4)} ${ts} ${pullRef}${suffix}`);
|
|
138
|
+
if (v.pullId) {
|
|
139
|
+
const pullEntry = pullsById.get(v.pullId);
|
|
140
|
+
const fileRef = pullEntry?.files.find((f) => f.absolutePath === absolutePath && f.version === v.version);
|
|
141
|
+
if (fileRef?.sources && fileRef.sources.length > 0) {
|
|
142
|
+
for (const s of fileRef.sources) {
|
|
143
|
+
const shaShort = s.observedSha.slice(0, 16);
|
|
144
|
+
if (s.accepted && s.expectedSha) {
|
|
145
|
+
const prevShort = s.expectedSha.slice(0, 16);
|
|
146
|
+
console.log(` ${s.label} sha:${shaShort} ⚠ accepted (was: ${prevShort})`);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
console.log(` ${s.label} sha:${shaShort}`);
|
|
150
|
+
}
|
|
127
151
|
}
|
|
128
152
|
}
|
|
129
153
|
}
|
|
130
154
|
}
|
|
155
|
+
return;
|
|
131
156
|
}
|
|
157
|
+
console.log(`No history for ${absolutePath}.`);
|
|
132
158
|
}
|
|
133
159
|
function formatTimestamp(iso) {
|
|
134
160
|
const d = new Date(iso);
|
package/dist/commands/log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,gCAmCC;AAxCD,yCAAoC;AACpC,2CAA6B;AAC7B,sCAAkE;AAClE,wCAA0D;AAE1D,SAAgB,UAAU;IACxB,OAAO,IAAI,mBAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,QAAQ,EAAE,0CAA0C,CAAC;SAC9D,MAAM,CAAC,CAAC,IAAwB,EAAE,QAAiB,EAAE,GAAY,EAAE,EAAE;QACpE,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAA4B,CAAC;QAClE,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,UAAgC,CAAC;QAC1E,MAAM,UAAU,GAAG,aAAa;YAC9B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAElB,IAAI,QAA0B,CAAC;QAC/B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;YAChD,QAAQ,GAAG;gBACT,IAAI,wBAAc,CAAC,IAAA,2BAAkB,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC;aAC/D,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,wBAAc,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,mEAAmE;gBACnE,gEAAgE;gBAChE,MAAM,UAAU,GAAG,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;gBAChD,QAAQ,GAAG;oBACT,IAAI,wBAAc,CAAC,IAAA,2BAAkB,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC;iBAC/D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,eAAe,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IACjD,MAAM,KAAK,GAAG,QAAQ;SACnB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,OAAO,KAAK,EAAE,KAAK,UAAU,EAAE,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;YAClE,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;wBAChC,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC7C,OAAO,CAAC,GAAG,CACT,OAAO,CAAC,CAAC,KAAK,SAAS,QAAQ,sBAAsB,SAAS,GAAG,CAClE,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,SAAS,QAAQ,EAAE,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,QAA0B,EAC1B,QAAgB,EAChB,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC5C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;QAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,EAAE,CAAC;QAC9C,OAAO,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACzD,IAAI,CAAC,WAAW;YAAE,SAAS;QAE3B,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAChC,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ;gBACnB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC7B,CAAC,CAAC,4BAA4B,CAAC;YACjC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACxE,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,CAAC,cAAc;gBAAE,MAAM,GAAG,aAAa,CAAC;YACrE,IAAI,CAAC,CAAC,UAAU;gBAAE,MAAM,GAAG,6BAA6B,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,OAAO,GAAG,MAAM,EAAE,CAAC,CAAC;YAEjE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,CAAC,IAAI,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAClE,CAAC;gBACF,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;wBAChC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAC5C,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;4BAChC,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BAC7C,OAAO,CAAC,GAAG,CACT,YAAY,CAAC,CAAC,KAAK,SAAS,QAAQ,sBAAsB,SAAS,GAAG,CACvE,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,QAAQ,EAAE,CAAC,CAAC;wBACtD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kBAAkB,YAAY,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;IACxE,OAAO,CACL,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG;QAClE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAC3E,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/commands/pull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2VpC,wBAAgB,WAAW,IAAI,OAAO,CAudrC"}
|
package/dist/commands/pull.js
CHANGED
|
@@ -230,7 +230,7 @@ async function runFetchLoop(config, workingDir, dateVars, cache, configPath, his
|
|
|
230
230
|
selfSourceRecords = result.sourceRecords;
|
|
231
231
|
continue;
|
|
232
232
|
}
|
|
233
|
-
const diff = (0, diff_1.computeDiff)(targetPath, content);
|
|
233
|
+
const diff = (0, diff_1.computeDiff)(targetPath, content, entry.mode);
|
|
234
234
|
allDiffs.push(diff);
|
|
235
235
|
const backupPath = entry.backup && diff.hasChanges && !diff.isNew
|
|
236
236
|
? (0, variables_1.resolveBackupPath)(entry.backup, targetPath, workingDir, vars, config.backup_roots ?? [])
|
|
@@ -240,6 +240,7 @@ async function runFetchLoop(config, workingDir, dateVars, cache, configPath, his
|
|
|
240
240
|
content,
|
|
241
241
|
mode: entry.mode,
|
|
242
242
|
backupPath,
|
|
243
|
+
writeInPlace: entry.writeInPlace,
|
|
243
244
|
});
|
|
244
245
|
pendingWrites.set(targetPath, content);
|
|
245
246
|
if (result.sourceRecords.length > 0) {
|
|
@@ -409,15 +410,16 @@ function pullCommand() {
|
|
|
409
410
|
content: selfBuf,
|
|
410
411
|
mode: currentSelfMode,
|
|
411
412
|
});
|
|
412
|
-
allDiffs.push((0, diff_1.computeDiff)(configPath, selfBuf));
|
|
413
|
+
allDiffs.push((0, diff_1.computeDiff)(configPath, selfBuf, currentSelfMode));
|
|
413
414
|
}
|
|
414
415
|
else {
|
|
416
|
+
const resolvedSelfMode = currentSelfMode ?? writeTargets[existingIdx].mode;
|
|
415
417
|
writeTargets[existingIdx] = {
|
|
416
418
|
...writeTargets[existingIdx],
|
|
417
419
|
content: selfBuf,
|
|
418
|
-
mode:
|
|
420
|
+
mode: resolvedSelfMode,
|
|
419
421
|
};
|
|
420
|
-
allDiffs[existingIdx] = (0, diff_1.computeDiff)(configPath, selfBuf);
|
|
422
|
+
allDiffs[existingIdx] = (0, diff_1.computeDiff)(configPath, selfBuf, resolvedSelfMode);
|
|
421
423
|
}
|
|
422
424
|
// Content comes from $self — attribute the config file write to the
|
|
423
425
|
// $self sources so history reflects the actual origin.
|
|
@@ -560,9 +562,31 @@ function pullCommand() {
|
|
|
560
562
|
}
|
|
561
563
|
}
|
|
562
564
|
try {
|
|
563
|
-
const changedTargets = writeTargets.filter((_, i) => allDiffs[i].hasChanges);
|
|
565
|
+
const changedTargets = writeTargets.filter((_, i) => allDiffs[i].hasChanges && allDiffs[i].contentChanged);
|
|
566
|
+
// Content writes go first so that if atomicWrite throws, no permissions
|
|
567
|
+
// have been changed yet (minimises partial-apply surface).
|
|
564
568
|
(0, writer_1.atomicWrite)([...changedTargets, ...staleToRestore], staleToDelete);
|
|
565
|
-
|
|
569
|
+
// Mode-only changes: apply chmod directly (POSIX only — mode bits are
|
|
570
|
+
// not meaningful on Windows so modeChange is never set there).
|
|
571
|
+
let modeOnlyCount = 0;
|
|
572
|
+
if (process.platform !== 'win32') {
|
|
573
|
+
for (let i = 0; i < writeTargets.length; i++) {
|
|
574
|
+
const d = allDiffs[i];
|
|
575
|
+
if (d.modeChange && !d.contentChanged) {
|
|
576
|
+
const lst = fs.lstatSync(writeTargets[i].targetPath, {
|
|
577
|
+
throwIfNoEntry: false,
|
|
578
|
+
});
|
|
579
|
+
if (lst && !lst.isSymbolicLink()) {
|
|
580
|
+
fs.chmodSync(writeTargets[i].targetPath, d.modeChange.to);
|
|
581
|
+
modeOnlyCount++;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
const written = changedTargets.length +
|
|
587
|
+
staleToRestore.length +
|
|
588
|
+
staleToDelete.length +
|
|
589
|
+
modeOnlyCount;
|
|
566
590
|
console.log(`Wrote ${written} file(s).`);
|
|
567
591
|
}
|
|
568
592
|
catch (err) {
|