@udondan/avanti 0.1.0 → 0.3.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 +25 -0
- package/README.md +254 -14
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +9 -5
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +9 -5
- package/dist/commands/pull.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +85 -55
- package/dist/config.js.map +1 -1
- package/dist/diff.d.ts +2 -1
- package/dist/diff.d.ts.map +1 -1
- package/dist/diff.js +42 -18
- package/dist/diff.js.map +1 -1
- package/dist/processors/post.d.ts +2 -1
- package/dist/processors/post.d.ts.map +1 -1
- package/dist/processors/post.js +7 -5
- package/dist/processors/post.js.map +1 -1
- package/dist/processors/replace.d.ts +2 -2
- package/dist/processors/replace.d.ts.map +1 -1
- package/dist/processors/replace.js +8 -5
- package/dist/processors/replace.js.map +1 -1
- package/dist/sources/exec.js +3 -3
- package/dist/sources/github.js +15 -15
- package/dist/sources/gitlab.js +11 -11
- package/dist/sources/http.js +5 -5
- package/dist/sources/index.d.ts +2 -2
- package/dist/sources/index.d.ts.map +1 -1
- package/dist/sources/index.js +47 -30
- package/dist/sources/index.js.map +1 -1
- package/dist/sources/local.d.ts +1 -1
- package/dist/sources/local.d.ts.map +1 -1
- package/dist/sources/local.js +12 -9
- package/dist/sources/local.js.map +1 -1
- package/dist/types.d.ts +7 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/variables.d.ts +5 -0
- package/dist/variables.d.ts.map +1 -0
- package/dist/variables.js +34 -0
- package/dist/variables.js.map +1 -0
- package/dist/writer.js +3 -3
- package/package.json +19 -7
- package/.claude/settings.local.json +0 -9
package/dist/sources/gitlab.js
CHANGED
|
@@ -27,24 +27,24 @@ exports.fetchGitLab = void 0;
|
|
|
27
27
|
const child_process_1 = require("child_process");
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
29
|
function glabRun(args) {
|
|
30
|
-
const result = (0, child_process_1.spawnSync)(
|
|
30
|
+
const result = (0, child_process_1.spawnSync)('glab', args, { encoding: 'utf8' });
|
|
31
31
|
if (result.error) {
|
|
32
|
-
const msg = result.error.message ??
|
|
33
|
-
if (msg.includes(
|
|
34
|
-
throw new Error(
|
|
32
|
+
const msg = result.error.message ?? '';
|
|
33
|
+
if (msg.includes('ENOENT')) {
|
|
34
|
+
throw new Error('glab CLI not found. Install it from https://gitlab.com/gitlab-org/cli');
|
|
35
35
|
}
|
|
36
36
|
throw new Error(`glab error: ${msg}`);
|
|
37
37
|
}
|
|
38
38
|
return {
|
|
39
|
-
stdout: result.stdout ??
|
|
40
|
-
stderr: result.stderr ??
|
|
39
|
+
stdout: result.stdout ?? '',
|
|
40
|
+
stderr: result.stderr ?? '',
|
|
41
41
|
status: result.status,
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function resolveRef(project, ref) {
|
|
45
|
-
if (!ref || ref ===
|
|
45
|
+
if (!ref || ref === '$latest') {
|
|
46
46
|
const res = glabRun([
|
|
47
|
-
|
|
47
|
+
'api',
|
|
48
48
|
`projects/${encodeURIComponent(project)}/repository/tags?order_by=version&sort=desc&per_page=1`,
|
|
49
49
|
]);
|
|
50
50
|
if (res.status !== 0) {
|
|
@@ -61,7 +61,7 @@ function resolveRef(project, ref) {
|
|
|
61
61
|
function fetchFile(project, filePath, ref) {
|
|
62
62
|
const encodedPath = encodeURIComponent(filePath);
|
|
63
63
|
const res = glabRun([
|
|
64
|
-
|
|
64
|
+
'api',
|
|
65
65
|
`projects/${encodeURIComponent(project)}/repository/files/${encodedPath}/raw?ref=${encodeURIComponent(ref)}`,
|
|
66
66
|
]);
|
|
67
67
|
if (res.status !== 0) {
|
|
@@ -71,14 +71,14 @@ function fetchFile(project, filePath, ref) {
|
|
|
71
71
|
}
|
|
72
72
|
function listTree(project, dirPath, ref) {
|
|
73
73
|
const res = glabRun([
|
|
74
|
-
|
|
74
|
+
'api',
|
|
75
75
|
`projects/${encodeURIComponent(project)}/repository/tree?path=${encodeURIComponent(dirPath)}&ref=${encodeURIComponent(ref)}&recursive=true&per_page=100`,
|
|
76
76
|
]);
|
|
77
77
|
if (res.status !== 0) {
|
|
78
78
|
throw new Error(`Failed to list tree ${dirPath} in ${project}@${ref}: ${res.stderr}`);
|
|
79
79
|
}
|
|
80
80
|
const items = JSON.parse(res.stdout);
|
|
81
|
-
return items.filter((i) => i.type ===
|
|
81
|
+
return items.filter((i) => i.type === 'blob').map((i) => i.path);
|
|
82
82
|
}
|
|
83
83
|
function fetchGitLab(project, file, ref) {
|
|
84
84
|
const resolvedRef = resolveRef(project, ref);
|
package/dist/sources/http.js
CHANGED
|
@@ -40,7 +40,7 @@ function inferFilenameFromUrl(url) {
|
|
|
40
40
|
exports.inferFilenameFromUrl = inferFilenameFromUrl;
|
|
41
41
|
async function fetchHttp(url) {
|
|
42
42
|
return new Promise((resolve, reject) => {
|
|
43
|
-
const mod = url.startsWith(
|
|
43
|
+
const mod = url.startsWith('https') ? https : http;
|
|
44
44
|
mod
|
|
45
45
|
.get(url, (res) => {
|
|
46
46
|
if (res.statusCode &&
|
|
@@ -55,11 +55,11 @@ async function fetchHttp(url) {
|
|
|
55
55
|
return;
|
|
56
56
|
}
|
|
57
57
|
const chunks = [];
|
|
58
|
-
res.on(
|
|
59
|
-
res.on(
|
|
60
|
-
res.on(
|
|
58
|
+
res.on('data', (chunk) => chunks.push(chunk));
|
|
59
|
+
res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
|
|
60
|
+
res.on('error', reject);
|
|
61
61
|
})
|
|
62
|
-
.on(
|
|
62
|
+
.on('error', reject);
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
exports.fetchHttp = fetchHttp;
|
package/dist/sources/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { FileEntry } from
|
|
1
|
+
import { FileEntry, Variables } from '../types';
|
|
2
2
|
export interface FetchResult {
|
|
3
3
|
files: Map<string, string>;
|
|
4
4
|
}
|
|
5
|
-
export declare function fetchSource(entry: FileEntry): Promise<FetchResult>;
|
|
5
|
+
export declare function fetchSource(entry: FileEntry, workingDir: string, vars?: Variables): Promise<FetchResult>;
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAW,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;AAQzD,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,CAqEtB"}
|
package/dist/sources/index.js
CHANGED
|
@@ -25,44 +25,52 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.fetchSource = void 0;
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
|
+
const variables_1 = require("../variables");
|
|
28
29
|
const http_1 = require("./http");
|
|
29
30
|
const local_1 = require("./local");
|
|
30
31
|
const exec_1 = require("./exec");
|
|
31
32
|
const gitlab_1 = require("./gitlab");
|
|
32
33
|
const github_1 = require("./github");
|
|
33
|
-
async function fetchOneSrc(src) {
|
|
34
|
-
if (typeof src ===
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
async function fetchOneSrc(src, workingDir, vars) {
|
|
35
|
+
if (typeof src === 'string') {
|
|
36
|
+
const resolved = (0, variables_1.resolveVars)(src, vars);
|
|
37
|
+
if (resolved.startsWith('http://') || resolved.startsWith('https://')) {
|
|
38
|
+
return (0, http_1.fetchHttp)(resolved);
|
|
37
39
|
}
|
|
38
|
-
const result = (0, local_1.fetchLocal)(
|
|
39
|
-
// For a single-file local result, return the first (and only) value
|
|
40
|
+
const result = (0, local_1.fetchLocal)(resolved, workingDir);
|
|
40
41
|
const values = Array.from(result.files.values());
|
|
41
|
-
return values.join(
|
|
42
|
+
return values.join('\n');
|
|
42
43
|
}
|
|
43
|
-
if (
|
|
44
|
-
return (0,
|
|
44
|
+
if ('raw' in src) {
|
|
45
|
+
return (0, variables_1.resolveVars)(src.raw, vars);
|
|
45
46
|
}
|
|
46
|
-
if (
|
|
47
|
-
|
|
47
|
+
if ('exec' in src) {
|
|
48
|
+
return (0, exec_1.fetchExec)((0, variables_1.resolveVars)(src.exec, vars));
|
|
49
|
+
}
|
|
50
|
+
if ('gitlab' in src) {
|
|
51
|
+
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
|
|
52
|
+
? (0, variables_1.resolveVars)(src.gitlab.ref, vars)
|
|
53
|
+
: undefined);
|
|
48
54
|
const values = Array.from(result.files.values());
|
|
49
|
-
return values.join(
|
|
55
|
+
return values.join('\n');
|
|
50
56
|
}
|
|
51
|
-
if (
|
|
52
|
-
const result = (0, github_1.fetchGitHub)(src.github.repo, src.github.file, src.github.ref
|
|
57
|
+
if ('github' in src) {
|
|
58
|
+
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
|
|
59
|
+
? (0, variables_1.resolveVars)(src.github.ref, vars)
|
|
60
|
+
: undefined);
|
|
53
61
|
const values = Array.from(result.files.values());
|
|
54
|
-
return values.join(
|
|
62
|
+
return values.join('\n');
|
|
55
63
|
}
|
|
56
64
|
throw new Error(`Unknown source type: ${JSON.stringify(src)}`);
|
|
57
65
|
}
|
|
58
|
-
async function fetchSource(entry) {
|
|
66
|
+
async function fetchSource(entry, workingDir, vars = {}) {
|
|
59
67
|
const { src } = entry;
|
|
60
68
|
// List src → fetch each, concatenate with newline
|
|
61
69
|
if (Array.isArray(src)) {
|
|
62
70
|
const parts = [];
|
|
63
71
|
for (let i = 0; i < src.length; i++) {
|
|
64
72
|
try {
|
|
65
|
-
parts.push(await fetchOneSrc(src[i]));
|
|
73
|
+
parts.push(await fetchOneSrc(src[i], workingDir, vars));
|
|
66
74
|
}
|
|
67
75
|
catch (err) {
|
|
68
76
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -70,33 +78,42 @@ async function fetchSource(entry) {
|
|
|
70
78
|
}
|
|
71
79
|
}
|
|
72
80
|
const filename = path.basename(entry.target);
|
|
73
|
-
return { files: new Map([[filename, parts.join(
|
|
81
|
+
return { files: new Map([[filename, parts.join('\n')]]) };
|
|
74
82
|
}
|
|
75
83
|
// Single src — original behaviour
|
|
76
|
-
if (typeof src ===
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
if (typeof src === 'string') {
|
|
85
|
+
const resolved = (0, variables_1.resolveVars)(src, vars);
|
|
86
|
+
if (resolved.startsWith('http://') || resolved.startsWith('https://')) {
|
|
87
|
+
const content = await (0, http_1.fetchHttp)(resolved);
|
|
79
88
|
const filename = entry.target
|
|
80
89
|
? path.basename(entry.target)
|
|
81
|
-
: ((0, http_1.inferFilenameFromUrl)(
|
|
90
|
+
: ((0, http_1.inferFilenameFromUrl)(resolved) ?? 'download');
|
|
82
91
|
return { files: new Map([[filename, content]]) };
|
|
83
92
|
}
|
|
84
93
|
// Local path (absolute, ~/, or relative)
|
|
85
|
-
const result = (0, local_1.fetchLocal)(
|
|
94
|
+
const result = (0, local_1.fetchLocal)(resolved, workingDir);
|
|
86
95
|
return { files: result.files };
|
|
87
96
|
}
|
|
88
97
|
// Map sources
|
|
89
|
-
if (
|
|
90
|
-
const
|
|
91
|
-
|
|
98
|
+
if ('raw' in src) {
|
|
99
|
+
const filename = path.basename(entry.target);
|
|
100
|
+
return { files: new Map([[filename, (0, variables_1.resolveVars)(src.raw, vars)]]) };
|
|
101
|
+
}
|
|
102
|
+
if ('exec' in src) {
|
|
103
|
+
const content = (0, exec_1.fetchExec)((0, variables_1.resolveVars)(src.exec, vars));
|
|
104
|
+
const filename = path.basename(entry.target);
|
|
92
105
|
return { files: new Map([[filename, content]]) };
|
|
93
106
|
}
|
|
94
|
-
if (
|
|
95
|
-
const result = (0, gitlab_1.fetchGitLab)(src.gitlab.project, src.gitlab.file, src.gitlab.ref
|
|
107
|
+
if ('gitlab' in src) {
|
|
108
|
+
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
|
+
? (0, variables_1.resolveVars)(src.gitlab.ref, vars)
|
|
110
|
+
: undefined);
|
|
96
111
|
return { files: result.files };
|
|
97
112
|
}
|
|
98
|
-
if (
|
|
99
|
-
const result = (0, github_1.fetchGitHub)(src.github.repo, src.github.file, src.github.ref
|
|
113
|
+
if ('github' in src) {
|
|
114
|
+
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
|
+
? (0, variables_1.resolveVars)(src.github.ref, vars)
|
|
116
|
+
: undefined);
|
|
100
117
|
return { files: result.files };
|
|
101
118
|
}
|
|
102
119
|
throw new Error(`Unknown source type: ${JSON.stringify(src)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAE7B,iCAAyD;AACzD,mCAAqC;AACrC,iCAAmC;AACnC,qCAAuC;AACvC,qCAAuC;AAMvC,KAAK,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sources/index.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/local.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAoBvE"}
|
package/dist/sources/local.js
CHANGED
|
@@ -26,14 +26,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.fetchLocal = void 0;
|
|
27
27
|
const fs = __importStar(require("fs"));
|
|
28
28
|
const path = __importStar(require("path"));
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
function fetchLocal(src, workingDir) {
|
|
30
|
+
let resolved;
|
|
31
|
+
if (src.startsWith('~/')) {
|
|
32
|
+
resolved = path.join(process.env['HOME'] ?? '~', src.slice(2));
|
|
33
|
+
}
|
|
34
|
+
else if (path.isAbsolute(src)) {
|
|
35
|
+
resolved = src;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
resolved = path.resolve(workingDir, src);
|
|
32
39
|
}
|
|
33
|
-
return p;
|
|
34
|
-
}
|
|
35
|
-
function fetchLocal(src) {
|
|
36
|
-
const resolved = expandHome(src);
|
|
37
40
|
if (!fs.existsSync(resolved)) {
|
|
38
41
|
throw new Error(`Local source not found: ${resolved}`);
|
|
39
42
|
}
|
|
@@ -43,7 +46,7 @@ function fetchLocal(src) {
|
|
|
43
46
|
readDirRecursive(resolved, resolved, files);
|
|
44
47
|
}
|
|
45
48
|
else {
|
|
46
|
-
files.set(path.basename(resolved), fs.readFileSync(resolved,
|
|
49
|
+
files.set(path.basename(resolved), fs.readFileSync(resolved, 'utf8'));
|
|
47
50
|
}
|
|
48
51
|
return { files };
|
|
49
52
|
}
|
|
@@ -57,7 +60,7 @@ function readDirRecursive(base, current, out) {
|
|
|
57
60
|
readDirRecursive(base, full, out);
|
|
58
61
|
}
|
|
59
62
|
else {
|
|
60
|
-
out.set(rel, fs.readFileSync(full,
|
|
63
|
+
out.set(rel, fs.readFileSync(full, 'utf8'));
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAM7B,
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/sources/local.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAM7B,SAAgB,UAAU,CAAC,GAAW,EAAE,UAAkB;IACxD,IAAI,QAAgB,CAAC;IACrB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,QAAQ,GAAG,GAAG,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AApBD,gCAoBC;AAED,SAAS,gBAAgB,CACvB,IAAY,EACZ,OAAe,EACf,GAAwB;IAExB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type Variables = Record<string, string>;
|
|
1
2
|
export interface ReplaceRule {
|
|
2
3
|
from: string;
|
|
3
4
|
to: string;
|
|
@@ -19,8 +20,11 @@ export interface GitHubSrc {
|
|
|
19
20
|
export interface ExecSrc {
|
|
20
21
|
exec: string;
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
export interface RawSrc {
|
|
24
|
+
raw: string;
|
|
25
|
+
}
|
|
26
|
+
/** src can be a plain string (http/https URL or local path) or a map for gitlab/github/exec/raw */
|
|
27
|
+
export type FileSrc = string | GitLabSrc | GitHubSrc | ExecSrc | RawSrc;
|
|
24
28
|
export interface FileEntry {
|
|
25
29
|
src: FileSrc | FileSrc[];
|
|
26
30
|
target?: string;
|
|
@@ -29,6 +33,7 @@ export interface FileEntry {
|
|
|
29
33
|
post?: string;
|
|
30
34
|
}
|
|
31
35
|
export interface FileFerryConfig {
|
|
36
|
+
variables?: Variables;
|
|
32
37
|
files: FileEntry[];
|
|
33
38
|
}
|
|
34
39
|
//# sourceMappingURL=types.d.ts.map
|
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,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
|
|
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;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Variables } from './types';
|
|
2
|
+
export declare const RESERVED_VARS: Set<string>;
|
|
3
|
+
export declare function validateVariables(vars: Variables): void;
|
|
4
|
+
export declare function resolveVars(value: string, vars: Variables): string;
|
|
5
|
+
//# sourceMappingURL=variables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../src/variables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,eAAO,MAAM,aAAa,aAAsB,CAAC;AAEjD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAMvD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAwBlE"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveVars = exports.validateVariables = exports.RESERVED_VARS = void 0;
|
|
4
|
+
// $latest is a special sentinel used by the GitLab source to resolve the newest tag.
|
|
5
|
+
exports.RESERVED_VARS = new Set(['latest']);
|
|
6
|
+
function validateVariables(vars) {
|
|
7
|
+
for (const name of Object.keys(vars)) {
|
|
8
|
+
if (exports.RESERVED_VARS.has(name)) {
|
|
9
|
+
throw new Error(`Variable name "${name}" is reserved and cannot be used`);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.validateVariables = validateVariables;
|
|
14
|
+
function resolveVars(value, vars) {
|
|
15
|
+
// First pass: $env:NAME → process.env value (must come before $name pass)
|
|
16
|
+
const afterEnv = value.replace(/\$env:([A-Za-z_][A-Za-z0-9_]*)/g, (_, name) => {
|
|
17
|
+
const val = process.env[name];
|
|
18
|
+
if (val === undefined) {
|
|
19
|
+
throw new Error(`Undefined environment variable: $env:${name}`);
|
|
20
|
+
}
|
|
21
|
+
return val;
|
|
22
|
+
});
|
|
23
|
+
// Second pass: $name → variable value (reserved names are passed through unchanged)
|
|
24
|
+
return afterEnv.replace(/\$([A-Za-z_][A-Za-z0-9_]*)/g, (match, name) => {
|
|
25
|
+
if (exports.RESERVED_VARS.has(name))
|
|
26
|
+
return match;
|
|
27
|
+
if (!(name in vars)) {
|
|
28
|
+
throw new Error(`Undefined variable: $${name}`);
|
|
29
|
+
}
|
|
30
|
+
return vars[name];
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
exports.resolveVars = resolveVars;
|
|
34
|
+
//# sourceMappingURL=variables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variables.js","sourceRoot":"","sources":["../src/variables.ts"],"names":[],"mappings":";;;AAEA,qFAAqF;AACxE,QAAA,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEjD,SAAgB,iBAAiB,CAAC,IAAe;IAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,IAAI,qBAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,kCAAkC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC;AAND,8CAMC;AAED,SAAgB,WAAW,CAAC,KAAa,EAAE,IAAe;IACxD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAC5B,iCAAiC,EACjC,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE;QAClB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CACF,CAAC;IAEF,oFAAoF;IACpF,OAAO,QAAQ,CAAC,OAAO,CACrB,6BAA6B,EAC7B,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QACtB,IAAI,qBAAa,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC,CACF,CAAC;AACJ,CAAC;AAxBD,kCAwBC"}
|
package/dist/writer.js
CHANGED
|
@@ -28,13 +28,13 @@ const fs = __importStar(require("fs"));
|
|
|
28
28
|
const os = __importStar(require("os"));
|
|
29
29
|
const path = __importStar(require("path"));
|
|
30
30
|
function atomicWrite(targets) {
|
|
31
|
-
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(),
|
|
31
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'fileferry-'));
|
|
32
32
|
try {
|
|
33
33
|
// Stage all files to temp dir first
|
|
34
34
|
const staged = [];
|
|
35
35
|
for (const t of targets) {
|
|
36
|
-
const tmpFile = path.join(tmpDir, path.basename(t.targetPath) +
|
|
37
|
-
fs.writeFileSync(tmpFile, t.content,
|
|
36
|
+
const tmpFile = path.join(tmpDir, path.basename(t.targetPath) + '-' + staged.length);
|
|
37
|
+
fs.writeFileSync(tmpFile, t.content, 'utf8');
|
|
38
38
|
staged.push({ tmp: tmpFile, dest: t.targetPath, mode: t.mode });
|
|
39
39
|
}
|
|
40
40
|
// All staging succeeded — now write to real targets
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@udondan/avanti",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Assemble local files from any source via a declarative YAML spec",
|
|
5
5
|
"bin": {
|
|
6
6
|
"avanti": "dist/cli.js"
|
|
@@ -21,8 +21,20 @@
|
|
|
21
21
|
"files",
|
|
22
22
|
"yaml"
|
|
23
23
|
],
|
|
24
|
-
"author":
|
|
24
|
+
"author": {
|
|
25
|
+
"name": "Daniel Schroeder",
|
|
26
|
+
"email": "deemes79@googlemail.com",
|
|
27
|
+
"url": "https://udondan.com/"
|
|
28
|
+
},
|
|
29
|
+
"funding": {
|
|
30
|
+
"type": "github",
|
|
31
|
+
"url": "https://github.com/sponsors/udondan"
|
|
32
|
+
},
|
|
25
33
|
"license": "MIT",
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "https://github.com/udondan/avanti.git"
|
|
37
|
+
},
|
|
26
38
|
"dependencies": {
|
|
27
39
|
"chalk": "5.3.0",
|
|
28
40
|
"commander": "12.1.0",
|
|
@@ -30,16 +42,16 @@
|
|
|
30
42
|
"js-yaml": "4.1.1"
|
|
31
43
|
},
|
|
32
44
|
"devDependencies": {
|
|
33
|
-
"@eslint/js": "
|
|
45
|
+
"@eslint/js": "10.0.1",
|
|
34
46
|
"@types/diff": "5.2.1",
|
|
35
47
|
"@types/js-yaml": "4.0.9",
|
|
36
48
|
"@types/node": "20.14.0",
|
|
37
|
-
"eslint": "
|
|
38
|
-
"eslint-config-prettier": "
|
|
39
|
-
"prettier": "
|
|
49
|
+
"eslint": "10.3.0",
|
|
50
|
+
"eslint-config-prettier": "10.1.8",
|
|
51
|
+
"prettier": "3.8.3",
|
|
40
52
|
"tsx": "4.15.0",
|
|
41
53
|
"typescript": "5.4.5",
|
|
42
|
-
"typescript-eslint": "
|
|
54
|
+
"typescript-eslint": "8.59.2",
|
|
43
55
|
"vitest": "1.6.0"
|
|
44
56
|
}
|
|
45
57
|
}
|