@hanseltime/template-repo-sync 2.2.1 → 2.4.0-alpha.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 +43 -45
- package/dist/cjs/checkout-drivers/git-checkout.js +37 -0
- package/dist/cjs/checkout-drivers/git-checkout.spec.js +60 -0
- package/dist/cjs/checkout-drivers/index.js +21 -0
- package/dist/cjs/checkout-drivers/types.js +11 -0
- package/dist/cjs/clone-drivers/git-clone.js +25 -0
- package/dist/cjs/clone-drivers/index.js +21 -0
- package/dist/cjs/clone-drivers/types.js +8 -0
- package/dist/cjs/diff-drivers/git-diff.js +30 -0
- package/dist/cjs/diff-drivers/git-diff.spec.js +138 -0
- package/dist/cjs/diff-drivers/index.js +21 -0
- package/dist/cjs/diff-drivers/types.js +6 -0
- package/dist/cjs/formatting/index.js +21 -0
- package/dist/cjs/formatting/infer-json-indent.js +26 -0
- package/dist/cjs/formatting/infer-json-indent.spec.js +50 -0
- package/dist/cjs/formatting/sync-results-to-md.js +62 -0
- package/dist/cjs/formatting/sync-results-to-md.spec.js +45 -0
- package/dist/cjs/index.js +22 -0
- package/dist/cjs/load-plugin.js +44 -0
- package/dist/cjs/match.js +51 -0
- package/dist/cjs/match.spec.js +75 -0
- package/dist/cjs/merge-file.js +91 -0
- package/dist/cjs/merge-file.spec.js +508 -0
- package/dist/cjs/plugins/index.js +20 -0
- package/dist/cjs/plugins/json-merge.js +228 -0
- package/dist/cjs/plugins/json-merge.spec.js +514 -0
- package/dist/cjs/ref-drivers/git-current-ref.js +18 -0
- package/dist/cjs/ref-drivers/git-current-ref.spec.js +15 -0
- package/dist/cjs/ref-drivers/index.js +20 -0
- package/dist/cjs/ref-drivers/types.js +11 -0
- package/dist/cjs/template-sync.js +236 -0
- package/dist/cjs/template-sync.spec.js +521 -0
- package/dist/cjs/test-utils/index.js +26 -0
- package/dist/cjs/types.js +12 -0
- package/dist/esm/checkout-drivers/git-checkout.mjs +27 -0
- package/dist/esm/checkout-drivers/git-checkout.spec.mjs +56 -0
- package/dist/esm/checkout-drivers/index.mjs +4 -0
- package/dist/esm/checkout-drivers/types.mjs +8 -0
- package/dist/esm/clone-drivers/git-clone.mjs +15 -0
- package/dist/esm/clone-drivers/index.mjs +4 -0
- package/dist/esm/clone-drivers/types.mjs +8 -0
- package/dist/esm/diff-drivers/git-diff.mjs +26 -0
- package/dist/esm/diff-drivers/git-diff.spec.mjs +93 -0
- package/dist/esm/diff-drivers/index.mjs +4 -0
- package/dist/esm/diff-drivers/types.mjs +6 -0
- package/dist/esm/formatting/index.mjs +4 -0
- package/dist/esm/formatting/infer-json-indent.mjs +16 -0
- package/dist/esm/formatting/infer-json-indent.spec.mjs +46 -0
- package/dist/esm/formatting/sync-results-to-md.mjs +52 -0
- package/dist/esm/formatting/sync-results-to-md.spec.mjs +41 -0
- package/dist/esm/index.mjs +5 -0
- package/dist/esm/load-plugin.mjs +40 -0
- package/dist/esm/match.mjs +40 -0
- package/dist/esm/match.spec.mjs +71 -0
- package/dist/esm/merge-file.mjs +88 -0
- package/dist/esm/merge-file.spec.mjs +504 -0
- package/dist/esm/plugins/index.mjs +10 -0
- package/dist/esm/plugins/json-merge.mjs +164 -0
- package/dist/esm/plugins/json-merge.spec.mjs +469 -0
- package/dist/esm/ref-drivers/git-current-ref.mjs +8 -0
- package/dist/esm/ref-drivers/git-current-ref.spec.mjs +11 -0
- package/dist/esm/ref-drivers/index.mjs +3 -0
- package/dist/esm/ref-drivers/types.mjs +8 -0
- package/dist/esm/template-sync.mjs +174 -0
- package/dist/esm/template-sync.spec.mjs +517 -0
- package/dist/esm/test-utils/index.mjs +10 -0
- package/dist/esm/types.mjs +9 -0
- package/{lib/cjs → dist/types}/checkout-drivers/git-checkout.d.ts +1 -0
- package/dist/types/checkout-drivers/git-checkout.d.ts.map +1 -0
- package/dist/types/checkout-drivers/git-checkout.spec.d.ts +2 -0
- package/dist/types/checkout-drivers/git-checkout.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/checkout-drivers/index.d.ts +1 -0
- package/dist/types/checkout-drivers/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/checkout-drivers/types.d.ts +1 -0
- package/dist/types/checkout-drivers/types.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/clone-drivers/git-clone.d.ts +2 -1
- package/dist/types/clone-drivers/git-clone.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/clone-drivers/index.d.ts +2 -1
- package/dist/types/clone-drivers/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/clone-drivers/types.d.ts +1 -0
- package/dist/types/clone-drivers/types.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/diff-drivers/git-diff.d.ts +1 -0
- package/dist/types/diff-drivers/git-diff.d.ts.map +1 -0
- package/dist/types/diff-drivers/git-diff.spec.d.ts +2 -0
- package/dist/types/diff-drivers/git-diff.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/diff-drivers/index.d.ts +2 -1
- package/dist/types/diff-drivers/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/diff-drivers/types.d.ts +1 -0
- package/dist/types/diff-drivers/types.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/formatting/index.d.ts +2 -1
- package/dist/types/formatting/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/formatting/infer-json-indent.d.ts +1 -0
- package/dist/types/formatting/infer-json-indent.d.ts.map +1 -0
- package/dist/types/formatting/infer-json-indent.spec.d.ts +2 -0
- package/dist/types/formatting/infer-json-indent.spec.d.ts.map +1 -0
- package/dist/types/formatting/sync-results-to-md.d.ts +3 -0
- package/dist/types/formatting/sync-results-to-md.d.ts.map +1 -0
- package/dist/types/formatting/sync-results-to-md.spec.d.ts +2 -0
- package/dist/types/formatting/sync-results-to-md.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/load-plugin.d.ts +2 -1
- package/dist/types/load-plugin.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/match.d.ts +1 -0
- package/dist/types/match.d.ts.map +1 -0
- package/dist/types/match.spec.d.ts +2 -0
- package/dist/types/match.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/merge-file.d.ts +3 -2
- package/dist/types/merge-file.d.ts.map +1 -0
- package/dist/types/merge-file.spec.d.ts +2 -0
- package/dist/types/merge-file.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/plugins/index.d.ts +2 -1
- package/dist/types/plugins/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/plugins/json-merge.d.ts +2 -1
- package/dist/types/plugins/json-merge.d.ts.map +1 -0
- package/dist/types/plugins/json-merge.spec.d.ts +2 -0
- package/dist/types/plugins/json-merge.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/ref-drivers/git-current-ref.d.ts +1 -0
- package/dist/types/ref-drivers/git-current-ref.d.ts.map +1 -0
- package/dist/types/ref-drivers/git-current-ref.spec.d.ts +2 -0
- package/dist/types/ref-drivers/git-current-ref.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/ref-drivers/index.d.ts +1 -0
- package/dist/types/ref-drivers/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/ref-drivers/types.d.ts +1 -0
- package/dist/types/ref-drivers/types.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/template-sync.d.ts +6 -5
- package/dist/types/template-sync.d.ts.map +1 -0
- package/dist/types/template-sync.spec.d.ts +2 -0
- package/dist/types/template-sync.spec.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/test-utils/index.d.ts +1 -0
- package/dist/types/test-utils/index.d.ts.map +1 -0
- package/{lib/cjs → dist/types}/types.d.ts +1 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +26 -23
- package/.eslintrc.js +0 -10
- package/.github/CODEOWNERS +0 -6
- package/.github/workflows/pr-checks.yaml +0 -12
- package/.github/workflows/release.yaml +0 -47
- package/.github/workflows/test-flow.yaml +0 -63
- package/.husky/commit-msg +0 -4
- package/.prettierignore +0 -1
- package/.prettierrc +0 -1
- package/action.yml +0 -13
- package/commitlint.config.js +0 -3
- package/docs/merge-plugins/CURRENT_PLUGINS.md +0 -168
- package/docs/merge-plugins/PLUGIN_DEVELOPMENT.md +0 -122
- package/docs/merge-plugins/README.md +0 -75
- package/jest.config.js +0 -19
- package/lib/cjs/checkout-drivers/git-checkout.js +0 -29
- package/lib/cjs/checkout-drivers/index.js +0 -18
- package/lib/cjs/checkout-drivers/types.js +0 -2
- package/lib/cjs/clone-drivers/git-clone.js +0 -17
- package/lib/cjs/clone-drivers/index.js +0 -18
- package/lib/cjs/clone-drivers/types.js +0 -2
- package/lib/cjs/diff-drivers/git-diff.js +0 -41
- package/lib/cjs/diff-drivers/index.js +0 -18
- package/lib/cjs/diff-drivers/types.js +0 -2
- package/lib/cjs/formatting/index.js +0 -18
- package/lib/cjs/formatting/infer-json-indent.js +0 -18
- package/lib/cjs/formatting/sync-results-to-md.d.ts +0 -2
- package/lib/cjs/formatting/sync-results-to-md.js +0 -57
- package/lib/cjs/index.js +0 -19
- package/lib/cjs/load-plugin.js +0 -69
- package/lib/cjs/match.js +0 -45
- package/lib/cjs/merge-file.js +0 -98
- package/lib/cjs/plugins/index.js +0 -11
- package/lib/cjs/plugins/json-merge.js +0 -208
- package/lib/cjs/ref-drivers/git-current-ref.js +0 -12
- package/lib/cjs/ref-drivers/index.js +0 -17
- package/lib/cjs/ref-drivers/types.js +0 -2
- package/lib/cjs/template-sync.js +0 -163
- package/lib/cjs/test-utils/index.js +0 -10
- package/lib/cjs/types.js +0 -2
- package/lib/esm/checkout-drivers/git-checkout.js +0 -29
- package/lib/esm/checkout-drivers/index.js +0 -18
- package/lib/esm/checkout-drivers/types.js +0 -2
- package/lib/esm/clone-drivers/git-clone.js +0 -17
- package/lib/esm/clone-drivers/index.js +0 -18
- package/lib/esm/clone-drivers/types.js +0 -2
- package/lib/esm/diff-drivers/git-diff.js +0 -41
- package/lib/esm/diff-drivers/index.js +0 -18
- package/lib/esm/diff-drivers/types.js +0 -2
- package/lib/esm/formatting/index.js +0 -18
- package/lib/esm/formatting/infer-json-indent.js +0 -18
- package/lib/esm/formatting/sync-results-to-md.js +0 -57
- package/lib/esm/index.js +0 -19
- package/lib/esm/load-plugin.js +0 -46
- package/lib/esm/match.js +0 -45
- package/lib/esm/merge-file.js +0 -98
- package/lib/esm/plugins/index.js +0 -11
- package/lib/esm/plugins/json-merge.js +0 -208
- package/lib/esm/ref-drivers/git-current-ref.js +0 -12
- package/lib/esm/ref-drivers/index.js +0 -17
- package/lib/esm/ref-drivers/types.js +0 -2
- package/lib/esm/template-sync.js +0 -163
- package/lib/esm/test-utils/index.js +0 -10
- package/lib/esm/types.js +0 -2
- package/release.config.js +0 -40
- package/src/checkout-drivers/git-checkout.spec.ts +0 -69
- package/src/checkout-drivers/git-checkout.ts +0 -38
- package/src/checkout-drivers/index.ts +0 -2
- package/src/checkout-drivers/types.ts +0 -14
- package/src/clone-drivers/git-clone.ts +0 -20
- package/src/clone-drivers/index.ts +0 -2
- package/src/clone-drivers/types.ts +0 -20
- package/src/diff-drivers/git-diff.spec.ts +0 -73
- package/src/diff-drivers/git-diff.ts +0 -39
- package/src/diff-drivers/index.ts +0 -2
- package/src/diff-drivers/types.ts +0 -14
- package/src/formatting/__snapshots__/sync-results-to-md.spec.ts.snap +0 -39
- package/src/formatting/index.ts +0 -2
- package/src/formatting/infer-json-indent.spec.ts +0 -49
- package/src/formatting/infer-json-indent.ts +0 -16
- package/src/formatting/sync-results-to-md.spec.ts +0 -31
- package/src/formatting/sync-results-to-md.ts +0 -63
- package/src/index.ts +0 -3
- package/src/load-plugin.ts +0 -51
- package/src/match.spec.ts +0 -68
- package/src/match.ts +0 -52
- package/src/merge-file.spec.ts +0 -506
- package/src/merge-file.ts +0 -154
- package/src/plugins/index.ts +0 -12
- package/src/plugins/json-merge.spec.ts +0 -436
- package/src/plugins/json-merge.ts +0 -215
- package/src/ref-drivers/git-current-ref.spec.ts +0 -12
- package/src/ref-drivers/git-current-ref.ts +0 -9
- package/src/ref-drivers/index.ts +0 -1
- package/src/ref-drivers/types.ts +0 -10
- package/src/template-sync.spec.ts +0 -509
- package/src/template-sync.ts +0 -256
- package/src/test-utils/index.ts +0 -13
- package/src/types.ts +0 -129
- package/templatesync.local.json +0 -15
- package/test-fixtures/downstream/README.md +0 -3
- package/test-fixtures/downstream/package.json +0 -18
- package/test-fixtures/downstream/plugins/custom-plugin.js +0 -11
- package/test-fixtures/downstream/src/index.js +0 -2
- package/test-fixtures/downstream/src/index.ts +0 -1
- package/test-fixtures/downstream/src/templated.js +0 -2
- package/test-fixtures/downstream/src/templated.ts +0 -1
- package/test-fixtures/downstream/templatesync.json +0 -16
- package/test-fixtures/downstream/templatesync.local.json +0 -10
- package/test-fixtures/dummy-plugin.js +0 -8
- package/test-fixtures/glob-test/folder1/something.js +0 -1
- package/test-fixtures/glob-test/folder1/something.ts +0 -0
- package/test-fixtures/glob-test/toplevel.js +0 -0
- package/test-fixtures/glob-test/toplevel.txt +0 -0
- package/test-fixtures/template/custom-bin/something.txt +0 -1
- package/test-fixtures/template/package.json +0 -17
- package/test-fixtures/template/src/index.js +0 -2
- package/test-fixtures/template/src/index.ts +0 -1
- package/test-fixtures/template/src/templated.js +0 -2
- package/test-fixtures/template/src/templated.ts +0 -1
- package/test-fixtures/template/templatesync.json +0 -16
- package/test-fixtures/testGitRepo/README.md +0 -17
- package/test-fixtures/testGitRepo/gitDir/COMMIT_EDITMSG +0 -14
- package/test-fixtures/testGitRepo/gitDir/HEAD +0 -1
- package/test-fixtures/testGitRepo/gitDir/config +0 -7
- package/test-fixtures/testGitRepo/gitDir/description +0 -1
- package/test-fixtures/testGitRepo/gitDir/hooks/applypatch-msg.sample +0 -15
- package/test-fixtures/testGitRepo/gitDir/hooks/commit-msg.sample +0 -24
- package/test-fixtures/testGitRepo/gitDir/hooks/fsmonitor-watchman.sample +0 -174
- package/test-fixtures/testGitRepo/gitDir/hooks/post-update.sample +0 -8
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-applypatch.sample +0 -14
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-commit.sample +0 -49
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-merge-commit.sample +0 -13
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-push.sample +0 -53
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-rebase.sample +0 -169
- package/test-fixtures/testGitRepo/gitDir/hooks/pre-receive.sample +0 -24
- package/test-fixtures/testGitRepo/gitDir/hooks/prepare-commit-msg.sample +0 -42
- package/test-fixtures/testGitRepo/gitDir/hooks/push-to-checkout.sample +0 -78
- package/test-fixtures/testGitRepo/gitDir/hooks/sendemail-validate.sample +0 -77
- package/test-fixtures/testGitRepo/gitDir/hooks/update.sample +0 -128
- package/test-fixtures/testGitRepo/gitDir/index +0 -0
- package/test-fixtures/testGitRepo/gitDir/info/exclude +0 -6
- package/test-fixtures/testGitRepo/gitDir/logs/HEAD +0 -5
- package/test-fixtures/testGitRepo/gitDir/logs/refs/heads/master +0 -2
- package/test-fixtures/testGitRepo/gitDir/logs/refs/heads/test-branch +0 -2
- package/test-fixtures/testGitRepo/gitDir/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/6e/187bee8d02f39d0a1be8331dd8fe6a00c9b613 +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/73/185f1f3f5a6345e087d9f46dc4af77cc59449f +0 -2
- package/test-fixtures/testGitRepo/gitDir/objects/90/e7ea1089f939840e9649fd617584c1ad117159 +0 -3
- package/test-fixtures/testGitRepo/gitDir/objects/ba/99a452b9097047e9bfa8d5a08b3e452fcb364a +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/c5/8d400177cd5180b8566f82a127fafc5bf394b7 +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/e2/e668265db019249a7e8296d85f79000e3d71cf +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/e4/243e430c1ab69f3e344249f5b1859e90abc883 +0 -1
- package/test-fixtures/testGitRepo/gitDir/objects/ec/6c1cb72312605282ac61858cf1eaf1ea9f1d02 +0 -0
- package/test-fixtures/testGitRepo/gitDir/objects/fc/89cecc4ac0b5b075bd7d0ce9e09b2f50598b82 +0 -0
- package/test-fixtures/testGitRepo/gitDir/refs/heads/master +0 -1
- package/test-fixtures/testGitRepo/gitDir/refs/heads/test-branch +0 -1
- package/tsconfig.cjs.json +0 -12
- package/tsconfig.esm.json +0 -10
- package/tsconfig.json +0 -22
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
export async function gitCheckout(options) {
|
|
3
|
+
const { branch, remoteName, tmpDir } = options;
|
|
4
|
+
const remoteInfo = execSync(`git remote show ${remoteName}`, {
|
|
5
|
+
cwd: tmpDir,
|
|
6
|
+
env: process.env
|
|
7
|
+
}).toString();
|
|
8
|
+
const defaultMatch = /HEAD branch:\s*([a-zA-Z0-9_-]+)/.exec(remoteInfo);
|
|
9
|
+
if (!defaultMatch || !defaultMatch[1]) {
|
|
10
|
+
throw new Error(`Could not determine default branch of cloned repo.\nAttempted to find in remote info:\n${remoteInfo} `);
|
|
11
|
+
}
|
|
12
|
+
const defaultBranch = defaultMatch[1];
|
|
13
|
+
// Skip this if the default branch is already pulled
|
|
14
|
+
if (defaultBranch !== branch) {
|
|
15
|
+
execSync(`git fetch ${remoteName} ${branch}`, {
|
|
16
|
+
cwd: tmpDir,
|
|
17
|
+
env: process.env
|
|
18
|
+
});
|
|
19
|
+
execSync(`git checkout -b ${branch} --track ${remoteName}/${branch}`, {
|
|
20
|
+
cwd: tmpDir,
|
|
21
|
+
env: process.env
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2dpdC1jaGVja291dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRDaGVja291dChvcHRpb25zOiB7XG5cdC8qKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHdlIGNsb25lZCB0byAqL1xuXHR0bXBEaXI6IHN0cmluZztcblx0LyoqIFRoZSBuYW1lIG9mIHRoZSByZW1vdGUgdGhhdCBnaXQgY2hlY2tzIG91dCBhZ2FpbnN0ICovXG5cdHJlbW90ZU5hbWU6IHN0cmluZztcblx0LyoqIFRoZSBicmFuY2ggdG8gY2hlY2tvdXQgYWdhaW5zdCAqL1xuXHRicmFuY2g6IHN0cmluZztcbn0pOiBQcm9taXNlPGJvb2xlYW4+IHtcblx0Y29uc3QgeyBicmFuY2gsIHJlbW90ZU5hbWUsIHRtcERpciB9ID0gb3B0aW9ucztcblxuXHRjb25zdCByZW1vdGVJbmZvID0gZXhlY1N5bmMoYGdpdCByZW1vdGUgc2hvdyAke3JlbW90ZU5hbWV9YCwge1xuXHRcdGN3ZDogdG1wRGlyLFxuXHRcdGVudjogcHJvY2Vzcy5lbnYsXG5cdH0pLnRvU3RyaW5nKCk7XG5cdGNvbnN0IGRlZmF1bHRNYXRjaCA9IC9IRUFEIGJyYW5jaDpcXHMqKFthLXpBLVowLTlfLV0rKS8uZXhlYyhyZW1vdGVJbmZvKTtcblx0aWYgKCFkZWZhdWx0TWF0Y2ggfHwgIWRlZmF1bHRNYXRjaFsxXSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcblx0XHRcdGBDb3VsZCBub3QgZGV0ZXJtaW5lIGRlZmF1bHQgYnJhbmNoIG9mIGNsb25lZCByZXBvLlxcbkF0dGVtcHRlZCB0byBmaW5kIGluIHJlbW90ZSBpbmZvOlxcbiR7cmVtb3RlSW5mb30gYCxcblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgZGVmYXVsdEJyYW5jaCA9IGRlZmF1bHRNYXRjaFsxXTtcblx0Ly8gU2tpcCB0aGlzIGlmIHRoZSBkZWZhdWx0IGJyYW5jaCBpcyBhbHJlYWR5IHB1bGxlZFxuXHRpZiAoZGVmYXVsdEJyYW5jaCAhPT0gYnJhbmNoKSB7XG5cdFx0ZXhlY1N5bmMoYGdpdCBmZXRjaCAke3JlbW90ZU5hbWV9ICR7YnJhbmNofWAsIHtcblx0XHRcdGN3ZDogdG1wRGlyLFxuXHRcdFx0ZW52OiBwcm9jZXNzLmVudixcblx0XHR9KTtcblx0XHRleGVjU3luYyhgZ2l0IGNoZWNrb3V0IC1iICR7YnJhbmNofSAtLXRyYWNrICR7cmVtb3RlTmFtZX0vJHticmFuY2h9YCwge1xuXHRcdFx0Y3dkOiB0bXBEaXIsXG5cdFx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHRcdH0pO1xuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59XG4iXSwibmFtZXMiOlsiZXhlY1N5bmMiLCJnaXRDaGVja291dCIsIm9wdGlvbnMiLCJicmFuY2giLCJyZW1vdGVOYW1lIiwidG1wRGlyIiwicmVtb3RlSW5mbyIsImN3ZCIsImVudiIsInByb2Nlc3MiLCJ0b1N0cmluZyIsImRlZmF1bHRNYXRjaCIsImV4ZWMiLCJFcnJvciIsImRlZmF1bHRCcmFuY2giXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVEsUUFBUSxnQkFBZ0I7QUFFekMsT0FBTyxlQUFlQyxZQUFZQyxPQU9qQztJQUNBLE1BQU0sRUFBRUMsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBRSxHQUFHSDtJQUV2QyxNQUFNSSxhQUFhTixTQUFTLENBQUMsZ0JBQWdCLEVBQUVJLFlBQVksRUFBRTtRQUM1REcsS0FBS0Y7UUFDTEcsS0FBS0MsUUFBUUQsR0FBRztJQUNqQixHQUFHRSxRQUFRO0lBQ1gsTUFBTUMsZUFBZSxrQ0FBa0NDLElBQUksQ0FBQ047SUFDNUQsSUFBSSxDQUFDSyxnQkFBZ0IsQ0FBQ0EsWUFBWSxDQUFDLEVBQUUsRUFBRTtRQUN0QyxNQUFNLElBQUlFLE1BQ1QsQ0FBQyx1RkFBdUYsRUFBRVAsV0FBVyxDQUFDLENBQUM7SUFFekc7SUFFQSxNQUFNUSxnQkFBZ0JILFlBQVksQ0FBQyxFQUFFO0lBQ3JDLG9EQUFvRDtJQUNwRCxJQUFJRyxrQkFBa0JYLFFBQVE7UUFDN0JILFNBQVMsQ0FBQyxVQUFVLEVBQUVJLFdBQVcsQ0FBQyxFQUFFRCxRQUFRLEVBQUU7WUFDN0NJLEtBQUtGO1lBQ0xHLEtBQUtDLFFBQVFELEdBQUc7UUFDakI7UUFDQVIsU0FBUyxDQUFDLGdCQUFnQixFQUFFRyxPQUFPLFNBQVMsRUFBRUMsV0FBVyxDQUFDLEVBQUVELFFBQVEsRUFBRTtZQUNyRUksS0FBS0Y7WUFDTEcsS0FBS0MsUUFBUUQsR0FBRztRQUNqQjtJQUNEO0lBRUEsT0FBTztBQUNSIn0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { readFileSync } from "fs";
|
|
3
|
+
import { copy, mkdtemp, moveSync } from "fs-extra";
|
|
4
|
+
import { join, resolve } from "path";
|
|
5
|
+
import { TEST_FIXTURES_DIR, tempDir } from "../test-utils/index.mjs";
|
|
6
|
+
import { gitCheckout } from "./git-checkout.mjs";
|
|
7
|
+
const gitRemoteDir = resolve(TEST_FIXTURES_DIR, "testGitRepo");
|
|
8
|
+
describe("gitCheckout", ()=>{
|
|
9
|
+
let tmpRemoteDir;
|
|
10
|
+
let tmpRepoDir;
|
|
11
|
+
beforeEach(async ()=>{
|
|
12
|
+
const baseTmpDir = await mkdtemp(tempDir());
|
|
13
|
+
// Make the remote dir
|
|
14
|
+
tmpRemoteDir = join(baseTmpDir, "remote");
|
|
15
|
+
await copy(gitRemoteDir, tmpRemoteDir);
|
|
16
|
+
// rehydrate the git repo
|
|
17
|
+
moveSync(join(tmpRemoteDir, "gitDir"), join(tmpRemoteDir, ".git"));
|
|
18
|
+
// Perform the clone we expect
|
|
19
|
+
execSync(`git clone ${tmpRemoteDir} testGitRepo`, {
|
|
20
|
+
cwd: baseTmpDir
|
|
21
|
+
});
|
|
22
|
+
tmpRepoDir = join(baseTmpDir, "testGitRepo");
|
|
23
|
+
});
|
|
24
|
+
it("checks out the appropriate branch", async ()=>{
|
|
25
|
+
await gitCheckout({
|
|
26
|
+
tmpDir: tmpRepoDir,
|
|
27
|
+
remoteName: "origin",
|
|
28
|
+
branch: "test-branch"
|
|
29
|
+
});
|
|
30
|
+
expect(readFileSync(join(tmpRepoDir, "README.md")).toString()).toContain("# This is the test-branch");
|
|
31
|
+
});
|
|
32
|
+
it("throws an error if the branch is not found", async ()=>{
|
|
33
|
+
await expect(async ()=>await gitCheckout({
|
|
34
|
+
tmpDir: tmpRepoDir,
|
|
35
|
+
remoteName: "origin",
|
|
36
|
+
branch: "test-branch-not-there"
|
|
37
|
+
})).rejects.toThrow();
|
|
38
|
+
});
|
|
39
|
+
it("throws an error if the origin is not found", async ()=>{
|
|
40
|
+
await expect(async ()=>await gitCheckout({
|
|
41
|
+
tmpDir: tmpRepoDir,
|
|
42
|
+
remoteName: "originNA",
|
|
43
|
+
branch: "test-branch"
|
|
44
|
+
})).rejects.toThrow();
|
|
45
|
+
});
|
|
46
|
+
it("does not throw if the branch was the default", async ()=>{
|
|
47
|
+
await gitCheckout({
|
|
48
|
+
tmpDir: tmpRepoDir,
|
|
49
|
+
remoteName: "origin",
|
|
50
|
+
branch: "master"
|
|
51
|
+
});
|
|
52
|
+
expect(readFileSync(join(tmpRepoDir, "README.md")).toString()).toContain("# This is the master branch");
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2dpdC1jaGVja291dC5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcbmltcG9ydCB7IHJlYWRGaWxlU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgY29weSwgbWtkdGVtcCwgbW92ZVN5bmMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7IGpvaW4sIHJlc29sdmUgfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgVEVTVF9GSVhUVVJFU19ESVIsIHRlbXBEaXIgfSBmcm9tIFwiLi4vdGVzdC11dGlsc1wiO1xuaW1wb3J0IHsgZ2l0Q2hlY2tvdXQgfSBmcm9tIFwiLi9naXQtY2hlY2tvdXRcIjtcblxuY29uc3QgZ2l0UmVtb3RlRGlyID0gcmVzb2x2ZShURVNUX0ZJWFRVUkVTX0RJUiwgXCJ0ZXN0R2l0UmVwb1wiKTtcblxuZGVzY3JpYmUoXCJnaXRDaGVja291dFwiLCAoKSA9PiB7XG5cdGxldCB0bXBSZW1vdGVEaXI6IHN0cmluZztcblx0bGV0IHRtcFJlcG9EaXI6IHN0cmluZztcblx0YmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG5cdFx0Y29uc3QgYmFzZVRtcERpciA9IGF3YWl0IG1rZHRlbXAodGVtcERpcigpKTtcblx0XHQvLyBNYWtlIHRoZSByZW1vdGUgZGlyXG5cdFx0dG1wUmVtb3RlRGlyID0gam9pbihiYXNlVG1wRGlyLCBcInJlbW90ZVwiKTtcblx0XHRhd2FpdCBjb3B5KGdpdFJlbW90ZURpciwgdG1wUmVtb3RlRGlyKTtcblx0XHQvLyByZWh5ZHJhdGUgdGhlIGdpdCByZXBvXG5cdFx0bW92ZVN5bmMoam9pbih0bXBSZW1vdGVEaXIsIFwiZ2l0RGlyXCIpLCBqb2luKHRtcFJlbW90ZURpciwgXCIuZ2l0XCIpKTtcblxuXHRcdC8vIFBlcmZvcm0gdGhlIGNsb25lIHdlIGV4cGVjdFxuXHRcdGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHt0bXBSZW1vdGVEaXJ9IHRlc3RHaXRSZXBvYCwge1xuXHRcdFx0Y3dkOiBiYXNlVG1wRGlyLFxuXHRcdH0pO1xuXHRcdHRtcFJlcG9EaXIgPSBqb2luKGJhc2VUbXBEaXIsIFwidGVzdEdpdFJlcG9cIik7XG5cdH0pO1xuXHRpdChcImNoZWNrcyBvdXQgdGhlIGFwcHJvcHJpYXRlIGJyYW5jaFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgZ2l0Q2hlY2tvdXQoe1xuXHRcdFx0dG1wRGlyOiB0bXBSZXBvRGlyLFxuXHRcdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5cIixcblx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaFwiLCAvLyBXZSBzZXQgdGhpcyBpbiB0aGUgZ2l0RGlyXG5cdFx0fSk7XG5cblx0XHRleHBlY3QocmVhZEZpbGVTeW5jKGpvaW4odG1wUmVwb0RpciwgXCJSRUFETUUubWRcIikpLnRvU3RyaW5nKCkpLnRvQ29udGFpbihcblx0XHRcdFwiIyBUaGlzIGlzIHRoZSB0ZXN0LWJyYW5jaFwiLFxuXHRcdCk7XG5cdH0pO1xuXHRpdChcInRocm93cyBhbiBlcnJvciBpZiB0aGUgYnJhbmNoIGlzIG5vdCBmb3VuZFwiLCBhc3luYyAoKSA9PiB7XG5cdFx0YXdhaXQgZXhwZWN0KFxuXHRcdFx0YXN5bmMgKCkgPT5cblx0XHRcdFx0YXdhaXQgZ2l0Q2hlY2tvdXQoe1xuXHRcdFx0XHRcdHRtcERpcjogdG1wUmVwb0Rpcixcblx0XHRcdFx0XHRyZW1vdGVOYW1lOiBcIm9yaWdpblwiLFxuXHRcdFx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaC1ub3QtdGhlcmVcIiwgLy8gVGhpcyBpcyBub3Qgc2V0IGluIGdpdERpclxuXHRcdFx0XHR9KSxcblx0XHQpLnJlamVjdHMudG9UaHJvdygpO1xuXHR9KTtcblx0aXQoXCJ0aHJvd3MgYW4gZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBub3QgZm91bmRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGF3YWl0IGV4cGVjdChcblx0XHRcdGFzeW5jICgpID0+XG5cdFx0XHRcdGF3YWl0IGdpdENoZWNrb3V0KHtcblx0XHRcdFx0XHR0bXBEaXI6IHRtcFJlcG9EaXIsXG5cdFx0XHRcdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5OQVwiLFxuXHRcdFx0XHRcdGJyYW5jaDogXCJ0ZXN0LWJyYW5jaFwiLCAvLyBUaGlzIGlzIG5vdCBzZXQgaW4gZ2l0RGlyXG5cdFx0XHRcdH0pLFxuXHRcdCkucmVqZWN0cy50b1Rocm93KCk7XG5cdH0pO1xuXHRpdChcImRvZXMgbm90IHRocm93IGlmIHRoZSBicmFuY2ggd2FzIHRoZSBkZWZhdWx0XCIsIGFzeW5jICgpID0+IHtcblx0XHRhd2FpdCBnaXRDaGVja291dCh7XG5cdFx0XHR0bXBEaXI6IHRtcFJlcG9EaXIsXG5cdFx0XHRyZW1vdGVOYW1lOiBcIm9yaWdpblwiLFxuXHRcdFx0YnJhbmNoOiBcIm1hc3RlclwiLCAvLyBXZSBzZXQgdGhpcyBpbiB0aGUgZ2l0RGlyXG5cdFx0fSk7XG5cblx0XHRleHBlY3QocmVhZEZpbGVTeW5jKGpvaW4odG1wUmVwb0RpciwgXCJSRUFETUUubWRcIikpLnRvU3RyaW5nKCkpLnRvQ29udGFpbihcblx0XHRcdFwiIyBUaGlzIGlzIHRoZSBtYXN0ZXIgYnJhbmNoXCIsXG5cdFx0KTtcblx0fSk7XG59KTtcbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlYWRGaWxlU3luYyIsImNvcHkiLCJta2R0ZW1wIiwibW92ZVN5bmMiLCJqb2luIiwicmVzb2x2ZSIsIlRFU1RfRklYVFVSRVNfRElSIiwidGVtcERpciIsImdpdENoZWNrb3V0IiwiZ2l0UmVtb3RlRGlyIiwiZGVzY3JpYmUiLCJ0bXBSZW1vdGVEaXIiLCJ0bXBSZXBvRGlyIiwiYmVmb3JlRWFjaCIsImJhc2VUbXBEaXIiLCJjd2QiLCJpdCIsInRtcERpciIsInJlbW90ZU5hbWUiLCJicmFuY2giLCJleHBlY3QiLCJ0b1N0cmluZyIsInRvQ29udGFpbiIsInJlamVjdHMiLCJ0b1Rocm93Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBQ3pDLFNBQVNDLFlBQVksUUFBUSxLQUFLO0FBQ2xDLFNBQVNDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxRQUFRLFFBQVEsV0FBVztBQUNuRCxTQUFTQyxJQUFJLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQ3JDLFNBQVNDLGlCQUFpQixFQUFFQyxPQUFPLFFBQVEsMEJBQWdCO0FBQzNELFNBQVNDLFdBQVcsUUFBUSxxQkFBaUI7QUFFN0MsTUFBTUMsZUFBZUosUUFBUUMsbUJBQW1CO0FBRWhESSxTQUFTLGVBQWU7SUFDdkIsSUFBSUM7SUFDSixJQUFJQztJQUNKQyxXQUFXO1FBQ1YsTUFBTUMsYUFBYSxNQUFNWixRQUFRSztRQUNqQyxzQkFBc0I7UUFDdEJJLGVBQWVQLEtBQUtVLFlBQVk7UUFDaEMsTUFBTWIsS0FBS1EsY0FBY0U7UUFDekIseUJBQXlCO1FBQ3pCUixTQUFTQyxLQUFLTyxjQUFjLFdBQVdQLEtBQUtPLGNBQWM7UUFFMUQsOEJBQThCO1FBQzlCWixTQUFTLENBQUMsVUFBVSxFQUFFWSxhQUFhLFlBQVksQ0FBQyxFQUFFO1lBQ2pESSxLQUFLRDtRQUNOO1FBQ0FGLGFBQWFSLEtBQUtVLFlBQVk7SUFDL0I7SUFDQUUsR0FBRyxxQ0FBcUM7UUFDdkMsTUFBTVIsWUFBWTtZQUNqQlMsUUFBUUw7WUFDUk0sWUFBWTtZQUNaQyxRQUFRO1FBQ1Q7UUFFQUMsT0FBT3BCLGFBQWFJLEtBQUtRLFlBQVksY0FBY1MsUUFBUSxJQUFJQyxTQUFTLENBQ3ZFO0lBRUY7SUFDQU4sR0FBRyw4Q0FBOEM7UUFDaEQsTUFBTUksT0FDTCxVQUNDLE1BQU1aLFlBQVk7Z0JBQ2pCUyxRQUFRTDtnQkFDUk0sWUFBWTtnQkFDWkMsUUFBUTtZQUNULElBQ0FJLE9BQU8sQ0FBQ0MsT0FBTztJQUNsQjtJQUNBUixHQUFHLDhDQUE4QztRQUNoRCxNQUFNSSxPQUNMLFVBQ0MsTUFBTVosWUFBWTtnQkFDakJTLFFBQVFMO2dCQUNSTSxZQUFZO2dCQUNaQyxRQUFRO1lBQ1QsSUFDQUksT0FBTyxDQUFDQyxPQUFPO0lBQ2xCO0lBQ0FSLEdBQUcsZ0RBQWdEO1FBQ2xELE1BQU1SLFlBQVk7WUFDakJTLFFBQVFMO1lBQ1JNLFlBQVk7WUFDWkMsUUFBUTtRQUNUO1FBRUFDLE9BQU9wQixhQUFhSSxLQUFLUSxZQUFZLGNBQWNTLFFBQVEsSUFBSUMsU0FBUyxDQUN2RTtJQUVGO0FBQ0QifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./git-checkout.mjs";
|
|
2
|
+
export * from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dpdC1jaGVja291dFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFpQjtBQUMvQixjQUFjLGNBQVUifQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A function that will checkout a given "branch" after the repo has been
|
|
3
|
+
* "cloned" by a clone drvier.
|
|
4
|
+
*
|
|
5
|
+
* @returns true if the checkout succeeded
|
|
6
|
+
*/ export { };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jaGVja291dC1kcml2ZXJzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IHdpbGwgY2hlY2tvdXQgYSBnaXZlbiBcImJyYW5jaFwiIGFmdGVyIHRoZSByZXBvIGhhcyBiZWVuXG4gKiBcImNsb25lZFwiIGJ5IGEgY2xvbmUgZHJ2aWVyLlxuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGNoZWNrb3V0IHN1Y2NlZWRlZFxuICovXG5leHBvcnQgdHlwZSBUZW1wbGF0ZUNoZWNrb3V0RHJpdmVyRm4gPSAob3B0aW9uczoge1xuXHQvKiogVGhlIGRpcmVjdG9yeSB3aGVyZSB3ZSBjbG9uZWQgdG8gKi9cblx0dG1wRGlyOiBzdHJpbmc7XG5cdC8qKiBUaGUgbmFtZSBvZiB0aGUgcmVtb3RlIHRoYXQgZ2l0IGNoZWNrcyBvdXQgYWdhaW5zdCAqL1xuXHRyZW1vdGVOYW1lOiBzdHJpbmc7XG5cdC8qKiBUaGUgYnJhbmNoIHRvIGNoZWNrb3V0IGFnYWluc3QgKi9cblx0YnJhbmNoOiBzdHJpbmc7XG59KSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztDQUtDLEdBQ0QsV0FPdUIifQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
const CLONE_DIR = "cloned_repo";
|
|
4
|
+
export async function gitClone(tmpDir, repoUrl) {
|
|
5
|
+
execSync(`git clone ${repoUrl} ${CLONE_DIR}`, {
|
|
6
|
+
cwd: tmpDir,
|
|
7
|
+
env: process.env
|
|
8
|
+
});
|
|
9
|
+
return {
|
|
10
|
+
dir: resolve(tmpDir, CLONE_DIR),
|
|
11
|
+
remoteName: "origin"
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL2dpdC1jbG9uZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQ2xvbmVSZXR1cm4gfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCBDTE9ORV9ESVIgPSBcImNsb25lZF9yZXBvXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnaXRDbG9uZShcblx0dG1wRGlyOiBzdHJpbmcsXG5cdHJlcG9Vcmw6IHN0cmluZyxcbik6IFByb21pc2U8Q2xvbmVSZXR1cm4+IHtcblx0ZXhlY1N5bmMoYGdpdCBjbG9uZSAke3JlcG9Vcmx9ICR7Q0xPTkVfRElSfWAsIHtcblx0XHRjd2Q6IHRtcERpcixcblx0XHRlbnY6IHByb2Nlc3MuZW52LFxuXHR9KTtcblxuXHRyZXR1cm4ge1xuXHRcdGRpcjogcmVzb2x2ZSh0bXBEaXIsIENMT05FX0RJUiksXG5cdFx0cmVtb3RlTmFtZTogXCJvcmlnaW5cIixcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsInJlc29sdmUiLCJDTE9ORV9ESVIiLCJnaXRDbG9uZSIsInRtcERpciIsInJlcG9VcmwiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZGlyIiwicmVtb3RlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFRLGdCQUFnQjtBQUN6QyxTQUFTQyxPQUFPLFFBQVEsT0FBTztBQUcvQixNQUFNQyxZQUFZO0FBRWxCLE9BQU8sZUFBZUMsU0FDckJDLE1BQWMsRUFDZEMsT0FBZTtJQUVmTCxTQUFTLENBQUMsVUFBVSxFQUFFSyxRQUFRLENBQUMsRUFBRUgsV0FBVyxFQUFFO1FBQzdDSSxLQUFLRjtRQUNMRyxLQUFLQyxRQUFRRCxHQUFHO0lBQ2pCO0lBRUEsT0FBTztRQUNORSxLQUFLUixRQUFRRyxRQUFRRjtRQUNyQlEsWUFBWTtJQUNiO0FBQ0QifQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./git-clone.mjs";
|
|
2
|
+
export * from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2dpdC1jbG9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFjO0FBQzVCLGNBQWMsY0FBVSJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @deprecated - return the remote name in the CloneReturn
|
|
3
|
+
*/ /**
|
|
4
|
+
* A function that clones the template repo into the provided tmpDir
|
|
5
|
+
* and then returns the relative path within that directory to the template root
|
|
6
|
+
*/ export { };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbG9uZS1kcml2ZXJzL3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGRlcHJlY2F0ZWQgLSByZXR1cm4gdGhlIHJlbW90ZSBuYW1lIGluIHRoZSBDbG9uZVJldHVyblxuICovXG50eXBlIENsb25lRGlyID0gc3RyaW5nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb25lUmV0dXJuIHtcblx0LyoqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGNsb25lIG9jY3VycmVkIC0gYWJzb2x1dGUgcGF0aCB0byBhdm9pZCB3b3JraW5nIGRpciBpc3N1ZXMgKi9cblx0ZGlyOiBzdHJpbmc7XG5cdC8qKiBUaGUgbmFtZSBvZiB0aGUgcmVtb3RlIGZvciB0aGUgcGFydGljdWxhciB0ZWNobm9sb2d5IHRoYXQgeW91IHVzZWQgLSBwYXNzZWQgdG8gY2hlY2tvdXQgZHJpdmVycyAqL1xuXHRyZW1vdGVOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0aGF0IGNsb25lcyB0aGUgdGVtcGxhdGUgcmVwbyBpbnRvIHRoZSBwcm92aWRlZCB0bXBEaXJcbiAqIGFuZCB0aGVuIHJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggd2l0aGluIHRoYXQgZGlyZWN0b3J5IHRvIHRoZSB0ZW1wbGF0ZSByb290XG4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlQ2xvbmVEcml2ZXJGbiA9IChcblx0dG1wRGlyOiBzdHJpbmcsXG5cdHJlcG9Vcmw6IHN0cmluZyxcbikgPT4gUHJvbWlzZTxDbG9uZVJldHVybiB8IENsb25lRGlyPjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxHQVVEOzs7Q0FHQyxHQUNELFdBR3FDIn0=
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
/**
|
|
3
|
+
* For a given directory with a git configuration, this will return the modified, added, and
|
|
4
|
+
* deleted files since the last afterRef
|
|
5
|
+
* @param gitDir The git directory folder
|
|
6
|
+
* @param afterRef The git ref to look for diffs after
|
|
7
|
+
* @returns
|
|
8
|
+
*/ export async function gitDiff(gitDir, afterRef) {
|
|
9
|
+
const baseCommand = `git diff ${afterRef}.. --no-renames --name-only`;
|
|
10
|
+
const modifiedFiles = execSync(`${baseCommand} --diff-filter=M`, {
|
|
11
|
+
cwd: gitDir
|
|
12
|
+
}).toString().trim().split("\n").filter((s)=>s !== "");
|
|
13
|
+
const addedFiles = execSync(`${baseCommand} --diff-filter=A`, {
|
|
14
|
+
cwd: gitDir
|
|
15
|
+
}).toString().trim().split("\n").filter((s)=>s !== "");
|
|
16
|
+
const deletedFiles = execSync(`${baseCommand} --diff-filter=D`, {
|
|
17
|
+
cwd: gitDir
|
|
18
|
+
}).toString().trim().split("\n").filter((s)=>s !== "");
|
|
19
|
+
return {
|
|
20
|
+
modified: modifiedFiles,
|
|
21
|
+
added: addedFiles,
|
|
22
|
+
deleted: deletedFiles
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvZ2l0LWRpZmYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuXG4vKipcbiAqIEZvciBhIGdpdmVuIGRpcmVjdG9yeSB3aXRoIGEgZ2l0IGNvbmZpZ3VyYXRpb24sIHRoaXMgd2lsbCByZXR1cm4gdGhlIG1vZGlmaWVkLCBhZGRlZCwgYW5kXG4gKiBkZWxldGVkIGZpbGVzIHNpbmNlIHRoZSBsYXN0IGFmdGVyUmVmXG4gKiBAcGFyYW0gZ2l0RGlyIFRoZSBnaXQgZGlyZWN0b3J5IGZvbGRlclxuICogQHBhcmFtIGFmdGVyUmVmIFRoZSBnaXQgcmVmIHRvIGxvb2sgZm9yIGRpZmZzIGFmdGVyXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2l0RGlmZihnaXREaXI6IHN0cmluZywgYWZ0ZXJSZWY6IHN0cmluZykge1xuXHRjb25zdCBiYXNlQ29tbWFuZCA9IGBnaXQgZGlmZiAke2FmdGVyUmVmfS4uIC0tbm8tcmVuYW1lcyAtLW5hbWUtb25seWA7XG5cdGNvbnN0IG1vZGlmaWVkRmlsZXMgPSBleGVjU3luYyhgJHtiYXNlQ29tbWFuZH0gLS1kaWZmLWZpbHRlcj1NYCwge1xuXHRcdGN3ZDogZ2l0RGlyLFxuXHR9KVxuXHRcdC50b1N0cmluZygpXG5cdFx0LnRyaW0oKVxuXHRcdC5zcGxpdChcIlxcblwiKVxuXHRcdC5maWx0ZXIoKHMpID0+IHMgIT09IFwiXCIpO1xuXHRjb25zdCBhZGRlZEZpbGVzID0gZXhlY1N5bmMoYCR7YmFzZUNvbW1hbmR9IC0tZGlmZi1maWx0ZXI9QWAsIHtcblx0XHRjd2Q6IGdpdERpcixcblx0fSlcblx0XHQudG9TdHJpbmcoKVxuXHRcdC50cmltKClcblx0XHQuc3BsaXQoXCJcXG5cIilcblx0XHQuZmlsdGVyKChzKSA9PiBzICE9PSBcIlwiKTtcblx0Y29uc3QgZGVsZXRlZEZpbGVzID0gZXhlY1N5bmMoYCR7YmFzZUNvbW1hbmR9IC0tZGlmZi1maWx0ZXI9RGAsIHtcblx0XHRjd2Q6IGdpdERpcixcblx0fSlcblx0XHQudG9TdHJpbmcoKVxuXHRcdC50cmltKClcblx0XHQuc3BsaXQoXCJcXG5cIilcblx0XHQuZmlsdGVyKChzKSA9PiBzICE9PSBcIlwiKTtcblxuXHRyZXR1cm4ge1xuXHRcdG1vZGlmaWVkOiBtb2RpZmllZEZpbGVzLFxuXHRcdGFkZGVkOiBhZGRlZEZpbGVzLFxuXHRcdGRlbGV0ZWQ6IGRlbGV0ZWRGaWxlcyxcblx0fTtcbn1cbiJdLCJuYW1lcyI6WyJleGVjU3luYyIsImdpdERpZmYiLCJnaXREaXIiLCJhZnRlclJlZiIsImJhc2VDb21tYW5kIiwibW9kaWZpZWRGaWxlcyIsImN3ZCIsInRvU3RyaW5nIiwidHJpbSIsInNwbGl0IiwiZmlsdGVyIiwicyIsImFkZGVkRmlsZXMiLCJkZWxldGVkRmlsZXMiLCJtb2RpZmllZCIsImFkZGVkIiwiZGVsZXRlZCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsUUFBUSxRQUFRLGdCQUFnQjtBQUV6Qzs7Ozs7O0NBTUMsR0FDRCxPQUFPLGVBQWVDLFFBQVFDLE1BQWMsRUFBRUMsUUFBZ0I7SUFDN0QsTUFBTUMsY0FBYyxDQUFDLFNBQVMsRUFBRUQsU0FBUywyQkFBMkIsQ0FBQztJQUNyRSxNQUFNRSxnQkFBZ0JMLFNBQVMsR0FBR0ksWUFBWSxnQkFBZ0IsQ0FBQyxFQUFFO1FBQ2hFRSxLQUFLSjtJQUNOLEdBQ0VLLFFBQVEsR0FDUkMsSUFBSSxHQUNKQyxLQUFLLENBQUMsTUFDTkMsTUFBTSxDQUFDLENBQUNDLElBQU1BLE1BQU07SUFDdEIsTUFBTUMsYUFBYVosU0FBUyxHQUFHSSxZQUFZLGdCQUFnQixDQUFDLEVBQUU7UUFDN0RFLEtBQUtKO0lBQ04sR0FDRUssUUFBUSxHQUNSQyxJQUFJLEdBQ0pDLEtBQUssQ0FBQyxNQUNOQyxNQUFNLENBQUMsQ0FBQ0MsSUFBTUEsTUFBTTtJQUN0QixNQUFNRSxlQUFlYixTQUFTLEdBQUdJLFlBQVksZ0JBQWdCLENBQUMsRUFBRTtRQUMvREUsS0FBS0o7SUFDTixHQUNFSyxRQUFRLEdBQ1JDLElBQUksR0FDSkMsS0FBSyxDQUFDLE1BQ05DLE1BQU0sQ0FBQyxDQUFDQyxJQUFNQSxNQUFNO0lBRXRCLE9BQU87UUFDTkcsVUFBVVQ7UUFDVlUsT0FBT0g7UUFDUEksU0FBU0g7SUFDVjtBQUNEIn0=
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { execSync } from "child_process";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { gitDiff } from "./git-diff.mjs";
|
|
5
|
+
describe("gitDiff", ()=>{
|
|
6
|
+
let tempDir;
|
|
7
|
+
beforeEach(()=>{
|
|
8
|
+
tempDir = fs.mkdtempSync("gitdiff-test");
|
|
9
|
+
// Initialize a git repo
|
|
10
|
+
execSync("git init", {
|
|
11
|
+
cwd: tempDir
|
|
12
|
+
});
|
|
13
|
+
fs.writeFileSync(path.join(tempDir, "file1.txt"), "hello");
|
|
14
|
+
fs.writeFileSync(path.join(tempDir, "second.txt"), "second");
|
|
15
|
+
fs.writeFileSync(path.join(tempDir, "third.txt"), "third");
|
|
16
|
+
execSync("git add . && git commit -m 'initial'", {
|
|
17
|
+
cwd: tempDir
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
afterEach(()=>{
|
|
21
|
+
fs.rmSync(tempDir, {
|
|
22
|
+
recursive: true,
|
|
23
|
+
force: true
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
it("handles a rename as a delete and an add", async ()=>{
|
|
27
|
+
const firstCommit = execSync("git rev-parse HEAD", {
|
|
28
|
+
cwd: tempDir
|
|
29
|
+
}).toString().trim();
|
|
30
|
+
// Perform a rename
|
|
31
|
+
execSync("git mv file1.txt file2.txt", {
|
|
32
|
+
cwd: tempDir
|
|
33
|
+
});
|
|
34
|
+
execSync("git commit -m 'rename'", {
|
|
35
|
+
cwd: tempDir
|
|
36
|
+
});
|
|
37
|
+
const result = await gitDiff(tempDir, firstCommit);
|
|
38
|
+
// Because of --no-renames:
|
|
39
|
+
expect(result).toEqual({
|
|
40
|
+
deleted: [
|
|
41
|
+
"file1.txt"
|
|
42
|
+
],
|
|
43
|
+
added: [
|
|
44
|
+
"file2.txt"
|
|
45
|
+
],
|
|
46
|
+
modified: []
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
it("handles a added, deleted, and modified appropriately across multiple commits", async ()=>{
|
|
50
|
+
const firstCommit = execSync("git rev-parse HEAD", {
|
|
51
|
+
cwd: tempDir
|
|
52
|
+
}).toString().trim();
|
|
53
|
+
// Perform a rename
|
|
54
|
+
execSync("git mv file1.txt file2.txt", {
|
|
55
|
+
cwd: tempDir
|
|
56
|
+
});
|
|
57
|
+
execSync("git commit -m 'rename'", {
|
|
58
|
+
cwd: tempDir
|
|
59
|
+
});
|
|
60
|
+
// Perform adds
|
|
61
|
+
fs.writeFileSync(path.join(tempDir, "another.txt"), "another file");
|
|
62
|
+
execSync("git add . && git commit -m 'adding another file'", {
|
|
63
|
+
cwd: tempDir
|
|
64
|
+
});
|
|
65
|
+
// Perform a modify
|
|
66
|
+
fs.writeFileSync(path.join(tempDir, "third.txt"), "third+");
|
|
67
|
+
execSync("git add . && git commit -m 'modifying third'", {
|
|
68
|
+
cwd: tempDir
|
|
69
|
+
});
|
|
70
|
+
// Perform a delete
|
|
71
|
+
fs.rmSync(path.join(tempDir, "second.txt"));
|
|
72
|
+
execSync("git add . && git commit -m 'deleting second'", {
|
|
73
|
+
cwd: tempDir
|
|
74
|
+
});
|
|
75
|
+
const result = await gitDiff(tempDir, firstCommit);
|
|
76
|
+
// Because of --no-renames:
|
|
77
|
+
expect(result).toEqual({
|
|
78
|
+
deleted: expect.arrayContaining([
|
|
79
|
+
"file1.txt",
|
|
80
|
+
"second.txt"
|
|
81
|
+
]),
|
|
82
|
+
added: expect.arrayContaining([
|
|
83
|
+
"file2.txt",
|
|
84
|
+
"another.txt"
|
|
85
|
+
]),
|
|
86
|
+
modified: [
|
|
87
|
+
"third.txt"
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvZ2l0LWRpZmYuc3BlYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGdpdERpZmYgfSBmcm9tIFwiLi9naXQtZGlmZlwiO1xuXG5kZXNjcmliZShcImdpdERpZmZcIiwgKCkgPT4ge1xuXHRsZXQgdGVtcERpcjogc3RyaW5nO1xuXG5cdGJlZm9yZUVhY2goKCkgPT4ge1xuXHRcdHRlbXBEaXIgPSBmcy5ta2R0ZW1wU3luYyhcImdpdGRpZmYtdGVzdFwiKTtcblx0XHQvLyBJbml0aWFsaXplIGEgZ2l0IHJlcG9cblx0XHRleGVjU3luYyhcImdpdCBpbml0XCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwiZmlsZTEudHh0XCIpLCBcImhlbGxvXCIpO1xuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwic2Vjb25kLnR4dFwiKSwgXCJzZWNvbmRcIik7XG5cdFx0ZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJ0aGlyZC50eHRcIiksIFwidGhpcmRcIik7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgYWRkIC4gJiYgZ2l0IGNvbW1pdCAtbSAnaW5pdGlhbCdcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdH0pO1xuXG5cdGFmdGVyRWFjaCgoKSA9PiB7XG5cdFx0ZnMucm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcblx0fSk7XG5cblx0aXQoXCJoYW5kbGVzIGEgcmVuYW1lIGFzIGEgZGVsZXRlIGFuZCBhbiBhZGRcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGZpcnN0Q29tbWl0ID0gZXhlY1N5bmMoXCJnaXQgcmV2LXBhcnNlIEhFQURcIiwgeyBjd2Q6IHRlbXBEaXIgfSlcblx0XHRcdC50b1N0cmluZygpXG5cdFx0XHQudHJpbSgpO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIHJlbmFtZVxuXHRcdGV4ZWNTeW5jKFwiZ2l0IG12IGZpbGUxLnR4dCBmaWxlMi50eHRcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgY29tbWl0IC1tICdyZW5hbWUnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZ2l0RGlmZih0ZW1wRGlyLCBmaXJzdENvbW1pdCk7XG5cblx0XHQvLyBCZWNhdXNlIG9mIC0tbm8tcmVuYW1lczpcblx0XHRleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcblx0XHRcdGRlbGV0ZWQ6IFtcImZpbGUxLnR4dFwiXSxcblx0XHRcdGFkZGVkOiBbXCJmaWxlMi50eHRcIl0sXG5cdFx0XHRtb2RpZmllZDogW10sXG5cdFx0fSk7XG5cdH0pO1xuXHRpdChcImhhbmRsZXMgYSBhZGRlZCwgZGVsZXRlZCwgYW5kIG1vZGlmaWVkIGFwcHJvcHJpYXRlbHkgYWNyb3NzIG11bHRpcGxlIGNvbW1pdHNcIiwgYXN5bmMgKCkgPT4ge1xuXHRcdGNvbnN0IGZpcnN0Q29tbWl0ID0gZXhlY1N5bmMoXCJnaXQgcmV2LXBhcnNlIEhFQURcIiwgeyBjd2Q6IHRlbXBEaXIgfSlcblx0XHRcdC50b1N0cmluZygpXG5cdFx0XHQudHJpbSgpO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIHJlbmFtZVxuXHRcdGV4ZWNTeW5jKFwiZ2l0IG12IGZpbGUxLnR4dCBmaWxlMi50eHRcIiwgeyBjd2Q6IHRlbXBEaXIgfSk7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgY29tbWl0IC1tICdyZW5hbWUnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhZGRzXG5cdFx0ZnMud3JpdGVGaWxlU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJhbm90aGVyLnR4dFwiKSwgXCJhbm90aGVyIGZpbGVcIik7XG5cdFx0ZXhlY1N5bmMoXCJnaXQgYWRkIC4gJiYgZ2l0IGNvbW1pdCAtbSAnYWRkaW5nIGFub3RoZXIgZmlsZSdcIiwge1xuXHRcdFx0Y3dkOiB0ZW1wRGlyLFxuXHRcdH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIG1vZGlmeVxuXHRcdGZzLndyaXRlRmlsZVN5bmMocGF0aC5qb2luKHRlbXBEaXIsIFwidGhpcmQudHh0XCIpLCBcInRoaXJkK1wiKTtcblx0XHRleGVjU3luYyhcImdpdCBhZGQgLiAmJiBnaXQgY29tbWl0IC1tICdtb2RpZnlpbmcgdGhpcmQnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Ly8gUGVyZm9ybSBhIGRlbGV0ZVxuXHRcdGZzLnJtU3luYyhwYXRoLmpvaW4odGVtcERpciwgXCJzZWNvbmQudHh0XCIpKTtcblx0XHRleGVjU3luYyhcImdpdCBhZGQgLiAmJiBnaXQgY29tbWl0IC1tICdkZWxldGluZyBzZWNvbmQnXCIsIHsgY3dkOiB0ZW1wRGlyIH0pO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gYXdhaXQgZ2l0RGlmZih0ZW1wRGlyLCBmaXJzdENvbW1pdCk7XG5cblx0XHQvLyBCZWNhdXNlIG9mIC0tbm8tcmVuYW1lczpcblx0XHRleHBlY3QocmVzdWx0KS50b0VxdWFsKHtcblx0XHRcdGRlbGV0ZWQ6IGV4cGVjdC5hcnJheUNvbnRhaW5pbmcoW1wiZmlsZTEudHh0XCIsIFwic2Vjb25kLnR4dFwiXSksXG5cdFx0XHRhZGRlZDogZXhwZWN0LmFycmF5Q29udGFpbmluZyhbXCJmaWxlMi50eHRcIiwgXCJhbm90aGVyLnR4dFwiXSksXG5cdFx0XHRtb2RpZmllZDogW1widGhpcmQudHh0XCJdLFxuXHRcdH0pO1xuXHR9KTtcbn0pO1xuIl0sIm5hbWVzIjpbImV4ZWNTeW5jIiwiZnMiLCJwYXRoIiwiZ2l0RGlmZiIsImRlc2NyaWJlIiwidGVtcERpciIsImJlZm9yZUVhY2giLCJta2R0ZW1wU3luYyIsImN3ZCIsIndyaXRlRmlsZVN5bmMiLCJqb2luIiwiYWZ0ZXJFYWNoIiwicm1TeW5jIiwicmVjdXJzaXZlIiwiZm9yY2UiLCJpdCIsImZpcnN0Q29tbWl0IiwidG9TdHJpbmciLCJ0cmltIiwicmVzdWx0IiwiZXhwZWN0IiwidG9FcXVhbCIsImRlbGV0ZWQiLCJhZGRlZCIsIm1vZGlmaWVkIiwiYXJyYXlDb250YWluaW5nIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLFFBQVEsZ0JBQWdCO0FBQ3pDLFlBQVlDLFFBQVEsS0FBSztBQUN6QixZQUFZQyxVQUFVLE9BQU87QUFDN0IsU0FBU0MsT0FBTyxRQUFRLGlCQUFhO0FBRXJDQyxTQUFTLFdBQVc7SUFDbkIsSUFBSUM7SUFFSkMsV0FBVztRQUNWRCxVQUFVSixHQUFHTSxXQUFXLENBQUM7UUFDekIsd0JBQXdCO1FBQ3hCUCxTQUFTLFlBQVk7WUFBRVEsS0FBS0g7UUFBUTtRQUNwQ0osR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsY0FBYztRQUNsREosR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsZUFBZTtRQUNuREosR0FBR1EsYUFBYSxDQUFDUCxLQUFLUSxJQUFJLENBQUNMLFNBQVMsY0FBYztRQUNsREwsU0FBUyx3Q0FBd0M7WUFBRVEsS0FBS0g7UUFBUTtJQUNqRTtJQUVBTSxVQUFVO1FBQ1RWLEdBQUdXLE1BQU0sQ0FBQ1AsU0FBUztZQUFFUSxXQUFXO1lBQU1DLE9BQU87UUFBSztJQUNuRDtJQUVBQyxHQUFHLDJDQUEyQztRQUM3QyxNQUFNQyxjQUFjaEIsU0FBUyxzQkFBc0I7WUFBRVEsS0FBS0g7UUFBUSxHQUNoRVksUUFBUSxHQUNSQyxJQUFJO1FBRU4sbUJBQW1CO1FBQ25CbEIsU0FBUyw4QkFBOEI7WUFBRVEsS0FBS0g7UUFBUTtRQUN0REwsU0FBUywwQkFBMEI7WUFBRVEsS0FBS0g7UUFBUTtRQUVsRCxNQUFNYyxTQUFTLE1BQU1oQixRQUFRRSxTQUFTVztRQUV0QywyQkFBMkI7UUFDM0JJLE9BQU9ELFFBQVFFLE9BQU8sQ0FBQztZQUN0QkMsU0FBUztnQkFBQzthQUFZO1lBQ3RCQyxPQUFPO2dCQUFDO2FBQVk7WUFDcEJDLFVBQVUsRUFBRTtRQUNiO0lBQ0Q7SUFDQVQsR0FBRyxnRkFBZ0Y7UUFDbEYsTUFBTUMsY0FBY2hCLFNBQVMsc0JBQXNCO1lBQUVRLEtBQUtIO1FBQVEsR0FDaEVZLFFBQVEsR0FDUkMsSUFBSTtRQUVOLG1CQUFtQjtRQUNuQmxCLFNBQVMsOEJBQThCO1lBQUVRLEtBQUtIO1FBQVE7UUFDdERMLFNBQVMsMEJBQTBCO1lBQUVRLEtBQUtIO1FBQVE7UUFFbEQsZUFBZTtRQUNmSixHQUFHUSxhQUFhLENBQUNQLEtBQUtRLElBQUksQ0FBQ0wsU0FBUyxnQkFBZ0I7UUFDcERMLFNBQVMsb0RBQW9EO1lBQzVEUSxLQUFLSDtRQUNOO1FBRUEsbUJBQW1CO1FBQ25CSixHQUFHUSxhQUFhLENBQUNQLEtBQUtRLElBQUksQ0FBQ0wsU0FBUyxjQUFjO1FBQ2xETCxTQUFTLGdEQUFnRDtZQUFFUSxLQUFLSDtRQUFRO1FBRXhFLG1CQUFtQjtRQUNuQkosR0FBR1csTUFBTSxDQUFDVixLQUFLUSxJQUFJLENBQUNMLFNBQVM7UUFDN0JMLFNBQVMsZ0RBQWdEO1lBQUVRLEtBQUtIO1FBQVE7UUFFeEUsTUFBTWMsU0FBUyxNQUFNaEIsUUFBUUUsU0FBU1c7UUFFdEMsMkJBQTJCO1FBQzNCSSxPQUFPRCxRQUFRRSxPQUFPLENBQUM7WUFDdEJDLFNBQVNGLE9BQU9LLGVBQWUsQ0FBQztnQkFBQztnQkFBYTthQUFhO1lBQzNERixPQUFPSCxPQUFPSyxlQUFlLENBQUM7Z0JBQUM7Z0JBQWE7YUFBYztZQUMxREQsVUFBVTtnQkFBQzthQUFZO1FBQ3hCO0lBQ0Q7QUFDRCJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./git-diff.mjs";
|
|
2
|
+
export * from "./types.mjs";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZ2l0LWRpZmZcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBYTtBQUMzQixjQUFjLGNBQVUifQ==
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A function that operates within the gitDir, and returns the list of file paths
|
|
3
|
+
* since the last sha
|
|
4
|
+
*/ export { };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kaWZmLWRyaXZlcnMvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaWZmUmVzdWx0IHtcblx0bW9kaWZpZWQ6IHN0cmluZ1tdO1xuXHRhZGRlZDogc3RyaW5nW107XG5cdGRlbGV0ZWQ6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEEgZnVuY3Rpb24gdGhhdCBvcGVyYXRlcyB3aXRoaW4gdGhlIGdpdERpciwgYW5kIHJldHVybnMgdGhlIGxpc3Qgb2YgZmlsZSBwYXRoc1xuICogc2luY2UgdGhlIGxhc3Qgc2hhXG4gKi9cbmV4cG9ydCB0eXBlIFRlbXBsYXRlRGlmZkRyaXZlckZuID0gKFxuXHRnaXREaXI6IHN0cmluZyxcblx0YWZ0ZXJSZWY6IHN0cmluZyxcbikgPT4gUHJvbWlzZTxEaWZmUmVzdWx0PjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7O0NBR0MsR0FDRCxXQUd5QiJ9
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export * from "./infer-json-indent.mjs";
|
|
2
|
+
export * from "./sync-results-to-md.mjs";
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2luZmVyLWpzb24taW5kZW50XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zeW5jLXJlc3VsdHMtdG8tbWRcIjtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDBCQUFzQjtBQUNwQyxjQUFjLDJCQUF1QiJ9
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const spacingRegex = /[{[]\n?(?<spacing>\s+)["tf\d]/;
|
|
2
|
+
export function inferJSONIndent(rawJSON) {
|
|
3
|
+
const match = spacingRegex.exec(rawJSON);
|
|
4
|
+
if (!match?.groups?.spacing) {
|
|
5
|
+
// eslint-disable-next-line no-console
|
|
6
|
+
console.warn(`Could not find json indentation for json string: ${rawJSON.slice(40)} ... \nDefaulting to 4 spaces`);
|
|
7
|
+
// Four spaces
|
|
8
|
+
return " ";
|
|
9
|
+
}
|
|
10
|
+
const spacing = match.groups.spacing;
|
|
11
|
+
// Handle the case where there were multiple newlines before a value
|
|
12
|
+
const lastNewLine = spacing.lastIndexOf("\n");
|
|
13
|
+
return match?.groups.spacing.slice(lastNewLine >= 0 ? lastNewLine + 1 : 0);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZmVyLWpzb24taW5kZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHNwYWNpbmdSZWdleCA9IC9be1tdXFxuPyg/PHNwYWNpbmc+XFxzKylbXCJ0ZlxcZF0vO1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVySlNPTkluZGVudChyYXdKU09OOiBzdHJpbmcpIHtcblx0Y29uc3QgbWF0Y2ggPSBzcGFjaW5nUmVnZXguZXhlYyhyYXdKU09OKTtcblx0aWYgKCFtYXRjaD8uZ3JvdXBzPy5zcGFjaW5nKSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcblx0XHRjb25zb2xlLndhcm4oXG5cdFx0XHRgQ291bGQgbm90IGZpbmQganNvbiBpbmRlbnRhdGlvbiBmb3IganNvbiBzdHJpbmc6ICR7cmF3SlNPTi5zbGljZSg0MCl9IC4uLiBcXG5EZWZhdWx0aW5nIHRvIDQgc3BhY2VzYCxcblx0XHQpO1xuXHRcdC8vIEZvdXIgc3BhY2VzXG5cdFx0cmV0dXJuIFwiICAgIFwiO1xuXHR9XG5cdGNvbnN0IHNwYWNpbmcgPSBtYXRjaC5ncm91cHMuc3BhY2luZztcblx0Ly8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZXJlIHdlcmUgbXVsdGlwbGUgbmV3bGluZXMgYmVmb3JlIGEgdmFsdWVcblx0Y29uc3QgbGFzdE5ld0xpbmUgPSBzcGFjaW5nLmxhc3RJbmRleE9mKFwiXFxuXCIpO1xuXHRyZXR1cm4gbWF0Y2g/Lmdyb3Vwcy5zcGFjaW5nLnNsaWNlKGxhc3ROZXdMaW5lID49IDAgPyBsYXN0TmV3TGluZSArIDEgOiAwKTtcbn1cbiJdLCJuYW1lcyI6WyJzcGFjaW5nUmVnZXgiLCJpbmZlckpTT05JbmRlbnQiLCJyYXdKU09OIiwibWF0Y2giLCJleGVjIiwiZ3JvdXBzIiwic3BhY2luZyIsImNvbnNvbGUiLCJ3YXJuIiwic2xpY2UiLCJsYXN0TmV3TGluZSIsImxhc3RJbmRleE9mIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxlQUFlO0FBQ3JCLE9BQU8sU0FBU0MsZ0JBQWdCQyxPQUFlO0lBQzlDLE1BQU1DLFFBQVFILGFBQWFJLElBQUksQ0FBQ0Y7SUFDaEMsSUFBSSxDQUFDQyxPQUFPRSxRQUFRQyxTQUFTO1FBQzVCLHNDQUFzQztRQUN0Q0MsUUFBUUMsSUFBSSxDQUNYLENBQUMsaURBQWlELEVBQUVOLFFBQVFPLEtBQUssQ0FBQyxJQUFJLDZCQUE2QixDQUFDO1FBRXJHLGNBQWM7UUFDZCxPQUFPO0lBQ1I7SUFDQSxNQUFNSCxVQUFVSCxNQUFNRSxNQUFNLENBQUNDLE9BQU87SUFDcEMsb0VBQW9FO0lBQ3BFLE1BQU1JLGNBQWNKLFFBQVFLLFdBQVcsQ0FBQztJQUN4QyxPQUFPUixPQUFPRSxPQUFPQyxRQUFRRyxNQUFNQyxlQUFlLElBQUlBLGNBQWMsSUFBSTtBQUN6RSJ9
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { inferJSONIndent } from "./infer-json-indent.mjs";
|
|
2
|
+
const withNewLine = `{
|
|
3
|
+
|
|
4
|
+
"whoa": true,
|
|
5
|
+
"thing": here,
|
|
6
|
+
"something": {
|
|
7
|
+
"nested": false
|
|
8
|
+
}
|
|
9
|
+
}`;
|
|
10
|
+
const fourSpaces = `{
|
|
11
|
+
"whoa": true,
|
|
12
|
+
"thing": here,
|
|
13
|
+
"something": {
|
|
14
|
+
"nested": false
|
|
15
|
+
}
|
|
16
|
+
}`;
|
|
17
|
+
const tabSpaces = `{
|
|
18
|
+
"whoa": true,
|
|
19
|
+
"thing": here,
|
|
20
|
+
"something": {
|
|
21
|
+
"nested": false
|
|
22
|
+
}
|
|
23
|
+
}`;
|
|
24
|
+
const twoSpaces = `{
|
|
25
|
+
"whoa": true,
|
|
26
|
+
"thing": here,
|
|
27
|
+
"something": {
|
|
28
|
+
"nested": false
|
|
29
|
+
}
|
|
30
|
+
}`;
|
|
31
|
+
describe("inferJSONIndent", ()=>{
|
|
32
|
+
it("returns spaces when the first indent is spaces with a new line", ()=>{
|
|
33
|
+
expect(inferJSONIndent(withNewLine)).toBe(" ");
|
|
34
|
+
});
|
|
35
|
+
it("returns spaces when the first indent is spaces", ()=>{
|
|
36
|
+
expect(inferJSONIndent(fourSpaces)).toBe(" ");
|
|
37
|
+
});
|
|
38
|
+
it("returns spaces when the first indent is spaces", ()=>{
|
|
39
|
+
expect(inferJSONIndent(twoSpaces)).toBe(" ");
|
|
40
|
+
});
|
|
41
|
+
it("returns tabs when the first indent is a tab", ()=>{
|
|
42
|
+
expect(inferJSONIndent(tabSpaces)).toBe("\t");
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL2luZmVyLWpzb24taW5kZW50LnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5mZXJKU09OSW5kZW50IH0gZnJvbSBcIi4vaW5mZXItanNvbi1pbmRlbnRcIjtcblxuY29uc3Qgd2l0aE5ld0xpbmUgPSBge1xuXG4gICAgXCJ3aG9hXCI6IHRydWUsXG4gICAgXCJ0aGluZ1wiOiBoZXJlLFxuICAgIFwic29tZXRoaW5nXCI6IHtcbiAgICAgICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgICB9XG59YDtcblxuY29uc3QgZm91clNwYWNlcyA9IGB7XG4gICAgXCJ3aG9hXCI6IHRydWUsXG4gICAgXCJ0aGluZ1wiOiBoZXJlLFxuICAgIFwic29tZXRoaW5nXCI6IHtcbiAgICAgICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgICB9XG59YDtcblxuY29uc3QgdGFiU3BhY2VzID0gYHtcblx0XCJ3aG9hXCI6IHRydWUsXG5cdFwidGhpbmdcIjogaGVyZSxcblx0XCJzb21ldGhpbmdcIjoge1xuXHRcdFwibmVzdGVkXCI6IGZhbHNlXG5cdH1cbn1gO1xuXG5jb25zdCB0d29TcGFjZXMgPSBge1xuICBcIndob2FcIjogdHJ1ZSxcbiAgXCJ0aGluZ1wiOiBoZXJlLFxuICBcInNvbWV0aGluZ1wiOiB7XG4gICAgXCJuZXN0ZWRcIjogZmFsc2VcbiAgfVxufWA7XG5cbmRlc2NyaWJlKFwiaW5mZXJKU09OSW5kZW50XCIsICgpID0+IHtcblx0aXQoXCJyZXR1cm5zIHNwYWNlcyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgc3BhY2VzIHdpdGggYSBuZXcgbGluZVwiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGluZmVySlNPTkluZGVudCh3aXRoTmV3TGluZSkpLnRvQmUoXCIgICAgXCIpO1xuXHR9KTtcblx0aXQoXCJyZXR1cm5zIHNwYWNlcyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgc3BhY2VzXCIsICgpID0+IHtcblx0XHRleHBlY3QoaW5mZXJKU09OSW5kZW50KGZvdXJTcGFjZXMpKS50b0JlKFwiICAgIFwiKTtcblx0fSk7XG5cdGl0KFwicmV0dXJucyBzcGFjZXMgd2hlbiB0aGUgZmlyc3QgaW5kZW50IGlzIHNwYWNlc1wiLCAoKSA9PiB7XG5cdFx0ZXhwZWN0KGluZmVySlNPTkluZGVudCh0d29TcGFjZXMpKS50b0JlKFwiICBcIik7XG5cdH0pO1xuXHRpdChcInJldHVybnMgdGFicyB3aGVuIHRoZSBmaXJzdCBpbmRlbnQgaXMgYSB0YWJcIiwgKCkgPT4ge1xuXHRcdGV4cGVjdChpbmZlckpTT05JbmRlbnQodGFiU3BhY2VzKSkudG9CZShcIlxcdFwiKTtcblx0fSk7XG59KTtcbiJdLCJuYW1lcyI6WyJpbmZlckpTT05JbmRlbnQiLCJ3aXRoTmV3TGluZSIsImZvdXJTcGFjZXMiLCJ0YWJTcGFjZXMiLCJ0d29TcGFjZXMiLCJkZXNjcmliZSIsIml0IiwiZXhwZWN0IiwidG9CZSJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsZUFBZSxRQUFRLDBCQUFzQjtBQUV0RCxNQUFNQyxjQUFjLENBQUM7Ozs7Ozs7Q0FPcEIsQ0FBQztBQUVGLE1BQU1DLGFBQWEsQ0FBQzs7Ozs7O0NBTW5CLENBQUM7QUFFRixNQUFNQyxZQUFZLENBQUM7Ozs7OztDQU1sQixDQUFDO0FBRUYsTUFBTUMsWUFBWSxDQUFDOzs7Ozs7Q0FNbEIsQ0FBQztBQUVGQyxTQUFTLG1CQUFtQjtJQUMzQkMsR0FBRyxrRUFBa0U7UUFDcEVDLE9BQU9QLGdCQUFnQkMsY0FBY08sSUFBSSxDQUFDO0lBQzNDO0lBQ0FGLEdBQUcsa0RBQWtEO1FBQ3BEQyxPQUFPUCxnQkFBZ0JFLGFBQWFNLElBQUksQ0FBQztJQUMxQztJQUNBRixHQUFHLGtEQUFrRDtRQUNwREMsT0FBT1AsZ0JBQWdCSSxZQUFZSSxJQUFJLENBQUM7SUFDekM7SUFDQUYsR0FBRywrQ0FBK0M7UUFDakRDLE9BQU9QLGdCQUFnQkcsWUFBWUssSUFBSSxDQUFDO0lBQ3pDO0FBQ0QifQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TEMPLATE_SYNC_LOCAL_CONFIG } from "../template-sync.mjs";
|
|
2
|
+
export function syncResultsToMd(result) {
|
|
3
|
+
return `# ${TEMPLATE_SYNC_LOCAL_CONFIG}
|
|
4
|
+
|
|
5
|
+
## Stopped the following files from syncing:
|
|
6
|
+
|
|
7
|
+
${result.localSkipFiles.reduce((s, file)=>{
|
|
8
|
+
return `${s}* ${file}\n`;
|
|
9
|
+
}, "")}
|
|
10
|
+
|
|
11
|
+
## Changed the following files from what they would have synced:
|
|
12
|
+
|
|
13
|
+
${Object.keys(result.localFileChanges).reduce((s, file)=>{
|
|
14
|
+
return `${s}${file}
|
|
15
|
+
\`\`\`diff
|
|
16
|
+
${result.localFileChanges[file].reduce((diffS, change)=>{
|
|
17
|
+
return `${diffS}\n${makeChangeIntoDiffLines(change)}`;
|
|
18
|
+
}, "")}
|
|
19
|
+
\`\`\``;
|
|
20
|
+
}, "")}
|
|
21
|
+
|
|
22
|
+
## Files Modified (${result.modifiedFiles.total})
|
|
23
|
+
|
|
24
|
+
Added:
|
|
25
|
+
${result.modifiedFiles.added.reduce((s, f)=>{
|
|
26
|
+
return `${s}\n- ${f}`;
|
|
27
|
+
}, "")}
|
|
28
|
+
|
|
29
|
+
Modified:
|
|
30
|
+
${result.modifiedFiles.modified.reduce((s, f)=>{
|
|
31
|
+
return `${s}\n- ${f}`;
|
|
32
|
+
}, "")}
|
|
33
|
+
|
|
34
|
+
Deleted:
|
|
35
|
+
${result.modifiedFiles.deleted.reduce((s, f)=>{
|
|
36
|
+
return `${s}\n- ${f}`;
|
|
37
|
+
}, "")}
|
|
38
|
+
`;
|
|
39
|
+
}
|
|
40
|
+
function makeChangeIntoDiffLines(change, nonchangeMax = 3) {
|
|
41
|
+
const operator = change.added ? "+" : change.removed ? "-" : "";
|
|
42
|
+
if (!operator && nonchangeMax > 0 && change.count && change.count > nonchangeMax) {
|
|
43
|
+
const lines = change.value.split("\n");
|
|
44
|
+
const partial = lines.slice(lines.length - nonchangeMax);
|
|
45
|
+
return `...\n${partial.join("\n")}\n`;
|
|
46
|
+
}
|
|
47
|
+
return change.value.split("\n").reduce((s, line)=>{
|
|
48
|
+
return `${s}${operator}${line}\n`;
|
|
49
|
+
}, "");
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL3N5bmMtcmVzdWx0cy10by1tZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoYW5nZSB9IGZyb20gXCJkaWZmXCI7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlU3luY1JldHVybiB9IGZyb20gXCIuLi90ZW1wbGF0ZS1zeW5jXCI7XG5pbXBvcnQgeyBURU1QTEFURV9TWU5DX0xPQ0FMX0NPTkZJRyB9IGZyb20gXCIuLi90ZW1wbGF0ZS1zeW5jXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzeW5jUmVzdWx0c1RvTWQocmVzdWx0OiBUZW1wbGF0ZVN5bmNSZXR1cm4pIHtcblx0cmV0dXJuIGAjICR7VEVNUExBVEVfU1lOQ19MT0NBTF9DT05GSUd9IFxuXG4jIyBTdG9wcGVkIHRoZSBmb2xsb3dpbmcgZmlsZXMgZnJvbSBzeW5jaW5nOlxuXG4ke3Jlc3VsdC5sb2NhbFNraXBGaWxlcy5yZWR1Y2UoKHMsIGZpbGUpID0+IHtcblx0cmV0dXJuIGAke3N9KiAke2ZpbGV9XFxuYDtcbn0sIFwiXCIpfVxuXG4jIyBDaGFuZ2VkIHRoZSBmb2xsb3dpbmcgZmlsZXMgZnJvbSB3aGF0IHRoZXkgd291bGQgaGF2ZSBzeW5jZWQ6XG5cbiR7T2JqZWN0LmtleXMocmVzdWx0LmxvY2FsRmlsZUNoYW5nZXMpLnJlZHVjZSgocywgZmlsZSkgPT4ge1xuXHRyZXR1cm4gYCR7c30ke2ZpbGV9XG5cXGBcXGBcXGBkaWZmXG4ke3Jlc3VsdC5sb2NhbEZpbGVDaGFuZ2VzW2ZpbGVdLnJlZHVjZSgoZGlmZlMsIGNoYW5nZSkgPT4ge1xuXHRyZXR1cm4gYCR7ZGlmZlN9XFxuJHttYWtlQ2hhbmdlSW50b0RpZmZMaW5lcyhjaGFuZ2UpfWA7XG59LCBcIlwiKX1cblxcYFxcYFxcYGA7XG59LCBcIlwiKX1cblxuIyMgRmlsZXMgTW9kaWZpZWQgKCR7cmVzdWx0Lm1vZGlmaWVkRmlsZXMudG90YWx9KVxuXG5BZGRlZDpcbiR7cmVzdWx0Lm1vZGlmaWVkRmlsZXMuYWRkZWQucmVkdWNlKChzLCBmKSA9PiB7XG5cdHJldHVybiBgJHtzfVxcbi0gJHtmfWA7XG59LCBcIlwiKX1cblxuTW9kaWZpZWQ6XG4ke3Jlc3VsdC5tb2RpZmllZEZpbGVzLm1vZGlmaWVkLnJlZHVjZSgocywgZikgPT4ge1xuXHRyZXR1cm4gYCR7c31cXG4tICR7Zn1gO1xufSwgXCJcIil9XG5cbkRlbGV0ZWQ6XG4ke3Jlc3VsdC5tb2RpZmllZEZpbGVzLmRlbGV0ZWQucmVkdWNlKChzLCBmKSA9PiB7XG5cdHJldHVybiBgJHtzfVxcbi0gJHtmfWA7XG59LCBcIlwiKX1cbmA7XG59XG5cbmZ1bmN0aW9uIG1ha2VDaGFuZ2VJbnRvRGlmZkxpbmVzKGNoYW5nZTogQ2hhbmdlLCBub25jaGFuZ2VNYXggPSAzKSB7XG5cdGNvbnN0IG9wZXJhdG9yID0gY2hhbmdlLmFkZGVkID8gXCIrXCIgOiBjaGFuZ2UucmVtb3ZlZCA/IFwiLVwiIDogXCJcIjtcblxuXHRpZiAoXG5cdFx0IW9wZXJhdG9yICYmXG5cdFx0bm9uY2hhbmdlTWF4ID4gMCAmJlxuXHRcdGNoYW5nZS5jb3VudCAmJlxuXHRcdGNoYW5nZS5jb3VudCA+IG5vbmNoYW5nZU1heFxuXHQpIHtcblx0XHRjb25zdCBsaW5lcyA9IGNoYW5nZS52YWx1ZS5zcGxpdChcIlxcblwiKTtcblx0XHRjb25zdCBwYXJ0aWFsID0gbGluZXMuc2xpY2UobGluZXMubGVuZ3RoIC0gbm9uY2hhbmdlTWF4KTtcblx0XHRyZXR1cm4gYC4uLlxcbiR7cGFydGlhbC5qb2luKFwiXFxuXCIpfVxcbmA7XG5cdH1cblxuXHRyZXR1cm4gY2hhbmdlLnZhbHVlLnNwbGl0KFwiXFxuXCIpLnJlZHVjZSgocywgbGluZSkgPT4ge1xuXHRcdHJldHVybiBgJHtzfSR7b3BlcmF0b3J9JHtsaW5lfVxcbmA7XG5cdH0sIFwiXCIpO1xufVxuIl0sIm5hbWVzIjpbIlRFTVBMQVRFX1NZTkNfTE9DQUxfQ09ORklHIiwic3luY1Jlc3VsdHNUb01kIiwicmVzdWx0IiwibG9jYWxTa2lwRmlsZXMiLCJyZWR1Y2UiLCJzIiwiZmlsZSIsIk9iamVjdCIsImtleXMiLCJsb2NhbEZpbGVDaGFuZ2VzIiwiZGlmZlMiLCJjaGFuZ2UiLCJtYWtlQ2hhbmdlSW50b0RpZmZMaW5lcyIsIm1vZGlmaWVkRmlsZXMiLCJ0b3RhbCIsImFkZGVkIiwiZiIsIm1vZGlmaWVkIiwiZGVsZXRlZCIsIm5vbmNoYW5nZU1heCIsIm9wZXJhdG9yIiwicmVtb3ZlZCIsImNvdW50IiwibGluZXMiLCJ2YWx1ZSIsInNwbGl0IiwicGFydGlhbCIsInNsaWNlIiwibGVuZ3RoIiwiam9pbiIsImxpbmUiXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLDBCQUEwQixRQUFRLHVCQUFtQjtBQUU5RCxPQUFPLFNBQVNDLGdCQUFnQkMsTUFBMEI7SUFDekQsT0FBTyxDQUFDLEVBQUUsRUFBRUYsMkJBQTJCOzs7O0FBSXhDLEVBQUVFLE9BQU9DLGNBQWMsQ0FBQ0MsTUFBTSxDQUFDLENBQUNDLEdBQUdDO1FBQ2xDLE9BQU8sR0FBR0QsRUFBRSxFQUFFLEVBQUVDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLEdBQUcsSUFBSTs7OztBQUlQLEVBQUVDLE9BQU9DLElBQUksQ0FBQ04sT0FBT08sZ0JBQWdCLEVBQUVMLE1BQU0sQ0FBQyxDQUFDQyxHQUFHQztRQUNqRCxPQUFPLEdBQUdELElBQUlDLEtBQUs7O0FBRXBCLEVBQUVKLE9BQU9PLGdCQUFnQixDQUFDSCxLQUFLLENBQUNGLE1BQU0sQ0FBQyxDQUFDTSxPQUFPQztZQUM5QyxPQUFPLEdBQUdELE1BQU0sRUFBRSxFQUFFRSx3QkFBd0JELFNBQVM7UUFDdEQsR0FBRyxJQUFJO01BQ0QsQ0FBQztJQUNQLEdBQUcsSUFBSTs7bUJBRVksRUFBRVQsT0FBT1csYUFBYSxDQUFDQyxLQUFLLENBQUM7OztBQUdoRCxFQUFFWixPQUFPVyxhQUFhLENBQUNFLEtBQUssQ0FBQ1gsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQ3ZDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJOzs7QUFHUCxFQUFFZCxPQUFPVyxhQUFhLENBQUNJLFFBQVEsQ0FBQ2IsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQzFDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJOzs7QUFHUCxFQUFFZCxPQUFPVyxhQUFhLENBQUNLLE9BQU8sQ0FBQ2QsTUFBTSxDQUFDLENBQUNDLEdBQUdXO1FBQ3pDLE9BQU8sR0FBR1gsRUFBRSxJQUFJLEVBQUVXLEdBQUc7SUFDdEIsR0FBRyxJQUFJO0FBQ1AsQ0FBQztBQUNEO0FBRUEsU0FBU0osd0JBQXdCRCxNQUFjLEVBQUVRLGVBQWUsQ0FBQztJQUNoRSxNQUFNQyxXQUFXVCxPQUFPSSxLQUFLLEdBQUcsTUFBTUosT0FBT1UsT0FBTyxHQUFHLE1BQU07SUFFN0QsSUFDQyxDQUFDRCxZQUNERCxlQUFlLEtBQ2ZSLE9BQU9XLEtBQUssSUFDWlgsT0FBT1csS0FBSyxHQUFHSCxjQUNkO1FBQ0QsTUFBTUksUUFBUVosT0FBT2EsS0FBSyxDQUFDQyxLQUFLLENBQUM7UUFDakMsTUFBTUMsVUFBVUgsTUFBTUksS0FBSyxDQUFDSixNQUFNSyxNQUFNLEdBQUdUO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLEVBQUVPLFFBQVFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QztJQUVBLE9BQU9sQixPQUFPYSxLQUFLLENBQUNDLEtBQUssQ0FBQyxNQUFNckIsTUFBTSxDQUFDLENBQUNDLEdBQUd5QjtRQUMxQyxPQUFPLEdBQUd6QixJQUFJZSxXQUFXVSxLQUFLLEVBQUUsQ0FBQztJQUNsQyxHQUFHO0FBQ0oifQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { syncResultsToMd } from "./sync-results-to-md.mjs";
|
|
2
|
+
describe("syncResultsToMd", ()=>{
|
|
3
|
+
it("snapshots", ()=>{
|
|
4
|
+
expect(syncResultsToMd({
|
|
5
|
+
localSkipFiles: [
|
|
6
|
+
"src/file1.ts"
|
|
7
|
+
],
|
|
8
|
+
localFileChanges: {
|
|
9
|
+
"package.json": [
|
|
10
|
+
{
|
|
11
|
+
count: 8,
|
|
12
|
+
value: "my thing",
|
|
13
|
+
added: true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
count: 10,
|
|
17
|
+
value: "your thang",
|
|
18
|
+
removed: true
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
modifiedFiles: {
|
|
23
|
+
added: [
|
|
24
|
+
"src/something.ts",
|
|
25
|
+
"new_settings.toml"
|
|
26
|
+
],
|
|
27
|
+
deleted: [
|
|
28
|
+
"TODO.md",
|
|
29
|
+
"throwaway.ts"
|
|
30
|
+
],
|
|
31
|
+
modified: [
|
|
32
|
+
"something.txt",
|
|
33
|
+
".env"
|
|
34
|
+
],
|
|
35
|
+
total: 6
|
|
36
|
+
}
|
|
37
|
+
})).toMatchSnapshot();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9mb3JtYXR0aW5nL3N5bmMtcmVzdWx0cy10by1tZC5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHN5bmNSZXN1bHRzVG9NZCB9IGZyb20gXCIuL3N5bmMtcmVzdWx0cy10by1tZFwiO1xuXG5kZXNjcmliZShcInN5bmNSZXN1bHRzVG9NZFwiLCAoKSA9PiB7XG5cdGl0KFwic25hcHNob3RzXCIsICgpID0+IHtcblx0XHRleHBlY3QoXG5cdFx0XHRzeW5jUmVzdWx0c1RvTWQoe1xuXHRcdFx0XHRsb2NhbFNraXBGaWxlczogW1wic3JjL2ZpbGUxLnRzXCJdLFxuXHRcdFx0XHRsb2NhbEZpbGVDaGFuZ2VzOiB7XG5cdFx0XHRcdFx0XCJwYWNrYWdlLmpzb25cIjogW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb3VudDogOCxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IFwibXkgdGhpbmdcIixcblx0XHRcdFx0XHRcdFx0YWRkZWQ6IHRydWUsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRjb3VudDogMTAsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBcInlvdXIgdGhhbmdcIixcblx0XHRcdFx0XHRcdFx0cmVtb3ZlZDogdHJ1ZSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XSxcblx0XHRcdFx0fSxcblx0XHRcdFx0bW9kaWZpZWRGaWxlczoge1xuXHRcdFx0XHRcdGFkZGVkOiBbXCJzcmMvc29tZXRoaW5nLnRzXCIsIFwibmV3X3NldHRpbmdzLnRvbWxcIl0sXG5cdFx0XHRcdFx0ZGVsZXRlZDogW1wiVE9ETy5tZFwiLCBcInRocm93YXdheS50c1wiXSxcblx0XHRcdFx0XHRtb2RpZmllZDogW1wic29tZXRoaW5nLnR4dFwiLCBcIi5lbnZcIl0sXG5cdFx0XHRcdFx0dG90YWw6IDYsXG5cdFx0XHRcdH0sXG5cdFx0XHR9KSxcblx0XHQpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuXHR9KTtcbn0pO1xuIl0sIm5hbWVzIjpbInN5bmNSZXN1bHRzVG9NZCIsImRlc2NyaWJlIiwiaXQiLCJleHBlY3QiLCJsb2NhbFNraXBGaWxlcyIsImxvY2FsRmlsZUNoYW5nZXMiLCJjb3VudCIsInZhbHVlIiwiYWRkZWQiLCJyZW1vdmVkIiwibW9kaWZpZWRGaWxlcyIsImRlbGV0ZWQiLCJtb2RpZmllZCIsInRvdGFsIiwidG9NYXRjaFNuYXBzaG90Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxlQUFlLFFBQVEsMkJBQXVCO0FBRXZEQyxTQUFTLG1CQUFtQjtJQUMzQkMsR0FBRyxhQUFhO1FBQ2ZDLE9BQ0NILGdCQUFnQjtZQUNmSSxnQkFBZ0I7Z0JBQUM7YUFBZTtZQUNoQ0Msa0JBQWtCO2dCQUNqQixnQkFBZ0I7b0JBQ2Y7d0JBQ0NDLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BDLE9BQU87b0JBQ1I7b0JBQ0E7d0JBQ0NGLE9BQU87d0JBQ1BDLE9BQU87d0JBQ1BFLFNBQVM7b0JBQ1Y7aUJBQ0E7WUFDRjtZQUNBQyxlQUFlO2dCQUNkRixPQUFPO29CQUFDO29CQUFvQjtpQkFBb0I7Z0JBQ2hERyxTQUFTO29CQUFDO29CQUFXO2lCQUFlO2dCQUNwQ0MsVUFBVTtvQkFBQztvQkFBaUI7aUJBQU87Z0JBQ25DQyxPQUFPO1lBQ1I7UUFDRCxJQUNDQyxlQUFlO0lBQ2xCO0FBQ0QifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from "./formatting/index.mjs";
|
|
2
|
+
export * from "./template-sync.mjs";
|
|
3
|
+
export * from "./types.mjs";
|
|
4
|
+
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9mb3JtYXR0aW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90ZW1wbGF0ZS1zeW5jXCI7XG5leHBvcnQgKiBmcm9tIFwiLi90eXBlc1wiO1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQWU7QUFDN0IsY0FBYyxzQkFBa0I7QUFDaEMsY0FBYyxjQUFVIn0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { existsSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { defaultExtensionMap } from "./plugins/index.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Loads the plugin associated with the merge config
|
|
6
|
+
* @param mergeConfig
|
|
7
|
+
* @param forExt
|
|
8
|
+
* @param configDir
|
|
9
|
+
* @returns
|
|
10
|
+
*/ export async function loadPlugin(mergeConfig, configDir) {
|
|
11
|
+
if (mergeConfig.plugin.startsWith("_")) {
|
|
12
|
+
const defaultHandler = Object.values(defaultExtensionMap).find((el)=>el.builtinName === mergeConfig.plugin);
|
|
13
|
+
if (!defaultHandler) {
|
|
14
|
+
throw new Error(`No builtin merge function supplied for ${mergeConfig.plugin}. Cannot have merge config without custom plugin supplied.`);
|
|
15
|
+
}
|
|
16
|
+
return defaultHandler;
|
|
17
|
+
}
|
|
18
|
+
let handler;
|
|
19
|
+
// First check if this is a local .js file
|
|
20
|
+
const localPath = resolve(configDir, mergeConfig.plugin);
|
|
21
|
+
const importPath = existsSync(localPath) ? localPath : mergeConfig.plugin;
|
|
22
|
+
try {
|
|
23
|
+
// Sad workaround for testing since dynamic import segfaults
|
|
24
|
+
if (process.env.JEST_WORKER_ID !== undefined) {
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
26
|
+
handler = require(importPath);
|
|
27
|
+
} else {
|
|
28
|
+
handler = await import(importPath);
|
|
29
|
+
}
|
|
30
|
+
if (!handler.merge) {
|
|
31
|
+
handler = handler.default;
|
|
32
|
+
}
|
|
33
|
+
} catch (err) {
|
|
34
|
+
console.error(err);
|
|
35
|
+
throw err;
|
|
36
|
+
}
|
|
37
|
+
return handler;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sb2FkLXBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgeyByZXNvbHZlIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGRlZmF1bHRFeHRlbnNpb25NYXAgfSBmcm9tIFwiLi9wbHVnaW5zXCI7XG5pbXBvcnQgdHlwZSB7IE1lcmdlQ29uZmlnLCBNZXJnZVBsdWdpbiB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogTG9hZHMgdGhlIHBsdWdpbiBhc3NvY2lhdGVkIHdpdGggdGhlIG1lcmdlIGNvbmZpZ1xuICogQHBhcmFtIG1lcmdlQ29uZmlnXG4gKiBAcGFyYW0gZm9yRXh0XG4gKiBAcGFyYW0gY29uZmlnRGlyXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFBsdWdpbjxUPihcblx0bWVyZ2VDb25maWc6IE1lcmdlQ29uZmlnPFQ+LFxuXHRjb25maWdEaXI6IHN0cmluZyxcbik6IFByb21pc2U8TWVyZ2VQbHVnaW48VD4+IHtcblx0aWYgKG1lcmdlQ29uZmlnLnBsdWdpbi5zdGFydHNXaXRoKFwiX1wiKSkge1xuXHRcdGNvbnN0IGRlZmF1bHRIYW5kbGVyID0gT2JqZWN0LnZhbHVlcyhkZWZhdWx0RXh0ZW5zaW9uTWFwKS5maW5kKFxuXHRcdFx0KGVsKSA9PiBlbC5idWlsdGluTmFtZSA9PT0gbWVyZ2VDb25maWcucGx1Z2luLFxuXHRcdCk7XG5cdFx0aWYgKCFkZWZhdWx0SGFuZGxlcikge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRgTm8gYnVpbHRpbiBtZXJnZSBmdW5jdGlvbiBzdXBwbGllZCBmb3IgJHttZXJnZUNvbmZpZy5wbHVnaW59LiAgQ2Fubm90IGhhdmUgbWVyZ2UgY29uZmlnIHdpdGhvdXQgY3VzdG9tIHBsdWdpbiBzdXBwbGllZC5gLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIGRlZmF1bHRIYW5kbGVyIGFzIE1lcmdlUGx1Z2luPFQ+O1xuXHR9XG5cblx0bGV0IGhhbmRsZXI6IE1lcmdlUGx1Z2luPHVua25vd24+O1xuXHQvLyBGaXJzdCBjaGVjayBpZiB0aGlzIGlzIGEgbG9jYWwgLmpzIGZpbGVcblx0Y29uc3QgbG9jYWxQYXRoID0gcmVzb2x2ZShjb25maWdEaXIsIG1lcmdlQ29uZmlnLnBsdWdpbik7XG5cdGNvbnN0IGltcG9ydFBhdGggPSBleGlzdHNTeW5jKGxvY2FsUGF0aCkgPyBsb2NhbFBhdGggOiBtZXJnZUNvbmZpZy5wbHVnaW47XG5cdHRyeSB7XG5cdFx0Ly8gU2FkIHdvcmthcm91bmQgZm9yIHRlc3Rpbmcgc2luY2UgZHluYW1pYyBpbXBvcnQgc2VnZmF1bHRzXG5cdFx0aWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5cdFx0XHRoYW5kbGVyID0gcmVxdWlyZShpbXBvcnRQYXRoKSBhcyBNZXJnZVBsdWdpbjx1bmtub3duPjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGFuZGxlciA9IChhd2FpdCBpbXBvcnQoaW1wb3J0UGF0aCkpIGFzIE1lcmdlUGx1Z2luPHVua25vd24+O1xuXHRcdH1cblx0XHRpZiAoIWhhbmRsZXIubWVyZ2UpIHtcblx0XHRcdGhhbmRsZXIgPSAoaGFuZGxlciBhcyB1bmtub3duIGFzIHsgZGVmYXVsdDogTWVyZ2VQbHVnaW48dW5rbm93bj4gfSlcblx0XHRcdFx0LmRlZmF1bHQ7XG5cdFx0fVxuXHR9IGNhdGNoIChlcnIpIHtcblx0XHRjb25zb2xlLmVycm9yKGVycik7XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG5cblx0cmV0dXJuIGhhbmRsZXIgYXMgTWVyZ2VQbHVnaW48VD47XG59XG4iXSwibmFtZXMiOlsiZXhpc3RzU3luYyIsInJlc29sdmUiLCJkZWZhdWx0RXh0ZW5zaW9uTWFwIiwibG9hZFBsdWdpbiIsIm1lcmdlQ29uZmlnIiwiY29uZmlnRGlyIiwicGx1Z2luIiwic3RhcnRzV2l0aCIsImRlZmF1bHRIYW5kbGVyIiwiT2JqZWN0IiwidmFsdWVzIiwiZmluZCIsImVsIiwiYnVpbHRpbk5hbWUiLCJFcnJvciIsImhhbmRsZXIiLCJsb2NhbFBhdGgiLCJpbXBvcnRQYXRoIiwicHJvY2VzcyIsImVudiIsIkpFU1RfV09SS0VSX0lEIiwidW5kZWZpbmVkIiwicmVxdWlyZSIsIm1lcmdlIiwiZGVmYXVsdCIsImVyciIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsVUFBVSxRQUFRLEtBQUs7QUFDaEMsU0FBU0MsT0FBTyxRQUFRLE9BQU87QUFDL0IsU0FBU0MsbUJBQW1CLFFBQVEsc0JBQVk7QUFHaEQ7Ozs7OztDQU1DLEdBQ0QsT0FBTyxlQUFlQyxXQUNyQkMsV0FBMkIsRUFDM0JDLFNBQWlCO0lBRWpCLElBQUlELFlBQVlFLE1BQU0sQ0FBQ0MsVUFBVSxDQUFDLE1BQU07UUFDdkMsTUFBTUMsaUJBQWlCQyxPQUFPQyxNQUFNLENBQUNSLHFCQUFxQlMsSUFBSSxDQUM3RCxDQUFDQyxLQUFPQSxHQUFHQyxXQUFXLEtBQUtULFlBQVlFLE1BQU07UUFFOUMsSUFBSSxDQUFDRSxnQkFBZ0I7WUFDcEIsTUFBTSxJQUFJTSxNQUNULENBQUMsdUNBQXVDLEVBQUVWLFlBQVlFLE1BQU0sQ0FBQywyREFBMkQsQ0FBQztRQUUzSDtRQUNBLE9BQU9FO0lBQ1I7SUFFQSxJQUFJTztJQUNKLDBDQUEwQztJQUMxQyxNQUFNQyxZQUFZZixRQUFRSSxXQUFXRCxZQUFZRSxNQUFNO0lBQ3ZELE1BQU1XLGFBQWFqQixXQUFXZ0IsYUFBYUEsWUFBWVosWUFBWUUsTUFBTTtJQUN6RSxJQUFJO1FBQ0gsNERBQTREO1FBQzVELElBQUlZLFFBQVFDLEdBQUcsQ0FBQ0MsY0FBYyxLQUFLQyxXQUFXO1lBQzdDLDhEQUE4RDtZQUM5RE4sVUFBVU8sUUFBUUw7UUFDbkIsT0FBTztZQUNORixVQUFXLE1BQU0sTUFBTSxDQUFDRTtRQUN6QjtRQUNBLElBQUksQ0FBQ0YsUUFBUVEsS0FBSyxFQUFFO1lBQ25CUixVQUFVLEFBQUNBLFFBQ1RTLE9BQU87UUFDVjtJQUNELEVBQUUsT0FBT0MsS0FBSztRQUNiQyxRQUFRQyxLQUFLLENBQUNGO1FBQ2QsTUFBTUE7SUFDUDtJQUVBLE9BQU9WO0FBQ1IifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { readdirSync } from "fs";
|
|
2
|
+
import { some } from "micromatch";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
export function invertMatchPatterns(patterns) {
|
|
5
|
+
return patterns.map((pattern)=>{
|
|
6
|
+
if (pattern.startsWith("!")) {
|
|
7
|
+
return pattern.slice(1);
|
|
8
|
+
}
|
|
9
|
+
return `!${pattern}`;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Gets all the files in the directory recursively while avoiding any micromatch patterns
|
|
14
|
+
* that would match for ignoring
|
|
15
|
+
*
|
|
16
|
+
* @param dir
|
|
17
|
+
* @param ignorePatterns
|
|
18
|
+
* @returns
|
|
19
|
+
*/ export function getAllFilesInDir(dir, ignorePatterns) {
|
|
20
|
+
return recurseDirsForFiles(dir, ignorePatterns);
|
|
21
|
+
}
|
|
22
|
+
function recurseDirsForFiles(dirpath, ignorePatterns, relativeRoot = "") {
|
|
23
|
+
return readdirSync(dirpath, {
|
|
24
|
+
withFileTypes: true
|
|
25
|
+
}).reduce((files, f)=>{
|
|
26
|
+
const relPath = join(relativeRoot, f.name);
|
|
27
|
+
if (some(relPath, ignorePatterns)) {
|
|
28
|
+
return files;
|
|
29
|
+
}
|
|
30
|
+
// Ensure we aren't ignoring these folders explicitly
|
|
31
|
+
if (f.isDirectory()) {
|
|
32
|
+
files.push(...recurseDirsForFiles(join(dirpath, f.name), ignorePatterns, relPath));
|
|
33
|
+
} else {
|
|
34
|
+
files.push(relPath);
|
|
35
|
+
}
|
|
36
|
+
return files;
|
|
37
|
+
}, []);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkZGlyU3luYyB9IGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgc29tZSB9IGZyb20gXCJtaWNyb21hdGNoXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGludmVydE1hdGNoUGF0dGVybnMocGF0dGVybnM6IHN0cmluZ1tdKSB7XG5cdHJldHVybiBwYXR0ZXJucy5tYXAoKHBhdHRlcm4pID0+IHtcblx0XHRpZiAocGF0dGVybi5zdGFydHNXaXRoKFwiIVwiKSkge1xuXHRcdFx0cmV0dXJuIHBhdHRlcm4uc2xpY2UoMSk7XG5cdFx0fVxuXHRcdHJldHVybiBgISR7cGF0dGVybn1gO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBHZXRzIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSByZWN1cnNpdmVseSB3aGlsZSBhdm9pZGluZyBhbnkgbWljcm9tYXRjaCBwYXR0ZXJuc1xuICogdGhhdCB3b3VsZCBtYXRjaCBmb3IgaWdub3JpbmdcbiAqXG4gKiBAcGFyYW0gZGlyXG4gKiBAcGFyYW0gaWdub3JlUGF0dGVybnNcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxGaWxlc0luRGlyKFxuXHRkaXI6IHN0cmluZyxcblx0aWdub3JlUGF0dGVybnM6IHN0cmluZ1tdLFxuKTogc3RyaW5nW10ge1xuXHRyZXR1cm4gcmVjdXJzZURpcnNGb3JGaWxlcyhkaXIsIGlnbm9yZVBhdHRlcm5zKTtcbn1cblxuZnVuY3Rpb24gcmVjdXJzZURpcnNGb3JGaWxlcyhcblx0ZGlycGF0aDogc3RyaW5nLFxuXHRpZ25vcmVQYXR0ZXJuczogc3RyaW5nW10sXG5cdHJlbGF0aXZlUm9vdCA9IFwiXCIsXG4pOiBzdHJpbmdbXSB7XG5cdHJldHVybiByZWFkZGlyU3luYyhkaXJwYXRoLCB7XG5cdFx0d2l0aEZpbGVUeXBlczogdHJ1ZSxcblx0fSkucmVkdWNlKChmaWxlcywgZikgPT4ge1xuXHRcdGNvbnN0IHJlbFBhdGggPSBqb2luKHJlbGF0aXZlUm9vdCwgZi5uYW1lKTtcblx0XHRpZiAoc29tZShyZWxQYXRoLCBpZ25vcmVQYXR0ZXJucykpIHtcblx0XHRcdHJldHVybiBmaWxlcztcblx0XHR9XG5cblx0XHQvLyBFbnN1cmUgd2UgYXJlbid0IGlnbm9yaW5nIHRoZXNlIGZvbGRlcnMgZXhwbGljaXRseVxuXHRcdGlmIChmLmlzRGlyZWN0b3J5KCkpIHtcblx0XHRcdGZpbGVzLnB1c2goXG5cdFx0XHRcdC4uLnJlY3Vyc2VEaXJzRm9yRmlsZXMoam9pbihkaXJwYXRoLCBmLm5hbWUpLCBpZ25vcmVQYXR0ZXJucywgcmVsUGF0aCksXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWxlcy5wdXNoKHJlbFBhdGgpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmlsZXM7XG5cdH0sIFtdIGFzIHN0cmluZ1tdKTtcbn1cbiJdLCJuYW1lcyI6WyJyZWFkZGlyU3luYyIsInNvbWUiLCJqb2luIiwiaW52ZXJ0TWF0Y2hQYXR0ZXJucyIsInBhdHRlcm5zIiwibWFwIiwicGF0dGVybiIsInN0YXJ0c1dpdGgiLCJzbGljZSIsImdldEFsbEZpbGVzSW5EaXIiLCJkaXIiLCJpZ25vcmVQYXR0ZXJucyIsInJlY3Vyc2VEaXJzRm9yRmlsZXMiLCJkaXJwYXRoIiwicmVsYXRpdmVSb290Iiwid2l0aEZpbGVUeXBlcyIsInJlZHVjZSIsImZpbGVzIiwiZiIsInJlbFBhdGgiLCJuYW1lIiwiaXNEaXJlY3RvcnkiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxXQUFXLFFBQVEsS0FBSztBQUNqQyxTQUFTQyxJQUFJLFFBQVEsYUFBYTtBQUNsQyxTQUFTQyxJQUFJLFFBQVEsT0FBTztBQUU1QixPQUFPLFNBQVNDLG9CQUFvQkMsUUFBa0I7SUFDckQsT0FBT0EsU0FBU0MsR0FBRyxDQUFDLENBQUNDO1FBQ3BCLElBQUlBLFFBQVFDLFVBQVUsQ0FBQyxNQUFNO1lBQzVCLE9BQU9ELFFBQVFFLEtBQUssQ0FBQztRQUN0QjtRQUNBLE9BQU8sQ0FBQyxDQUFDLEVBQUVGLFNBQVM7SUFDckI7QUFDRDtBQUVBOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNHLGlCQUNmQyxHQUFXLEVBQ1hDLGNBQXdCO0lBRXhCLE9BQU9DLG9CQUFvQkYsS0FBS0M7QUFDakM7QUFFQSxTQUFTQyxvQkFDUkMsT0FBZSxFQUNmRixjQUF3QixFQUN4QkcsZUFBZSxFQUFFO0lBRWpCLE9BQU9kLFlBQVlhLFNBQVM7UUFDM0JFLGVBQWU7SUFDaEIsR0FBR0MsTUFBTSxDQUFDLENBQUNDLE9BQU9DO1FBQ2pCLE1BQU1DLFVBQVVqQixLQUFLWSxjQUFjSSxFQUFFRSxJQUFJO1FBQ3pDLElBQUluQixLQUFLa0IsU0FBU1IsaUJBQWlCO1lBQ2xDLE9BQU9NO1FBQ1I7UUFFQSxxREFBcUQ7UUFDckQsSUFBSUMsRUFBRUcsV0FBVyxJQUFJO1lBQ3BCSixNQUFNSyxJQUFJLElBQ05WLG9CQUFvQlYsS0FBS1csU0FBU0ssRUFBRUUsSUFBSSxHQUFHVCxnQkFBZ0JRO1FBRWhFLE9BQU87WUFDTkYsTUFBTUssSUFBSSxDQUFDSDtRQUNaO1FBQ0EsT0FBT0Y7SUFDUixHQUFHLEVBQUU7QUFDTiJ9
|