lim 0.45.1 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -3
- package/dist/base-command.d.ts +3 -1
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +34 -4
- package/dist/base-command.js.map +1 -1
- package/dist/base-command.snapshots.test.d.ts +2 -0
- package/dist/base-command.snapshots.test.d.ts.map +1 -0
- package/dist/base-command.snapshots.test.js +215 -0
- package/dist/base-command.snapshots.test.js.map +1 -0
- package/dist/commands/bazel/credentials/get.d.ts.map +1 -1
- package/dist/commands/bazel/credentials/get.js +6 -1
- package/dist/commands/bazel/credentials/get.js.map +1 -1
- package/dist/commands/ios/create.d.ts +4 -0
- package/dist/commands/ios/create.d.ts.map +1 -1
- package/dist/commands/ios/create.js +12 -0
- package/dist/commands/ios/create.js.map +1 -1
- package/dist/commands/run.d.ts +4 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +15 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/xcode/build.d.ts +1 -0
- package/dist/commands/xcode/build.d.ts.map +1 -1
- package/dist/commands/xcode/build.js +11 -5
- package/dist/commands/xcode/build.js.map +1 -1
- package/dist/commands/xcode/create.d.ts +1 -0
- package/dist/commands/xcode/create.d.ts.map +1 -1
- package/dist/commands/xcode/create.js +1 -1
- package/dist/commands/xcode/create.js.map +1 -1
- package/dist/commands/xcode/sync.d.ts +4 -0
- package/dist/commands/xcode/sync.d.ts.map +1 -1
- package/dist/commands/xcode/sync.js +5 -0
- package/dist/commands/xcode/sync.js.map +1 -1
- package/dist/commands/xcode/test.d.ts +1 -0
- package/dist/commands/xcode/test.d.ts.map +1 -1
- package/dist/commands/xcode/test.js +1 -0
- package/dist/commands/xcode/test.js.map +1 -1
- package/dist/lib/cache-flags.d.ts +1 -0
- package/dist/lib/cache-flags.d.ts.map +1 -1
- package/dist/lib/cache-flags.js +5 -1
- package/dist/lib/cache-flags.js.map +1 -1
- package/dist/lib/cache-flags.test.js +8 -0
- package/dist/lib/cache-flags.test.js.map +1 -1
- package/dist/lib/cache.d.ts +1 -0
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +3 -0
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/snapshot-project.d.ts +7 -0
- package/dist/lib/snapshot-project.d.ts.map +1 -0
- package/dist/lib/snapshot-project.js +194 -0
- package/dist/lib/snapshot-project.js.map +1 -0
- package/dist/lib/snapshot-project.test.d.ts +2 -0
- package/dist/lib/snapshot-project.test.d.ts.map +1 -0
- package/dist/lib/snapshot-project.test.js +156 -0
- package/dist/lib/snapshot-project.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/xcode/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** Disk snapshot flags shared by commands that can create or bind a snapshot. */
|
|
2
2
|
export declare const snapshotFlags: {
|
|
3
|
+
'no-snapshot': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
3
4
|
'snapshot-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
4
5
|
'snapshot-restore-keys': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
5
6
|
'snapshot-paths': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-flags.d.ts","sourceRoot":"","sources":["../../src/lib/cache-flags.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,eAAO,MAAM,aAAa
|
|
1
|
+
{"version":3,"file":"cache-flags.d.ts","sourceRoot":"","sources":["../../src/lib/cache-flags.ts"],"names":[],"mappings":"AAEA,iFAAiF;AACjF,eAAO,MAAM,aAAa;;;;;CAoBzB,CAAC;AAEF,eAAO,MAAM,gBAAgB,2DAK3B,CAAC"}
|
package/dist/lib/cache-flags.js
CHANGED
|
@@ -4,9 +4,13 @@ exports.waitSnapshotFlag = exports.snapshotFlags = void 0;
|
|
|
4
4
|
const core_1 = require("@oclif/core");
|
|
5
5
|
/** Disk snapshot flags shared by commands that can create or bind a snapshot. */
|
|
6
6
|
exports.snapshotFlags = {
|
|
7
|
+
'no-snapshot': core_1.Flags.boolean({
|
|
8
|
+
description: 'Create without a disk snapshot. Existing instances keep their snapshot configuration.',
|
|
9
|
+
exclusive: ['snapshot-key', 'snapshot-restore-keys', 'snapshot-paths'],
|
|
10
|
+
}),
|
|
7
11
|
'snapshot-key': core_1.Flags.string({
|
|
8
12
|
aliases: ['cache-key'],
|
|
9
|
-
description: 'Disk snapshot key
|
|
13
|
+
description: 'Disk snapshot key to restore and publish at termination. Defaults to the Git origin host/repository plus the project subdirectory for new instances. Reusing a key replaces its archive. Also used to restore when --snapshot-restore-keys is omitted.',
|
|
10
14
|
}),
|
|
11
15
|
'snapshot-restore-keys': core_1.Flags.string({
|
|
12
16
|
aliases: ['cache-restore-keys'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-flags.js","sourceRoot":"","sources":["../../src/lib/cache-flags.ts"],"names":[],"mappings":";;;AAAA,sCAAoC;AAEpC,iFAAiF;AACpE,QAAA,aAAa,GAAG;IAC3B,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"cache-flags.js","sourceRoot":"","sources":["../../src/lib/cache-flags.ts"],"names":[],"mappings":";;;AAAA,sCAAoC;AAEpC,iFAAiF;AACpE,QAAA,aAAa,GAAG;IAC3B,aAAa,EAAE,YAAK,CAAC,OAAO,CAAC;QAC3B,WAAW,EAAE,uFAAuF;QACpG,SAAS,EAAE,CAAC,cAAc,EAAE,uBAAuB,EAAE,gBAAgB,CAAC;KACvE,CAAC;IACF,cAAc,EAAE,YAAK,CAAC,MAAM,CAAC;QAC3B,OAAO,EAAE,CAAC,WAAW,CAAC;QACtB,WAAW,EACT,wPAAwP;KAC3P,CAAC;IACF,uBAAuB,EAAE,YAAK,CAAC,MAAM,CAAC;QACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;QAC/B,WAAW,EACT,6JAA6J;KAChK,CAAC;IACF,gBAAgB,EAAE,YAAK,CAAC,MAAM,CAAC;QAC7B,OAAO,EAAE,CAAC,aAAa,CAAC;QACxB,WAAW,EACT,4LAA4L;KAC/L,CAAC;CACH,CAAC;AAEW,QAAA,gBAAgB,GAAG,YAAK,CAAC,OAAO,CAAC;IAC5C,OAAO,EAAE,CAAC,YAAY,CAAC;IACvB,WAAW,EACT,6KAA6K;IAC/K,OAAO,EAAE,KAAK;CACf,CAAC,CAAC"}
|
|
@@ -29,4 +29,12 @@ test('legacy and snapshot spellings can be mixed across distinct options', async
|
|
|
29
29
|
});
|
|
30
30
|
expect((0, cache_1.parseSnapshotConfig)(flags)).toEqual({ key: 'myapp-pr51', restoreKeys: ['myapp-main'] });
|
|
31
31
|
});
|
|
32
|
+
test('snapshot opt-out rejects explicit snapshot settings, including legacy aliases', async () => {
|
|
33
|
+
const { flags } = await core_1.Parser.parse(['--no-snapshot'], { flags: cache_flags_1.snapshotFlags });
|
|
34
|
+
expect(flags['no-snapshot']).toBe(true);
|
|
35
|
+
expect((0, cache_1.parseSnapshotConfig)(flags)).toBeUndefined();
|
|
36
|
+
for (const flag of ['snapshot-key', 'cache-key', 'snapshot-restore-keys', 'snapshot-paths']) {
|
|
37
|
+
await expect(core_1.Parser.parse(['--no-snapshot', `--${flag}`, 'custom'], { flags: cache_flags_1.snapshotFlags })).rejects.toThrow();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
32
40
|
//# sourceMappingURL=cache-flags.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-flags.test.js","sourceRoot":"","sources":["../../src/lib/cache-flags.test.ts"],"names":[],"mappings":";;AAAA,sCAAqC;AACrC,+CAAgE;AAChE,mCAA8C;AAE9C,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,yCAAyC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAClC;QACE,KAAK,IAAI,MAAM;QACf,YAAY;QACZ,KAAK,IAAI,eAAe;QACxB,uBAAuB;QACvB,KAAK,IAAI,QAAQ;QACjB,aAAa;KACd,EACD,EAAE,KAAK,EAAE,2BAAa,EAAE,CACzB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QACzC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,8BAAgB,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACpF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,oCAAoC,CAAC,EAAE;QACxG,KAAK,EAAE,2BAAa;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cache-flags.test.js","sourceRoot":"","sources":["../../src/lib/cache-flags.test.ts"],"names":[],"mappings":";;AAAA,sCAAqC;AACrC,+CAAgE;AAChE,mCAA8C;AAE9C,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,yCAAyC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACzF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAClC;QACE,KAAK,IAAI,MAAM;QACf,YAAY;QACZ,KAAK,IAAI,eAAe;QACxB,uBAAuB;QACvB,KAAK,IAAI,QAAQ;QACjB,aAAa;KACd,EACD,EAAE,KAAK,EAAE,2BAAa,EAAE,CACzB,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjD,MAAM,CAAC,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QACzC,GAAG,EAAE,YAAY;QACjB,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;QACzC,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IACxF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,eAAe,EAAE,8BAAgB,EAAE,EAAE,CAAC,CAAC;IAC/F,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACpF,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,EAAE,oCAAoC,CAAC,EAAE;QACxG,KAAK,EAAE,2BAAa;KACrB,CAAC,CAAC;IACH,MAAM,CAAC,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AACjG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC/F,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,aAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,2BAAa,EAAE,CAAC,CAAC;IAClF,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,CAAC,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACnD,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,uBAAuB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC5F,MAAM,MAAM,CACV,aAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,2BAAa,EAAE,CAAC,CACjF,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/lib/cache.d.ts
CHANGED
package/dist/lib/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAGhB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB,MAAM,MAAM,UAAU,GAAG;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAGhB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAMrB,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AAEF,+FAA+F;AAC/F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS,CAenF;AAED,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAWpD,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAE1E;AAqCD,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CA8BnC;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAInE;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,MAAM,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAyBnC;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUjD"}
|
package/dist/lib/cache.js
CHANGED
|
@@ -15,6 +15,9 @@ function parseSnapshotConfig(flags) {
|
|
|
15
15
|
const key = (flags['snapshot-key'] ?? flags['cache-key'])?.trim() || undefined;
|
|
16
16
|
const restoreKeys = splitList(flags['snapshot-restore-keys'] ?? flags['cache-restore-keys']);
|
|
17
17
|
const paths = splitList(flags['snapshot-paths'] ?? flags['cache-paths']);
|
|
18
|
+
if (flags['no-snapshot'] && (key || restoreKeys || paths)) {
|
|
19
|
+
throw new Error('--no-snapshot cannot be combined with snapshot keys or paths.');
|
|
20
|
+
}
|
|
18
21
|
if (!key && !restoreKeys && !paths) {
|
|
19
22
|
return undefined;
|
|
20
23
|
}
|
package/dist/lib/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/lib/cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { XcodeCacheConfig } from '@limrun/api';
|
|
2
|
+
import { type CacheFlags } from './cache';
|
|
3
|
+
/** Explicit settings keep their semantics, including restore-only snapshots. */
|
|
4
|
+
export declare function projectSnapshotConfig(flags: CacheFlags, projectPath: string): XcodeCacheConfig | undefined;
|
|
5
|
+
/** Share snapshots across clones and worktrees without including local paths or credentials. */
|
|
6
|
+
export declare function projectSnapshotKey(projectPath: string): string | undefined;
|
|
7
|
+
//# sourceMappingURL=snapshot-project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-project.d.ts","sourceRoot":"","sources":["../../src/lib/snapshot-project.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,SAAS,CAAC;AAE/D,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAK1G;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA4B1E"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.projectSnapshotConfig = projectSnapshotConfig;
|
|
7
|
+
exports.projectSnapshotKey = projectSnapshotKey;
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const cache_1 = require("./cache");
|
|
11
|
+
/** Explicit settings keep their semantics, including restore-only snapshots. */
|
|
12
|
+
function projectSnapshotConfig(flags, projectPath) {
|
|
13
|
+
const explicit = (0, cache_1.parseSnapshotConfig)(flags);
|
|
14
|
+
if (explicit || flags['no-snapshot'])
|
|
15
|
+
return explicit;
|
|
16
|
+
const key = projectSnapshotKey(projectPath);
|
|
17
|
+
return key ? { key } : undefined;
|
|
18
|
+
}
|
|
19
|
+
/** Share snapshots across clones and worktrees without including local paths or credentials. */
|
|
20
|
+
function projectSnapshotKey(projectPath) {
|
|
21
|
+
try {
|
|
22
|
+
const cwd = fs_1.default.realpathSync(projectPath);
|
|
23
|
+
const checkout = findCheckout(cwd);
|
|
24
|
+
if (!checkout)
|
|
25
|
+
return undefined;
|
|
26
|
+
const { root, gitDir } = checkout;
|
|
27
|
+
const common = readOptional(path_1.default.join(gitDir, 'commondir'))?.trim();
|
|
28
|
+
const commonDir = common ? path_1.default.resolve(gitDir, common) : gitDir;
|
|
29
|
+
const config = parseConfig(readOptional(path_1.default.join(commonDir, 'config')) ?? '');
|
|
30
|
+
if (/^(true|yes|on|1)$/i.test(config.get('extensions.worktreeconfig')?.slice(-1)[0] ?? '')) {
|
|
31
|
+
for (const [name, values] of parseConfig(readOptional(path_1.default.join(gitDir, 'config.worktree')) ?? '')) {
|
|
32
|
+
config.set(name, [...(config.get(name) ?? []), ...values]);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Git fetch uses the first URL when a remote declares more than one.
|
|
36
|
+
const origin = config.get('remote.origin.url')?.[0];
|
|
37
|
+
if (!origin)
|
|
38
|
+
return undefined;
|
|
39
|
+
const repo = repositoryIdentity(origin);
|
|
40
|
+
if (!repo)
|
|
41
|
+
return undefined;
|
|
42
|
+
const relative = path_1.default.relative(root, cwd).split(path_1.default.sep).join('/');
|
|
43
|
+
if (relative === '..' || relative.startsWith('../'))
|
|
44
|
+
return undefined;
|
|
45
|
+
const key = relative ? `${repo}/${relative}` : repo;
|
|
46
|
+
// Match the API's key bounds. Unrepresentable identities need an explicit key.
|
|
47
|
+
return key.length <= 255 && /^[A-Za-z0-9._+/:@#-]+$/.test(key) ? key : undefined;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Missing or unsupported metadata leaves snapshots explicit.
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function findCheckout(start) {
|
|
55
|
+
for (let root = start;; root = path_1.default.dirname(root)) {
|
|
56
|
+
const marker = path_1.default.join(root, '.git');
|
|
57
|
+
if (fs_1.default.lstatSync(marker, { throwIfNoEntry: false })) {
|
|
58
|
+
if (fs_1.default.statSync(marker).isDirectory())
|
|
59
|
+
return { root, gitDir: marker };
|
|
60
|
+
const gitFile = /^gitdir: (.+)$/.exec(fs_1.default.readFileSync(marker, 'utf8').trim());
|
|
61
|
+
// A broken nested checkout must not inherit the parent repository's key.
|
|
62
|
+
if (!gitFile)
|
|
63
|
+
return undefined;
|
|
64
|
+
return { root, gitDir: path_1.default.resolve(root, gitFile[1]) };
|
|
65
|
+
}
|
|
66
|
+
if (path_1.default.dirname(root) === root)
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function readOptional(file) {
|
|
71
|
+
try {
|
|
72
|
+
return fs_1.default.readFileSync(file, 'utf8');
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
if (err.code === 'ENOENT')
|
|
76
|
+
return undefined;
|
|
77
|
+
throw err;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Read repository-local settings without inheriting machine-specific Git configuration. */
|
|
81
|
+
function parseConfig(text) {
|
|
82
|
+
const config = new Map();
|
|
83
|
+
let section = '';
|
|
84
|
+
for (let line of configLines(text)) {
|
|
85
|
+
line = line.trim();
|
|
86
|
+
if (!line)
|
|
87
|
+
continue;
|
|
88
|
+
if (line.startsWith('[')) {
|
|
89
|
+
const header = /^\[([\w.-]+)(?:[ \t]+"((?:[^"\\]|\\.)*)")?\](.*)$/.exec(line);
|
|
90
|
+
if (!header)
|
|
91
|
+
throw new Error('Invalid Git config section');
|
|
92
|
+
section = header[1].toLowerCase();
|
|
93
|
+
if (header[2] !== undefined)
|
|
94
|
+
section += `.${header[2].replace(/\\(.)/g, '$1')}`;
|
|
95
|
+
line = header[3].trim();
|
|
96
|
+
if (!line)
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const setting = /^([a-z][a-z0-9-]*)(?:[ \t]*=[ \t]*(.*))?$/i.exec(line);
|
|
100
|
+
if (!section || !setting)
|
|
101
|
+
throw new Error('Invalid Git config setting');
|
|
102
|
+
const name = `${section}.${setting[1].toLowerCase()}`;
|
|
103
|
+
// Includes can replace the origin. Require an explicit key instead of guessing from a partial config.
|
|
104
|
+
if (name === 'include.path' ||
|
|
105
|
+
(section.startsWith('includeif.') && setting[1].toLowerCase() === 'path')) {
|
|
106
|
+
throw new Error('Git config includes require an explicit snapshot key');
|
|
107
|
+
}
|
|
108
|
+
const value = setting[2] === undefined ? 'true' : configValue(setting[2]);
|
|
109
|
+
config.set(name, [...(config.get(name) ?? []), value]);
|
|
110
|
+
}
|
|
111
|
+
return config;
|
|
112
|
+
}
|
|
113
|
+
/** Comments and continuations depend on quoting, so splitting at '#' or newlines alone loses URLs. */
|
|
114
|
+
function configLines(text) {
|
|
115
|
+
const lines = [];
|
|
116
|
+
let line = '';
|
|
117
|
+
let quoted = false;
|
|
118
|
+
let comment = false;
|
|
119
|
+
text = text.replace(/\r\n/g, '\n');
|
|
120
|
+
for (let i = 0; i < text.length; i++) {
|
|
121
|
+
const char = text[i];
|
|
122
|
+
if (char === '\n') {
|
|
123
|
+
if (quoted)
|
|
124
|
+
throw new Error('Unterminated Git config quote');
|
|
125
|
+
lines.push(line);
|
|
126
|
+
line = '';
|
|
127
|
+
comment = false;
|
|
128
|
+
}
|
|
129
|
+
else if (!comment) {
|
|
130
|
+
if (char === '\\') {
|
|
131
|
+
const next = text[++i];
|
|
132
|
+
if (next === undefined)
|
|
133
|
+
throw new Error('Incomplete Git config escape');
|
|
134
|
+
if (next !== '\n')
|
|
135
|
+
line += char + next;
|
|
136
|
+
}
|
|
137
|
+
else if (!quoted && (char === '#' || char === ';')) {
|
|
138
|
+
comment = true;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
if (char === '"')
|
|
142
|
+
quoted = !quoted;
|
|
143
|
+
line += char;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (quoted)
|
|
148
|
+
throw new Error('Unterminated Git config quote');
|
|
149
|
+
lines.push(line);
|
|
150
|
+
return lines;
|
|
151
|
+
}
|
|
152
|
+
function configValue(raw) {
|
|
153
|
+
const escapes = { n: '\n', t: '\t', b: '\b', '\\': '\\', '"': '"' };
|
|
154
|
+
let value = '';
|
|
155
|
+
for (let i = 0; i < raw.length; i++) {
|
|
156
|
+
const char = raw[i];
|
|
157
|
+
if (char === '\\') {
|
|
158
|
+
const escaped = escapes[raw[++i]];
|
|
159
|
+
if (escaped === undefined)
|
|
160
|
+
throw new Error('Invalid Git config escape');
|
|
161
|
+
value += escaped;
|
|
162
|
+
}
|
|
163
|
+
else if (char !== '"') {
|
|
164
|
+
value += char;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return value;
|
|
168
|
+
}
|
|
169
|
+
function repositoryIdentity(remote) {
|
|
170
|
+
let host;
|
|
171
|
+
let repo;
|
|
172
|
+
if (remote.includes('://')) {
|
|
173
|
+
const url = new URL(remote);
|
|
174
|
+
if (!['https:', 'http:', 'ssh:', 'git:'].includes(url.protocol))
|
|
175
|
+
return undefined;
|
|
176
|
+
host = url.host.toLowerCase();
|
|
177
|
+
repo = url.pathname;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const scp = /^(?:[^/@:\s]+@)?([^/:\s]+):(.+)$/.exec(remote);
|
|
181
|
+
if (!scp || /^[A-Za-z]:[\\/]/.test(remote))
|
|
182
|
+
return undefined;
|
|
183
|
+
host = scp[1].toLowerCase();
|
|
184
|
+
repo = scp[2];
|
|
185
|
+
}
|
|
186
|
+
repo = repo.replace(/^\/+|\/+$/g, '').replace(/\.git$/, '');
|
|
187
|
+
if (!repo || repo.split('/').some((part) => !part || part === '.' || part === '..'))
|
|
188
|
+
return undefined;
|
|
189
|
+
// GitHub repository names are case-insensitive; other hosts may preserve case.
|
|
190
|
+
if (host === 'github.com')
|
|
191
|
+
repo = repo.toLowerCase();
|
|
192
|
+
return `${host}/${repo}`;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=snapshot-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-project.js","sourceRoot":"","sources":["../../src/lib/snapshot-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-project.test.d.ts","sourceRoot":"","sources":["../../src/lib/snapshot-project.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const snapshot_project_1 = require("./snapshot-project");
|
|
10
|
+
let temp;
|
|
11
|
+
let repo;
|
|
12
|
+
const writeConfig = (gitDir, remote) => {
|
|
13
|
+
fs_1.default.mkdirSync(gitDir, { recursive: true });
|
|
14
|
+
fs_1.default.writeFileSync(path_1.default.join(gitDir, 'HEAD'), 'ref: refs/heads/main\n');
|
|
15
|
+
fs_1.default.writeFileSync(path_1.default.join(gitDir, 'config'), '[core]\n\trepositoryformatversion = 0\n\tbare = false\n' +
|
|
16
|
+
(remote ? `[remote "origin"]\n\turl = ${JSON.stringify(remote)}\n` : ''));
|
|
17
|
+
};
|
|
18
|
+
const setOrigin = (remote) => writeConfig(path_1.default.join(repo, '.git'), remote);
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
temp = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'lim-snapshot-'));
|
|
21
|
+
repo = path_1.default.join(temp, 'local-checkout-name');
|
|
22
|
+
fs_1.default.mkdirSync(repo);
|
|
23
|
+
setOrigin('git@github.com:acme/monorepo.git');
|
|
24
|
+
fs_1.default.mkdirSync(path_1.default.join(repo, 'apps', 'ios'), { recursive: true });
|
|
25
|
+
});
|
|
26
|
+
afterEach(() => fs_1.default.rmSync(temp, { recursive: true, force: true }));
|
|
27
|
+
test('discovers the project with no Git binary on PATH', () => {
|
|
28
|
+
const previous = process.env.PATH;
|
|
29
|
+
try {
|
|
30
|
+
process.env.PATH = temp;
|
|
31
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(repo, 'apps', 'ios'))).toBe('github.com/acme/monorepo/apps/ios');
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
if (previous === undefined)
|
|
35
|
+
delete process.env.PATH;
|
|
36
|
+
else
|
|
37
|
+
process.env.PATH = previous;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
test('parses quoted values, comments, continuations, and case-insensitive setting names', () => {
|
|
41
|
+
fs_1.default.writeFileSync(path_1.default.join(repo, '.git', 'config'), [
|
|
42
|
+
'[core]',
|
|
43
|
+
' editor = "tool \\"arg\\"" # unrelated escaped quotes',
|
|
44
|
+
'[ReMoTe "origin"] ; comment',
|
|
45
|
+
' URL = "https://user:sec;ret@github.com/acme/\\',
|
|
46
|
+
'monorepo.git" # origin',
|
|
47
|
+
'[remote "other"] url = https://github.com/acme/other.git',
|
|
48
|
+
].join('\r\n'));
|
|
49
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBe('github.com/acme/monorepo');
|
|
50
|
+
});
|
|
51
|
+
test('uses the first fetch URL and supports the legacy section spelling', () => {
|
|
52
|
+
fs_1.default.writeFileSync(path_1.default.join(repo, '.git', 'config'), [
|
|
53
|
+
'[REMOTE.ORIGIN]',
|
|
54
|
+
'url = https://github.com/acme/monorepo.git',
|
|
55
|
+
'url = https://github.com/acme/mirror.git',
|
|
56
|
+
'[remote "Origin"]',
|
|
57
|
+
'url = https://github.com/acme/uppercase-name.git',
|
|
58
|
+
].join('\n'));
|
|
59
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBe('github.com/acme/monorepo');
|
|
60
|
+
});
|
|
61
|
+
test('reads worktree-local origins only when the worktreeConfig extension is enabled', () => {
|
|
62
|
+
setOrigin();
|
|
63
|
+
const gitDir = path_1.default.join(repo, '.git');
|
|
64
|
+
fs_1.default.writeFileSync(path_1.default.join(gitDir, 'config.worktree'), '[remote "origin"]\nurl = git@github.com:acme/worktree.git\n');
|
|
65
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBeUndefined();
|
|
66
|
+
fs_1.default.appendFileSync(path_1.default.join(gitDir, 'config'), '[extensions]\nworktreeConfig = true\n');
|
|
67
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBe('github.com/acme/worktree');
|
|
68
|
+
});
|
|
69
|
+
test.each(['not a gitfile', 'gitdir: missing', 'gitdir: '])('does not escape a broken nested checkout: %s', (pointer) => {
|
|
70
|
+
const nested = path_1.default.join(repo, 'apps', 'ios');
|
|
71
|
+
fs_1.default.writeFileSync(path_1.default.join(nested, '.git'), pointer);
|
|
72
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(nested)).toBeUndefined();
|
|
73
|
+
});
|
|
74
|
+
test.each([
|
|
75
|
+
'[remote "origin"]\nurl = "unterminated',
|
|
76
|
+
'[remote "origin"]\nurl = "https://github.com/acme/\\q"',
|
|
77
|
+
'[remote "origin"\nurl = https://github.com/acme/repo.git',
|
|
78
|
+
'[remote "origin"]\nurl = https://github.com/acme/repo.git\n[include]\npath = other.config',
|
|
79
|
+
'[remote "origin"]\nurl = https://github.com/acme/repo.git\n[includeIf "onbranch:main"]\npath = other.config',
|
|
80
|
+
])('leaves malformed or included config to an explicit key: %s', (config) => {
|
|
81
|
+
fs_1.default.writeFileSync(path_1.default.join(repo, '.git', 'config'), config);
|
|
82
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({}, repo)).toBeUndefined();
|
|
83
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'snapshot-key': 'explicit' }, repo)).toEqual({ key: 'explicit' });
|
|
84
|
+
});
|
|
85
|
+
test.each([
|
|
86
|
+
'git@github.com:Acme/Monorepo.git',
|
|
87
|
+
'ssh://git@github.com/acme/monorepo.git',
|
|
88
|
+
'https://github.com/acme/monorepo.git/',
|
|
89
|
+
'https://user:secret@github.com/acme/monorepo.git?token=secret',
|
|
90
|
+
])('normalizes %s to the same project identity', (remote) => {
|
|
91
|
+
setOrigin(remote);
|
|
92
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBe('github.com/acme/monorepo');
|
|
93
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(repo, 'apps', 'ios'))).toBe('github.com/acme/monorepo/apps/ios');
|
|
94
|
+
});
|
|
95
|
+
test('preserves case-sensitive repository and app paths on other hosts', () => {
|
|
96
|
+
setOrigin('ssh://git@git.example.com:2222/Acme/Mobile.git');
|
|
97
|
+
fs_1.default.mkdirSync(path_1.default.join(repo, 'MyApp'));
|
|
98
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(repo, 'MyApp'))).toBe('git.example.com:2222/Acme/Mobile/MyApp');
|
|
99
|
+
});
|
|
100
|
+
test.each(['relative', 'absolute'])('%s worktree pointers and symlinked paths share the project key', (kind) => {
|
|
101
|
+
const worktree = path_1.default.join(temp, 'other-checkout');
|
|
102
|
+
const gitDir = path_1.default.join(repo, '.git', 'worktrees', 'other-checkout');
|
|
103
|
+
fs_1.default.mkdirSync(gitDir, { recursive: true });
|
|
104
|
+
fs_1.default.mkdirSync(path_1.default.join(worktree, 'apps', 'ios'), { recursive: true });
|
|
105
|
+
fs_1.default.writeFileSync(path_1.default.join(worktree, '.git'), `gitdir: ${kind === 'absolute' ? gitDir : path_1.default.relative(worktree, gitDir)}\n`);
|
|
106
|
+
fs_1.default.writeFileSync(path_1.default.join(gitDir, 'commondir'), '../../\n');
|
|
107
|
+
fs_1.default.writeFileSync(path_1.default.join(gitDir, 'HEAD'), 'ref: refs/heads/feature\n');
|
|
108
|
+
const linked = path_1.default.join(temp, 'linked');
|
|
109
|
+
fs_1.default.symlinkSync(worktree, linked, 'junction');
|
|
110
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(linked, 'apps', 'ios'))).toBe('github.com/acme/monorepo/apps/ios');
|
|
111
|
+
});
|
|
112
|
+
test('uses the nearest repository for a nested checkout', () => {
|
|
113
|
+
const nested = path_1.default.join(repo, 'apps', 'ios');
|
|
114
|
+
writeConfig(path_1.default.join(nested, '.git'), 'git@github.com:acme/ios.git');
|
|
115
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(nested)).toBe('github.com/acme/ios');
|
|
116
|
+
});
|
|
117
|
+
test('follows a submodule gitfile without adopting the containing repository', () => {
|
|
118
|
+
const nested = path_1.default.join(repo, 'apps', 'ios');
|
|
119
|
+
const gitDir = path_1.default.join(repo, '.git', 'modules', 'apps', 'ios');
|
|
120
|
+
writeConfig(gitDir, 'git@github.com:acme/ios.git');
|
|
121
|
+
fs_1.default.writeFileSync(path_1.default.join(nested, '.git'), `gitdir: ${path_1.default.relative(nested, gitDir)}\n`);
|
|
122
|
+
fs_1.default.mkdirSync(path_1.default.join(nested, 'Client'));
|
|
123
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(nested, 'Client'))).toBe('github.com/acme/ios/Client');
|
|
124
|
+
});
|
|
125
|
+
test.each([
|
|
126
|
+
'/tmp/local-repo',
|
|
127
|
+
'file:///tmp/local-repo',
|
|
128
|
+
'C:\\local\\repo',
|
|
129
|
+
'https://github.com/acme/bad%20name',
|
|
130
|
+
])('does not invent an identity for unsupported remote %s', (remote) => {
|
|
131
|
+
setOrigin(remote);
|
|
132
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBeUndefined();
|
|
133
|
+
});
|
|
134
|
+
test('leaves snapshots explicit without a usable Git origin', () => {
|
|
135
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({}, temp)).toBeUndefined();
|
|
136
|
+
setOrigin();
|
|
137
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({}, repo)).toBeUndefined();
|
|
138
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'snapshot-key': 'my-project' }, temp)).toEqual({ key: 'my-project' });
|
|
139
|
+
});
|
|
140
|
+
test('does not emit keys beyond the API length limit or with unsupported path characters', () => {
|
|
141
|
+
setOrigin(`https://github.com/acme/${'a'.repeat(255)}.git`);
|
|
142
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(repo)).toBeUndefined();
|
|
143
|
+
setOrigin('https://github.com/acme/repo.git');
|
|
144
|
+
fs_1.default.mkdirSync(path_1.default.join(repo, 'My App'));
|
|
145
|
+
expect((0, snapshot_project_1.projectSnapshotKey)(path_1.default.join(repo, 'My App'))).toBeUndefined();
|
|
146
|
+
});
|
|
147
|
+
test('defaults to a key alone and preserves explicit keys, restore-only settings and paths', () => {
|
|
148
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({}, repo)).toEqual({ key: 'github.com/acme/monorepo' });
|
|
149
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'snapshot-key': 'custom' }, repo)).toEqual({ key: 'custom' });
|
|
150
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'cache-key': 'legacy' }, repo)).toEqual({ key: 'legacy' });
|
|
151
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'snapshot-restore-keys': 'main' }, repo)).toEqual({ restoreKeys: ['main'] });
|
|
152
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'snapshot-paths': 'Pods' }, repo)).toEqual({ paths: ['Pods'] });
|
|
153
|
+
expect((0, snapshot_project_1.projectSnapshotConfig)({ 'no-snapshot': true }, repo)).toBeUndefined();
|
|
154
|
+
expect(() => (0, snapshot_project_1.projectSnapshotConfig)({ 'no-snapshot': true, 'cache-key': 'custom' }, repo)).toThrow('cannot be combined');
|
|
155
|
+
});
|
|
156
|
+
//# sourceMappingURL=snapshot-project.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-project.test.js","sourceRoot":"","sources":["../../src/lib/snapshot-project.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lim",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.46.0",
|
|
4
4
|
"description": "Use remote XCode, Gradle, iOS Simulator, Android Emulator and more to build and test apps from Linux, Windows or macOS.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"lim": "./bin/run.js",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"test": "jest"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@limrun/api": "0.64.
|
|
29
|
+
"@limrun/api": "0.64.1",
|
|
30
30
|
"@oclif/core": "^4",
|
|
31
31
|
"cli-progress": "^3.12.0",
|
|
32
32
|
"cli-table3": "^0.6.5",
|