@udondan/avanti 0.3.1 → 0.4.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/CHANGELOG.md +14 -0
- package/README.md +90 -18
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +36 -0
- package/dist/config.js.map +1 -1
- package/dist/diff.js +1 -1
- package/dist/processors/json.d.ts +4 -0
- package/dist/processors/json.d.ts.map +1 -0
- package/dist/processors/json.js +76 -0
- package/dist/processors/json.js.map +1 -0
- package/dist/sources/github.d.ts.map +1 -1
- package/dist/sources/github.js +25 -14
- package/dist/sources/github.js.map +1 -1
- package/dist/sources/gitlab.d.ts.map +1 -1
- package/dist/sources/gitlab.js +88 -20
- package/dist/sources/gitlab.js.map +1 -1
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +34 -17
- package/dist/sources/index.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.0](https://github.com/udondan/avanti/compare/v0.3.2...v0.4.0) (2026-05-07)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **json:** add JSON merge and pretty-print processor ([#19](https://github.com/udondan/avanti/issues/19)) ([6fab171](https://github.com/udondan/avanti/commit/6fab171e1d1b85e86060213f6f0be6b9606ca96f))
|
|
9
|
+
|
|
10
|
+
## [0.3.2](https://github.com/udondan/avanti/compare/v0.3.1...v0.3.2) (2026-05-07)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
* **sources:** fix GitLab pagination, add archive fast path, and explicit directory detection ([#17](https://github.com/udondan/avanti/issues/17)) ([5b348ef](https://github.com/udondan/avanti/commit/5b348ef68b0ba9caebebd5ec6668fd9b07d4eafe))
|
|
16
|
+
|
|
3
17
|
## [0.3.1](https://github.com/udondan/avanti/compare/v0.3.0...v0.3.1) (2026-05-07)
|
|
4
18
|
|
|
5
19
|
|
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ npx @udondan/avanti --help
|
|
|
32
32
|
|
|
33
33
|
## Usage
|
|
34
34
|
|
|
35
|
-
```
|
|
35
|
+
```text
|
|
36
36
|
avanti [options] [command]
|
|
37
37
|
|
|
38
38
|
Options:
|
|
@@ -54,15 +54,15 @@ Fetches all sources, shows the diff, and prompts for confirmation before writing
|
|
|
54
54
|
|
|
55
55
|
## Working Directory
|
|
56
56
|
|
|
57
|
-
All relative `src` and `target` paths are resolved relative to the **working directory** — the directory where you invoke `avanti`, or the path given with `-
|
|
57
|
+
All relative `src` and `target` paths are resolved relative to the **working directory** — the directory where you invoke `avanti`, or the path given with `-w`.
|
|
58
58
|
|
|
59
|
-
This is independent of where the config file lives. A config loaded from another directory with `-c /shared/avanti.yml` still resolves all paths from your working directory (or the one you specify with `-
|
|
59
|
+
This is independent of where the config file lives. A config loaded from another directory with `-c /shared/avanti.yml` still resolves all paths from your working directory (or the one you specify with `-w`).
|
|
60
60
|
|
|
61
|
-
Use `-
|
|
61
|
+
Use `-w` to deploy the same config to multiple locations without `cd`-ing there first:
|
|
62
62
|
|
|
63
63
|
```sh
|
|
64
|
-
avanti -c /shared/avanti.yml -
|
|
65
|
-
avanti -c /shared/avanti.yml -
|
|
64
|
+
avanti -c /shared/avanti.yml -w /project-a pull
|
|
65
|
+
avanti -c /shared/avanti.yml -w /project-b pull
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
### Path Constraints
|
|
@@ -124,14 +124,14 @@ files:
|
|
|
124
124
|
|
|
125
125
|
### File Entry Fields
|
|
126
126
|
|
|
127
|
-
| Field | Required | Description
|
|
128
|
-
| --------- | ----------- |
|
|
129
|
-
| `src` | Yes | Source (see below). May be a single source or a **list** of sources to concatenate.
|
|
130
|
-
| `target` | Conditional | Local path to write to. Required for `exec:` and `raw:` sources and when `src` is a list. May be omitted when filename is inferable. |
|
|
131
|
-
| `
|
|
132
|
-
| `
|
|
133
|
-
| `
|
|
134
|
-
| `
|
|
127
|
+
| Field | Required | Description |
|
|
128
|
+
| --------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
129
|
+
| `src` | Yes | Source (see below). May be a single source or a **list** of sources to concatenate. |
|
|
130
|
+
| `target` | Conditional | Local path to write to. Required for `exec:` and `raw:` sources and when `src` is a list. May be omitted when filename is inferable. End with `/` when `src` is a directory — files are written inside, preserving their relative paths. |
|
|
131
|
+
| `mode` | No | File permission mode, e.g. `"0755"` |
|
|
132
|
+
| `replace` | No | List of `{from, to}` replacement rules. `from` may be a plain string or `/pattern/flags` regex. |
|
|
133
|
+
| `post` | No | Shell script. Content is piped via stdin; stdout is used as the result. Runs after `replace`. |
|
|
134
|
+
| `json` | No | JSON merge/format options (see below). When set, sources are parsed as JSON and the result is pretty-printed with 2-space indent. |
|
|
135
135
|
|
|
136
136
|
### Source Types
|
|
137
137
|
|
|
@@ -166,6 +166,36 @@ src:
|
|
|
166
166
|
ref: main # branch or tag (optional)
|
|
167
167
|
```
|
|
168
168
|
|
|
169
|
+
### Directory Sources
|
|
170
|
+
|
|
171
|
+
Any source type that references a path (local, GitLab, GitHub) can point to a directory instead of a single file. End the path with `/` to declare it a directory explicitly; without a trailing slash the tool probes the remote to decide.
|
|
172
|
+
|
|
173
|
+
When `src` is a directory, the matched files are written individually under `target` (which must also end with `/`), preserving the subdirectory structure relative to the source root:
|
|
174
|
+
|
|
175
|
+
```yaml
|
|
176
|
+
# All files under skills/ in the GitLab repo are written into local skills.new/
|
|
177
|
+
- src:
|
|
178
|
+
gitlab:
|
|
179
|
+
project: group/repo
|
|
180
|
+
file: skills/
|
|
181
|
+
ref: main
|
|
182
|
+
target: skills/
|
|
183
|
+
|
|
184
|
+
# GitHub directory → local directory
|
|
185
|
+
- src:
|
|
186
|
+
github:
|
|
187
|
+
repo: org/repo
|
|
188
|
+
file: .github/workflows/
|
|
189
|
+
ref: main
|
|
190
|
+
target: .github/workflows/
|
|
191
|
+
|
|
192
|
+
# Local directory → local directory
|
|
193
|
+
- src: ~/shared/hooks/
|
|
194
|
+
target: .githooks/
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Directory sources cannot be mixed into a multi-source list (`src` as a list), because the list mode always produces a single file.
|
|
198
|
+
|
|
169
199
|
**List** — combine multiple sources into one file (all source types supported; `target` required):
|
|
170
200
|
|
|
171
201
|
```yaml
|
|
@@ -181,6 +211,48 @@ target: combined.txt
|
|
|
181
211
|
|
|
182
212
|
Sources are fetched in order and joined with a newline. Post-processing (`replace`, `post`) is applied to the combined result. If any source fails, the entire entry is aborted.
|
|
183
213
|
|
|
214
|
+
### JSON Merging
|
|
215
|
+
|
|
216
|
+
Add a `json` block to merge multiple JSON sources into a single valid JSON file, or to pretty-print a single JSON source with 2-space indentation.
|
|
217
|
+
|
|
218
|
+
```yaml
|
|
219
|
+
files:
|
|
220
|
+
- src:
|
|
221
|
+
- ./defaults.json
|
|
222
|
+
- type: github
|
|
223
|
+
repo: org/configs
|
|
224
|
+
file: overrides.json
|
|
225
|
+
target: merged.json
|
|
226
|
+
json:
|
|
227
|
+
conflicts: last_wins # abort | first_wins | last_wins (default)
|
|
228
|
+
arrays: replace # replace (default) | concat
|
|
229
|
+
objects: merge # merge (default) | replace
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**Options:**
|
|
233
|
+
|
|
234
|
+
- `conflicts` — what to do when the same key holds a scalar (or an array/object when their strategy is `replace`):
|
|
235
|
+
- `last_wins` _(default)_ — the last source's value wins
|
|
236
|
+
- `first_wins` — the first source's value is kept
|
|
237
|
+
- `abort` — throw an error (identical values are not considered a conflict)
|
|
238
|
+
- `arrays` — how to combine arrays at the same key:
|
|
239
|
+
- `replace` _(default)_ — the later source's array replaces the earlier one
|
|
240
|
+
- `concat` — arrays are concatenated (no deduplication)
|
|
241
|
+
- `objects` — how to combine objects (maps) at the same key:
|
|
242
|
+
- `merge` _(default)_ — deep merge, applying the same rules recursively to nested keys
|
|
243
|
+
- `replace` — the later source's object replaces the earlier one entirely
|
|
244
|
+
|
|
245
|
+
All options are optional. `json: {}` is valid and just pretty-prints the source.
|
|
246
|
+
|
|
247
|
+
**Pretty-printing a single file** — `json` works on single-source entries too:
|
|
248
|
+
|
|
249
|
+
```yaml
|
|
250
|
+
files:
|
|
251
|
+
- src: ./minified.json
|
|
252
|
+
target: pretty.json
|
|
253
|
+
json: {}
|
|
254
|
+
```
|
|
255
|
+
|
|
184
256
|
### Variables
|
|
185
257
|
|
|
186
258
|
Define reusable values at the top level under `variables:`:
|
|
@@ -402,8 +474,8 @@ files:
|
|
|
402
474
|
|
|
403
475
|
```sh
|
|
404
476
|
git clone ...
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
477
|
+
bun install
|
|
478
|
+
bun run dev -- --help # run via tsx
|
|
479
|
+
bun test # run tests
|
|
480
|
+
bun run build # compile to dist/
|
|
409
481
|
```
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EAShB,MAAM,SAAS,CAAC;AAUjB,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAa3D;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CA6E9D"}
|
package/dist/config.js
CHANGED
|
@@ -103,6 +103,9 @@ function loadConfig(configPath) {
|
|
|
103
103
|
}
|
|
104
104
|
fileEntry.replace = e['replace'].map((r, j) => parseReplaceRule(r, i, j));
|
|
105
105
|
}
|
|
106
|
+
if (e['json'] !== undefined) {
|
|
107
|
+
fileEntry.json = parseJsonMergeOptions(e['json'], i);
|
|
108
|
+
}
|
|
106
109
|
return fileEntry;
|
|
107
110
|
});
|
|
108
111
|
return { variables, files };
|
|
@@ -195,6 +198,39 @@ function isExecSrc(src) {
|
|
|
195
198
|
function isRawSrc(src) {
|
|
196
199
|
return typeof src === 'object' && 'raw' in src;
|
|
197
200
|
}
|
|
201
|
+
function parseJsonMergeOptions(raw, i) {
|
|
202
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
|
|
203
|
+
throw new Error(`files[${i}]: "json" must be an object`);
|
|
204
|
+
}
|
|
205
|
+
const obj = raw;
|
|
206
|
+
const opts = {};
|
|
207
|
+
const conflictValues = [
|
|
208
|
+
'abort',
|
|
209
|
+
'first_wins',
|
|
210
|
+
'last_wins',
|
|
211
|
+
];
|
|
212
|
+
if (obj['conflicts'] !== undefined) {
|
|
213
|
+
if (!conflictValues.includes(obj['conflicts'])) {
|
|
214
|
+
throw new Error(`files[${i}].json.conflicts: must be one of ${conflictValues.join(', ')}`);
|
|
215
|
+
}
|
|
216
|
+
opts.conflicts = obj['conflicts'];
|
|
217
|
+
}
|
|
218
|
+
const arrayValues = ['replace', 'concat'];
|
|
219
|
+
if (obj['arrays'] !== undefined) {
|
|
220
|
+
if (!arrayValues.includes(obj['arrays'])) {
|
|
221
|
+
throw new Error(`files[${i}].json.arrays: must be one of ${arrayValues.join(', ')}`);
|
|
222
|
+
}
|
|
223
|
+
opts.arrays = obj['arrays'];
|
|
224
|
+
}
|
|
225
|
+
const objectValues = ['replace', 'merge'];
|
|
226
|
+
if (obj['objects'] !== undefined) {
|
|
227
|
+
if (!objectValues.includes(obj['objects'])) {
|
|
228
|
+
throw new Error(`files[${i}].json.objects: must be one of ${objectValues.join(', ')}`);
|
|
229
|
+
}
|
|
230
|
+
opts.objects = obj['objects'];
|
|
231
|
+
}
|
|
232
|
+
return opts;
|
|
233
|
+
}
|
|
198
234
|
function parseReplaceRule(r, i, j) {
|
|
199
235
|
if (!r || typeof r !== 'object' || Array.isArray(r)) {
|
|
200
236
|
throw new Error(`files[${i}].replace[${j}]: must be an object`);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,8CAAgC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/diff.js
CHANGED
|
@@ -75,7 +75,7 @@ function resolveTargetPath(entry, relPath, workingDir, vars = {}) {
|
|
|
75
75
|
if (target) {
|
|
76
76
|
if (path.isAbsolute(target)) {
|
|
77
77
|
if (workingDir !== '/') {
|
|
78
|
-
throw new Error(`Absolute target path "${target}" is not allowed when working directory is not "/". Use a relative path or run with -
|
|
78
|
+
throw new Error(`Absolute target path "${target}" is not allowed when working directory is not "/". Use a relative path or run with -w /.`);
|
|
79
79
|
}
|
|
80
80
|
if (target.endsWith('/') || target.endsWith(path.sep)) {
|
|
81
81
|
return path.resolve(target, relPath);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/processors/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AA+D5C,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,GAAE,gBAAqB,GAC1B,MAAM,CA0BR;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQlD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatJson = exports.mergeJson = void 0;
|
|
4
|
+
function isPlainObject(v) {
|
|
5
|
+
return v !== null && typeof v === 'object' && !Array.isArray(v);
|
|
6
|
+
}
|
|
7
|
+
function mergeValues(path, a, b, opts) {
|
|
8
|
+
// Identical values — no conflict
|
|
9
|
+
if (JSON.stringify(a) === JSON.stringify(b))
|
|
10
|
+
return a;
|
|
11
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
12
|
+
if (opts.arrays === 'concat')
|
|
13
|
+
return [...a, ...b];
|
|
14
|
+
// arrays: replace — fall through to conflict handling
|
|
15
|
+
}
|
|
16
|
+
else if (isPlainObject(a) && isPlainObject(b)) {
|
|
17
|
+
if (opts.objects === 'merge')
|
|
18
|
+
return deepMerge(a, b, opts, path);
|
|
19
|
+
// objects: replace — fall through to conflict handling
|
|
20
|
+
}
|
|
21
|
+
const loc = path || '(root)';
|
|
22
|
+
if (opts.conflicts === 'abort') {
|
|
23
|
+
throw new Error(`JSON conflict at ${loc}`);
|
|
24
|
+
}
|
|
25
|
+
if (opts.conflicts === 'first_wins')
|
|
26
|
+
return a;
|
|
27
|
+
return b;
|
|
28
|
+
}
|
|
29
|
+
function deepMerge(a, b, opts, basePath) {
|
|
30
|
+
const result = { ...a };
|
|
31
|
+
for (const [key, bVal] of Object.entries(b)) {
|
|
32
|
+
const childPath = basePath ? `${basePath}.${key}` : key;
|
|
33
|
+
if (key in result) {
|
|
34
|
+
result[key] = mergeValues(childPath, result[key], bVal, opts);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
result[key] = bVal;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
function mergeJson(parts, opts = {}) {
|
|
43
|
+
const resolved = {
|
|
44
|
+
conflicts: opts.conflicts ?? 'last_wins',
|
|
45
|
+
arrays: opts.arrays ?? 'replace',
|
|
46
|
+
objects: opts.objects ?? 'merge',
|
|
47
|
+
};
|
|
48
|
+
if (parts.length === 0)
|
|
49
|
+
return 'null';
|
|
50
|
+
const parsed = parts.map((p, i) => {
|
|
51
|
+
try {
|
|
52
|
+
return JSON.parse(p);
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
throw new Error(`[source ${i}]: invalid JSON: ${e.message}`, { cause: e });
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
let result = parsed[0];
|
|
59
|
+
for (let i = 1; i < parsed.length; i++) {
|
|
60
|
+
result = mergeValues('', result, parsed[i], resolved);
|
|
61
|
+
}
|
|
62
|
+
return JSON.stringify(result, null, 2);
|
|
63
|
+
}
|
|
64
|
+
exports.mergeJson = mergeJson;
|
|
65
|
+
function formatJson(content) {
|
|
66
|
+
try {
|
|
67
|
+
return JSON.stringify(JSON.parse(content), null, 2);
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
throw new Error(`invalid JSON: ${e.message}`, {
|
|
71
|
+
cause: e,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.formatJson = formatJson;
|
|
76
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/processors/json.ts"],"names":[],"mappings":";;;AAgBA,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,WAAW,CAClB,IAAY,EACZ,CAAY,EACZ,CAAY,EACZ,IAAqB;IAErB,iCAAiC;IACjC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAEtD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,sDAAsD;IACxD,CAAC;SAAM,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,uDAAuD;IACzD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,IAAI,QAAQ,CAAC;IAC7B,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY;QAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAChB,CAA4B,EAC5B,CAA4B,EAC5B,IAAqB,EACrB,QAAgB;IAEhB,MAAM,MAAM,GAA8B,EAAE,GAAG,CAAC,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACxD,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CACvB,KAAe,EACf,OAAyB,EAAE;IAE3B,MAAM,QAAQ,GAAoB;QAChC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,WAAW;QACxC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS;QAChC,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO;KACjC,CAAC;IAEF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,WAAW,CAAC,oBAAqB,CAAiB,CAAC,OAAO,EAAE,EAC5D,EAAE,KAAK,EAAE,CAAC,EAAE,CACb,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AA7BD,8BA6BC;AAED,SAAgB,UAAU,CAAC,OAAe;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,iBAAkB,CAAiB,CAAC,OAAO,EAAE,EAAE;YAC7D,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AARD,gCAQC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AA0ED,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,YAAY,CA0Bd"}
|
package/dist/sources/github.js
CHANGED
|
@@ -41,6 +41,18 @@ function ghRun(args) {
|
|
|
41
41
|
status: result.status,
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
|
+
function detectPathType(repo, filePath, ref) {
|
|
45
|
+
const res = ghRun([
|
|
46
|
+
'api',
|
|
47
|
+
`repos/${repo}/contents/${filePath}?ref=${encodeURIComponent(ref)}`,
|
|
48
|
+
'--jq',
|
|
49
|
+
'if type == "array" then "directory" else "file" end',
|
|
50
|
+
]);
|
|
51
|
+
if (res.status !== 0) {
|
|
52
|
+
throw new Error(`Failed to stat ${filePath} in ${repo}@${ref}: ${res.stderr}`);
|
|
53
|
+
}
|
|
54
|
+
return res.stdout.trim();
|
|
55
|
+
}
|
|
44
56
|
function fetchFile(repo, filePath, ref) {
|
|
45
57
|
const res = ghRun([
|
|
46
58
|
'api',
|
|
@@ -68,21 +80,20 @@ function listTree(repo, dirPath, ref) {
|
|
|
68
80
|
}
|
|
69
81
|
function fetchGitHub(repo, file, ref) {
|
|
70
82
|
const resolvedRef = ref ?? 'HEAD';
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
83
|
+
const normalizedPath = file.replace(/\/$/, '');
|
|
84
|
+
const isDirectory = file.endsWith('/') ||
|
|
85
|
+
detectPathType(repo, normalizedPath, resolvedRef) === 'directory';
|
|
86
|
+
if (!isDirectory) {
|
|
87
|
+
const content = fetchFile(repo, normalizedPath, resolvedRef);
|
|
88
|
+
return { files: new Map([[path.basename(normalizedPath), content]]) };
|
|
75
89
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const content = fetchFile(repo, p, resolvedRef);
|
|
84
|
-
files.set(rel, content);
|
|
85
|
-
}
|
|
90
|
+
const paths = listTree(repo, normalizedPath, resolvedRef);
|
|
91
|
+
if (!paths.length) {
|
|
92
|
+
throw new Error(`Failed to fetch ${file} from ${repo}@${resolvedRef} (not a file or empty directory)`);
|
|
93
|
+
}
|
|
94
|
+
const files = new Map();
|
|
95
|
+
for (const p of paths) {
|
|
96
|
+
files.set(path.relative(normalizedPath, p), fetchFile(repo, p, resolvedRef));
|
|
86
97
|
}
|
|
87
98
|
return { files };
|
|
88
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAC1C,2CAA6B;AAM7B,SAAS,KAAK,CAAC,IAAc;IAK3B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,QAAgB,EAAE,GAAW;IAC5D,MAAM,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK;QACL,SAAS,IAAI,aAAa,QAAQ,QAAQ,kBAAkB,CAAC,GAAG,CAAC,EAAE;QACnE,MAAM;QACN,UAAU;KACX,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,SAAS,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CACjE,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,GAAW;IAC1D,MAAM,GAAG,GAAG,KAAK,CAAC;QAChB,KAAK;QACL,SAAS,IAAI,cAAc,kBAAkB,CAAC,GAAG,CAAC,cAAc;QAChE,MAAM;QACN,kEAAkE,OAAO,cAAc;KACxF,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,OAAO,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAgB,WAAW,CACzB,IAAY,EACZ,IAAY,EACZ,GAAuB;IAEvB,MAAM,WAAW,GAAG,GAAG,IAAI,MAAM,CAAC;IAClC,MAAM,
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/sources/github.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gitlab.d.ts","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAsKD,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,GACtB,YAAY,CAkCd"}
|
package/dist/sources/gitlab.js
CHANGED
|
@@ -25,6 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.fetchGitLab = void 0;
|
|
27
27
|
const child_process_1 = require("child_process");
|
|
28
|
+
const fs = __importStar(require("fs"));
|
|
29
|
+
const os = __importStar(require("os"));
|
|
28
30
|
const path = __importStar(require("path"));
|
|
29
31
|
function glabRun(args) {
|
|
30
32
|
const result = (0, child_process_1.spawnSync)('glab', args, { encoding: 'utf8' });
|
|
@@ -70,34 +72,100 @@ function fetchFile(project, filePath, ref) {
|
|
|
70
72
|
return res.stdout;
|
|
71
73
|
}
|
|
72
74
|
function listTree(project, dirPath, ref) {
|
|
75
|
+
const allPaths = [];
|
|
76
|
+
const perPage = 100;
|
|
77
|
+
let page = 1;
|
|
78
|
+
while (true) {
|
|
79
|
+
const res = glabRun([
|
|
80
|
+
'api',
|
|
81
|
+
`projects/${encodeURIComponent(project)}/repository/tree?path=${encodeURIComponent(dirPath)}&ref=${encodeURIComponent(ref)}&recursive=true&per_page=${perPage}&page=${page}`,
|
|
82
|
+
]);
|
|
83
|
+
if (res.status !== 0) {
|
|
84
|
+
throw new Error(`Failed to list tree ${dirPath} in ${project}@${ref}: ${res.stderr}`);
|
|
85
|
+
}
|
|
86
|
+
const items = JSON.parse(res.stdout);
|
|
87
|
+
allPaths.push(...items.filter((i) => i.type === 'blob').map((i) => i.path));
|
|
88
|
+
if (items.length < perPage)
|
|
89
|
+
break;
|
|
90
|
+
page++;
|
|
91
|
+
}
|
|
92
|
+
return allPaths;
|
|
93
|
+
}
|
|
94
|
+
function collectFiles(baseDir, dir, files) {
|
|
95
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
96
|
+
const full = path.join(dir, entry.name);
|
|
97
|
+
if (entry.isDirectory()) {
|
|
98
|
+
collectFiles(baseDir, full, files);
|
|
99
|
+
}
|
|
100
|
+
else if (entry.isFile()) {
|
|
101
|
+
files.set(path.relative(baseDir, full), fs.readFileSync(full, 'utf8'));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function detectPathType(project, filePath, ref) {
|
|
106
|
+
const encodedPath = encodeURIComponent(filePath);
|
|
73
107
|
const res = glabRun([
|
|
74
108
|
'api',
|
|
75
|
-
`projects/${encodeURIComponent(project)}/repository/
|
|
109
|
+
`projects/${encodeURIComponent(project)}/repository/files/${encodedPath}?ref=${encodeURIComponent(ref)}`,
|
|
76
110
|
]);
|
|
77
|
-
|
|
78
|
-
|
|
111
|
+
return res.status === 0 ? 'file' : 'directory';
|
|
112
|
+
}
|
|
113
|
+
// Downloads the directory as a tar.gz archive (one API call) and extracts it locally.
|
|
114
|
+
// Returns null if the archive approach fails, so the caller can fall back.
|
|
115
|
+
function fetchDirectoryViaArchive(project, dirPath, ref) {
|
|
116
|
+
const encodedProject = encodeURIComponent(project);
|
|
117
|
+
const result = (0, child_process_1.spawnSync)('glab', [
|
|
118
|
+
'api',
|
|
119
|
+
`projects/${encodedProject}/repository/archive.tar.gz?sha=${encodeURIComponent(ref)}&path=${encodeURIComponent(dirPath)}`,
|
|
120
|
+
], { encoding: 'buffer' });
|
|
121
|
+
if (result.error || result.status !== 0 || !result.stdout?.length)
|
|
122
|
+
return null;
|
|
123
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'scync-gl-'));
|
|
124
|
+
try {
|
|
125
|
+
const archivePath = path.join(tmpDir, 'archive.tar.gz');
|
|
126
|
+
const extractDir = path.join(tmpDir, 'extracted');
|
|
127
|
+
fs.writeFileSync(archivePath, result.stdout);
|
|
128
|
+
fs.mkdirSync(extractDir);
|
|
129
|
+
const tarResult = (0, child_process_1.spawnSync)('tar', ['-xzf', archivePath, '-C', extractDir], {
|
|
130
|
+
encoding: 'utf8',
|
|
131
|
+
});
|
|
132
|
+
if (tarResult.status !== 0)
|
|
133
|
+
return null;
|
|
134
|
+
// The archive root is a single dir with a dynamic name (project-ref-sha/)
|
|
135
|
+
const rootEntries = fs.readdirSync(extractDir);
|
|
136
|
+
if (rootEntries.length !== 1)
|
|
137
|
+
return null;
|
|
138
|
+
const targetDir = path.join(extractDir, rootEntries[0], dirPath);
|
|
139
|
+
if (!fs.existsSync(targetDir))
|
|
140
|
+
return null;
|
|
141
|
+
const files = new Map();
|
|
142
|
+
collectFiles(targetDir, targetDir, files);
|
|
143
|
+
return files.size > 0 ? files : null;
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
79
147
|
}
|
|
80
|
-
const items = JSON.parse(res.stdout);
|
|
81
|
-
return items.filter((i) => i.type === 'blob').map((i) => i.path);
|
|
82
148
|
}
|
|
83
149
|
function fetchGitLab(project, file, ref) {
|
|
84
150
|
const resolvedRef = resolveRef(project, ref);
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
151
|
+
const normalizedPath = file.replace(/\/$/, '');
|
|
152
|
+
const isDirectory = file.endsWith('/') ||
|
|
153
|
+
detectPathType(project, normalizedPath, resolvedRef) === 'directory';
|
|
154
|
+
if (!isDirectory) {
|
|
155
|
+
const content = fetchFile(project, normalizedPath, resolvedRef);
|
|
156
|
+
return { files: new Map([[path.basename(normalizedPath), content]]) };
|
|
89
157
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
158
|
+
// Directory — archive approach first (one API call), then fall back to per-file fetches
|
|
159
|
+
const archived = fetchDirectoryViaArchive(project, normalizedPath, resolvedRef);
|
|
160
|
+
if (archived)
|
|
161
|
+
return { files: archived };
|
|
162
|
+
const paths = listTree(project, normalizedPath, resolvedRef);
|
|
163
|
+
if (!paths.length) {
|
|
164
|
+
throw new Error(`Failed to fetch ${file} from ${project}@${resolvedRef} (not a file or empty directory)`);
|
|
165
|
+
}
|
|
166
|
+
const files = new Map();
|
|
167
|
+
for (const p of paths) {
|
|
168
|
+
files.set(path.relative(normalizedPath, p), fetchFile(project, p, resolvedRef));
|
|
101
169
|
}
|
|
102
170
|
return { files };
|
|
103
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAA0C;AAC1C,2CAA6B;AAO7B,SAAS,OAAO,CAAC,IAAc;IAK7B,MAAM,MAAM,GAAG,IAAA,yBAAS,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,GAAuB;IAC1D,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC;YAClB,KAAK;YACL,YAAY,kBAAkB,CAAC,OAAO,CAAC,wDAAwD;SAChG,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,KAAK,GAAG,CAAC,MAAM,EAAE,CAC1D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,8BAA8B,CAC3D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,QAAgB,EAAE,GAAW;IAC/D,MAAM,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC;QAClB,KAAK;QACL,YAAY,kBAAkB,CAAC,OAAO,CAAC,qBAAqB,WAAW,YAAY,kBAAkB,CAAC,GAAG,CAAC,EAAE;KAC7G,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,mBAAmB,QAAQ,SAAS,OAAO,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,CAAC;AAED,SAAS,QAAQ,CAAC,OAAe,EAAE,OAAe,EAAE,GAAW;IAC7D,MAAM,GAAG,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"gitlab.js","sourceRoot":"","sources":["../../src/sources/gitlab.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAW,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAW,SAAS,EAAE,MAAM,UAAU,CAAC;AASzD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAoDD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,SAAS,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,SAAc,GACnB,OAAO,CAAC,WAAW,CAAC,CA2EtB"}
|
package/dist/sources/index.js
CHANGED
|
@@ -31,6 +31,7 @@ const local_1 = require("./local");
|
|
|
31
31
|
const exec_1 = require("./exec");
|
|
32
32
|
const gitlab_1 = require("./gitlab");
|
|
33
33
|
const github_1 = require("./github");
|
|
34
|
+
const json_1 = require("../processors/json");
|
|
34
35
|
async function fetchOneSrc(src, workingDir, vars) {
|
|
35
36
|
if (typeof src === 'string') {
|
|
36
37
|
const resolved = (0, variables_1.resolveVars)(src, vars);
|
|
@@ -65,7 +66,7 @@ async function fetchOneSrc(src, workingDir, vars) {
|
|
|
65
66
|
}
|
|
66
67
|
async function fetchSource(entry, workingDir, vars = {}) {
|
|
67
68
|
const { src } = entry;
|
|
68
|
-
// List src → fetch each, concatenate with newline
|
|
69
|
+
// List src → fetch each, then merge as JSON or concatenate with newline
|
|
69
70
|
if (Array.isArray(src)) {
|
|
70
71
|
const parts = [];
|
|
71
72
|
for (let i = 0; i < src.length; i++) {
|
|
@@ -78,9 +79,13 @@ async function fetchSource(entry, workingDir, vars = {}) {
|
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
const filename = path.basename(entry.target);
|
|
81
|
-
|
|
82
|
+
const content = entry.json
|
|
83
|
+
? (0, json_1.mergeJson)(parts, entry.json)
|
|
84
|
+
: parts.join('\n');
|
|
85
|
+
return { files: new Map([[filename, content]]) };
|
|
82
86
|
}
|
|
83
|
-
// Single src —
|
|
87
|
+
// Single src — fetch then optionally format as JSON
|
|
88
|
+
let singleResult;
|
|
84
89
|
if (typeof src === 'string') {
|
|
85
90
|
const resolved = (0, variables_1.resolveVars)(src, vars);
|
|
86
91
|
if (resolved.startsWith('http://') || resolved.startsWith('https://')) {
|
|
@@ -88,35 +93,47 @@ async function fetchSource(entry, workingDir, vars = {}) {
|
|
|
88
93
|
const filename = entry.target
|
|
89
94
|
? path.basename(entry.target)
|
|
90
95
|
: ((0, http_1.inferFilenameFromUrl)(resolved) ?? 'download');
|
|
91
|
-
|
|
96
|
+
singleResult = { files: new Map([[filename, content]]) };
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
// Local path (absolute, ~/, or relative)
|
|
100
|
+
const result = (0, local_1.fetchLocal)(resolved, workingDir);
|
|
101
|
+
singleResult = { files: result.files };
|
|
92
102
|
}
|
|
93
|
-
// Local path (absolute, ~/, or relative)
|
|
94
|
-
const result = (0, local_1.fetchLocal)(resolved, workingDir);
|
|
95
|
-
return { files: result.files };
|
|
96
103
|
}
|
|
97
|
-
|
|
98
|
-
if ('raw' in src) {
|
|
104
|
+
else if ('raw' in src) {
|
|
99
105
|
const filename = path.basename(entry.target);
|
|
100
|
-
|
|
106
|
+
singleResult = {
|
|
107
|
+
files: new Map([[filename, (0, variables_1.resolveVars)(src.raw, vars)]]),
|
|
108
|
+
};
|
|
101
109
|
}
|
|
102
|
-
if ('exec' in src) {
|
|
110
|
+
else if ('exec' in src) {
|
|
103
111
|
const content = (0, exec_1.fetchExec)((0, variables_1.resolveVars)(src.exec, vars));
|
|
104
112
|
const filename = path.basename(entry.target);
|
|
105
|
-
|
|
113
|
+
singleResult = { files: new Map([[filename, content]]) };
|
|
106
114
|
}
|
|
107
|
-
if ('gitlab' in src) {
|
|
115
|
+
else if ('gitlab' in src) {
|
|
108
116
|
const result = (0, gitlab_1.fetchGitLab)((0, variables_1.resolveVars)(src.gitlab.project, vars), (0, variables_1.resolveVars)(src.gitlab.file, vars), src.gitlab.ref !== undefined
|
|
109
117
|
? (0, variables_1.resolveVars)(src.gitlab.ref, vars)
|
|
110
118
|
: undefined);
|
|
111
|
-
|
|
119
|
+
singleResult = { files: result.files };
|
|
112
120
|
}
|
|
113
|
-
if ('github' in src) {
|
|
121
|
+
else if ('github' in src) {
|
|
114
122
|
const result = (0, github_1.fetchGitHub)((0, variables_1.resolveVars)(src.github.repo, vars), (0, variables_1.resolveVars)(src.github.file, vars), src.github.ref !== undefined
|
|
115
123
|
? (0, variables_1.resolveVars)(src.github.ref, vars)
|
|
116
124
|
: undefined);
|
|
117
|
-
|
|
125
|
+
singleResult = { files: result.files };
|
|
118
126
|
}
|
|
119
|
-
|
|
127
|
+
else {
|
|
128
|
+
throw new Error(`Unknown source type: ${JSON.stringify(src)}`);
|
|
129
|
+
}
|
|
130
|
+
if (!entry.json)
|
|
131
|
+
return singleResult;
|
|
132
|
+
const formatted = new Map();
|
|
133
|
+
for (const [k, v] of singleResult.files) {
|
|
134
|
+
formatted.set(k, (0, json_1.formatJson)(v));
|
|
135
|
+
}
|
|
136
|
+
return { files: formatted };
|
|
120
137
|
}
|
|
121
138
|
exports.fetchSource = fetchSource;
|
|
122
139
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B,4CAA2C;AAC3C,iCAAyD;AACzD,mCAAqC;AACrC,iCAAmC;AACnC,qCAAuC;AACvC,qCAAuC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -25,12 +25,21 @@ export interface RawSrc {
|
|
|
25
25
|
}
|
|
26
26
|
/** src can be a plain string (http/https URL or local path) or a map for gitlab/github/exec/raw */
|
|
27
27
|
export type FileSrc = string | GitLabSrc | GitHubSrc | ExecSrc | RawSrc;
|
|
28
|
+
export type JsonConflictStrategy = 'abort' | 'first_wins' | 'last_wins';
|
|
29
|
+
export type JsonArrayStrategy = 'replace' | 'concat';
|
|
30
|
+
export type JsonObjectStrategy = 'replace' | 'merge';
|
|
31
|
+
export interface JsonMergeOptions {
|
|
32
|
+
conflicts?: JsonConflictStrategy;
|
|
33
|
+
arrays?: JsonArrayStrategy;
|
|
34
|
+
objects?: JsonObjectStrategy;
|
|
35
|
+
}
|
|
28
36
|
export interface FileEntry {
|
|
29
37
|
src: FileSrc | FileSrc[];
|
|
30
38
|
target?: string;
|
|
31
39
|
mode?: string;
|
|
32
40
|
replace?: ReplaceRule[];
|
|
33
41
|
post?: string;
|
|
42
|
+
json?: JsonMergeOptions;
|
|
34
43
|
}
|
|
35
44
|
export interface FileFerryConfig {
|
|
36
45
|
variables?: Variables;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,mGAAmG;AACnG,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,mGAAmG;AACnG,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAExE,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,CAAC;AACxE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB"}
|