github-settings-as-code 2.1.2 → 3.0.1

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 (61) hide show
  1. package/README.md +21 -15
  2. package/dist/cmd/repo-settings.d.mts.map +1 -1
  3. package/dist/cmd/repo-settings.mjs +30 -29
  4. package/dist/cmd/repo-settings.mjs.map +1 -1
  5. package/dist/github/actions-settings/api/get-actions-settings.d.mts.map +1 -1
  6. package/dist/github/actions-settings/api/get-actions-settings.mjs +0 -1
  7. package/dist/github/actions-settings/api/get-actions-settings.mjs.map +1 -1
  8. package/dist/github/actions-settings/apply.d.mts +1 -1
  9. package/dist/github/actions-settings/apply.d.mts.map +1 -1
  10. package/dist/github/actions-settings/apply.mjs +3 -3
  11. package/dist/github/actions-settings/apply.mjs.map +1 -1
  12. package/dist/github/actions-settings/constants.d.mts +87 -1
  13. package/dist/github/actions-settings/constants.d.mts.map +1 -1
  14. package/dist/github/actions-settings/constants.mjs +1 -1
  15. package/dist/github/constants.d.mts.map +1 -1
  16. package/dist/github/constants.mjs +7 -5
  17. package/dist/github/constants.mjs.map +1 -1
  18. package/dist/github/pages/api/get-pages-settings.d.mts.map +1 -1
  19. package/dist/github/pages/api/get-pages-settings.mjs +0 -1
  20. package/dist/github/pages/api/get-pages-settings.mjs.map +1 -1
  21. package/dist/github/pages/apply.d.mts +1 -1
  22. package/dist/github/pages/apply.mjs +3 -3
  23. package/dist/github/pages/apply.mjs.map +1 -1
  24. package/dist/github/pages/constants.d.mts +21 -1
  25. package/dist/github/pages/constants.d.mts.map +1 -1
  26. package/dist/github/pages/constants.mjs +1 -1
  27. package/dist/github/repository/api/get-repository.mjs +2 -2
  28. package/dist/github/repository/api/get-repository.mjs.map +1 -1
  29. package/dist/github/repository/api/update-repository.d.mts +1 -1
  30. package/dist/github/repository/api/update-repository.d.mts.map +1 -1
  31. package/dist/github/repository/api/update-repository.mjs +5 -2
  32. package/dist/github/repository/api/update-repository.mjs.map +1 -1
  33. package/dist/github/repository/apply.mjs +2 -2
  34. package/dist/github/repository/apply.mjs.map +1 -1
  35. package/dist/github/repository/constants.d.mts +176 -0
  36. package/dist/github/repository/constants.d.mts.map +1 -1
  37. package/dist/github/ruleset/api/get-all-rulesets.mjs +2 -2
  38. package/dist/github/ruleset/api/get-all-rulesets.mjs.map +1 -1
  39. package/dist/github/ruleset/api/get-ruleset.mjs +2 -2
  40. package/dist/github/ruleset/api/get-ruleset.mjs.map +1 -1
  41. package/dist/github/ruleset/constants.d.mts +88 -8
  42. package/dist/github/ruleset/constants.d.mts.map +1 -1
  43. package/dist/github/variables/apply.d.mts.map +1 -1
  44. package/dist/github/variables/apply.mjs +1 -0
  45. package/dist/github/variables/apply.mjs.map +1 -1
  46. package/package.json +22 -27
  47. package/src/cmd/repo-settings.mts +37 -36
  48. package/src/github/actions-settings/api/get-actions-settings.mts +0 -1
  49. package/src/github/actions-settings/apply.mts +3 -3
  50. package/src/github/actions-settings/constants.mts +1 -1
  51. package/src/github/constants.mts +10 -5
  52. package/src/github/pages/api/get-pages-settings.mts +0 -1
  53. package/src/github/pages/apply.mts +3 -3
  54. package/src/github/pages/constants.mts +1 -1
  55. package/src/github/repository/api/get-repository.mts +2 -2
  56. package/src/github/repository/api/update-repository.mts +6 -1
  57. package/src/github/repository/apply.mts +2 -2
  58. package/src/github/ruleset/api/get-all-rulesets.mts +2 -2
  59. package/src/github/ruleset/api/get-ruleset.mts +2 -2
  60. package/src/github/ruleset/schema.test.mts +164 -0
  61. package/src/github/variables/apply.mts +2 -0
package/README.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  GitHub の repository 設定を JSON ファイルで管理するための CLI。
4
4
 
5
+ 設定ファイルは repository root の `repo-settings/` から読む。
6
+
7
+ > **v3.0.0 での破壊的変更**: 読み込み元が `github/` から `repo-settings/` に
8
+ > 変わった。`git mv github repo-settings` で移行する。旧名は `.github/` の
9
+ > 別名に見えて、workflow もここにあると誤解させるものだった。
10
+
5
11
  ## Usage
6
12
 
