github-settings-as-code 2.1.2 → 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 +4 -4
- 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/package.json +4 -4
- package/src/cmd/repo-settings.mts +4 -4
- 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/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
|
|
@@ -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 を有効化しないため)。
|
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-config-typed": "5.8.6",
|
|
52
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
|
|
@@ -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 を有効化しないため)。
|