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.
Files changed (170) hide show
  1. package/README.md +61 -39
  2. package/dist/cmd/repo-settings.mjs +17 -2
  3. package/dist/cmd/repo-settings.mjs.map +1 -1
  4. package/dist/github/actions-settings/apply.d.mts.map +1 -1
  5. package/dist/github/actions-settings/apply.mjs +0 -4
  6. package/dist/github/actions-settings/apply.mjs.map +1 -1
  7. package/dist/github/actions-settings/backup.d.mts +1 -1
  8. package/dist/github/actions-settings/backup.d.mts.map +1 -1
  9. package/dist/github/actions-settings/backup.mjs +4 -4
  10. package/dist/github/actions-settings/backup.mjs.map +1 -1
  11. package/dist/github/actions-settings/constants.d.mts +1 -1
  12. package/dist/github/clear-json-files.d.mts +17 -0
  13. package/dist/github/clear-json-files.d.mts.map +1 -0
  14. package/dist/github/clear-json-files.mjs +29 -0
  15. package/dist/github/clear-json-files.mjs.map +1 -0
  16. package/dist/github/constants.d.mts +3 -0
  17. package/dist/github/constants.d.mts.map +1 -1
  18. package/dist/github/constants.mjs +3 -0
  19. package/dist/github/constants.mjs.map +1 -1
  20. package/dist/github/environments/api/get-environments.d.mts +16 -0
  21. package/dist/github/environments/api/get-environments.d.mts.map +1 -0
  22. package/dist/github/environments/api/get-environments.mjs +98 -0
  23. package/dist/github/environments/api/get-environments.mjs.map +1 -0
  24. package/dist/github/environments/api/index.d.mts +3 -0
  25. package/dist/github/environments/api/index.d.mts.map +1 -0
  26. package/dist/github/environments/api/index.mjs +3 -0
  27. package/dist/github/environments/api/index.mjs.map +1 -0
  28. package/dist/github/environments/api/set-environment.d.mts +10 -0
  29. package/dist/github/environments/api/set-environment.d.mts.map +1 -0
  30. package/dist/github/environments/api/set-environment.mjs +73 -0
  31. package/dist/github/environments/api/set-environment.mjs.map +1 -0
  32. package/dist/github/environments/apply.d.mts +11 -0
  33. package/dist/github/environments/apply.d.mts.map +1 -0
  34. package/dist/github/environments/apply.mjs +63 -0
  35. package/dist/github/environments/apply.mjs.map +1 -0
  36. package/dist/github/environments/backup.d.mts +10 -0
  37. package/dist/github/environments/backup.d.mts.map +1 -0
  38. package/dist/github/environments/backup.mjs +30 -0
  39. package/dist/github/environments/backup.mjs.map +1 -0
  40. package/dist/github/environments/constants.d.mts +354 -0
  41. package/dist/github/environments/constants.d.mts.map +1 -0
  42. package/dist/github/environments/constants.mjs +62 -0
  43. package/dist/github/environments/constants.mjs.map +1 -0
  44. package/dist/github/environments/index.d.mts +6 -0
  45. package/dist/github/environments/index.d.mts.map +1 -0
  46. package/dist/github/environments/index.mjs +6 -0
  47. package/dist/github/environments/index.mjs.map +1 -0
  48. package/dist/github/environments/read-environment-contents.d.mts +3 -0
  49. package/dist/github/environments/read-environment-contents.d.mts.map +1 -0
  50. package/dist/github/environments/read-environment-contents.mjs +31 -0
  51. package/dist/github/environments/read-environment-contents.mjs.map +1 -0
  52. package/dist/github/index.d.mts +4 -0
  53. package/dist/github/index.d.mts.map +1 -1
  54. package/dist/github/index.mjs +4 -0
  55. package/dist/github/index.mjs.map +1 -1
  56. package/dist/github/pages/apply.d.mts.map +1 -1
  57. package/dist/github/pages/apply.mjs +0 -2
  58. package/dist/github/pages/apply.mjs.map +1 -1
  59. package/dist/github/pages/backup.d.mts +11 -1
  60. package/dist/github/pages/backup.d.mts.map +1 -1
  61. package/dist/github/pages/backup.mjs +18 -5
  62. package/dist/github/pages/backup.mjs.map +1 -1
  63. package/dist/github/repository/apply.d.mts.map +1 -1
  64. package/dist/github/repository/apply.mjs +0 -4
  65. package/dist/github/repository/apply.mjs.map +1 -1
  66. package/dist/github/repository/backup.d.mts.map +1 -1
  67. package/dist/github/repository/backup.mjs +4 -4
  68. package/dist/github/repository/backup.mjs.map +1 -1
  69. package/dist/github/ruleset/apply.d.mts.map +1 -1
  70. package/dist/github/ruleset/apply.mjs +9 -9
  71. package/dist/github/ruleset/apply.mjs.map +1 -1
  72. package/dist/github/ruleset/backup.d.mts +7 -0
  73. package/dist/github/ruleset/backup.d.mts.map +1 -1
  74. package/dist/github/ruleset/backup.mjs +20 -7
  75. package/dist/github/ruleset/backup.mjs.map +1 -1
  76. package/dist/github/ruleset/read-rule-set-contents.d.mts +0 -1
  77. package/dist/github/ruleset/read-rule-set-contents.d.mts.map +1 -1
  78. package/dist/github/ruleset/read-rule-set-contents.mjs +0 -1
  79. package/dist/github/ruleset/read-rule-set-contents.mjs.map +1 -1
  80. package/dist/github/settings-file-path.d.mts +14 -0
  81. package/dist/github/settings-file-path.d.mts.map +1 -0
  82. package/dist/github/settings-file-path.mjs +41 -0
  83. package/dist/github/settings-file-path.mjs.map +1 -0
  84. package/dist/github/variables/api/list-repo-variables.d.mts.map +1 -1
  85. package/dist/github/variables/api/list-repo-variables.mjs +3 -1
  86. package/dist/github/variables/api/list-repo-variables.mjs.map +1 -1
  87. package/dist/github/variables/apply.d.mts +9 -0
  88. package/dist/github/variables/apply.d.mts.map +1 -1
  89. package/dist/github/variables/apply.mjs +31 -17
  90. package/dist/github/variables/apply.mjs.map +1 -1
  91. package/dist/github/variables/backup.d.mts +20 -0
  92. package/dist/github/variables/backup.d.mts.map +1 -0
  93. package/dist/github/variables/backup.mjs +35 -0
  94. package/dist/github/variables/backup.mjs.map +1 -0
  95. package/dist/github/variables/constants.d.mts +65 -0
  96. package/dist/github/variables/constants.d.mts.map +1 -0
  97. package/dist/github/variables/constants.mjs +48 -0
  98. package/dist/github/variables/constants.mjs.map +1 -0
  99. package/dist/github/variables/index.d.mts +2 -0
  100. package/dist/github/variables/index.d.mts.map +1 -1
  101. package/dist/github/variables/index.mjs +2 -0
  102. package/dist/github/variables/index.mjs.map +1 -1
  103. package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts +10 -0
  104. package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.d.mts.map +1 -0
  105. package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs +25 -0
  106. package/dist/github/vulnerability-alerts/api/get-vulnerability-alerts.mjs.map +1 -0
  107. package/dist/github/vulnerability-alerts/api/index.d.mts +3 -0
  108. package/dist/github/vulnerability-alerts/api/index.d.mts.map +1 -0
  109. package/dist/github/vulnerability-alerts/api/index.mjs +3 -0
  110. package/dist/github/vulnerability-alerts/api/index.mjs.map +1 -0
  111. package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts +10 -0
  112. package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.d.mts.map +1 -0
  113. package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs +19 -0
  114. package/dist/github/vulnerability-alerts/api/set-vulnerability-alerts.mjs.map +1 -0
  115. package/dist/github/vulnerability-alerts/apply.d.mts +11 -0
  116. package/dist/github/vulnerability-alerts/apply.d.mts.map +1 -0
  117. package/dist/github/vulnerability-alerts/apply.mjs +45 -0
  118. package/dist/github/vulnerability-alerts/apply.mjs.map +1 -0
  119. package/dist/github/vulnerability-alerts/backup.d.mts +5 -0
  120. package/dist/github/vulnerability-alerts/backup.d.mts.map +1 -0
  121. package/dist/github/vulnerability-alerts/backup.mjs +22 -0
  122. package/dist/github/vulnerability-alerts/backup.mjs.map +1 -0
  123. package/dist/github/vulnerability-alerts/constants.d.mts +72 -0
  124. package/dist/github/vulnerability-alerts/constants.d.mts.map +1 -0
  125. package/dist/github/vulnerability-alerts/constants.mjs +21 -0
  126. package/dist/github/vulnerability-alerts/constants.mjs.map +1 -0
  127. package/dist/github/vulnerability-alerts/index.d.mts +5 -0
  128. package/dist/github/vulnerability-alerts/index.d.mts.map +1 -0
  129. package/dist/github/vulnerability-alerts/index.mjs +5 -0
  130. package/dist/github/vulnerability-alerts/index.mjs.map +1 -0
  131. package/package.json +29 -28
  132. package/src/cmd/repo-settings.mts +22 -2
  133. package/src/github/actions-settings/apply.mts +0 -9
  134. package/src/github/actions-settings/backup.mts +6 -11
  135. package/src/github/actions-settings/constants.mts +1 -1
  136. package/src/github/clear-json-files.mts +31 -0
  137. package/src/github/clear-json-files.test.mts +78 -0
  138. package/src/github/constants.mts +9 -0
  139. package/src/github/environments/api/get-environments.mts +155 -0
  140. package/src/github/environments/api/index.mts +2 -0
  141. package/src/github/environments/api/set-environment.mts +106 -0
  142. package/src/github/environments/apply.mts +82 -0
  143. package/src/github/environments/backup.mts +39 -0
  144. package/src/github/environments/constants.mts +78 -0
  145. package/src/github/environments/index.mts +5 -0
  146. package/src/github/environments/read-environment-contents.mts +49 -0
  147. package/src/github/index.mts +4 -0
  148. package/src/github/pages/apply.mts +0 -6
  149. package/src/github/pages/backup.mts +21 -12
  150. package/src/github/repository/apply.mts +0 -9
  151. package/src/github/repository/backup.mts +5 -10
  152. package/src/github/ruleset/apply.mts +10 -18
  153. package/src/github/ruleset/backup.mts +23 -13
  154. package/src/github/ruleset/read-rule-set-contents.mts +0 -4
  155. package/src/github/ruleset/schema.test.mts +0 -13
  156. package/src/github/settings-file-path.mts +51 -0
  157. package/src/github/settings-file-path.test.mts +70 -0
  158. package/src/github/variables/api/list-repo-variables.mts +3 -1
  159. package/src/github/variables/apply.mts +54 -27
  160. package/src/github/variables/backup.mts +47 -0
  161. package/src/github/variables/constants.mts +61 -0
  162. package/src/github/variables/constants.test.mts +110 -0
  163. package/src/github/variables/index.mts +2 -0
  164. package/src/github/vulnerability-alerts/api/get-vulnerability-alerts.mts +31 -0
  165. package/src/github/vulnerability-alerts/api/index.mts +2 -0
  166. package/src/github/vulnerability-alerts/api/set-vulnerability-alerts.mts +31 -0
  167. package/src/github/vulnerability-alerts/apply.mts +71 -0
  168. package/src/github/vulnerability-alerts/backup.mts +31 -0
  169. package/src/github/vulnerability-alerts/constants.mts +25 -0
  170. 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"}