7
13
  ```sh
@@ -13,14 +19,14 @@ repo-settings <command> [target] [options]
13
19
  | `apply` | ローカルの設定ファイルを GitHub に反映する |
14
20
  | `backup` | GitHub の現在値をローカルの `bk/` に保存する |
15
21
 
16
- | Target | 対応するファイル | `apply` | `backup` |
17
- | ------------- | ------------------------------------------ | ------- | -------- |
18
- | `all`(既定) | すべて | ✅ | ✅ |
19
- | `repository` | `github/repository-settings/settings.json` | ✅ | ✅ |
20
- | `rulesets` | `github/rulesets/*.json` | ✅ | ✅ |
21
- | `variables` | repository variables | ✅ | — |
22
- | `actions` | `github/actions-settings/settings.json` | ✅ | ✅ |
23
- | `pages` | `github/pages/settings.json` | ✅ | ✅ |
22
+ | Target | 対応するファイル | `apply` | `backup` |
23
+ | ------------- | ------------------------------------------------- | ------- | -------- |
24
+ | `all`(既定) | すべて | ✅ | ✅ |
25
+ | `repository` | `repo-settings/repository-settings/settings.json` | ✅ | ✅ |
26
+ | `rulesets` | `repo-settings/rulesets/*.json` | ✅ | ✅ |
27
+ | `variables` | repository variables | ✅ | — |
28
+ | `actions` | `repo-settings/actions-settings/settings.json` | ✅ | ✅ |
29
+ | `pages` | `repo-settings/pages/settings.json` | ✅ | ✅ |
24
30
 
25
31
  ```sh
26
32
  repo-settings apply
@@ -51,12 +57,12 @@ CI では GitHub App の installation token を `GH_TOKEN` に渡す。 reposito
51
57
 
52
58
  ## 管理できる設定
53
59
 
54
- | ファイル | GitHub 上の場所 |
55
- | ------------------------------------------ | --------------------------------------- |
56
- | `github/repository-settings/settings.json` | Settings > General |
57
- | `github/rulesets/*.json` | Settings > Rules > Rulesets |
58
- | `github/actions-settings/settings.json` | Settings > Actions > General |
59
- | `github/pages/settings.json` | Settings > Pages > Build and deployment |
60
+ | ファイル | GitHub 上の場所 |
61
+ | ------------------------------------------------- | --------------------------------------- |
62
+ | `repo-settings/repository-settings/settings.json` | Settings > General |
63
+ | `repo-settings/rulesets/*.json` | Settings > Rules > Rulesets |
64
+ | `repo-settings/actions-settings/settings.json` | Settings > Actions > General |
65
+ | `repo-settings/pages/settings.json` | Settings > Pages > Build and deployment |
60
66
 
61
- `github/pages/settings.json` を置いていない repository では Pages の操作を行わない
67
+ `repo-settings/pages/settings.json` を置いていない repository では Pages の操作を行わない
62
68
  ( Pages を使わない repository で誤って有効化しないため )。
@@ -1 +1 @@
1
- {"version":3,"file":"repo-settings.d.mts","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC"}
1
+ {"version":3,"file":"repo-settings.d.mts","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":";AAGA,OAAO,eAAe,CAAC"}
@@ -1,43 +1,44 @@
1
1
  #!/usr/bin/env node
2
+ import dedent from 'dedent';
2
3
  import 'dotenv/config';
3
4
  import * as util from 'node:util';
4
5
  import { Arr } from 'ts-data-forge';
5
- const HELP = `
6
- Usage: repo-settings <command> [target] [options]
6
+ const HELP = dedent `
7
+ Usage: repo-settings <command> [target] [options]
7
8
 
8
- GitHub の repository 設定を JSON ファイルで管理する。
9
+ GitHub の repository 設定を JSON ファイルで管理する。
9
10
 
10
- Commands:
11
- apply [target] ローカルの設定ファイルを GitHub に反映する
12
- backup [target] GitHub の現在値をローカルの bk/ に保存する
11
+ Commands:
12
+ apply [target] ローカルの設定ファイルを GitHub に反映する
13
+ backup [target] GitHub の現在値をローカルの bk/ に保存する
13
14
 
14
- Targets:
15
- all すべて(既定)
16
- repository github/repository-settings/settings.json
17
- rulesets github/rulesets/*.json
18
- variables repository variables ( apply のみ )
19
- actions github/actions-settings/settings.json
20
- pages github/pages/settings.json
15
+ Targets:
16
+ all すべて(既定)
17
+ repository repo-settings/repository-settings/settings.json
18
+ rulesets repo-settings/rulesets/*.json
19
+ variables repository variables ( apply のみ )
20
+ actions repo-settings/actions-settings/settings.json
21
+ pages repo-settings/pages/settings.json
21
22
 
22
- Options:
23
- --owner <owner> 対象の owner
24
- --repo <repo> 対象の repository 名
25
- -h, --help このヘルプを表示する
23
+ Options:
24
+ --owner <owner> 対象の owner
25
+ --repo <repo> 対象の repository 名
26
+ -h, --help このヘルプを表示する
26
27
 
27
- owner / repo は「コマンドライン引数 → 環境変数 OWNER / REPO_NAME →
28
- git remote origin → package.json の name 」の順で解決される。
29
- 通常は git remote から決まるため、どちらの指定も不要。
28
+ owner / repo は「コマンドライン引数 → 環境変数 OWNER / REPO_NAME →
29
+ git remote origin → package.json の name 」の順で解決される。
30
+ 通常は git remote から決まるため、どちらの指定も不要。
30
31
 
31
- 認証は「環境変数 GITHUB_APP_TOKEN / GH_TOKEN / PERSONAL_ACCESS_TOKEN →
32
- gh CLI ( gh auth token )」の順で解決される。ローカルでは gh auth login
33
- だけで動く。
32
+ 認証は「環境変数 GITHUB_APP_TOKEN / GH_TOKEN / PERSONAL_ACCESS_TOKEN →
33
+ gh CLI ( gh auth token )」の順で解決される。ローカルでは gh auth login
34
+ だけで動く。
34
35
 
35
- Examples:
36
- repo-settings apply
37
- repo-settings apply rulesets
38
- repo-settings backup
39
- repo-settings apply --owner noshiro-pf --repo ts-repo-utils
40
- `.trim();
36
+ Examples:
37
+ repo-settings apply
38
+ repo-settings apply rulesets
39
+ repo-settings backup
40
+ repo-settings apply --owner noshiro-pf --repo ts-repo-utils
41
+ `;
41
42
  const COMMANDS = ['apply', 'backup'];
42
43
  const TARGETS = [
43
44
  'all',
@@ -1 +1 @@
1
- {"version":3,"file":"repo-settings.mjs","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-settings.mjs","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-actions-settings.d.mts","sourceRoot":"","sources":["../../../../src/github/actions-settings/api/get-actions-settings.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,eAAe,CAoBlE,CAAC"}
1
+ {"version":3,"file":"get-actions-settings.d.mts","sourceRoot":"","sources":["../../../../src/github/actions-settings/api/get-actions-settings.mts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,eAAe,CAmBlE,CAAC"}
@@ -11,7 +11,6 @@ export const getActionsSettings = async () => {
11
11
  const permissions = await octokit.request('GET /repos/{owner}/{repo}/actions/permissions', { owner: OWNER, repo: REPO, headers: octokitHeaders });
12
12
  // https://docs.github.com/rest/actions/permissions#get-fork-pr-contributor-approval-permissions-for-a-repository
13
13
  const forkPrApproval = await octokit.request('GET /repos/{owner}/{repo}/actions/permissions/fork-pr-contributor-approval', { owner: OWNER, repo: REPO, headers: octokitHeaders });
14
- // eslint-disable-next-line unicorn/no-array-fill-with-reference-type
15
14
  return ActionsSettings.fill({
16
15
  enabled: permissions.data.enabled,
17
16
  allowed_actions: permissions.data.allowed_actions,
@@ -1 +1 @@
1
- {"version":3,"file":"get-actions-settings.mjs","sourceRoot":"","sources":["../../../../src/github/actions-settings/api/get-actions-settings.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAA8B,EAAE;IACrE,mGAAmG;IACnG,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CACvC,+CAAsE,EACtE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;IAEF,iHAAiH;IACjH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAC1C,4EAAmG,EACnG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;IAEF,qEAAqE;IACrE,OAAO,eAAe,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO;QACjC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,eAAe;QACjD,oBAAoB,EAAE,WAAW,CAAC,IAAI,CAAC,oBAAoB;QAC3D,mCAAmC,EAAE,cAAc,CAAC,IAAI,CAAC,eAAe;KACzE,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"get-actions-settings.mjs","sourceRoot":"","sources":["../../../../src/github/actions-settings/api/get-actions-settings.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAA8B,EAAE;IACrE,mGAAmG;IACnG,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,OAAO,CACvC,+CAAsE,EACtE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;IAEF,iHAAiH;IACjH,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAC1C,4EAAmG,EACnG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;IAEF,OAAO,eAAe,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO;QACjC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,eAAe;QACjD,oBAAoB,EAAE,WAAW,CAAC,IAAI,CAAC,oBAAoB;QAC3D,mCAAmC,EAAE,cAAc,CAAC,IAAI,CAAC,eAAe;KACzE,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  import 'dotenv/config';
3
- /** `github/actions-settings/settings.json` を Settings > Actions > General に反映する。 */
3
+ /** `repo-settings/actions-settings/settings.json` を Settings > Actions > General に反映する。 */
4
4
  export declare const applyActionsSettings: () => Promise<void>;
