github-settings-as-code 3.1.0 → 4.0.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 +61 -39
- package/dist/cmd/repo-settings.mjs +17 -2
- package/dist/cmd/repo-settings.mjs.map +1 -1
- package/dist/github/actions-settings/apply.d.mts.map +1 -1
- package/dist/github/actions-settings/apply.mjs +0 -4
- package/dist/github/actions-settings/apply.mjs.map +1 -1
- package/dist/github/actions-settings/backup.d.mts +1 -1
- package/dist/github/actions-settings/backup.d.mts.map +1 -1
- package/dist/github/actions-settings/backup.mjs +4 -4
- package/dist/github/actions-settings/backup.mjs.map +1 -1
- package/dist/github/actions-settings/constants.d.mts +1 -1
- package/dist/github/clear-json-files.d.mts +17 -0
- package/dist/github/clear-json-files.d.mts.map +1 -0
- package/dist/github/clear-json-files.mjs +29 -0
- package/dist/github/clear-json-files.mjs.map +1 -0
- package/dist/github/constants.d.mts +3 -0
- package/dist/github/constants.d.mts.map +1 -1
- package/dist/github/constants.mjs +3 -0
- package/dist/github/constants.mjs.map +1 -1
- package/dist/github/environments/api/get-environments.d.mts +16 -0
- package/dist/github/environments/api/get-environments.d.mts.map +1 -0
- package/dist/github/environments/api/get-environments.mjs +98 -0
- package/dist/github/environments/api/get-environments.mjs.map +1 -0
- package/dist/github/environments/api/index.d.mts +3 -0
- package/dist/github/environments/api/index.d.mts.map +1 -0
- package/dist/github/environments/api/index.mjs +3 -0
- package/dist/github/environments/api/index.mjs.map +1 -0
- package/dist/github/environments/api/set-environment.d.mts +10 -0
- package/dist/github/environments/api/set-environment.d.mts.map +1 -0
- package/dist/github/environments/api/set-environment.mjs +73 -0
- package/dist/github/environments/api/set-environment.mjs.map +1 -0
- package/dist/github/environments/apply.d.mts +11 -0
- package/dist/github/environments/apply.d.mts.map +1 -0
- package/dist/github/environments/apply.mjs +63 -0
- package/dist/github/environments/apply.mjs.map +1 -0
- package/dist/github/environments/backup.d.mts +10 -0
- package/dist/github/environments/backup.d.mts.map +1 -0
- package/dist/github/environments/backup.mjs +30 -0
- package/dist/github/environments/backup.mjs.map +1 -0
- package/dist/github/environments/constants.d.mts +354 -0
- package/dist/github/environments/constants.d.mts.map +1 -0
- package/dist/github/environments/constants.mjs +62 -0
- package/dist/github/environments/constants.mjs.map +1 -0
- package/dist/github/environments/index.d.mts +6 -0
- package/dist/github/environments/index.d.mts.map +1 -0
- package/dist/github/environments/index.mjs +6 -0
- package/dist/github/environments/index.mjs.map +1 -0
- package/dist/github/environments/read-environment-contents.d.mts +3 -0
- package/dist/github/environments/read-environment-contents.d.mts.map +1 -0
- package/dist/github/environments/read-environment-contents.mjs +31 -0
- package/dist/github/environments/read-environment-contents.mjs.map +1 -0
- package/dist/github/index.d.mts +4 -0
- package/dist/github/index.d.mts.map +1 -1
- package/dist/github/index.mjs +4 -0
- package/dist/github/index.mjs.map +1 -1
- package/dist/github/pages/apply.d.mts.map +1 -1
- package/dist/github/pages/apply.mjs +0 -2
- package/dist/github/pages/apply.mjs.map +1 -1
- package/dist/github/pages/backup.d.mts +11 -1
- package/dist/github/pages/backup.d.mts.map +1 -1
- package/dist/github/pages/backup.mjs +18 -5
- package/dist/github/pages/backup.mjs.map +1 -1
- package/dist/github/repository/apply.d.mts.map +1 -1
- package/dist/github/repository/apply.mjs +0 -4
- package/dist/github/repository/apply.mjs.map +1 -1
- package/dist/github/repository/backup.d.mts.map +1 -1
- package/dist/github/repository/backup.mjs +4 -4
- package/dist/github/repository/backup.mjs.map +1 -1
- package/dist/github/ruleset/apply.d.mts.map +1 -1
- package/dist/github/ruleset/apply.mjs +9 -9
- package/dist/github/ruleset/apply.mjs.map +1 -1
- package/dist/github/ruleset/backup.d.mts +7 -0
- package/dist/github/ruleset/backup.d.mts.map +1 -1
- package/dist/github/ruleset/backup.mjs +20 -7
- package/dist/github/ruleset/backup.mjs.map +1 -1
- package/dist/github/ruleset/read-rule-set-contents.d.mts +0 -1
- package/dist/github/ruleset/read-rule-set-contents.d.mts.map +1 -1
- package/dist/github/ruleset/read-rule-set-contents.mjs +0 -1
- package/dist/github/ruleset/read-rule-set-contents.mjs.map +1 -1
- package/dist/github/settings-file-path.d.mts +14 -0
- package/dist/github/settings-file-path.d.mts.map +1 -0
- package/dist/github/settings-file-path.mjs +41 -0
- package/dist/github/settings-file-path.mjs.map +1 -0
- package/dist/github/variables/api/list-repo-variables.d.mts.map +1 -1
- package/dist/github/variables/api/list-repo-variables.mjs +3 -1
- package/dist/github/variables/api/list-repo-variables.mjs.map +1 -1
- package/dist/github/variables/apply.d.mts +9 -0
- package/dist/github/variables/apply.d.mts.map +1 -1
- package/dist/github/variables/apply.mjs +31 -17
- package/dist/github/variables/apply.mjs.map +1 -1
- package/dist/github/variables/backup.d.mts +20 -0
- package/dist/github/variables/backup.d.mts.map +1 -0
- package/dist/github/variables/backup.mjs +35 -0
- package/dist/github/variables/backup.mjs.map +1 -0
- package/dist/github/variables/constants.d.mts +65 -0
- package/dist/github/variables/constants.d.mts.map +1 -0
- package/dist/github/variables/constants.mjs +48 -0
- package/dist/github/variables/constants.mjs.map +1 -0
- package/dist/github/variables/index.d.mts +2 -0
- package/dist/github/variables/index.d.mts.map +1 -1
- package/dist/github/variables/index.mjs +2 -0
- package/dist/github/variables/index.mjs.map +1 -1
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts +10 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs +25 -0
- package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/api/index.d.mts +3 -0
- package/dist/github/vulnerability-alerts/api/index.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/index.mjs +3 -0
- package/dist/github/vulnerability-alerts/api/index.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts +10 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs +19 -0
- package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/apply.d.mts +11 -0
- package/dist/github/vulnerability-alerts/apply.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/apply.mjs +45 -0
- package/dist/github/vulnerability-alerts/apply.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/backup.d.mts +5 -0
- package/dist/github/vulnerability-alerts/backup.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/backup.mjs +22 -0
- package/dist/github/vulnerability-alerts/backup.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/constants.d.mts +72 -0
- package/dist/github/vulnerability-alerts/constants.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/constants.mjs +21 -0
- package/dist/github/vulnerability-alerts/constants.mjs.map +1 -0
- package/dist/github/vulnerability-alerts/index.d.mts +5 -0
- package/dist/github/vulnerability-alerts/index.d.mts.map +1 -0
- package/dist/github/vulnerability-alerts/index.mjs +5 -0
- package/dist/github/vulnerability-alerts/index.mjs.map +1 -0
- package/package.json +29 -28
- package/src/cmd/repo-settings.mts +22 -2
- package/src/github/actions-settings/apply.mts +0 -9
- package/src/github/actions-settings/backup.mts +6 -11
- package/src/github/actions-settings/constants.mts +1 -1
- package/src/github/clear-json-files.mts +31 -0
- package/src/github/clear-json-files.test.mts +78 -0
- package/src/github/constants.mts +9 -0
- package/src/github/environments/api/get-environments.mts +155 -0
- package/src/github/environments/api/index.mts +2 -0
- package/src/github/environments/api/set-environment.mts +106 -0
- package/src/github/environments/apply.mts +82 -0
- package/src/github/environments/backup.mts +39 -0
- package/src/github/environments/constants.mts +78 -0
- package/src/github/environments/index.mts +5 -0
- package/src/github/environments/read-environment-contents.mts +49 -0
- package/src/github/index.mts +4 -0
- package/src/github/pages/apply.mts +0 -6
- package/src/github/pages/backup.mts +21 -12
- package/src/github/repository/apply.mts +0 -9
- package/src/github/repository/backup.mts +5 -10
- package/src/github/ruleset/apply.mts +10 -18
- package/src/github/ruleset/backup.mts +23 -13
- package/src/github/ruleset/read-rule-set-contents.mts +0 -4
- package/src/github/ruleset/schema.test.mts +0 -13
- package/src/github/settings-file-path.mts +51 -0
- package/src/github/settings-file-path.test.mts +70 -0
- package/src/github/variables/api/list-repo-variables.mts +3 -1
- package/src/github/variables/apply.mts +54 -27
- package/src/github/variables/backup.mts +47 -0
- package/src/github/variables/constants.mts +61 -0
- package/src/github/variables/constants.test.mts +110 -0
- package/src/github/variables/index.mts +2 -0
- package/src/github/vulnerability-alerts/api/get-vulnerability-alerts.mts +31 -0
- package/src/github/vulnerability-alerts/api/index.mts +2 -0
- package/src/github/vulnerability-alerts/api/set-vulnerability-alerts.mts +31 -0
- package/src/github/vulnerability-alerts/apply.mts +71 -0
- package/src/github/vulnerability-alerts/backup.mts +31 -0
- package/src/github/vulnerability-alerts/constants.mts +25 -0
- package/src/github/vulnerability-alerts/index.mts +4 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as fs from 'node:fs/promises';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import * as t from 'ts-fortress';
|
|
4
|
+
import { isDirectlyExecuted, Result } from 'ts-repo-utils';
|
|
5
|
+
import { environmentsDir } from '../constants.mjs';
|
|
6
|
+
import { EnvironmentSettings } from './constants.mjs';
|
|
7
|
+
export const readEnvironmentFiles = async () => readFilesIn(environmentsDir);
|
|
8
|
+
const readFilesIn = async (dir) => {
|
|
9
|
+
|
|
10
|
+
const files = await fs.readdir(dir, {
|
|
11
|
+
withFileTypes: true,
|
|
12
|
+
});
|
|
13
|
+
const fileContents = await Promise.all(files
|
|
14
|
+
.filter((d) => d.isFile())
|
|
15
|
+
.map((d) =>
|
|
16
|
+
|
|
17
|
+
fs.readFile(path.resolve(dir, d.name), { encoding: 'utf8' })));
|
|
18
|
+
const validationResults = fileContents.map((content) => EnvironmentSettings.validate(JSON.parse(content)));
|
|
19
|
+
const mut_values = [];
|
|
20
|
+
for (const r of validationResults) {
|
|
21
|
+
if (Result.isErr(r)) {
|
|
22
|
+
throw new Error(t.validationErrorsToMessages(r.value).join('\n'));
|
|
23
|
+
}
|
|
24
|
+
mut_values.push(r.value);
|
|
25
|
+
}
|
|
26
|
+
return mut_values;
|
|
27
|
+
};
|
|
28
|
+
if (isDirectlyExecuted(import.meta.url)) {
|
|
29
|
+
await readEnvironmentFiles();
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=read-environment-contents.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-environment-contents.mjs","sourceRoot":"","sources":["../../../src/github/environments/read-environment-contents.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAEvC,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;AAElC,MAAM,WAAW,GAAG,KAAK,EACvB,GAAW,EAC8B,EAAE;IAC3C,mEAAmE;IACnE,MAAM,KAAK,GAA8B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7D,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAsB,MAAM,OAAO,CAAC,GAAG,CACvD,KAAK;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IACT,mEAAmE;IACnE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAC7D,CACJ,CAAC;IAEF,MAAM,iBAAiB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACrD,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAClD,CAAC;IAEF,MAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,oBAAoB,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/github/index.d.mts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export * from './actions-settings/index.mjs';
|
|
2
|
+
export * from './clear-json-files.mjs';
|
|
2
3
|
export * from './constants.mjs';
|
|
4
|
+
export * from './environments/index.mjs';
|
|
3
5
|
export * from './pages/index.mjs';
|
|
4
6
|
export * from './repository/index.mjs';
|
|
5
7
|
export * from './resolve-target-repo.mjs';
|
|
6
8
|
export * from './ruleset/index.mjs';
|
|
9
|
+
export * from './settings-file-path.mjs';
|
|
7
10
|
export * from './variables/index.mjs';
|
|
11
|
+
export * from './vulnerability-alerts/index.mjs';
|
|
8
12
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/github/index.mts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/github/index.mts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC"}
|
package/dist/github/index.mjs
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export * from './actions-settings/index.mjs';
|
|
2
|
+
export * from './clear-json-files.mjs';
|
|
2
3
|
export * from './constants.mjs';
|
|
4
|
+
export * from './environments/index.mjs';
|
|
3
5
|
export * from './pages/index.mjs';
|
|
4
6
|
export * from './repository/index.mjs';
|
|
5
7
|
export * from './resolve-target-repo.mjs';
|
|
6
8
|
export * from './ruleset/index.mjs';
|
|
9
|
+
export * from './settings-file-path.mjs';
|
|
7
10
|
export * from './variables/index.mjs';
|
|
11
|
+
export * from './vulnerability-alerts/index.mjs';
|
|
8
12
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/github/index.mts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/github/index.mts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kCAAkC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/pages/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAcvB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/pages/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAcvB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CA0BvD,CAAC"}
|
|
@@ -29,8 +29,6 @@ export const applyPagesSettings = async () => {
|
|
|
29
29
|
const str = JSON.stringify(applied, undefined, 2);
|
|
30
30
|
|
|
31
31
|
await fs.writeFile(settingsPath, str);
|
|
32
|
-
|
|
33
|
-
await fs.writeFile(path.resolve(pagesSettingsDir, 'bk', settingsJsonName), str);
|
|
34
32
|
await formatUncommittedFiles();
|
|
35
33
|
}
|
|
36
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/pages/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAEtE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,CAAC;QACC,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAEzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAElD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAEtC,
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/pages/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,UAAU,EACV,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAEtE,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAEjC,0BAA0B;IAC1B,CAAC;QACC,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAEzC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAElD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAEtC,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EAAE,YAAoB,EAA0B,EAAE;IAC1E,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE3E,MAAM,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAE1E,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,CAAC,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,kBAAkB,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Settings > Pages の現在値を宣言ファイルへ撮り直す。
|
|
5
|
+
*
|
|
6
|
+
* **Pages が無効なら宣言も消える。** 他のターゲットと同じ規則にしてある — 撮り
|
|
7
|
+
* 直したあとに在るものが live から取れたものそのもの、という性質を、ここだけ
|
|
8
|
+
* 崩さない。無効になったことが `git status` に削除として出る。
|
|
9
|
+
*
|
|
10
|
+
* 無効化と読み取り失敗を区別できないという弱点は残るが、`getPagesSettings` が
|
|
11
|
+
* `undefined` を返すのは 404 のときだけで、それ以外の失敗は例外になる。消えた
|
|
12
|
+
* 宣言はコミットしなければ失われない。
|
|
13
|
+
*/
|
|
4
14
|
export declare const backupPagesSettings: (fmt?: boolean) => Promise<void>;
|
|
5
15
|
//# sourceMappingURL=backup.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/pages/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/pages/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAQvB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,SACzB,OAAO,KACX,OAAO,CAAC,IAAI,CA0Bd,CAAC"}
|
|
@@ -2,20 +2,33 @@
|
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
|
-
import { formatUncommittedFiles, isDirectlyExecuted
|
|
5
|
+
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
6
|
+
import { clearJsonFilesIn } from '../clear-json-files.mjs';
|
|
6
7
|
import { pagesSettingsDir, settingsJsonName } from '../constants.mjs';
|
|
7
8
|
import { getPagesSettings } from './api/index.mjs';
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
9
19
|
|
|
10
20
|
export const backupPagesSettings = async (fmt = true) => {
|
|
11
|
-
await makeEmptyDir(backupDir);
|
|
12
21
|
const settings = await getPagesSettings();
|
|
22
|
+
await clearJsonFilesIn(pagesSettingsDir);
|
|
13
23
|
if (settings === undefined) {
|
|
14
|
-
console.warn('GitHub Pages is not enabled for this repository;
|
|
24
|
+
console.warn('GitHub Pages is not enabled for this repository; the declaration was removed.');
|
|
25
|
+
if (fmt) {
|
|
26
|
+
await formatUncommittedFiles();
|
|
27
|
+
}
|
|
15
28
|
return;
|
|
16
29
|
}
|
|
17
30
|
|
|
18
|
-
await fs.writeFile(path.resolve(
|
|
31
|
+
await fs.writeFile(path.resolve(pagesSettingsDir, settingsJsonName), JSON.stringify(settings, undefined, 2));
|
|
19
32
|
if (fmt) {
|
|
20
33
|
await formatUncommittedFiles();
|
|
21
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/pages/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/pages/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAG,GAAY,IAAI,EACJ,EAAE;IACjB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE1C,MAAM,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAEzC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;QAEF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,sBAAsB,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;IACT,CAAC;IAED,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,EAChD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CACvC,CAAC;IAEF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,mBAAmB,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/repository/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/repository/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAoBvB,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAoD5D,CAAC"}
|
|
@@ -7,10 +7,8 @@ import * as t from 'ts-fortress';
|
|
|
7
7
|
import { formatUncommittedFiles, isDirectlyExecuted, Result, } from 'ts-repo-utils';
|
|
8
8
|
import { repositorySettingsDir, settingsJsonName } from '../constants.mjs';
|
|
9
9
|
import { getRepositorySettings, updateRepository } from './api/index.mjs';
|
|
10
|
-
import { backupRepositorySettings } from './backup.mjs';
|
|
11
10
|
import { repositoryKeysToPick, RepositoryPicked, } from './constants.mjs';
|
|
12
11
|
export const applyRepositorySettings = async () => {
|
|
13
|
-
await backupRepositorySettings(false);
|
|
14
12
|
const settings = await readSettings();
|
|
15
13
|
await updateRepository({
|
|
16
14
|
payload: {
|
|
@@ -48,8 +46,6 @@ export const applyRepositorySettings = async () => {
|
|
|
48
46
|
const str = JSON.stringify(Obj.pick(repositorySettings, repositoryKeysToPick), undefined, 2);
|
|
49
47
|
|
|
50
48
|
await fs.writeFile(path.resolve(repositorySettingsDir, settingsJsonName), str);
|
|
51
|
-
|
|
52
|
-
await fs.writeFile(path.resolve(repositorySettingsDir, 'bk', settingsJsonName), str);
|
|
53
49
|
await formatUncommittedFiles();
|
|
54
50
|
}
|
|
55
51
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/repository/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,GACP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/repository/apply.mts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/repository/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/repository/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAUvB,eAAO,MAAM,wBAAwB,SAC9B,OAAO,KACX,OAAO,CAAC,IAAI,CAkBd,CAAC"}
|
|
@@ -3,16 +3,16 @@ import 'dotenv/config';
|
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
4
|
import * as path from 'node:path';
|
|
5
5
|
import { Obj } from 'ts-data-forge';
|
|
6
|
-
import { formatUncommittedFiles, isDirectlyExecuted
|
|
6
|
+
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
7
|
+
import { clearJsonFilesIn } from '../clear-json-files.mjs';
|
|
7
8
|
import { repositorySettingsDir, settingsJsonName } from '../constants.mjs';
|
|
8
9
|
import { getRepositorySettings } from './api/index.mjs';
|
|
9
10
|
import { repositoryKeysToPick } from './constants.mjs';
|
|
10
|
-
const backupDir = path.resolve(repositorySettingsDir, './bk');
|
|
11
11
|
export const backupRepositorySettings = async (fmt = true) => {
|
|
12
|
-
await makeEmptyDir(backupDir);
|
|
13
12
|
const repositorySettings = await getRepositorySettings();
|
|
13
|
+
await clearJsonFilesIn(repositorySettingsDir);
|
|
14
14
|
|
|
15
|
-
await fs.writeFile(path.resolve(
|
|
15
|
+
await fs.writeFile(path.resolve(repositorySettingsDir, settingsJsonName), JSON.stringify(Obj.pick(repositorySettings, repositoryKeysToPick), undefined, 2));
|
|
16
16
|
if (fmt) {
|
|
17
17
|
await formatUncommittedFiles();
|
|
18
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/repository/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,
|
|
1
|
+
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/repository/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,GAAG,GAAY,IAAI,EACJ,EAAE;IACjB,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEzD,MAAM,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;IAE9C,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,EACrD,IAAI,CAAC,SAAS,CACZ,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EAClD,SAAS,EACT,CAAC,CACF,CACF,CAAC;IAEF,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,wBAAwB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAevB,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,CA6DlD,CAAC"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
4
|
import { Obj } from 'ts-data-forge';
|
|
6
5
|
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
7
6
|
import { rulesetsDir } from '../constants.mjs';
|
|
7
|
+
import { settingsFilePath } from '../settings-file-path.mjs';
|
|
8
8
|
import { createRuleset, getAllRulesets, getRuleset, updateRuleset, } from './api/index.mjs';
|
|
9
|
-
import { backupRulesets } from './backup.mjs';
|
|
10
9
|
import { rulesetKeysToPick } from './constants.mjs';
|
|
11
|
-
import {
|
|
10
|
+
import { readRulesetFiles } from './read-rule-set-contents.mjs';
|
|
12
11
|
export const applyRulesets = async () => {
|
|
13
|
-
await backupRulesets(false);
|
|
14
12
|
const rulesets = await readRulesetFiles();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
const existingIds = await getAllRulesets().then((rs) => new Set(rs.map((r) => r.id)));
|
|
17
|
+
const rulesetsToUpdate = rulesets.filter((r) => existingIds.has(r.id));
|
|
18
|
+
const rulesetsToCreate = rulesets.filter((r) => !existingIds.has(r.id));
|
|
18
19
|
for (const ruleset of rulesetsToUpdate) {
|
|
19
20
|
await updateRuleset({
|
|
20
21
|
rulesetId: ruleset.id,
|
|
@@ -47,9 +48,8 @@ export const applyRulesets = async () => {
|
|
|
47
48
|
const content = await getRuleset(rule.id);
|
|
48
49
|
const str = JSON.stringify(Obj.pick(content, rulesetKeysToPick), undefined, 2);
|
|
49
50
|
|
|
50
|
-
await fs.writeFile(path.resolve(rulesetsDir, `${rule.name}.json`), str);
|
|
51
51
|
|
|
52
|
-
await fs.writeFile(
|
|
52
|
+
await fs.writeFile(settingsFilePath(rulesetsDir, rule.name), str);
|
|
53
53
|
}
|
|
54
54
|
await formatUncommittedFiles();
|
|
55
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/apply.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
|
+
/**
|
|
4
|
+
* ruleset の現在値を宣言ファイルへ撮り直す。
|
|
5
|
+
*
|
|
6
|
+
* 先に直下の `*.json` を消してから書くので、撮り直したあとにそこに在るものが
|
|
7
|
+
* live から取れたものそのものになる。取れなかった ruleset は `git status` に
|
|
8
|
+
* 削除として現れる。理由は {@link clearJsonFilesIn} を参照。
|
|
9
|
+
*/
|
|
3
10
|
export declare const backupRulesets: (fmt?: boolean) => Promise<void>;
|
|
4
11
|
//# sourceMappingURL=backup.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"backup.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAUvB;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,SAAe,OAAO,KAAU,OAAO,CAAC,IAAI,CA0BtE,CAAC"}
|
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
import * as fs from 'node:fs/promises';
|
|
4
|
-
import * as path from 'node:path';
|
|
5
4
|
import { Obj } from 'ts-data-forge';
|
|
6
|
-
import { formatUncommittedFiles, isDirectlyExecuted
|
|
5
|
+
import { formatUncommittedFiles, isDirectlyExecuted } from 'ts-repo-utils';
|
|
6
|
+
import { clearJsonFilesIn } from '../clear-json-files.mjs';
|
|
7
7
|
import { rulesetsDir } from '../constants.mjs';
|
|
8
|
+
import { settingsFilePath } from '../settings-file-path.mjs';
|
|
8
9
|
import { getAllRulesets, getRuleset } from './api/index.mjs';
|
|
9
10
|
import { rulesetKeysToPick } from './constants.mjs';
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
11
18
|
export const backupRulesets = async (fmt = true) => {
|
|
12
|
-
await makeEmptyDir(backupDir);
|
|
13
19
|
const rulesetsResult = await getAllRulesets();
|
|
14
|
-
for (const rule of rulesetsResult) {
|
|
15
|
-
const content = await getRuleset(rule.id);
|
|
16
20
|
|
|
17
|
-
|
|
21
|
+
|
|
22
|
+
const contents = await Promise.all(rulesetsResult.map(async (rule) => ({
|
|
23
|
+
name: rule.name,
|
|
24
|
+
content: await getRuleset(rule.id),
|
|
25
|
+
})));
|
|
26
|
+
await clearJsonFilesIn(rulesetsDir);
|
|
27
|
+
for (const { name, content } of contents) {
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
await fs.writeFile(settingsFilePath(rulesetsDir, name), JSON.stringify(Obj.pick(content, rulesetKeysToPick), undefined, 2));
|
|
18
31
|
}
|
|
19
32
|
if (fmt) {
|
|
20
33
|
await formatUncommittedFiles();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"backup.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/backup.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,GAAG,GAAY,IAAI,EAAiB,EAAE;IACzE,MAAM,cAAc,GAAG,MAAM,cAAc,EAAE,CAAC;IAE9C,sCAAsC;IACtC,mBAAmB;IACnB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,OAAO,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;KACnC,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEpC,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;QACzC,sDAAsD;QACtD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAChB,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CACnE,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { RulesetPicked } from './constants.mjs';
|
|
2
2
|
export declare const readRulesetFiles: () => Promise<readonly RulesetPicked[]>;
|
|
3
|
-
export declare const readRulesetBackupFiles: () => Promise<readonly RulesetPicked[]>;
|
|
4
3
|
//# sourceMappingURL=read-rule-set-contents.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-rule-set-contents.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/read-rule-set-contents.mts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,SAAS,aAAa,EAAE,CAChD,CAAC
|
|
1
|
+
{"version":3,"file":"read-rule-set-contents.d.mts","sourceRoot":"","sources":["../../../src/github/ruleset/read-rule-set-contents.mts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAAC,SAAS,aAAa,EAAE,CAChD,CAAC"}
|
|
@@ -5,7 +5,6 @@ import { isDirectlyExecuted, Result } from 'ts-repo-utils';
|
|
|
5
5
|
import { rulesetsDir } from '../constants.mjs';
|
|
6
6
|
import { RulesetPicked } from './constants.mjs';
|
|
7
7
|
export const readRulesetFiles = async () => readFilesIn(rulesetsDir);
|
|
8
|
-
export const readRulesetBackupFiles = async () => readFilesIn(path.resolve(rulesetsDir, './bk'));
|
|
9
8
|
const readFilesIn = async (dir) => {
|
|
10
9
|
|
|
11
10
|
const files = await fs.readdir(dir, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-rule-set-contents.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/read-rule-set-contents.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAuC,EAAE,CAC5E,WAAW,CAAC,WAAW,CAAC,CAAC;AAE3B,MAAM,
|
|
1
|
+
{"version":3,"file":"read-rule-set-contents.mjs","sourceRoot":"","sources":["../../../src/github/ruleset/read-rule-set-contents.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAuC,EAAE,CAC5E,WAAW,CAAC,WAAW,CAAC,CAAC;AAE3B,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAqC,EAAE;IAC3E,mEAAmE;IACnE,MAAM,KAAK,GAA8B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QAC7D,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAsB,MAAM,OAAO,CAAC,GAAG,CAC9D,KAAK;SACF,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IACT,mEAAmE;IACnE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;QACrC,QAAQ,EAAE,MAAM;KACjB,CAAC,CACH,CACJ,CAAC;IAEF,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACzD,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CACzC,CAAC;IAEF,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,gBAAgB,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dir` の直下の `<name>.json` を指すパスを返す。ファイル名にできない名前は
|
|
3
|
+
* 拒否する。
|
|
4
|
+
*
|
|
5
|
+
* environment 名と ruleset 名は GitHub API が返す素の文字列で、パス片として
|
|
6
|
+
* 使えることは何も保証していない。区切りを含む名前をそのまま結合すると、
|
|
7
|
+
* 書き込み先が `dir` の外 — GitHub の現在値と突き合わせる宣言ファイルが
|
|
8
|
+
* 置いてある場所 — へ出てしまう。
|
|
9
|
+
*
|
|
10
|
+
* 正規化ではなく拒否にしてあるのは、そういう名前が来たこと自体が異常の証拠だ
|
|
11
|
+
* からで、黙って書き換えると何が起きていたのかが分からなくなる。
|
|
12
|
+
*/
|
|
13
|
+
export declare const settingsFilePath: (dir: string, name: string) => string;
|
|
14
|
+
//# sourceMappingURL=settings-file-path.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-file-path.d.mts","sourceRoot":"","sources":["../../src/github/settings-file-path.mts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,QAAS,MAAM,QAAQ,MAAM,KAAG,MAsB5D,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
export const settingsFilePath = (dir, name) => {
|
|
15
|
+
if (!isUsableAsFileName(name)) {
|
|
16
|
+
throw new Error([
|
|
17
|
+
`ファイル名にできない名前です: ${JSON.stringify(name)}。`,
|
|
18
|
+
`${dir} の外へ書き込もうとしている可能性があります。`,
|
|
19
|
+
].join('\n'));
|
|
20
|
+
}
|
|
21
|
+
const resolvedDir = path.resolve(dir);
|
|
22
|
+
const resolved = path.resolve(resolvedDir, `${name}.json`);
|
|
23
|
+
|
|
24
|
+
if (!resolved.startsWith(resolvedDir + path.sep)) {
|
|
25
|
+
throw new Error(`書き込み先が ${resolvedDir} の外を指しています: ${resolved}`);
|
|
26
|
+
}
|
|
27
|
+
return resolved;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
const isUsableAsFileName = (name) => name !== '' &&
|
|
36
|
+
name !== '.' &&
|
|
37
|
+
name !== '..' &&
|
|
38
|
+
!name.includes('/') &&
|
|
39
|
+
!name.includes('\\') &&
|
|
40
|
+
!name.includes('\u{0}');
|
|
41
|
+
//# sourceMappingURL=settings-file-path.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-file-path.mjs","sourceRoot":"","sources":["../../src/github/settings-file-path.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,IAAY,EAAU,EAAE;IACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb;YACE,mBAAmB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG;YAC1C,GAAG,GAAG,yBAAyB;SAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAE3D,mCAAmC;IACnC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,eAAe,QAAQ,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAW,EAAE,CACnD,IAAI,KAAK,EAAE;IACX,IAAI,KAAK,GAAG;IACZ,IAAI,KAAK,IAAI;IACb,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;IACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACpB,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-repo-variables.d.mts","sourceRoot":"","sources":["../../../../src/github/variables/api/list-repo-variables.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAChD,YAAY,CACV;IACE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CACJ,
|
|
1
|
+
{"version":3,"file":"list-repo-variables.d.mts","sourceRoot":"","sources":["../../../../src/github/variables/api/list-repo-variables.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAChD,YAAY,CACV;IACE,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,EAAE,CACJ,CAeF,CAAC"}
|
|
@@ -7,6 +7,8 @@ export const listRepoVariables = async () => {
|
|
|
7
7
|
repo: REPO,
|
|
8
8
|
headers: octokitHeaders,
|
|
9
9
|
});
|
|
10
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
return result.data.variables.toSorted((a, b) => a.name.localeCompare(b.name));
|
|
11
13
|
};
|
|
12
14
|
//# sourceMappingURL=list-repo-variables.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-repo-variables.mjs","sourceRoot":"","sources":["../../../../src/github/variables/api/list-repo-variables.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IASpC,EAAE;IACF,oGAAoG;IACpG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,6CAAoE,EACpE;QACE,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;KACxB,CACF,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"list-repo-variables.mjs","sourceRoot":"","sources":["../../../../src/github/variables/api/list-repo-variables.mts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,IASpC,EAAE;IACF,oGAAoG;IACpG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,6CAAoE,EACpE;QACE,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;KACxB,CACF,CAAC;IAEF,oDAAoD;IACpD,qCAAqC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChF,CAAC,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
|
+
/**
|
|
4
|
+
* `repo-settings/variables/settings.json` を Settings > Secrets and variables >
|
|
5
|
+
* Actions > Variables に反映する。
|
|
6
|
+
*
|
|
7
|
+
* ruleset や environment と同じく、**宣言に無い変数は消さない。** 消したい
|
|
8
|
+
* ときは宣言から外したうえで GitHub 側でも消す。 apply が片付けてしまうと、
|
|
9
|
+
* 誰かが GUI で足したものが「いつの間にか無くなる」ことになり、drift 検査が
|
|
10
|
+
* 報せるという見え方が働かなくなる。
|
|
11
|
+
*/
|
|
3
12
|
export declare const applyVariables: () => Promise<void>;
|
|
4
13
|
//# sourceMappingURL=apply.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAgBvB;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,IAAI,CAqBnD,CAAC"}
|
|
@@ -1,31 +1,45 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
2
|
import 'dotenv/config';
|
|
4
|
-
import
|
|
3
|
+
import * as fs from 'node:fs/promises';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import * as t from 'ts-fortress';
|
|
6
|
+
import { isDirectlyExecuted, Result } from 'ts-repo-utils';
|
|
7
|
+
import { settingsJsonName, variablesDir } from '../constants.mjs';
|
|
5
8
|
import { createRepoVariable, listRepoVariables, updateRepoVariable, } from './api/index.mjs';
|
|
9
|
+
import { assertVariableNamesAreValid, RepositoryVariables, } from './constants.mjs';
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
6
19
|
export const applyVariables = async () => {
|
|
7
|
-
const variables =
|
|
8
|
-
|
|
20
|
+
const variables = await readSettings();
|
|
21
|
+
|
|
22
|
+
assertVariableNamesAreValid(variables);
|
|
23
|
+
const existing = await listRepoVariables().then((vs) => new Set(vs.map((v) => v.name)));
|
|
24
|
+
for (const [name, value] of Object.entries(variables)) {
|
|
25
|
+
await (existing.has(name)
|
|
26
|
+
? updateRepoVariable({ name, value })
|
|
27
|
+
: createRepoVariable({ name, value }));
|
|
28
|
+
}
|
|
9
29
|
|
|
10
30
|
|
|
11
|
-
name: 'REPO_SETTINGS_BOT_CLIENT_ID',
|
|
12
|
-
value: 'Iv23ctr4Lq9H3wOYRQrD',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
31
|
|
|
16
32
|
|
|
17
33
|
|
|
34
|
+
};
|
|
35
|
+
const readSettings = async () => {
|
|
18
36
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const variableListSaved = await listRepoVariables();
|
|
24
|
-
const variablesSaved = new Set(variableListSaved.map((v) => v.name));
|
|
25
|
-
for (const variable of variables) {
|
|
26
|
-
const found = variablesSaved.has(variable.name);
|
|
27
|
-
await (found ? updateRepoVariable(variable) : createRepoVariable(variable));
|
|
37
|
+
const settingsText = await fs.readFile(path.resolve(variablesDir, settingsJsonName), { encoding: 'utf8' });
|
|
38
|
+
const validationResult = RepositoryVariables.validate(JSON.parse(settingsText));
|
|
39
|
+
if (Result.isErr(validationResult)) {
|
|
40
|
+
throw new Error(t.validationErrorsToMessages(validationResult.value).join('\n'));
|
|
28
41
|
}
|
|
42
|
+
return validationResult.value;
|
|
29
43
|
};
|
|
30
44
|
if (isDirectlyExecuted(import.meta.url)) {
|
|
31
45
|
await applyVariables();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;IAEvC,sBAAsB;IACtB,2BAA2B,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAwB,MAAM,iBAAiB,EAAE,CAAC,IAAI,CAClE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACvC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YACrC,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,iDAAiD;IACjD,gDAAgD;IAChD,sCAAsC;IACtC,4CAA4C;IAC5C,QAAQ;AACV,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,IAAkC,EAAE;IAC5D,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CACpC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAC5C,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;IAEF,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,CACnD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CACzB,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,CAAC,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC;AAChC,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
|