github-settings-as-code 2.1.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -15
- package/dist/cmd/repo-settings.mjs +6 -5
- package/dist/cmd/repo-settings.mjs.map +1 -1
- package/dist/github/actions-settings/apply.d.mts +1 -1
- package/dist/github/actions-settings/apply.d.mts.map +1 -1
- package/dist/github/actions-settings/apply.mjs +1 -1
- package/dist/github/actions-settings/apply.mjs.map +1 -1
- package/dist/github/actions-settings/constants.d.mts +1 -1
- package/dist/github/actions-settings/constants.mjs +1 -1
- package/dist/github/constants.d.mts.map +1 -1
- package/dist/github/constants.mjs +7 -5
- package/dist/github/constants.mjs.map +1 -1
- package/dist/github/pages/apply.d.mts +1 -1
- package/dist/github/pages/apply.mjs +1 -1
- package/dist/github/pages/constants.d.mts +1 -1
- package/dist/github/pages/constants.mjs +1 -1
- package/dist/github/variables/apply.mjs +3 -3
- package/dist/github/variables/apply.mjs.map +1 -1
- package/package.json +5 -5
- package/src/cmd/repo-settings.mts +6 -5
- package/src/github/actions-settings/apply.mts +1 -1
- package/src/github/actions-settings/constants.mts +1 -1
- package/src/github/constants.mts +10 -5
- package/src/github/pages/apply.mts +1 -1
- package/src/github/pages/constants.mts +1 -1
- package/src/github/variables/apply.mts +3 -3
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 | 対応するファイル
|
|
17
|
-
| ------------- |
|
|
18
|
-
| `all`(既定) | すべて
|
|
19
|
-
| `repository` | `
|
|
20
|
-
| `rulesets` | `
|
|
21
|
-
| `variables` | repository variables
|
|
22
|
-
| `actions` | `
|
|
23
|
-
| `pages` | `
|
|
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
|
-
| ファイル
|
|
55
|
-
|
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
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
|
-
`
|
|
67
|
+
`repo-settings/pages/settings.json` を置いていない repository では Pages の操作を行わない
|
|
62
68
|
( Pages を使わない repository で誤って有効化しないため )。
|
|
@@ -13,11 +13,11 @@ Commands:
|
|
|
13
13
|
|
|
14
14
|
Targets:
|
|
15
15
|
all すべて(既定)
|
|
16
|
-
repository
|
|
17
|
-
rulesets
|
|
16
|
+
repository repo-settings/repository-settings/settings.json
|
|
17
|
+
rulesets repo-settings/rulesets/*.json
|
|
18
18
|
variables repository variables ( apply のみ )
|
|
19
|
-
actions
|
|
20
|
-
pages
|
|
19
|
+
actions repo-settings/actions-settings/settings.json
|
|
20
|
+
pages repo-settings/pages/settings.json
|
|
21
21
|
|
|
22
22
|
Options:
|
|
23
23
|
--owner <owner> 対象の owner
|
|
@@ -71,7 +71,8 @@ const { values, positionals } = util.parseArgs({
|
|
|
71
71
|
});
|
|
72
72
|
if (values.help === true || Arr.isEmpty(positionals)) {
|
|
73
73
|
console.info(HELP);
|
|
74
|
-
|
|
74
|
+
// Asking for help is not an error, even though being given no command is.
|
|
75
|
+
process.exit(values.help === true ? 0 : 1);
|
|
75
76
|
}
|
|
76
77
|
const [commandArg, targetArg = 'all'] = positionals;
|
|
77
78
|
if (commandArg === undefined || !isCommand(commandArg)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-settings.mjs","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":";AAEA,OAAO,eAAe,CAAC;AACvB,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAGpC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCZ,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC;AAI9C,MAAM,OAAO,GAAG;IACd,KAAK;IACL,YAAY;IACZ,UAAU;IACV,WAAW;IACX,SAAS;IACT,OAAO;CACC,CAAC;AAIX,MAAM,WAAW,GAAwB,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;AAE3D,MAAM,SAAS,GAAG,CAAC,KAAa,EAAoB,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE9E,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAEzD,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAmB,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAE3E,0CAA0C;AAC1C,gDAAgD;AAChD,MAAM,IAAI,GAA+B,CAAC,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;IAE9B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;IAC7C,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE;QACP,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE;KACtD;IACD,MAAM,EAAE,KAAK;IACb,gBAAgB,EAAE,IAAI;CACvB,CAAC,CAAC;AAEH,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"repo-settings.mjs","sourceRoot":"","sources":["../../src/cmd/repo-settings.mts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
|
-
/** `
|
|
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,
|
|
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"}
|
|
@@ -8,7 +8,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
|
-
/** `
|
|
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();
|
|
@@ -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,
|
|
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,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,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 +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;
|
|
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
|
-
|
|
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(
|
|
9
|
-
export const actionsSettingsDir = path.resolve(
|
|
10
|
-
export const pagesSettingsDir = path.resolve(
|
|
11
|
-
export const rulesetsDir = path.resolve(
|
|
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,
|
|
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,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import 'dotenv/config';
|
|
3
3
|
/**
|
|
4
|
-
* `
|
|
4
|
+
* `repo-settings/pages/settings.json` を Settings > Pages に反映する。
|
|
5
5
|
*
|
|
6
6
|
* 設定ファイルを置いていない repository では何もしない( Pages を使わない
|
|
7
7
|
* repository で誤って Pages を有効化しないため)。
|
|
@@ -8,7 +8,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
|
-
* `
|
|
11
|
+
* `repo-settings/pages/settings.json` を Settings > Pages に反映する。
|
|
12
12
|
*
|
|
13
13
|
* 設定ファイルを置いていない repository では何もしない( Pages を使わない
|
|
14
14
|
* repository で誤って Pages を有効化しないため)。
|
|
@@ -12,9 +12,9 @@ export const applyVariables = async () => {
|
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
// noshiro-repo-automation-bot (App ID: 4478721)
|
|
15
|
-
// Contents / Pull requests / Issues 権限。PR を作る自動化( pnpm-update
|
|
16
|
-
//
|
|
17
|
-
//
|
|
15
|
+
// Contents / Pull requests / Issues 権限。PR を作る自動化( pnpm-update )と
|
|
16
|
+
// release で共用する。実際に使う権限は各ワークフローの permission-* 入力で
|
|
17
|
+
// 絞る。
|
|
18
18
|
name: 'REPO_AUTOMATION_BOT_CLIENT_ID',
|
|
19
19
|
value: 'Iv23lilpiDh0twq2PErv',
|
|
20
20
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";AACA,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,
|
|
1
|
+
{"version":3,"file":"apply.mjs","sourceRoot":"","sources":["../../../src/github/variables/apply.mts"],"names":[],"mappings":";AACA,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "github-settings-as-code",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"keywords": [
|
|
6
6
|
"github",
|
|
@@ -29,9 +29,9 @@
|
|
|
29
29
|
"dotenv": "^17.4.2",
|
|
30
30
|
"octokit-safe-types": "^1.2.25",
|
|
31
31
|
"ts-data-forge": "^14.2.1",
|
|
32
|
-
"ts-fortress": "^12.0.1",
|
|
33
32
|
"ts-repo-utils": "^10.2.0",
|
|
34
|
-
"ts-type-forge": "^9.2.1"
|
|
33
|
+
"ts-type-forge": "^9.2.1",
|
|
34
|
+
"ts-fortress": "^12.0.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "26.2.0",
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
"typescript": "6.0.3",
|
|
49
49
|
"typescript-native": "npm:typescript@7.0.2",
|
|
50
50
|
"vitest": "4.1.10",
|
|
51
|
-
"eslint-
|
|
52
|
-
"eslint-
|
|
51
|
+
"eslint-plugin-ts-data-forge": "0.4.5",
|
|
52
|
+
"eslint-config-typed": "5.8.6",
|
|
53
53
|
"eslint-plugin-ts-fortress": "1.0.1",
|
|
54
54
|
"eslint-plugin-ts-type-forge": "0.6.3"
|
|
55
55
|
},
|
|
@@ -16,11 +16,11 @@ Commands:
|
|
|
16
16
|
|
|
17
17
|
Targets:
|
|
18
18
|
all すべて(既定)
|
|
19
|
-
repository
|
|
20
|
-
rulesets
|
|
19
|
+
repository repo-settings/repository-settings/settings.json
|
|
20
|
+
rulesets repo-settings/rulesets/*.json
|
|
21
21
|
variables repository variables ( apply のみ )
|
|
22
|
-
actions
|
|
23
|
-
pages
|
|
22
|
+
actions repo-settings/actions-settings/settings.json
|
|
23
|
+
pages repo-settings/pages/settings.json
|
|
24
24
|
|
|
25
25
|
Options:
|
|
26
26
|
--owner <owner> 対象の owner
|
|
@@ -91,7 +91,8 @@ const { values, positionals } = util.parseArgs({
|
|
|
91
91
|
if (values.help === true || Arr.isEmpty(positionals)) {
|
|
92
92
|
console.info(HELP);
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
// Asking for help is not an error, even though being given no command is.
|
|
95
|
+
process.exit(values.help === true ? 0 : 1);
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
const [commandArg, targetArg = 'all'] = positionals;
|
|
@@ -13,7 +13,7 @@ import { getActionsSettings, setActionsSettings } from './api/index.mjs';
|
|
|
13
13
|
import { backupActionsSettings } from './backup.mjs';
|
|
14
14
|
import { ActionsSettings } from './constants.mjs';
|
|
15
15
|
|
|
16
|
-
/** `
|
|
16
|
+
/** `repo-settings/actions-settings/settings.json` を Settings > Actions > General に反映する。 */
|
|
17
17
|
export const applyActionsSettings = async (): Promise<void> => {
|
|
18
18
|
await backupActionsSettings(false);
|
|
19
19
|
|
package/src/github/constants.mts
CHANGED
|
@@ -7,20 +7,25 @@ export const OWNER: string = targetRepo.owner;
|
|
|
7
7
|
|
|
8
8
|
export const REPO: string = targetRepo.repo;
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
// Named `repo-settings` rather than `github`, which read as a sibling of
|
|
11
|
+
// `.github` and invited the guess that workflows lived here too.
|
|
12
|
+
const settingsDir = path.resolve(process.cwd(), './repo-settings');
|
|
11
13
|
|
|
12
14
|
export const settingsJsonName = 'settings.json';
|
|
13
15
|
|
|
14
16
|
export const repositorySettingsDir = path.resolve(
|
|
15
|
-
|
|
17
|
+
settingsDir,
|
|
16
18
|
'./repository-settings',
|
|
17
19
|
);
|
|
18
20
|
|
|
19
|
-
export const actionsSettingsDir = path.resolve(
|
|
21
|
+
export const actionsSettingsDir = path.resolve(
|
|
22
|
+
settingsDir,
|
|
23
|
+
'./actions-settings',
|
|
24
|
+
);
|
|
20
25
|
|
|
21
|
-
export const pagesSettingsDir = path.resolve(
|
|
26
|
+
export const pagesSettingsDir = path.resolve(settingsDir, './pages');
|
|
22
27
|
|
|
23
|
-
export const rulesetsDir = path.resolve(
|
|
28
|
+
export const rulesetsDir = path.resolve(settingsDir, './rulesets');
|
|
24
29
|
|
|
25
30
|
export const octokitHeaders = {
|
|
26
31
|
'X-GitHub-Api-Version': '2022-11-28',
|
|
@@ -14,7 +14,7 @@ import { getPagesSettings, setPagesSettings } from './api/index.mjs';
|
|
|
14
14
|
import { PagesSettings } from './constants.mjs';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
|
-
* `
|
|
17
|
+
* `repo-settings/pages/settings.json` を Settings > Pages に反映する。
|
|
18
18
|
*
|
|
19
19
|
* 設定ファイルを置いていない repository では何もしない( Pages を使わない
|
|
20
20
|
* repository で誤って Pages を有効化しないため)。
|
|
@@ -17,9 +17,9 @@ export const applyVariables = async (): Promise<void> => {
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
// noshiro-repo-automation-bot (App ID: 4478721)
|
|
20
|
-
// Contents / Pull requests / Issues 権限。PR を作る自動化( pnpm-update
|
|
21
|
-
//
|
|
22
|
-
//
|
|
20
|
+
// Contents / Pull requests / Issues 権限。PR を作る自動化( pnpm-update )と
|
|
21
|
+
// release で共用する。実際に使う権限は各ワークフローの permission-* 入力で
|
|
22
|
+
// 絞る。
|
|
23
23
|
name: 'REPO_AUTOMATION_BOT_CLIENT_ID',
|
|
24
24
|
value: 'Iv23lilpiDh0twq2PErv',
|
|
25
25
|
},
|