5
5
  //# sourceMappingURL=apply.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/actions-settings/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAcvB,oFAAoF;AACpF,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,IAAI,CAwBzD,CAAC"}
1
+ {"version":3,"file":"apply.d.mts","sourceRoot":"","sources":["../../../src/github/actions-settings/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AAcvB,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,IAAI,CAwBzD,CAAC"}
@@ -2,13 +2,13 @@
2
2
  import 'dotenv/config';
3
3
  import * as fs from 'node:fs/promises';
4
4
  import * as path from 'node:path';
5
- import { validationErrorsToMessages } from 'ts-fortress';
5
+ import * as t from 'ts-fortress';
6
6
  import { formatUncommittedFiles, isDirectlyExecuted, Result, } from 'ts-repo-utils';
7
7
  import { actionsSettingsDir, settingsJsonName } from '../constants.mjs';
8
8
  import { getActionsSettings, setActionsSettings } from './api/index.mjs';
9
9
  import { backupActionsSettings } from './backup.mjs';
10
10
  import { ActionsSettings } from './constants.mjs';
11
- /** `github/actions-settings/settings.json` を Settings > Actions > General に反映する。 */
11
+ /** `repo-settings/actions-settings/settings.json` を Settings > Actions > General に反映する。 */
12
12
  export const applyActionsSettings = async () => {
13
13
  await backupActionsSettings(false);
14
14
  const settings = await readSettings();
@@ -29,7 +29,7 @@ const readSettings = async () => {
29
29
  const settingsText = await fs.readFile(path.resolve(actionsSettingsDir, settingsJsonName), { encoding: 'utf8' });
30
30
  const validationResult = ActionsSettings.validate(JSON.parse(settingsText));
31
31
  if (Result.isErr(validationResult)) {
32
- throw new Error(validationErrorsToMessages(validationResult.value).join('\n'));
32
+ throw new Error(t.validationErrorsToMessages(validationResult.value).join('\n'));
33
33
  }
34
34
  return validationResult.value;
35
35
  };
@@ -1 +1 @@
1
- {"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/actions-settings/apply.mts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,oFAAoF;AACpF,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAmB,EAAE;IAC5D,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEnC,0BAA0B;IAC1B,CAAC;QACC,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAElD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;QAE5E,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,CAAC,EACxD,GAAG,CACJ,CAAC;QAEF,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,IAA8B,EAAE;IACxD,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAClD,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;IAEF,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9D,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,oBAAoB,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/actions-settings/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,MAAM,GACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,IAAmB,EAAE;IAC5D,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAEnC,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEnC,0BAA0B;IAC1B,CAAC;QACC,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAElD,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC;QAE5E,mEAAmE;QACnE,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,CAAC,EACxD,GAAG,CACJ,CAAC;QAEF,MAAM,sBAAsB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,IAA8B,EAAE;IACxD,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,QAAQ,CACpC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,EAClD,EAAE,QAAQ,EAAE,MAAM,EAAE,CACrB,CAAC;IAEF,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAE5E,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,oBAAoB,EAAE,CAAC;AAC/B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as t from 'ts-fortress';
2
2
  /**
3
- * `github/actions-settings/settings.json` の型。
3
+ * `repo-settings/actions-settings/settings.json` の型。
4
4
  *
5
5
  * Settings > Actions > General に対応する。 2 つの API をまとめて 1 ファイルで
6
6
  * 管理する:
@@ -64,6 +64,92 @@ export declare const ActionsSettings: Readonly<{
64
64
  details?: t.ValidationErrorDetails | undefined;
65
65
  }>[]>;
66
66
  optional?: true;
67
+ }> & Readonly<{
68
+ shape: {
69
+ /** Actions permissions: この repository で Actions を有効にするか。 */
70
+ readonly enabled: Readonly<{
71
+ typeName: string;
72
+ defaultValue: boolean;
73
+ is: (a: unknown) => a is boolean;
74
+ assertIs: (a: unknown) => asserts a is boolean;
75
+ cast: (a: unknown) => boolean;
76
+ fill: (a: unknown) => boolean;
77
+ prune: <B extends boolean>(a: B) => boolean;
78
+ validate: (a: unknown) => t.Result<boolean, readonly Readonly<{
79
+ path: readonly string[];
80
+ actualValue: unknown;
81
+ expectedType: string;
82
+ typeName: string;
83
+ details?: t.ValidationErrorDetails | undefined;
84
+ }>[]>;
85
+ optional?: true;
86
+ }>;
87
+ /** Actions permissions: 実行を許可する action の範囲。 */
88
+ readonly allowed_actions: Readonly<{
89
+ typeName: string;
90
+ defaultValue: "all" | "local_only" | "selected";
91
+ is: (a: unknown) => a is "all" | "local_only" | "selected";
92
+ assertIs: (a: unknown) => asserts a is "all" | "local_only" | "selected";
93
+ cast: (a: unknown) => "all" | "local_only" | "selected";
94
+ fill: (a: unknown) => "all" | "local_only" | "selected";
95
+ prune: <B extends "all" | "local_only" | "selected">(a: B) => "all" | "local_only" | "selected";
96
+ validate: (a: unknown) => t.Result<"all" | "local_only" | "selected", readonly Readonly<{
97
+ path: readonly string[];
98
+ actualValue: unknown;
99
+ expectedType: string;
100
+ typeName: string;
101
+ details?: t.ValidationErrorDetails | undefined;
102
+ }>[]>;
103
+ optional?: true;
104
+ }>;
105
+ /**
106
+ * 「 Require actions to be pinned to a full-length commit SHA 」。
107
+ *
108
+ * NOTE: @octokit/types v16 時点でこのフィールドは型定義に入っていないため、
109
+ * リクエスト時にのみ手当てしている( set-actions-permissions.mts 参照)。
110
+ */
111
+ readonly sha_pinning_required: Readonly<{
112
+ typeName: string;
113
+ defaultValue: boolean;
114
+ is: (a: unknown) => a is boolean;
115
+ assertIs: (a: unknown) => asserts a is boolean;
116
+ cast: (a: unknown) => boolean;
117
+ fill: (a: unknown) => boolean;
118
+ prune: <B extends boolean>(a: B) => boolean;
119
+ validate: (a: unknown) => t.Result<boolean, readonly Readonly<{
120
+ path: readonly string[];
121
+ actualValue: unknown;
122
+ expectedType: string;
123
+ typeName: string;
124
+ details?: t.ValidationErrorDetails | undefined;
125
+ }>[]>;
126
+ optional?: true;
127
+ }>;
128
+ /**
129
+ * 「 Approval for running fork pull request workflows from contributors 」。
130
+ *
131
+ * - `first_time_contributors_new_to_github`: GitHub 自体に不慣れな初回貢献者のみ承認必須
132
+ * - `first_time_contributors`: この repository への初回貢献者のみ承認必須
133
+ * - `all_external_contributors`: 外部貢献者すべてに承認必須
134
+ */
135
+ readonly fork_pr_contributor_approval_policy: Readonly<{
136
+ typeName: string;
137
+ defaultValue: "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
138
+ is: (a: unknown) => a is "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
139
+ assertIs: (a: unknown) => asserts a is "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
140
+ cast: (a: unknown) => "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
141
+ fill: (a: unknown) => "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
142
+ prune: <B extends "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github">(a: B) => "all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github";
143
+ validate: (a: unknown) => t.Result<"all_external_contributors" | "first_time_contributors" | "first_time_contributors_new_to_github", readonly Readonly<{
144
+ path: readonly string[];
145
+ actualValue: unknown;
146
+ expectedType: string;
147
+ typeName: string;
148
+ details?: t.ValidationErrorDetails | undefined;
149
+ }>[]>;
150
+ optional?: true;
151
+ }>;
152
+ };
67
153
  }>;
68
154
  export type ActionsSettings = t.TypeOf<typeof ActionsSettings>;
69
155
  //# sourceMappingURL=constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/actions-settings/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC1B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/actions-settings/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAC1B,4DAA4D;;;;;;;;;;;;;;;;;;QAG5D,+CAA+C;;;;;;;;;;;;;;;;;;QAM/C;;;;;WAKG;;;;;;;;;;;;;;;;;;QAGH;;;;;;WAMG;;;;;;;;;;;;;;;;;;;EAYH,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as t from 'ts-fortress';
2
2
  /**
3
- * `github/actions-settings/settings.json` の型。
3
+ * `repo-settings/actions-settings/settings.json` の型。
4
4
  *
5
5
  * Settings > Actions > General に対応する。 2 つの API をまとめて 1 ファイルで
6
6
  * 管理する:
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/github/constants.mts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,EAAE,MAAyB,CAAC;AAE9C,eAAO,MAAM,IAAI,EAAE,MAAwB,CAAC;AAI5C,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAgD,CAAC;AAEhF,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AAEnE,eAAO,MAAM,WAAW,QAAwC,CAAC;AAEjE,eAAO,MAAM,cAAc;aACzB,sBAAsB,EAAE,YAAY;CAC5B,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/github/constants.mts"],"names":[],"mappings":"AAKA,eAAO,MAAM,KAAK,EAAE,MAAyB,CAAC;AAE9C,eAAO,MAAM,IAAI,EAAE,MAAwB,CAAC;AAM5C,eAAO,MAAM,gBAAgB,kBAAkB,CAAC;AAEhD,eAAO,MAAM,qBAAqB,QAGjC,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAG9B,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAuC,CAAC;AAErE,eAAO,MAAM,WAAW,QAA0C,CAAC;AAEnE,eAAO,MAAM,cAAc;aACzB,sBAAsB,EAAE,YAAY;CAC5B,CAAC"}
@@ -3,12 +3,14 @@ import { resolveTargetRepo } from './resolve-target-repo.mjs';
3
3
  const targetRepo = await resolveTargetRepo();
4
4
  export const OWNER = targetRepo.owner;
5
5
  export const REPO = targetRepo.repo;
6
- const githubDir = path.resolve(process.cwd(), './github');
6
+ // Named `repo-settings` rather than `github`, which read as a sibling of
7
+ // `.github` and invited the guess that workflows lived here too.
8
+ const settingsDir = path.resolve(process.cwd(), './repo-settings');
7
9
  export const settingsJsonName = 'settings.json';
8
- export const repositorySettingsDir = path.resolve(githubDir, './repository-settings');
9
- export const actionsSettingsDir = path.resolve(githubDir, './actions-settings');
10
- export const pagesSettingsDir = path.resolve(githubDir, './pages');
11
- export const rulesetsDir = path.resolve(githubDir, './rulesets');
10
+ export const repositorySettingsDir = path.resolve(settingsDir, './repository-settings');
11
+ export const actionsSettingsDir = path.resolve(settingsDir, './actions-settings');
12
+ export const pagesSettingsDir = path.resolve(settingsDir, './pages');
13
+ export const rulesetsDir = path.resolve(settingsDir, './rulesets');
12
14
  export const octokitHeaders = {
13
15
  'X-GitHub-Api-Version': '2022-11-28',
14
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/github/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,KAAK,GAAW,UAAU,CAAC,KAAK,CAAC;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAW,UAAU,CAAC,IAAI,CAAC;AAE5C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;AAE1D,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAC/C,SAAS,EACT,uBAAuB,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sBAAsB,EAAE,YAAY;CAC5B,CAAC"}
1
+ {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/github/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,KAAK,GAAW,UAAU,CAAC,KAAK,CAAC;AAE9C,MAAM,CAAC,MAAM,IAAI,GAAW,UAAU,CAAC,IAAI,CAAC;AAE5C,yEAAyE;AACzE,iEAAiE;AACjE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAEhD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAC/C,WAAW,EACX,uBAAuB,CACxB,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAC5C,WAAW,EACX,oBAAoB,CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAErE,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,sBAAsB,EAAE,YAAY;CAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get-pages-settings.d.mts","sourceRoot":"","sources":["../../../../src/github/pages/api/get-pages-settings.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAC/C,aAAa,GAAG,SAAS,CAkB1B,CAAC"}
1
+ {"version":3,"file":"get-pages-settings.d.mts","sourceRoot":"","sources":["../../../../src/github/pages/api/get-pages-settings.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,QAAa,OAAO,CAC/C,aAAa,GAAG,SAAS,CAiB1B,CAAC"}
@@ -11,7 +11,6 @@ export const getPagesSettings = async () => {
11
11
  try {
12
12
  // https://docs.github.com/rest/pages/pages#get-a-apiname-pages-site
13
13
  const response = await octokit.request('GET /repos/{owner}/{repo}/pages', { owner: OWNER, repo: REPO, headers: octokitHeaders });
14
- // eslint-disable-next-line unicorn/no-array-fill-with-reference-type
15
14
  return PagesSettings.fill({ build_type: response.data.build_type });
16
15
  }
17
16
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"get-pages-settings.mjs","sourceRoot":"","sources":["../../../../src/github/pages/api/get-pages-settings.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAEnC,EAAE;IACF,IAAI,CAAC;QACH,oEAAoE;QACpE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CACpC,iCAAwD,EACxD,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;QAEF,qEAAqE;QACrE,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"get-pages-settings.mjs","sourceRoot":"","sources":["../../../../src/github/pages/api/get-pages-settings.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAEnC,EAAE;IACF,IAAI,CAAC;QACH,oEAAoE;QACpE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CACpC,iCAAwD,EACxD,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,CACtD,CAAC;QAEF,OAAO,aAAa,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvE,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import 'dotenv/config';
3
3
  /**
4
- * `github/pages/settings.json` を Settings > Pages に反映する。
4
+ * `repo-settings/pages/settings.json` を Settings > Pages に反映する。
5
5
  *
6
6
  * 設定ファイルを置いていない repository では何もしない( Pages を使わない
7
7
  * repository で誤って Pages を有効化しないため)。
@@ -2,13 +2,13 @@
2
2
  import 'dotenv/config';
3
3
  import * as fs from 'node:fs/promises';
4
4
  import * as path from 'node:path';
5
- import { validationErrorsToMessages } from 'ts-fortress';
5
+ import * as t from 'ts-fortress';
6
6
  import { formatUncommittedFiles, isDirectlyExecuted, pathExists, Result, } from 'ts-repo-utils';
7
7
  import { pagesSettingsDir, settingsJsonName } from '../constants.mjs';
8
8
  import { getPagesSettings, setPagesSettings } from './api/index.mjs';
9
9
  import { PagesSettings } from './constants.mjs';
10
10
  /**
11
- * `github/pages/settings.json` を Settings > Pages に反映する。
11
+ * `repo-settings/pages/settings.json` を Settings > Pages に反映する。
12
12
  *
13
13
  * 設定ファイルを置いていない repository では何もしない( Pages を使わない
14
14
  * repository で誤って Pages を有効化しないため)。
@@ -39,7 +39,7 @@ const readSettings = async (settingsPath) => {
39
39
  const settingsText = await fs.readFile(settingsPath, { encoding: 'utf8' });
40
40
  const validationResult = PagesSettings.validate(JSON.parse(settingsText));
41
41
  if (Result.isErr(validationResult)) {
42
- throw new Error(validationErrorsToMessages(validationResult.value).join('\n'));
42
+ throw new Error(t.validationErrorsToMessages(validationResult.value).join('\n'));
43
43
  }
44
44
  return validationResult.value;
45
45
  };
@@ -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,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,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,0BAA0B,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9D,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,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,6 +1,6 @@
1
1
  import * as t from 'ts-fortress';
2
2
  /**
3
- * `github/pages/settings.json` の型。
3
+ * `repo-settings/pages/settings.json` の型。
4
4
  *
5
5
  * Settings > Pages > Build and deployment > Source に対応する。
6
6
  * `workflow` が GUI 上の「 GitHub Actions 」、 `legacy` が「 Deploy from a branch 」。
@@ -37,6 +37,26 @@ export declare const PagesSettings: Readonly<{
37
37
  details?: t.ValidationErrorDetails | undefined;
38
38
  }>[]>;
39
39
  optional?: true;
40
+ }> & Readonly<{
41
+ shape: {
42
+ readonly build_type: Readonly<{
43
+ typeName: string;
44
+ defaultValue: "legacy" | "workflow";
45
+ is: (a: unknown) => a is "legacy" | "workflow";
46
+ assertIs: (a: unknown) => asserts a is "legacy" | "workflow";
47
+ cast: (a: unknown) => "legacy" | "workflow";
48
+ fill: (a: unknown) => "legacy" | "workflow";
49
+ prune: <B extends "legacy" | "workflow">(a: B) => "legacy" | "workflow";
50
+ validate: (a: unknown) => t.Result<"legacy" | "workflow", readonly Readonly<{
51
+ path: readonly string[];
52
+ actualValue: unknown;
53
+ expectedType: string;
54
+ typeName: string;
55
+ details?: t.ValidationErrorDetails | undefined;
56
+ }>[]>;
57
+ optional?: true;
58
+ }>;
59
+ };
40
60
  }>;
41
61
  export type PagesSettings = t.TypeOf<typeof PagesSettings>;
42
62
  //# sourceMappingURL=constants.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/pages/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../src/github/pages/constants.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AAEjC;;;;;GAKG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import * as t from 'ts-fortress';
2
2
  /**
3
- * `github/pages/settings.json` の型。
3
+ * `repo-settings/pages/settings.json` の型。
4
4
  *
5
5
  * Settings > Pages > Build and deployment > Source に対応する。
6
6
  * `workflow` が GUI 上の「 GitHub Actions 」、 `legacy` が「 Deploy from a branch 」。
@@ -1,5 +1,5 @@
1
1
  import { GetRepositoryResponse } from 'octokit-safe-types';
2
- import { validationErrorsToMessages } from 'ts-fortress';
2
+ import * as t from 'ts-fortress';
3
3
  import { Result } from 'ts-repo-utils';
4
4
  import { octokitHeaders, OWNER, REPO } from '../../constants.mjs';
5
5
  import { octokit } from '../../octokit.mjs';
@@ -13,7 +13,7 @@ export const getRepositorySettings = async () => {
13
13
  {
14
14
  const res = GetRepositoryResponse.validate(getRepositoryResult.data);
15
15
  if (Result.isErr(res)) {
16
- console.warn(validationErrorsToMessages(res.value));
16
+ console.warn(t.validationErrorsToMessages(res.value));
17
17
  }
18
18
  }
19
19
  return GetRepositoryResponse.fill(getRepositoryResult.data);
@@ -1 +1 @@
1
- {"version":3,"file":"get-repository.mjs","sourceRoot":"","sources":["../../../../src/github/repository/api/get-repository.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAqB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAChC,KAAK,IAAoC,EAAE;IACzC,qFAAqF;IACrF,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,OAAO,CAC/C,2BAAkD,EAClD;QACE,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;KACxB,CACF,CAAC;IAEF,CAAC;QACC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC"}
1
+ {"version":3,"file":"get-repository.mjs","sourceRoot":"","sources":["../../../../src/github/repository/api/get-repository.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAqB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,CAAC,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAChC,KAAK,IAAoC,EAAE;IACzC,qFAAqF;IACrF,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,OAAO,CAC/C,2BAAkD,EAClD;QACE,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;KACxB,CACF,CAAC;IAEF,CAAC;QACC,MAAM,GAAG,GAAG,qBAAqB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAErE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type UpdateRepositoryRequest } from 'octokit-safe-types';
2
- export declare const updateRepository: ({ payload: { name, description, homepage, private: private_, visibility, security_and_analysis, has_issues, has_projects, has_wiki, is_template, default_branch, allow_squash_merge, allow_merge_commit, allow_rebase_merge, allow_auto_merge, delete_branch_on_merge, allow_update_branch, use_squash_pr_title_as_default, squash_merge_commit_title, squash_merge_commit_message, merge_commit_title, merge_commit_message, archived, allow_forking, web_commit_signoff_required, }, }: Readonly<{
2
+ export declare const updateRepository: ({ payload: { name, description, homepage, private: private_, visibility, security_and_analysis, has_issues, has_projects, has_wiki, has_pull_requests, pull_request_creation_policy, is_template, default_branch, allow_squash_merge, allow_merge_commit, allow_rebase_merge, allow_auto_merge, delete_branch_on_merge, allow_update_branch, use_squash_pr_title_as_default, squash_merge_commit_title, squash_merge_commit_message, merge_commit_title, merge_commit_message, archived, allow_forking, web_commit_signoff_required, }, }: Readonly<{
3
3
  payload: UpdateRepositoryRequest;
4
4
  }>) => Promise<void>;
5
5
  //# sourceMappingURL=update-repository.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-repository.d.mts","sourceRoot":"","sources":["../../../../src/github/repository/api/update-repository.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,gBAAgB,6dA4B1B,QAAQ,CAAC;IACV,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC,KAAG,OAAO,CAAC,IAAI,CAiChB,CAAC"}
1
+ {"version":3,"file":"update-repository.d.mts","sourceRoot":"","sources":["../../../../src/github/repository/api/update-repository.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,oBAAoB,CAAC;AAK5B,eAAO,MAAM,gBAAgB,8gBA8B1B,QAAQ,CAAC;IACV,OAAO,EAAE,uBAAuB,CAAC;CAClC,CAAC,KAAG,OAAO,CAAC,IAAI,CAmChB,CAAC"}
@@ -1,6 +1,7 @@
1
+ import { castDeepMutable } from 'ts-data-forge';
1
2
  import { octokitHeaders, OWNER, REPO } from '../../constants.mjs';
2
3
  import { octokit } from '../../octokit.mjs';
3
- export const updateRepository = async ({ payload: { name, description, homepage, private: private_, visibility, security_and_analysis, has_issues, has_projects, has_wiki, is_template, default_branch, allow_squash_merge, allow_merge_commit, allow_rebase_merge, allow_auto_merge, delete_branch_on_merge, allow_update_branch, use_squash_pr_title_as_default, squash_merge_commit_title, squash_merge_commit_message, merge_commit_title, merge_commit_message, archived, allow_forking, web_commit_signoff_required, }, }) => {
4
+ export const updateRepository = async ({ payload: { name, description, homepage, private: private_, visibility, security_and_analysis, has_issues, has_projects, has_wiki, has_pull_requests, pull_request_creation_policy, is_template, default_branch, allow_squash_merge, allow_merge_commit, allow_rebase_merge, allow_auto_merge, delete_branch_on_merge, allow_update_branch, use_squash_pr_title_as_default, squash_merge_commit_title, squash_merge_commit_message, merge_commit_title, merge_commit_message, archived, allow_forking, web_commit_signoff_required, }, }) => {
4
5
  // https://docs.github.com/ja/rest/repos/repos?apiVersion=2022-11-28#update-a-repository
5
6
  await octokit.request('PATCH /repos/{owner}/{repo}', {
6
7
  owner: OWNER,
@@ -11,10 +12,12 @@ export const updateRepository = async ({ payload: { name, description, homepage,
11
12
  homepage,
12
13
  private: private_,
13
14
  visibility,
14
- security_and_analysis,
15
+ security_and_analysis: castDeepMutable(security_and_analysis),
15
16
  has_issues,
16
17
  has_projects,
17
18
  has_wiki,
19
+ has_pull_requests,
20
+ pull_request_creation_policy,
18
21
  is_template,
19
22
  default_branch,
20
23
  allow_squash_merge,
@@ -1 +1 @@
1
- {"version":3,"file":"update-repository.mjs","sourceRoot":"","sources":["../../../../src/github/repository/api/update-repository.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,OAAO,EAAE,EACP,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EAAE,QAAQ,EACjB,UAAU,EACV,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,aAAa,EACb,2BAA2B,GAC5B,GAGD,EAAiB,EAAE;IACnB,wFAAwF;IACxF,MAAM,OAAO,CAAC,OAAO,CAAC,6BAAoD,EAAE;QAC1E,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;QAEvB,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,QAAQ;QACjB,UAAU;QACV,qBAAqB;QACrB,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,WAAW;QACX,cAAc;QACd,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,sBAAsB;QACtB,mBAAmB;QACnB,8BAA8B;QAC9B,yBAAyB;QACzB,2BAA2B;QAC3B,kBAAkB;QAClB,oBAAoB;QACpB,QAAQ;QACR,aAAa;QACb,2BAA2B;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"update-repository.mjs","sourceRoot":"","sources":["../../../../src/github/repository/api/update-repository.mts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,OAAO,EAAE,EACP,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,OAAO,EAAE,QAAQ,EACjB,UAAU,EACV,qBAAqB,EACrB,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,4BAA4B,EAC5B,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,8BAA8B,EAC9B,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,aAAa,EACb,2BAA2B,GAC5B,GAGD,EAAiB,EAAE;IACnB,wFAAwF;IACxF,MAAM,OAAO,CAAC,OAAO,CAAC,6BAAoD,EAAE;QAC1E,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,cAAc;QAEvB,IAAI;QACJ,WAAW;QACX,QAAQ;QACR,OAAO,EAAE,QAAQ;QACjB,UAAU;QACV,qBAAqB,EAAE,eAAe,CAAC,qBAAqB,CAAC;QAC7D,UAAU;QACV,YAAY;QACZ,QAAQ;QACR,iBAAiB;QACjB,4BAA4B;QAC5B,WAAW;QACX,cAAc;QACd,kBAAkB;QAClB,kBAAkB;QAClB,kBAAkB;QAClB,gBAAgB;QAChB,sBAAsB;QACtB,mBAAmB;QACnB,8BAA8B;QAC9B,yBAAyB;QACzB,2BAA2B;QAC3B,kBAAkB;QAClB,oBAAoB;QACpB,QAAQ;QACR,aAAa;QACb,2BAA2B;KAC5B,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -3,7 +3,7 @@ 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 { validationErrorsToMessages } from 'ts-fortress';
6
+ 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';
@@ -60,7 +60,7 @@ const readSettings = async () => {
60
60
  });
61
61
  const validationResult = RepositoryPicked.validate(JSON.parse(settingsText));
62
62
  if (Result.isErr(validationResult)) {
63
- throw new Error(validationErrorsToMessages(validationResult.value).join('\n'));
63
+ throw new Error(t.validationErrorsToMessages(validationResult.value).join('\n'));
64
64
  }
65
65
  return validationResult.value;
66
66
  };
@@ -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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"}