@@ -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"}
@@ -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,CAgCvD,CAAC"}
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,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,CAAC,EACtD,GAAG,CACJ,CAAC;QAEF,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
+ {"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
- /** Settings > Pages の現在値を `bk/` に保存する。 */
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;AAavB,0CAA0C;AAC1C,eAAO,MAAM,mBAAmB,SACzB,OAAO,KACX,OAAO,CAAC,IAAI,CAsBd,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, makeEmptyDir, } from 'ts-repo-utils';
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
- const backupDir = path.resolve(pagesSettingsDir, './bk');
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; skipping backup.');
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(backupDir, settingsJsonName), JSON.stringify(settings, undefined, 2));
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,EACL,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AAEzD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,GAAG,GAAY,IAAI,EACJ,EAAE;IACjB,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAE1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,mEAAmE,CACpE,CAAC;QAEF,OAAO;IACT,CAAC;IAED,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,EACzC,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
+ {"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;AAqBvB,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CA4D5D,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":"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"}
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;AAevB,eAAO,MAAM,wBAAwB,SAC9B,OAAO,KACX,OAAO,CAAC,IAAI,CAkBd,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, makeEmptyDir, } from 'ts-repo-utils';
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(backupDir, settingsJsonName), JSON.stringify(Obj.pick(repositorySettings, repositoryKeysToPick), undefined, 2));
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,EACL,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,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,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC3C,GAAG,GAAY,IAAI,EACJ,EAAE;IACjB,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAE9B,MAAM,kBAAkB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAEzD,mEAAmE;IACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,EACzC,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
+ {"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;AAmBvB,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,IAAI,CAiElD,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 { readRulesetBackupFiles, readRulesetFiles, } from './read-rule-set-contents.mjs';
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
- const backupIds = await readRulesetBackupFiles().then((rs) => new Set(rs.map((r) => r.id)));
16
- const rulesetsToUpdate = rulesets.filter((r) => backupIds.has(r.id));
17
- const rulesetsToCreate = rulesets.filter((r) => !backupIds.has(r.id));
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(path.resolve(rulesetsDir, `./bk/${rule.name}.json`), str);
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":"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"}
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;AAevB,eAAO,MAAM,cAAc,SAAe,OAAO,KAAU,OAAO,CAAC,IAAI,CAkBtE,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, makeEmptyDir, } from 'ts-repo-utils';
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
- const backupDir = path.resolve(rulesetsDir, './bk');
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
- await fs.writeFile(path.resolve(backupDir, `${rule.name}.json`), JSON.stringify(Obj.pick(content, rulesetKeysToPick), undefined, 2));
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,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,GAAG,GAAY,IAAI,EAAiB,EAAE;IACzE,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAE9B,MAAM,cAAc,GAAG,MAAM,cAAc,EAAE,CAAC;IAE9C,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE1C,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,EAC5C,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
+ {"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;AAE3B,eAAO,MAAM,sBAAsB,QAAa,OAAO,CACrD,SAAS,aAAa,EAAE,CACyB,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,CAAC,MAAM,sBAAsB,GAAG,KAAK,IAEzC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpD,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"}
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,CAaF,CAAC"}
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
- return result.data.variables;
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;AAC/B,CAAC,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":";AAGA,OAAO,eAAe,CAAC;AAQvB,eAAO,MAAM,cAAc,QAAa,OAAO,CAAC,IAAI,CA6BnD,CAAC"}
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 { isDirectlyExecuted } from 'ts-repo-utils';
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
- name: 'REPO_AUTOMATION_BOT_CLIENT_ID',
20
- value: 'Iv23lilpiDh0twq2PErv',
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":";AAEA,sBAAsB;AACtB,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,SAAS,GAAG;QAChB;YACE,8CAA8C;YAC9C,mDAAmD;YACnD,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,sBAAsB;SAC9B;QACD;YACE,gDAAgD;YAChD,iEAAiE;YACjE,kDAAkD;YAClD,MAAM;YACN,IAAI,EAAE,+BAA+B;YACrC,KAAK,EAAE,sBAAsB;SAC9B;KACO,CAAC;IAEX,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAEpD,MAAM,cAAc,GAAwB,IAAI,GAAG,CACjD,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACrC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACxC,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC"}
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"}