@udondan/avanti 0.22.0 → 0.23.1
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 +169 -12
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +21 -12
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/lock.d.ts.map +1 -1
- package/dist/commands/lock.js +8 -4
- package/dist/commands/lock.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 +38 -16
- package/dist/commands/pull.js.map +1 -1
- package/dist/condition.js +2 -2
- package/dist/condition.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +41 -5
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +0 -4
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +0 -51
- 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 +7 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +151 -0
- package/dist/paths.js.map +1 -0
- package/dist/sources/index.js +2 -2
- package/dist/sources/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/variables.d.ts +5 -0
- package/dist/variables.d.ts.map +1 -1
- package/dist/variables.js +186 -1
- 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 +42 -1
- package/dist/writer.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -35,6 +35,7 @@ atomic rollbacks, and diff-before-apply safety.
|
|
|
35
35
|
- [Insert Mode](#insert-mode)
|
|
36
36
|
- [Conditions](#conditions)
|
|
37
37
|
- [Scaffold Pattern](#scaffold-pattern)
|
|
38
|
+
- [Backup](#backup)
|
|
38
39
|
- [Variables](#variables)
|
|
39
40
|
- [$self — Self-managing Config](#self--self-managing-config)
|
|
40
41
|
- [Authentication](#authentication)
|
|
@@ -322,6 +323,7 @@ Avanti enforces that target paths cannot escape the working directory:
|
|
|
322
323
|
|
|
323
324
|
- **Relative targets** are resolved under the working directory. A path like `../../etc/passwd` is rejected.
|
|
324
325
|
- **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.
|
|
326
|
+
- **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.
|
|
325
327
|
|
|
326
328
|
These rules apply to `target` values in your config. Source (`src`) paths are reads-only and are not restricted.
|
|
327
329
|
|
|
@@ -386,6 +388,23 @@ files:
|
|
|
386
388
|
|
|
387
389
|
End the target path with `/` to write a directory source as a mirror; omit the trailing slash to merge all files from the directory into a single output file (YAML/JSON auto-detected by extension, or forced with `yaml:`/`json:`).
|
|
388
390
|
|
|
391
|
+
**Brace expansion** — use `{a,b,c}` in the target key to declare multiple entries from a single block. The config is equivalent to repeating the block for each alternative:
|
|
392
|
+
|
|
393
|
+
```yaml
|
|
394
|
+
files:
|
|
395
|
+
config/{dev,staging,prod}.yml:
|
|
396
|
+
src:
|
|
397
|
+
github:
|
|
398
|
+
repo: my-org/configs
|
|
399
|
+
file: $filename
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
This is identical to three separate entries for `config/dev.yml`, `config/staging.yml`, and `config/prod.yml`. Per-entry variables like `$filename`, `$basename`, and `$dirname` are derived from each expanded path, so they can be used directly in source fields (as above). Multiple brace groups in a single key are expanded as a cross-product: `{a,b}/{x,y}` produces four entries.
|
|
403
|
+
|
|
404
|
+
A brace group is only expanded when it contains **at least one comma** (e.g. `{foo,bar}`). A group without a comma — such as `{foo}` — is left as a literal brace sequence and is not expanded. This matches standard shell behavior and means filenames that happen to contain `{` or `}` (e.g. route patterns like `{id}`) require no escaping. YAML quoting is still required when the key itself starts with `{` — see the note below. A single key may produce at most 100 expanded entries; exceeding this limit throws a parse error.
|
|
405
|
+
|
|
406
|
+
> **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.
|
|
407
|
+
|
|
389
408
|
| Field | Required | Description |
|
|
390
409
|
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
391
410
|
| `src` | Yes | Source (see below). May be a single source or a **list** of sources to concatenate. |
|
|
@@ -904,13 +923,13 @@ When both are present, both must pass. Each condition object may also include `n
|
|
|
904
923
|
|
|
905
924
|
#### Condition fields
|
|
906
925
|
|
|
907
|
-
| Field | Type | Description
|
|
908
|
-
| --------------- | -------------- |
|
|
909
|
-
| `os` | string or list | Platform must match. Values: `linux`, `mac`, `windows`. List = any matches.
|
|
910
|
-
| `exists` | string | Path (file or directory) must exist. Variables are resolved.
|
|
911
|
-
| `exec` | string | Shell command must exit with code `0`.
|
|
912
|
-
| `target_exists` | `true`
|
|
913
|
-
| `not` | boolean | `true` — invert the result of all checks in this condition object.
|
|
926
|
+
| Field | Type | Description |
|
|
927
|
+
| --------------- | -------------- | ---------------------------------------------------------------------------------- |
|
|
928
|
+
| `os` | string or list | Platform must match. Values: `linux`, `mac`, `windows`. List = any matches. |
|
|
929
|
+
| `exists` | string | Path (file or directory) must exist. Variables are resolved. |
|
|
930
|
+
| `exec` | string | Shell command must exit with code `0`. |
|
|
931
|
+
| `target_exists` | boolean | `true` — pass only if target exists. `false` — pass only if target does not exist. |
|
|
932
|
+
| `not` | boolean | `true` — invert the result of all checks in this condition object. |
|
|
914
933
|
|
|
915
934
|
#### Examples
|
|
916
935
|
|
|
@@ -989,8 +1008,7 @@ files:
|
|
|
989
1008
|
# Team Configuration
|
|
990
1009
|
Edit this file to customize your team settings.
|
|
991
1010
|
if:
|
|
992
|
-
target_exists:
|
|
993
|
-
not: true
|
|
1011
|
+
target_exists: false
|
|
994
1012
|
|
|
995
1013
|
# Always rebuilt. On first run it picks up the default template above.
|
|
996
1014
|
# After the user edits team.md, it picks up their version.
|
|
@@ -1005,12 +1023,86 @@ files:
|
|
|
1005
1023
|
|
|
1006
1024
|
On **first run**: `team.md` does not exist, so the `raw:` entry creates it. `handbook.md` sources from `team.md` and picks up the default template content — even though `team.md` has not been written to disk yet.
|
|
1007
1025
|
|
|
1008
|
-
On **subsequent runs**: `team.md` already exists, so the `target_exists:
|
|
1026
|
+
On **subsequent runs**: `team.md` already exists, so the `target_exists: false` condition skips it. `handbook.md` reads `team.md` from disk and picks up any changes the user made.
|
|
1009
1027
|
|
|
1010
1028
|
**Automatic ordering** — avanti resolves dependencies between entries and processes them in the correct order automatically. You can define entries in any order in the config; if entry B sources from entry A's target path, A is always processed before B.
|
|
1011
1029
|
|
|
1012
1030
|
**Cycle detection** — if two entries form a cycle (A sources from B and B sources from A), avanti exits with an error listing the cycle before writing any files.
|
|
1013
1031
|
|
|
1032
|
+
### Backup
|
|
1033
|
+
|
|
1034
|
+
> **Note:** avanti already maintains an internal pull history under `~/.config/avanti/` and you can restore any file with `avanti revert`. The `backup:` field is for additional, fine-grained control — for example, keeping a copy on an external drive, in a dedicated folder, or with a custom naming scheme.
|
|
1035
|
+
|
|
1036
|
+
Add `backup:` to a file entry to copy the current file to a backup location before overwriting it:
|
|
1037
|
+
|
|
1038
|
+
```yaml
|
|
1039
|
+
files:
|
|
1040
|
+
config.yaml:
|
|
1041
|
+
src: github:org/repo/config.yaml
|
|
1042
|
+
backup: $dirname/$filename.bkp
|
|
1043
|
+
```
|
|
1044
|
+
|
|
1045
|
+
Backup only happens when the target is a regular file (not a symlink or directory). If the backup path already exists it is overwritten — use the [counter pattern](#counter-pattern) or `$datetime` when you want to keep every backup.
|
|
1046
|
+
|
|
1047
|
+
#### Path variables
|
|
1048
|
+
|
|
1049
|
+
All [system-injected variables](#system-injected-variables) — per-file path variables (`$path`, `$filename`, `$basename`, `$ext`, `$dirname`, `$basedir`) and pull-time variables (`$date`, `$datetime`) — are available in `backup:` patterns.
|
|
1050
|
+
|
|
1051
|
+
#### Counter pattern
|
|
1052
|
+
|
|
1053
|
+
Use `%d+` in the backup path to auto-increment to the lowest unused slot. The number of `d` characters sets the zero-padding width and maximum slot:
|
|
1054
|
+
|
|
1055
|
+
| Token | Slots |
|
|
1056
|
+
| ------ | ----------- |
|
|
1057
|
+
| `%d` | `1`–`9` |
|
|
1058
|
+
| `%dd` | `01`–`99` |
|
|
1059
|
+
| `%ddd` | `001`–`999` |
|
|
1060
|
+
|
|
1061
|
+
Only one counter token per backup path is allowed. If all slots are taken, avanti exits with an error.
|
|
1062
|
+
|
|
1063
|
+
```yaml
|
|
1064
|
+
files:
|
|
1065
|
+
config.yaml:
|
|
1066
|
+
src: github:org/repo/config.yaml
|
|
1067
|
+
backup: $dirname/$basename.%dd.$ext # config.01.yaml → config.02.yaml → …
|
|
1068
|
+
```
|
|
1069
|
+
|
|
1070
|
+
#### Security: backup_roots
|
|
1071
|
+
|
|
1072
|
+
By default, backup paths are restricted to the working directory — the same constraint applied to target paths. To back up outside the working directory, declare the allowed roots at the top level:
|
|
1073
|
+
|
|
1074
|
+
```yaml
|
|
1075
|
+
backup_roots:
|
|
1076
|
+
- ~/backups
|
|
1077
|
+
- /mnt/nas/backups
|
|
1078
|
+
|
|
1079
|
+
files:
|
|
1080
|
+
config.yaml:
|
|
1081
|
+
src: github:org/repo/config.yaml
|
|
1082
|
+
backup: ~/backups/$filename
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
Each entry in `backup_roots` supports `~/` expansion. Paths not covered by the working directory or a declared root are rejected with an error before any file is written.
|
|
1086
|
+
|
|
1087
|
+
#### Backup examples
|
|
1088
|
+
|
|
1089
|
+
```yaml
|
|
1090
|
+
# Same directory, .bkp extension appended
|
|
1091
|
+
backup: $dirname/$filename.bkp # /project/config.yaml.bkp
|
|
1092
|
+
|
|
1093
|
+
# Separate backup folder within the working directory
|
|
1094
|
+
backup: backups/$filename # <workingDir>/backups/config.yaml
|
|
1095
|
+
|
|
1096
|
+
# Timestamped — one file per pull
|
|
1097
|
+
backup: $dirname/$filename.$datetime # config.yaml.2026-05-20-14-30-00
|
|
1098
|
+
|
|
1099
|
+
# Auto-increment — keeps up to 99 rotating backups
|
|
1100
|
+
backup: $dirname/$basename.%dd.$ext # config.01.yaml, config.02.yaml, …
|
|
1101
|
+
|
|
1102
|
+
# Separate directory outside the working directory (requires backup_roots)
|
|
1103
|
+
backup: ~/backups/$filename
|
|
1104
|
+
```
|
|
1105
|
+
|
|
1014
1106
|
### Variables
|
|
1015
1107
|
|
|
1016
1108
|
Define reusable values at the top level under `variables:`:
|
|
@@ -1150,6 +1242,72 @@ files:
|
|
|
1150
1242
|
|
|
1151
1243
|
When the config is specified as a remote spec (e.g. `--config github:org/repo:.avanti.yml`), `$self` expands to that spec string. In an `exists:` condition this will always evaluate to false since the remote spec is not a local path.
|
|
1152
1244
|
|
|
1245
|
+
#### System-injected variables
|
|
1246
|
+
|
|
1247
|
+
In addition to `$self` and `$latest`, avanti injects several variables automatically at the start of every run. These names are reserved and cannot be used in `variables:`.
|
|
1248
|
+
|
|
1249
|
+
**Per-file path variables** — avanti derives the following variables from each file entry's resolved target path. They can be used in source URLs, `ref:`, conditions, `replace:`, `post:`, template rendering, and `backup:` patterns.
|
|
1250
|
+
|
|
1251
|
+
Example with working directory `/home/user/project` and map key `configs/app.yaml`:
|
|
1252
|
+
|
|
1253
|
+
| Variable | Value |
|
|
1254
|
+
| ----------- | ------------------------------------- |
|
|
1255
|
+
| `$path` | `/home/user/project/configs/app.yaml` |
|
|
1256
|
+
| `$filename` | `app.yaml` |
|
|
1257
|
+
| `$basename` | `app` |
|
|
1258
|
+
| `$ext` | `yaml` (no leading dot) |
|
|
1259
|
+
| `$dirname` | `/home/user/project/configs` |
|
|
1260
|
+
| `$basedir` | `configs` |
|
|
1261
|
+
|
|
1262
|
+
> **Availability in source URLs and conditions:** per-file path variables are only resolved before the fetch when the map key is a fixed (non-directory) path. They are always available in processors (`replace:`, `post:`, template rendering) and `backup:`.
|
|
1263
|
+
|
|
1264
|
+
```yaml
|
|
1265
|
+
variables:
|
|
1266
|
+
env: production
|
|
1267
|
+
|
|
1268
|
+
files:
|
|
1269
|
+
# $filename in source URL — fetches each file by its own target name
|
|
1270
|
+
configs/nginx.conf:
|
|
1271
|
+
src: github:org/config-store/$env/$filename # → …/production/nginx.conf
|
|
1272
|
+
|
|
1273
|
+
# $basename strips the extension — useful when the remote has no extension
|
|
1274
|
+
services/auth.yaml:
|
|
1275
|
+
src: https://config-api.example.com/v1/$basename # → …/v1/auth
|
|
1276
|
+
|
|
1277
|
+
# $path in a condition — only overwrite if the local file already exists
|
|
1278
|
+
generated/report.json:
|
|
1279
|
+
src:
|
|
1280
|
+
exec: generate-report.sh
|
|
1281
|
+
if:
|
|
1282
|
+
exists: $path
|
|
1283
|
+
|
|
1284
|
+
# $dirname in a processor — log which directory was updated
|
|
1285
|
+
app/config.yaml:
|
|
1286
|
+
src: github:org/repo/app/config.yaml
|
|
1287
|
+
post: echo updated $dirname >> pull.log
|
|
1288
|
+
```
|
|
1289
|
+
|
|
1290
|
+
**Pull-time variables** — injected once at the start of every run and available everywhere (source URLs, conditions, `replace:`, `post:`, template rendering, `backup:`):
|
|
1291
|
+
|
|
1292
|
+
| Variable | Value | Example |
|
|
1293
|
+
| ----------- | --------------------------------------- | --------------------- |
|
|
1294
|
+
| `$date` | Current date `YYYY-MM-DD` | `2026-05-20` |
|
|
1295
|
+
| `$datetime` | Current date+time `YYYY-MM-DD-HH-mm-ss` | `2026-05-20-14-30-00` |
|
|
1296
|
+
|
|
1297
|
+
```yaml
|
|
1298
|
+
files:
|
|
1299
|
+
# Fetch today's report by date
|
|
1300
|
+
reports/daily.json:
|
|
1301
|
+
src: https://reports.example.com/$date/summary.json
|
|
1302
|
+
|
|
1303
|
+
# Stamp the pull time into fetched content
|
|
1304
|
+
version.txt:
|
|
1305
|
+
src: github:org/repo/version.txt
|
|
1306
|
+
replace:
|
|
1307
|
+
- from: GENERATED_AT
|
|
1308
|
+
to: $datetime
|
|
1309
|
+
```
|
|
1310
|
+
|
|
1153
1311
|
### $self — Self-managing Config
|
|
1154
1312
|
|
|
1155
1313
|
The special `$self` key in the `files:` map tells avanti to manage its own config file. When `$self` is present, avanti fetches the listed sources and uses the result as the active config for the rest of the run — all in a single invocation.
|
|
@@ -1594,8 +1752,7 @@ files:
|
|
|
1594
1752
|
"semi": false
|
|
1595
1753
|
}
|
|
1596
1754
|
if:
|
|
1597
|
-
target_exists:
|
|
1598
|
-
not: true
|
|
1755
|
+
target_exists: false
|
|
1599
1756
|
|
|
1600
1757
|
# Always rebuilt. Sources org defaults from GitHub, then merges in local overrides.
|
|
1601
1758
|
./.prettierrc.json:
|
|
@@ -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;AAyMpC,wBAAgB,WAAW,IAAI,OAAO,CAwJrC"}
|
package/dist/commands/diff.js
CHANGED
|
@@ -45,10 +45,12 @@ const post_1 = require("../processors/post");
|
|
|
45
45
|
const insert_1 = require("../processors/insert");
|
|
46
46
|
const binary_1 = require("../binary");
|
|
47
47
|
const diff_1 = require("../diff");
|
|
48
|
+
const paths_1 = require("../paths");
|
|
48
49
|
const history_1 = require("../history");
|
|
49
50
|
const variables_remote_1 = require("../variables-remote");
|
|
50
51
|
const condition_1 = require("../condition");
|
|
51
|
-
|
|
52
|
+
const variables_1 = require("../variables");
|
|
53
|
+
async function runDiffLoop(config, workingDir, dateVars, cache, configPath, history) {
|
|
52
54
|
let vars;
|
|
53
55
|
try {
|
|
54
56
|
vars = await (0, variables_remote_1.resolveVariableSpec)(config.variables ?? {}, workingDir, cache);
|
|
@@ -60,6 +62,7 @@ async function runDiffLoop(config, workingDir, cache, configPath, history) {
|
|
|
60
62
|
if (configPath !== undefined) {
|
|
61
63
|
vars['self'] = configPath;
|
|
62
64
|
}
|
|
65
|
+
Object.assign(vars, dateVars);
|
|
63
66
|
const allDiffs = [];
|
|
64
67
|
const pendingWrites = new Map();
|
|
65
68
|
let hasError = false;
|
|
@@ -70,7 +73,7 @@ async function runDiffLoop(config, workingDir, cache, configPath, history) {
|
|
|
70
73
|
try {
|
|
71
74
|
hasSelf = (0, condition_1.evaluateConditions)(selfEntry['if'], selfEntry.ifAny, () => configPath !== undefined
|
|
72
75
|
? configPath
|
|
73
|
-
: (0,
|
|
76
|
+
: (0, paths_1.resolveTargetPath)(selfEntry, '', workingDir, vars), workingDir, vars);
|
|
74
77
|
}
|
|
75
78
|
catch (err) {
|
|
76
79
|
console.error(`Error processing ${config_1.SELF_KEY}: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -94,10 +97,11 @@ async function runDiffLoop(config, workingDir, cache, configPath, history) {
|
|
|
94
97
|
if (hasSelf !== isSelf)
|
|
95
98
|
continue;
|
|
96
99
|
try {
|
|
100
|
+
const preVars = (0, paths_1.buildEntryPreVars)(entry, isSelf, workingDir, vars);
|
|
97
101
|
if (!isSelf &&
|
|
98
|
-
!(0, condition_1.evaluateConditions)(entry['if'], entry.ifAny, () => (0,
|
|
102
|
+
!(0, condition_1.evaluateConditions)(entry['if'], entry.ifAny, () => (0, paths_1.resolveTargetPath)(entry, '', workingDir, vars), workingDir, preVars))
|
|
99
103
|
continue;
|
|
100
|
-
const result = await (0, sources_1.fetchSource)(entry, workingDir,
|
|
104
|
+
const result = await (0, sources_1.fetchSource)(entry, workingDir, preVars, cache, isSelf && configPath !== undefined ? () => configPath : undefined, pendingWrites);
|
|
101
105
|
for (const rec of result.sourceRecords) {
|
|
102
106
|
if (!rec.matched) {
|
|
103
107
|
console.error(`⚠ SHA mismatch for ${rec.sourceLabel}\n` +
|
|
@@ -112,19 +116,24 @@ async function runDiffLoop(config, workingDir, cache, configPath, history) {
|
|
|
112
116
|
? (await Promise.resolve().then(() => __importStar(require('../processors/template')))).applyTemplate
|
|
113
117
|
: undefined;
|
|
114
118
|
for (const [relPath, rawContent] of result.files) {
|
|
119
|
+
const targetPath = isSelf
|
|
120
|
+
? undefined
|
|
121
|
+
: (0, paths_1.resolveTargetPath)(entry, relPath, workingDir, vars);
|
|
122
|
+
const entryVars = targetPath !== undefined
|
|
123
|
+
? Object.assign(Object.create(null), vars, (0, variables_1.buildFileVars)(targetPath))
|
|
124
|
+
: vars;
|
|
115
125
|
let content = rawContent;
|
|
116
126
|
if (!(0, binary_1.isBinary)(content)) {
|
|
117
127
|
const rawText = content.toString('utf8');
|
|
118
128
|
let text = rawText;
|
|
119
129
|
if (applyTemplate !== undefined) {
|
|
120
|
-
text = await applyTemplate(text, entry.template,
|
|
130
|
+
text = await applyTemplate(text, entry.template, entryVars, relPath || undefined);
|
|
121
131
|
}
|
|
122
132
|
if (entry.replace?.length)
|
|
123
|
-
text = (0, replace_1.applyReplace)(text, entry.replace,
|
|
133
|
+
text = (0, replace_1.applyReplace)(text, entry.replace, entryVars);
|
|
124
134
|
if (entry.post)
|
|
125
|
-
text = (0, post_1.applyPost)(text, entry.post,
|
|
135
|
+
text = (0, post_1.applyPost)(text, entry.post, entryVars);
|
|
126
136
|
if (entry.strategy === 'insert' && !isSelf) {
|
|
127
|
-
const targetPath = (0, diff_1.resolveTargetPath)(entry, relPath, workingDir, vars);
|
|
128
137
|
const lastInserted = history?.getInsertedFragment(targetPath) ?? null;
|
|
129
138
|
if (lastInserted !== null &&
|
|
130
139
|
rawText === lastInserted.raw &&
|
|
@@ -140,7 +149,6 @@ async function runDiffLoop(config, workingDir, cache, configPath, history) {
|
|
|
140
149
|
selfContent = content.toString('utf8');
|
|
141
150
|
continue;
|
|
142
151
|
}
|
|
143
|
-
const targetPath = (0, diff_1.resolveTargetPath)(entry, relPath, workingDir, vars);
|
|
144
152
|
allDiffs.push((0, diff_1.computeDiff)(targetPath, content));
|
|
145
153
|
pendingWrites.set(targetPath, content);
|
|
146
154
|
}
|
|
@@ -176,8 +184,9 @@ function diffCommand() {
|
|
|
176
184
|
process.exit(2);
|
|
177
185
|
}
|
|
178
186
|
const fetchCache = new Map();
|
|
187
|
+
const dateVars = (0, variables_1.buildDateVars)();
|
|
179
188
|
const history = new history_1.HistoryManager((0, config_1.normalizeConfigKey)(configPath), workingDir);
|
|
180
|
-
const firstPass = await runDiffLoop(config, workingDir, fetchCache, configPath, history);
|
|
189
|
+
const firstPass = await runDiffLoop(config, workingDir, dateVars, fetchCache, configPath, history);
|
|
181
190
|
let { allDiffs, hasError } = firstPass;
|
|
182
191
|
if (hasError)
|
|
183
192
|
process.exit(2);
|
|
@@ -200,7 +209,7 @@ function diffCommand() {
|
|
|
200
209
|
break;
|
|
201
210
|
}
|
|
202
211
|
console.log('$self config resolved; re-evaluating with merged config...');
|
|
203
|
-
const next = await runDiffLoop(currentConfig, workingDir, fetchCache, configPath, history);
|
|
212
|
+
const next = await runDiffLoop(currentConfig, workingDir, dateVars, fetchCache, configPath, history);
|
|
204
213
|
if (next.hasError) {
|
|
205
214
|
hasError = true;
|
|
206
215
|
break;
|
|
@@ -221,7 +230,7 @@ function diffCommand() {
|
|
|
221
230
|
filesWithoutSelf[k] = v;
|
|
222
231
|
}
|
|
223
232
|
if (Object.keys(filesWithoutSelf).length > 0) {
|
|
224
|
-
const second = await runDiffLoop({ ...stableConfig, files: filesWithoutSelf }, workingDir, fetchCache, configPath, history);
|
|
233
|
+
const second = await runDiffLoop({ ...stableConfig, files: filesWithoutSelf }, workingDir, dateVars, fetchCache, configPath, history);
|
|
225
234
|
allDiffs = second.allDiffs;
|
|
226
235
|
hasError = second.hasError;
|
|
227
236
|
}
|
|
@@ -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":"lock.d.ts","sourceRoot":"","sources":["../../src/commands/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/commands/lock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,WAAW,IAAI,OAAO,CAiHrC"}
|
package/dist/commands/lock.js
CHANGED
|
@@ -39,9 +39,10 @@ const path = __importStar(require("path"));
|
|
|
39
39
|
const config_1 = require("../config");
|
|
40
40
|
const condition_1 = require("../condition");
|
|
41
41
|
const sources_1 = require("../sources");
|
|
42
|
-
const
|
|
42
|
+
const paths_1 = require("../paths");
|
|
43
43
|
const config_writeback_1 = require("../config-writeback");
|
|
44
44
|
const variables_remote_1 = require("../variables-remote");
|
|
45
|
+
const variables_1 = require("../variables");
|
|
45
46
|
function lockCommand() {
|
|
46
47
|
return new commander_1.Command('lock')
|
|
47
48
|
.description('Compute and pin SHA values for all remote sources in the config')
|
|
@@ -76,16 +77,19 @@ function lockCommand() {
|
|
|
76
77
|
if (configPath !== undefined) {
|
|
77
78
|
vars['self'] = configPath;
|
|
78
79
|
}
|
|
80
|
+
Object.assign(vars, (0, variables_1.buildDateVars)());
|
|
79
81
|
const toPin = new Map(); // label → sha
|
|
80
82
|
let hasError = false;
|
|
81
83
|
let remoteSourceCount = 0;
|
|
82
84
|
for (const [key, entry] of Object.entries(config.files)) {
|
|
83
85
|
try {
|
|
84
|
-
|
|
86
|
+
const isSelf = key === config_1.SELF_KEY;
|
|
87
|
+
const preVars = (0, paths_1.buildEntryPreVars)(entry, isSelf, workingDir, vars);
|
|
88
|
+
if (!(0, condition_1.evaluateConditions)(entry['if'], entry.ifAny, () => isSelf
|
|
85
89
|
? configPath
|
|
86
|
-
: (0,
|
|
90
|
+
: (0, paths_1.resolveTargetPath)(entry, '', workingDir, vars), workingDir, preVars))
|
|
87
91
|
continue;
|
|
88
|
-
const result = await (0, sources_1.fetchSource)(entry, workingDir,
|
|
92
|
+
const result = await (0, sources_1.fetchSource)(entry, workingDir, preVars, undefined, isSelf ? () => configPath : undefined);
|
|
89
93
|
remoteSourceCount += result.sourceRecords.length;
|
|
90
94
|
for (const rec of result.sourceRecords) {
|
|
91
95
|
if (!opts.force && rec.expectedSha !== undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/commands/lock.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/commands/lock.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);
|