@reddoorla/maintenance 0.82.0 → 0.84.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/dist/airtable-5ZPU3MT4.js +9 -0
- package/dist/{announce-7QHQGJPV.js → announce-4H64L2Z6.js} +4 -4
- package/dist/{blux-EATHOHKK.js → blux-ZGDSHI3U.js} +5 -5
- package/dist/{bump-deps-ZREAMK7M.js → bump-deps-2OL6PGTM.js} +5 -5
- package/dist/{chunk-OIDDJLS7.js → chunk-2WN4SNBQ.js} +2 -2
- package/dist/{chunk-HVOOCK6L.js → chunk-4DHQCN5H.js} +2 -1
- package/dist/{chunk-5E4L7WKE.js → chunk-5P2HVNLZ.js} +3 -3
- package/dist/{chunk-ZXRRKKMR.js → chunk-6V7565O2.js} +8 -8
- package/dist/{chunk-YRM6EED7.js → chunk-CLWNAMUX.js} +28 -2
- package/dist/chunk-CLWNAMUX.js.map +1 -0
- package/dist/{chunk-VXXF4Y25.js → chunk-FSRJAF2Q.js} +60 -3
- package/dist/chunk-FSRJAF2Q.js.map +1 -0
- package/dist/{chunk-B5ZUQZFL.js → chunk-ICXV25N7.js} +2 -2
- package/dist/{chunk-UH5YPYS4.js → chunk-JVWJJ36K.js} +5 -4
- package/dist/chunk-JVWJJ36K.js.map +1 -0
- package/dist/{chunk-4PW6ISX7.js → chunk-KV7DIRRO.js} +3 -3
- package/dist/{chunk-ODC4PXZL.js → chunk-MQUOUVQP.js} +2 -2
- package/dist/{chunk-LMCO7CYQ.js → chunk-OQFOMKBP.js} +2 -2
- package/dist/{chunk-FFI7P74K.js → chunk-PBCGXXG6.js} +2 -2
- package/dist/{chunk-T4FQ6TZT.js → chunk-QRDB4NLB.js} +6 -6
- package/dist/{chunk-K5JZ5KLO.js → chunk-R4AB6GCT.js} +3 -3
- package/dist/chunk-R53VL3RI.js +32 -0
- package/dist/chunk-R53VL3RI.js.map +1 -0
- package/dist/{chunk-FX7RAMGC.js → chunk-R6FPFMOS.js} +3 -3
- package/dist/{chunk-MGJ72BA4.js → chunk-RJB3QUSP.js} +2 -2
- package/dist/{chunk-ATJ6ZA2V.js → chunk-SDUJIANJ.js} +2 -2
- package/dist/{chunk-7ADQL5Y3.js → chunk-THEFTZ7F.js} +2 -2
- package/dist/{chunk-NT4WIP7I.js → chunk-UYCAF77E.js} +2 -2
- package/dist/chunk-VNB5XBQ4.js +699 -0
- package/dist/chunk-VNB5XBQ4.js.map +1 -0
- package/dist/{chunk-YAMRVXOD.js → chunk-VRWUL4TR.js} +2 -2
- package/dist/{chunk-2BHSGLWR.js → chunk-XDCRVYFL.js} +3 -3
- package/dist/chunk-XDCRVYFL.js.map +1 -0
- package/dist/{chunk-4NAOR44V.js → chunk-ZMIPG6TR.js} +2 -2
- package/dist/cli/bin.js +51 -23
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/commands/audit.d.ts +1 -1
- package/dist/cli/commands/audit.js +10 -10
- package/dist/{convert-to-pnpm-UT2R6EOW.js → convert-to-pnpm-KCXOYOHW.js} +5 -5
- package/dist/{digest-CLFUWW62.js → digest-WGEPAWMP.js} +12 -7
- package/dist/digest-WGEPAWMP.js.map +1 -0
- package/dist/{ensure-site-LLPOXLWP.js → ensure-site-HYAIVZY2.js} +2 -2
- package/dist/{forms-notify-target-PN6P3WPW.js → forms-notify-target-HSL4ZMT5.js} +2 -2
- package/dist/{github-signals-HTH7474O.js → github-signals-I7XACMCE.js} +6 -6
- package/dist/{header-image-WMHZFU7B.js → header-image-ADYPTGVY.js} +2 -2
- package/dist/{health-endpoint-4E53ZMLE.js → health-endpoint-JNCUILHO.js} +6 -6
- package/dist/index.d.ts +65 -3
- package/dist/index.js +32 -31
- package/dist/index.js.map +1 -1
- package/dist/{init-3ZJ7Z5NG.js → init-FLGLJCMJ.js} +13 -13
- package/dist/{launch-FRCDOB56.js → launch-AVKH2JVF.js} +10 -10
- package/dist/{lighthouse-airtable-I46QCEIS.js → lighthouse-airtable-CHANWVO6.js} +3 -3
- package/dist/{onboard-45NPDMMW.js → onboard-HF4FTJDE.js} +5 -5
- package/dist/{orchestrate-34JYNIXT.js → orchestrate-5FMNYJEA.js} +3 -3
- package/dist/{preflight-WVD32COX.js → preflight-HTWIX3MN.js} +4 -4
- package/dist/prismic-ci-4PDATHU6.js +447 -0
- package/dist/prismic-ci-4PDATHU6.js.map +1 -0
- package/dist/prismic-models-HXCAM4ZL.js +1020 -0
- package/dist/prismic-models-HXCAM4ZL.js.map +1 -0
- package/dist/{protection-audit-2UR45SOC.js → protection-audit-64PLLBLI.js} +3 -3
- package/dist/recipes/sync-configs.d.ts +1 -1
- package/dist/{renovate-dispatch-LOOCNZTW.js → renovate-dispatch-HBZG2UEU.js} +4 -4
- package/dist/{report-CLF2753O.js → report-LV7NY5W3.js} +20 -13
- package/dist/report-LV7NY5W3.js.map +1 -0
- package/dist/{self-updating-5TJ2NB26.js → self-updating-4Q65OVXY.js} +6 -6
- package/dist/{selftest-BTCZLCTL.js → selftest-K5XZKVTE.js} +7 -7
- package/dist/{smoke-suite-GHKXMKIR.js → smoke-suite-J3LL3JZJ.js} +6 -6
- package/dist/{submissions-KUXLKCSQ.js → submissions-GMBUP4LV.js} +2 -2
- package/dist/{svelte-codemods-YTCTLK7G.js → svelte-codemods-JTMX4BSX.js} +4 -4
- package/dist/{sync-configs-KSSQZU5L.js → sync-configs-5DXSL64Q.js} +4 -4
- package/dist/{types-DnEL3NRn.d.ts → types-OIQZ5hWN.d.ts} +1 -1
- package/dist/{upgrade-UDAPY3SN.js → upgrade-HCR25P25.js} +5 -5
- package/dist/{websites-JXG3WWAU.js → websites-VITQ3WXN.js} +6 -2
- package/dist/{write-audits-to-airtable-7D3LV4KP.js → write-audits-to-airtable-3SOXLKJK.js} +4 -4
- package/package.json +1 -1
- package/dist/airtable-ZDHLKK5K.js +0 -9
- package/dist/chunk-2BHSGLWR.js.map +0 -1
- package/dist/chunk-KRDLHAKK.js +0 -17
- package/dist/chunk-KRDLHAKK.js.map +0 -1
- package/dist/chunk-UH5YPYS4.js.map +0 -1
- package/dist/chunk-VXXF4Y25.js.map +0 -1
- package/dist/chunk-YRM6EED7.js.map +0 -1
- package/dist/digest-CLFUWW62.js.map +0 -1
- package/dist/report-CLF2753O.js.map +0 -1
- /package/dist/{airtable-ZDHLKK5K.js.map → airtable-5ZPU3MT4.js.map} +0 -0
- /package/dist/{announce-7QHQGJPV.js.map → announce-4H64L2Z6.js.map} +0 -0
- /package/dist/{blux-EATHOHKK.js.map → blux-ZGDSHI3U.js.map} +0 -0
- /package/dist/{bump-deps-ZREAMK7M.js.map → bump-deps-2OL6PGTM.js.map} +0 -0
- /package/dist/{chunk-OIDDJLS7.js.map → chunk-2WN4SNBQ.js.map} +0 -0
- /package/dist/{chunk-HVOOCK6L.js.map → chunk-4DHQCN5H.js.map} +0 -0
- /package/dist/{chunk-5E4L7WKE.js.map → chunk-5P2HVNLZ.js.map} +0 -0
- /package/dist/{chunk-ZXRRKKMR.js.map → chunk-6V7565O2.js.map} +0 -0
- /package/dist/{chunk-B5ZUQZFL.js.map → chunk-ICXV25N7.js.map} +0 -0
- /package/dist/{chunk-4PW6ISX7.js.map → chunk-KV7DIRRO.js.map} +0 -0
- /package/dist/{chunk-ODC4PXZL.js.map → chunk-MQUOUVQP.js.map} +0 -0
- /package/dist/{chunk-LMCO7CYQ.js.map → chunk-OQFOMKBP.js.map} +0 -0
- /package/dist/{chunk-FFI7P74K.js.map → chunk-PBCGXXG6.js.map} +0 -0
- /package/dist/{chunk-T4FQ6TZT.js.map → chunk-QRDB4NLB.js.map} +0 -0
- /package/dist/{chunk-K5JZ5KLO.js.map → chunk-R4AB6GCT.js.map} +0 -0
- /package/dist/{chunk-FX7RAMGC.js.map → chunk-R6FPFMOS.js.map} +0 -0
- /package/dist/{chunk-MGJ72BA4.js.map → chunk-RJB3QUSP.js.map} +0 -0
- /package/dist/{chunk-ATJ6ZA2V.js.map → chunk-SDUJIANJ.js.map} +0 -0
- /package/dist/{chunk-7ADQL5Y3.js.map → chunk-THEFTZ7F.js.map} +0 -0
- /package/dist/{chunk-NT4WIP7I.js.map → chunk-UYCAF77E.js.map} +0 -0
- /package/dist/{chunk-YAMRVXOD.js.map → chunk-VRWUL4TR.js.map} +0 -0
- /package/dist/{chunk-4NAOR44V.js.map → chunk-ZMIPG6TR.js.map} +0 -0
- /package/dist/{convert-to-pnpm-UT2R6EOW.js.map → convert-to-pnpm-KCXOYOHW.js.map} +0 -0
- /package/dist/{ensure-site-LLPOXLWP.js.map → ensure-site-HYAIVZY2.js.map} +0 -0
- /package/dist/{forms-notify-target-PN6P3WPW.js.map → forms-notify-target-HSL4ZMT5.js.map} +0 -0
- /package/dist/{github-signals-HTH7474O.js.map → github-signals-I7XACMCE.js.map} +0 -0
- /package/dist/{header-image-WMHZFU7B.js.map → header-image-ADYPTGVY.js.map} +0 -0
- /package/dist/{health-endpoint-4E53ZMLE.js.map → health-endpoint-JNCUILHO.js.map} +0 -0
- /package/dist/{init-3ZJ7Z5NG.js.map → init-FLGLJCMJ.js.map} +0 -0
- /package/dist/{launch-FRCDOB56.js.map → launch-AVKH2JVF.js.map} +0 -0
- /package/dist/{lighthouse-airtable-I46QCEIS.js.map → lighthouse-airtable-CHANWVO6.js.map} +0 -0
- /package/dist/{onboard-45NPDMMW.js.map → onboard-HF4FTJDE.js.map} +0 -0
- /package/dist/{orchestrate-34JYNIXT.js.map → orchestrate-5FMNYJEA.js.map} +0 -0
- /package/dist/{preflight-WVD32COX.js.map → preflight-HTWIX3MN.js.map} +0 -0
- /package/dist/{protection-audit-2UR45SOC.js.map → protection-audit-64PLLBLI.js.map} +0 -0
- /package/dist/{renovate-dispatch-LOOCNZTW.js.map → renovate-dispatch-HBZG2UEU.js.map} +0 -0
- /package/dist/{self-updating-5TJ2NB26.js.map → self-updating-4Q65OVXY.js.map} +0 -0
- /package/dist/{selftest-BTCZLCTL.js.map → selftest-K5XZKVTE.js.map} +0 -0
- /package/dist/{smoke-suite-GHKXMKIR.js.map → smoke-suite-J3LL3JZJ.js.map} +0 -0
- /package/dist/{submissions-KUXLKCSQ.js.map → submissions-GMBUP4LV.js.map} +0 -0
- /package/dist/{svelte-codemods-YTCTLK7G.js.map → svelte-codemods-JTMX4BSX.js.map} +0 -0
- /package/dist/{sync-configs-KSSQZU5L.js.map → sync-configs-5DXSL64Q.js.map} +0 -0
- /package/dist/{upgrade-UDAPY3SN.js.map → upgrade-HCR25P25.js.map} +0 -0
- /package/dist/{websites-JXG3WWAU.js.map → websites-VITQ3WXN.js.map} +0 -0
- /package/dist/{write-audits-to-airtable-7D3LV4KP.js.map → write-audits-to-airtable-3SOXLKJK.js.map} +0 -0
|
@@ -2,30 +2,30 @@ import {
|
|
|
2
2
|
appendSkipNotice,
|
|
3
3
|
fleetWorkdir,
|
|
4
4
|
prepareFleetSites
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-ZMIPG6TR.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveSites
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MQUOUVQP.js";
|
|
9
9
|
import {
|
|
10
10
|
init
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-6V7565O2.js";
|
|
12
|
+
import "./chunk-UYCAF77E.js";
|
|
13
|
+
import "./chunk-RJB3QUSP.js";
|
|
13
14
|
import "./chunk-LS6QPANO.js";
|
|
14
15
|
import "./chunk-J7SZQUCW.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-NT4WIP7I.js";
|
|
16
|
+
import "./chunk-R6FPFMOS.js";
|
|
17
|
+
import "./chunk-R4AB6GCT.js";
|
|
18
|
+
import "./chunk-R53VL3RI.js";
|
|
19
19
|
import "./chunk-Q276MZ7E.js";
|
|
20
20
|
import "./chunk-73UFRZKY.js";
|
|
21
21
|
import "./chunk-ZTPPCHDB.js";
|
|
22
22
|
import "./chunk-OTGB6YQO.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-GASBX52O.js";
|
|
25
|
-
import "./chunk-YAMRVXOD.js";
|
|
23
|
+
import "./chunk-QRDB4NLB.js";
|
|
26
24
|
import "./chunk-LKGVSM2O.js";
|
|
25
|
+
import "./chunk-GASBX52O.js";
|
|
26
|
+
import "./chunk-VRWUL4TR.js";
|
|
27
27
|
import "./chunk-FDIFTIXC.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-4DHQCN5H.js";
|
|
29
29
|
import "./chunk-A3WDWNN5.js";
|
|
30
30
|
import "./chunk-2OP4JKIQ.js";
|
|
31
31
|
import {
|
|
@@ -107,4 +107,4 @@ async function runInitCommand(site, opts) {
|
|
|
107
107
|
export {
|
|
108
108
|
runInitCommand
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=init-
|
|
110
|
+
//# sourceMappingURL=init-FLGLJCMJ.js.map
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
selfUpdating
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-THEFTZ7F.js";
|
|
4
4
|
import "./chunk-MNDIED4M.js";
|
|
5
5
|
import {
|
|
6
6
|
writeAuditsToAirtable
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-XDCRVYFL.js";
|
|
8
8
|
import {
|
|
9
9
|
hasRealScores,
|
|
10
10
|
lighthouseScoresFromResult
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OQFOMKBP.js";
|
|
12
12
|
import "./chunk-5L3FPQIJ.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveSites
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MQUOUVQP.js";
|
|
16
16
|
import {
|
|
17
17
|
queueDraft
|
|
18
18
|
} from "./chunk-62VF32IC.js";
|
|
@@ -30,12 +30,12 @@ import "./chunk-SEEA6RXF.js";
|
|
|
30
30
|
import "./chunk-73UFRZKY.js";
|
|
31
31
|
import {
|
|
32
32
|
runAudits
|
|
33
|
-
} from "./chunk-
|
|
34
|
-
import "./chunk-GASBX52O.js";
|
|
35
|
-
import "./chunk-YAMRVXOD.js";
|
|
33
|
+
} from "./chunk-QRDB4NLB.js";
|
|
36
34
|
import "./chunk-LKGVSM2O.js";
|
|
35
|
+
import "./chunk-GASBX52O.js";
|
|
36
|
+
import "./chunk-VRWUL4TR.js";
|
|
37
37
|
import "./chunk-FDIFTIXC.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-4DHQCN5H.js";
|
|
39
39
|
import "./chunk-A3WDWNN5.js";
|
|
40
40
|
import "./chunk-2OP4JKIQ.js";
|
|
41
41
|
import {
|
|
@@ -46,7 +46,7 @@ import "./chunk-U5SZ4FOP.js";
|
|
|
46
46
|
import {
|
|
47
47
|
listWebsites,
|
|
48
48
|
siteSlug
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-CLWNAMUX.js";
|
|
50
50
|
import {
|
|
51
51
|
openBase,
|
|
52
52
|
readAirtableConfig
|
|
@@ -216,4 +216,4 @@ async function runLaunchCommand(site, opts) {
|
|
|
216
216
|
export {
|
|
217
217
|
runLaunchCommand
|
|
218
218
|
};
|
|
219
|
-
//# sourceMappingURL=launch-
|
|
219
|
+
//# sourceMappingURL=launch-AVKH2JVF.js.map
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
hasRealScores,
|
|
3
3
|
lighthouseScoresFromResult,
|
|
4
4
|
resolveSlugFromCwd
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-OQFOMKBP.js";
|
|
6
|
+
import "./chunk-CLWNAMUX.js";
|
|
7
7
|
export {
|
|
8
8
|
hasRealScores,
|
|
9
9
|
lighthouseScoresFromResult,
|
|
10
10
|
resolveSlugFromCwd
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=lighthouse-airtable-
|
|
12
|
+
//# sourceMappingURL=lighthouse-airtable-CHANWVO6.js.map
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
appendSkipNotice,
|
|
6
6
|
fleetWorkdir,
|
|
7
7
|
prepareFleetSites
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ZMIPG6TR.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveSites
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MQUOUVQP.js";
|
|
12
12
|
import {
|
|
13
13
|
onboard
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-UYCAF77E.js";
|
|
15
15
|
import "./chunk-ZTPPCHDB.js";
|
|
16
16
|
import "./chunk-OTGB6YQO.js";
|
|
17
17
|
import "./chunk-LKGVSM2O.js";
|
|
18
18
|
import "./chunk-FDIFTIXC.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-4DHQCN5H.js";
|
|
20
20
|
import "./chunk-XXTZBPUY.js";
|
|
21
21
|
import "./chunk-XTK5VIQB.js";
|
|
22
22
|
import "./chunk-U5SZ4FOP.js";
|
|
@@ -70,4 +70,4 @@ async function runOnboardCommand(site, opts) {
|
|
|
70
70
|
export {
|
|
71
71
|
runOnboardCommand
|
|
72
72
|
};
|
|
73
|
-
//# sourceMappingURL=onboard-
|
|
73
|
+
//# sourceMappingURL=onboard-HF4FTJDE.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
parseAddresses,
|
|
5
5
|
sendApprovedReports,
|
|
6
6
|
withGlobalCc
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PBCGXXG6.js";
|
|
8
8
|
import "./chunk-GECESMVS.js";
|
|
9
9
|
import "./chunk-6QRLRT3P.js";
|
|
10
10
|
import "./chunk-MPBXOJ3N.js";
|
|
@@ -14,7 +14,7 @@ import "./chunk-QG6OSL4M.js";
|
|
|
14
14
|
import "./chunk-DC5H7KEQ.js";
|
|
15
15
|
import "./chunk-4SOCPK7A.js";
|
|
16
16
|
import "./chunk-U5SZ4FOP.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-CLWNAMUX.js";
|
|
18
18
|
import "./chunk-HN6I2XWI.js";
|
|
19
19
|
import "./chunk-6VAL7XJT.js";
|
|
20
20
|
export {
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
sendApprovedReports,
|
|
25
25
|
withGlobalCc
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=orchestrate-
|
|
27
|
+
//# sourceMappingURL=orchestrate-5FMNYJEA.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
preflight
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5P2HVNLZ.js";
|
|
4
4
|
import "./chunk-D4FVAIEJ.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-PBCGXXG6.js";
|
|
6
6
|
import "./chunk-GECESMVS.js";
|
|
7
7
|
import "./chunk-6QRLRT3P.js";
|
|
8
8
|
import "./chunk-MPBXOJ3N.js";
|
|
@@ -12,7 +12,7 @@ import "./chunk-QG6OSL4M.js";
|
|
|
12
12
|
import "./chunk-DC5H7KEQ.js";
|
|
13
13
|
import "./chunk-4SOCPK7A.js";
|
|
14
14
|
import "./chunk-U5SZ4FOP.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-CLWNAMUX.js";
|
|
16
16
|
import "./chunk-HN6I2XWI.js";
|
|
17
17
|
import "./chunk-6VAL7XJT.js";
|
|
18
18
|
|
|
@@ -63,4 +63,4 @@ async function runPreflightCommand(site, opts) {
|
|
|
63
63
|
export {
|
|
64
64
|
runPreflightCommand
|
|
65
65
|
};
|
|
66
|
-
//# sourceMappingURL=preflight-
|
|
66
|
+
//# sourceMappingURL=preflight-HTWIX3MN.js.map
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
import {
|
|
2
|
+
noWorkingTreeFailure,
|
|
3
|
+
readPrismicConfig
|
|
4
|
+
} from "./chunk-VNB5XBQ4.js";
|
|
5
|
+
import {
|
|
6
|
+
runRecipeOverSites
|
|
7
|
+
} from "./chunk-VPJ7N6P7.js";
|
|
8
|
+
import {
|
|
9
|
+
appendSkipNotice,
|
|
10
|
+
fleetWorkdir,
|
|
11
|
+
prepareFleetSites
|
|
12
|
+
} from "./chunk-ZMIPG6TR.js";
|
|
13
|
+
import {
|
|
14
|
+
resolveSites
|
|
15
|
+
} from "./chunk-MQUOUVQP.js";
|
|
16
|
+
import {
|
|
17
|
+
PRETTIER_FLAG_NOTE,
|
|
18
|
+
formatWithPrettier,
|
|
19
|
+
resolveTargetPrettier
|
|
20
|
+
} from "./chunk-R53VL3RI.js";
|
|
21
|
+
import {
|
|
22
|
+
readGitHubConfig
|
|
23
|
+
} from "./chunk-GASBX52O.js";
|
|
24
|
+
import {
|
|
25
|
+
makeGitHub
|
|
26
|
+
} from "./chunk-VRWUL4TR.js";
|
|
27
|
+
import "./chunk-FDIFTIXC.js";
|
|
28
|
+
import {
|
|
29
|
+
defaultSpawn
|
|
30
|
+
} from "./chunk-4DHQCN5H.js";
|
|
31
|
+
import {
|
|
32
|
+
siteLabel
|
|
33
|
+
} from "./chunk-XXTZBPUY.js";
|
|
34
|
+
import {
|
|
35
|
+
branchName,
|
|
36
|
+
checkoutBranch,
|
|
37
|
+
commit,
|
|
38
|
+
createBranch,
|
|
39
|
+
currentBranch,
|
|
40
|
+
deleteBranch,
|
|
41
|
+
isOwnerRepo,
|
|
42
|
+
isWorkingTreeClean,
|
|
43
|
+
push
|
|
44
|
+
} from "./chunk-XTK5VIQB.js";
|
|
45
|
+
import "./chunk-U5SZ4FOP.js";
|
|
46
|
+
|
|
47
|
+
// src/cli/commands/prismic-ci.ts
|
|
48
|
+
import { readdir } from "fs/promises";
|
|
49
|
+
import { resolve } from "path";
|
|
50
|
+
|
|
51
|
+
// src/recipes/prismic-ci/index.ts
|
|
52
|
+
import { mkdir, readFile as readFile2, writeFile } from "fs/promises";
|
|
53
|
+
import { dirname, join as join2 } from "path";
|
|
54
|
+
|
|
55
|
+
// src/recipes/prismic-ci/template.ts
|
|
56
|
+
var WORKFLOW_PATH = ".github/workflows/prismic-models.yml";
|
|
57
|
+
var SECRET = "PRISMIC_WRITE_TOKEN";
|
|
58
|
+
var REUSABLE_WORKFLOW = "reddoorla/.github/.github/workflows/prismic-models.yml";
|
|
59
|
+
var APPLY_BRANCH = "main";
|
|
60
|
+
var REUSABLE_WORKFLOW_PIN = {
|
|
61
|
+
sha: "558395431ddcb481ecba3dd84b78b38c338cfa03",
|
|
62
|
+
tag: "v1.4.0"
|
|
63
|
+
};
|
|
64
|
+
function isPinResolved(pin) {
|
|
65
|
+
return /^[0-9a-f]{40}$/.test(pin.sha);
|
|
66
|
+
}
|
|
67
|
+
function prismicCiWorkflow(pin) {
|
|
68
|
+
return `# Delivers this site's Prismic model changes. Managed by @reddoorla/maintenance
|
|
69
|
+
# (\`reddoor-maint prismic-ci\`) \u2014 change it there and re-run, not here.
|
|
70
|
+
#
|
|
71
|
+
# On a PR touching a model: comment the delta, write nothing.
|
|
72
|
+
# On merge to ${APPLY_BRANCH}: push those models to Prismic. Never delete.
|
|
73
|
+
#
|
|
74
|
+
# THE BRANCH FILTER ON \`push:\` IS LOAD-BEARING, not tidiness. The reusable
|
|
75
|
+
# workflow's apply job also guards \`github.ref == 'refs/heads/${APPLY_BRANCH}'\`,
|
|
76
|
+
# and its comment calls this the other half of that gate: an unfiltered
|
|
77
|
+
# \`on: push:\` fires on every branch AND every tag, so a feature branch's models
|
|
78
|
+
# would reach production with no pull request and therefore no review anywhere in
|
|
79
|
+
# the sequence. Keep both halves.
|
|
80
|
+
name: prismic-models
|
|
81
|
+
|
|
82
|
+
on:
|
|
83
|
+
# No branch filter here, deliberately: a model PR into any base deserves its
|
|
84
|
+
# delta comment, and the dry job is INCAPABLE of writing \u2014 it never passes
|
|
85
|
+
# \`--apply\`, and it holds no job that does.
|
|
86
|
+
pull_request:
|
|
87
|
+
paths:
|
|
88
|
+
- "customtypes/**"
|
|
89
|
+
- "src/lib/slices/**/model.json"
|
|
90
|
+
push:
|
|
91
|
+
branches: [${APPLY_BRANCH}]
|
|
92
|
+
paths:
|
|
93
|
+
- "customtypes/**"
|
|
94
|
+
- "src/lib/slices/**/model.json"
|
|
95
|
+
|
|
96
|
+
jobs:
|
|
97
|
+
prismic-models:
|
|
98
|
+
# A called workflow's jobs can only NARROW what the caller granted, so the
|
|
99
|
+
# PR-comment permission has to be granted here as well as there. Nothing in
|
|
100
|
+
# either job pushes code, so \`contents\` stays read.
|
|
101
|
+
permissions:
|
|
102
|
+
contents: read
|
|
103
|
+
pull-requests: write
|
|
104
|
+
uses: ${REUSABLE_WORKFLOW}@${pin.sha} # ${pin.tag}
|
|
105
|
+
secrets:
|
|
106
|
+
# Spelled exactly as the reusable workflow declares it. A workflow-local
|
|
107
|
+
# alias would not be a rename \u2014 it would be an undeclared secret, and the
|
|
108
|
+
# required one would arrive empty.
|
|
109
|
+
${SECRET}: \${{ secrets.${SECRET} }}
|
|
110
|
+
`;
|
|
111
|
+
}
|
|
112
|
+
var PRISMIC_CI_WORKFLOW = prismicCiWorkflow(REUSABLE_WORKFLOW_PIN);
|
|
113
|
+
|
|
114
|
+
// src/recipes/prismic-ci/cli-version.ts
|
|
115
|
+
import { readFile } from "fs/promises";
|
|
116
|
+
import { join } from "path";
|
|
117
|
+
var MIN_CLI_VERSION = "0.83.0";
|
|
118
|
+
var PACKAGE = "@reddoorla/maintenance";
|
|
119
|
+
function atLeast(version, min) {
|
|
120
|
+
const parse = (v) => {
|
|
121
|
+
const [core = "", ...rest] = v.split("-");
|
|
122
|
+
return {
|
|
123
|
+
nums: core.split(".").map((n) => Number.parseInt(n, 10) || 0),
|
|
124
|
+
pre: rest.length > 0
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
const a = parse(version);
|
|
128
|
+
const b = parse(min);
|
|
129
|
+
for (let i = 0; i < 3; i++) {
|
|
130
|
+
const av = a.nums[i] ?? 0;
|
|
131
|
+
const bv = b.nums[i] ?? 0;
|
|
132
|
+
if (av !== bv) return av > bv;
|
|
133
|
+
}
|
|
134
|
+
if (a.pre && !b.pre) return false;
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
async function readLockedCliVersion(repoRoot) {
|
|
138
|
+
let raw;
|
|
139
|
+
try {
|
|
140
|
+
raw = await readFile(join(repoRoot, "pnpm-lock.yaml"), "utf-8");
|
|
141
|
+
} catch (err) {
|
|
142
|
+
const code = err.code;
|
|
143
|
+
if (code === "ENOENT") {
|
|
144
|
+
return {
|
|
145
|
+
ok: false,
|
|
146
|
+
reason: `no pnpm-lock.yaml in the checkout \u2014 cannot tell which ${PACKAGE} version CI would run`
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
return { ok: false, reason: `pnpm-lock.yaml is present but unreadable (${String(err)})` };
|
|
150
|
+
}
|
|
151
|
+
const lines = raw.split("\n");
|
|
152
|
+
const importersAt = lines.findIndex((l) => /^importers:\s*$/.test(l));
|
|
153
|
+
if (importersAt === -1) {
|
|
154
|
+
return {
|
|
155
|
+
ok: false,
|
|
156
|
+
reason: "pnpm-lock.yaml has no `importers:` section \u2014 unrecognised lockfile shape"
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
const end = lines.findIndex((l, i) => i > importersAt && /^[a-zA-Z]/.test(l));
|
|
160
|
+
const importers = lines.slice(importersAt + 1, end === -1 ? lines.length : end);
|
|
161
|
+
const found = /* @__PURE__ */ new Set();
|
|
162
|
+
for (let i = 0; i < importers.length; i++) {
|
|
163
|
+
if (!new RegExp(`^\\s+'?${PACKAGE.replace("/", "\\/")}'?:\\s*$`).test(importers[i])) continue;
|
|
164
|
+
for (let j = i + 1; j < Math.min(i + 4, importers.length); j++) {
|
|
165
|
+
const m = /^\s+version:\s*(\S+)\s*$/.exec(importers[j]);
|
|
166
|
+
if (!m) continue;
|
|
167
|
+
found.add(m[1].split("(")[0]);
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (found.size === 0) {
|
|
172
|
+
return { ok: false, reason: `${PACKAGE} is not a dependency in this repo's lockfile` };
|
|
173
|
+
}
|
|
174
|
+
if (found.size > 1) {
|
|
175
|
+
return {
|
|
176
|
+
ok: false,
|
|
177
|
+
reason: `lockfile resolves ${PACKAGE} to more than one version (${[...found].sort().join(", ")}) \u2014 refusing to guess which one CI would run`
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
return { ok: true, version: [...found][0] };
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// src/recipes/prismic-ci/index.ts
|
|
184
|
+
var BRANCH_PREFIX = "maint/prismic-ci-";
|
|
185
|
+
var PRETTIER_TIMEOUT_MS = 6e4;
|
|
186
|
+
var resultOf = (site, status, notes, commits = []) => ({
|
|
187
|
+
recipe: "prismic-ci",
|
|
188
|
+
site: siteLabel(site),
|
|
189
|
+
status,
|
|
190
|
+
commits,
|
|
191
|
+
notes
|
|
192
|
+
});
|
|
193
|
+
var messageOf = (err) => err instanceof Error ? err.message : String(err);
|
|
194
|
+
function sameWorkflow(current, canonical) {
|
|
195
|
+
const norm = (s) => s.replace(/\r\n/g, "\n").replace(/\s+$/, "");
|
|
196
|
+
return norm(current) === norm(canonical);
|
|
197
|
+
}
|
|
198
|
+
async function prismicCi(site, deps = {}) {
|
|
199
|
+
const repo = site.gitRepo;
|
|
200
|
+
if (!repo) {
|
|
201
|
+
return resultOf(site, "failed", "no Git repo on this site (set Airtable 'Git repo')");
|
|
202
|
+
}
|
|
203
|
+
if (!isOwnerRepo(repo)) {
|
|
204
|
+
return resultOf(
|
|
205
|
+
site,
|
|
206
|
+
"failed",
|
|
207
|
+
`refusing to act on malformed repo identity: expected "owner/repo", got ${JSON.stringify(repo)}`
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
let isPrismic;
|
|
211
|
+
try {
|
|
212
|
+
isPrismic = await readPrismicConfig(site.path) !== null;
|
|
213
|
+
} catch (err) {
|
|
214
|
+
return resultOf(site, "failed", `could not read the Prismic config: ${messageOf(err)}`);
|
|
215
|
+
}
|
|
216
|
+
if (!isPrismic) return resultOf(site, "noop", "not a Prismic site (no repositoryName) \u2014 skipped");
|
|
217
|
+
const pin = deps.pin ?? REUSABLE_WORKFLOW_PIN;
|
|
218
|
+
if (!isPinResolved(pin)) {
|
|
219
|
+
return resultOf(
|
|
220
|
+
site,
|
|
221
|
+
"failed",
|
|
222
|
+
`reusable-workflow pin is unresolved (${pin.sha}) \u2014 publish + tag the workflow in reddoorla/.github and set REUSABLE_WORKFLOW_PIN before rolling out`
|
|
223
|
+
);
|
|
224
|
+
}
|
|
225
|
+
const workflow = pin === REUSABLE_WORKFLOW_PIN ? PRISMIC_CI_WORKFLOW : prismicCiWorkflow(pin);
|
|
226
|
+
const locked = await readLockedCliVersion(site.path);
|
|
227
|
+
if (!locked.ok) {
|
|
228
|
+
return resultOf(
|
|
229
|
+
site,
|
|
230
|
+
"failed",
|
|
231
|
+
`cannot establish which @reddoorla/maintenance version this repo's CI would run (${locked.reason}) \u2014 refusing to install a workflow that may not run`
|
|
232
|
+
);
|
|
233
|
+
}
|
|
234
|
+
if (!atLeast(locked.version, MIN_CLI_VERSION)) {
|
|
235
|
+
return resultOf(
|
|
236
|
+
site,
|
|
237
|
+
"failed",
|
|
238
|
+
`this repo's lockfile pins @reddoorla/maintenance ${locked.version}, which has no \`prismic-models\` command (first shipped in ${MIN_CLI_VERSION}) \u2014 bump the dependency and commit the lockfile first, or the workflow fails on its first model PR`
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
const ghConfig = readGitHubConfig();
|
|
242
|
+
if (!deps.github && !ghConfig) return resultOf(site, "failed", "GITHUB_TOKEN not set");
|
|
243
|
+
const gh = deps.github ?? makeGitHub({ token: ghConfig.token });
|
|
244
|
+
const spawn = deps.spawn ?? defaultSpawn;
|
|
245
|
+
let hasSecret;
|
|
246
|
+
try {
|
|
247
|
+
hasSecret = await gh.secretExists(repo, SECRET);
|
|
248
|
+
} catch (err) {
|
|
249
|
+
return resultOf(
|
|
250
|
+
site,
|
|
251
|
+
"failed",
|
|
252
|
+
`could not determine whether ${repo} has the ${SECRET} secret (${messageOf(err)}) \u2014 refusing to install a workflow that may have no token`
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
if (!hasSecret) {
|
|
256
|
+
return resultOf(
|
|
257
|
+
site,
|
|
258
|
+
"failed",
|
|
259
|
+
`${repo} has no ${SECRET} Actions secret \u2014 the workflow reds the repo on its first model PR without it. Mint one, then: gh secret set ${SECRET} --repo ${repo}`
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
let base;
|
|
263
|
+
try {
|
|
264
|
+
base = await gh.defaultBranch(repo);
|
|
265
|
+
} catch (err) {
|
|
266
|
+
return resultOf(
|
|
267
|
+
site,
|
|
268
|
+
"failed",
|
|
269
|
+
`could not read the default branch of ${repo}: ${messageOf(err)}`
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
if (base !== APPLY_BRANCH) {
|
|
273
|
+
return resultOf(
|
|
274
|
+
site,
|
|
275
|
+
"failed",
|
|
276
|
+
`default branch of ${repo} is ${base}, not ${APPLY_BRANCH} \u2014 the reusable workflow's apply job guards refs/heads/${APPLY_BRANCH}, so merged model changes would never reach Prismic`
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
const existing = await gh.fileContentsOnBranch(repo, base, WORKFLOW_PATH);
|
|
280
|
+
if (existing !== null && sameWorkflow(existing, workflow)) {
|
|
281
|
+
return resultOf(site, "noop", `delivery workflow already current on ${base}`);
|
|
282
|
+
}
|
|
283
|
+
const open = (await gh.openPullRequests(repo)).find((pr) => pr.headRef.startsWith(BRANCH_PREFIX));
|
|
284
|
+
if (open) {
|
|
285
|
+
return resultOf(site, "noop", `delivery workflow PR already open: ${open.url}`);
|
|
286
|
+
}
|
|
287
|
+
if (!await isWorkingTreeClean(site.path)) {
|
|
288
|
+
return resultOf(site, "failed", "working tree not clean \u2014 commit or stash first");
|
|
289
|
+
}
|
|
290
|
+
let original = null;
|
|
291
|
+
try {
|
|
292
|
+
original = await currentBranch(site.path);
|
|
293
|
+
} catch {
|
|
294
|
+
}
|
|
295
|
+
const branch = branchName("prismic-ci");
|
|
296
|
+
const commits = [];
|
|
297
|
+
let pushedOrOpened = false;
|
|
298
|
+
try {
|
|
299
|
+
await createBranch(site.path, branch);
|
|
300
|
+
const dest = join2(site.path, WORKFLOW_PATH);
|
|
301
|
+
await mkdir(dirname(dest), { recursive: true });
|
|
302
|
+
await writeFile(dest, workflow, "utf-8");
|
|
303
|
+
const notes = [];
|
|
304
|
+
const bin = await (deps.resolvePrettier ?? resolveTargetPrettier)(site.path);
|
|
305
|
+
if (bin === null) {
|
|
306
|
+
notes.push(PRETTIER_FLAG_NOTE);
|
|
307
|
+
} else if (!await formatWithPrettier(spawn, site.path, [WORKFLOW_PATH], {
|
|
308
|
+
bin,
|
|
309
|
+
timeoutMs: PRETTIER_TIMEOUT_MS
|
|
310
|
+
})) {
|
|
311
|
+
notes.push(PRETTIER_FLAG_NOTE);
|
|
312
|
+
} else if (!sameWorkflow(await readFile2(dest, "utf-8"), workflow)) {
|
|
313
|
+
notes.push(
|
|
314
|
+
"this site's prettier reformatted the workflow \u2014 re-runs will not match it as current"
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
const sha = await commit(site.path, "ci: deliver Prismic model changes from merged PRs");
|
|
318
|
+
if (!sha) {
|
|
319
|
+
return resultOf(
|
|
320
|
+
site,
|
|
321
|
+
"noop",
|
|
322
|
+
`${WORKFLOW_PATH} already present and identical in the checkout`
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
commits.push(sha);
|
|
326
|
+
pushedOrOpened = true;
|
|
327
|
+
await (deps.pushBranch ?? push)(site.path, branch);
|
|
328
|
+
const pr = await gh.openPullRequest(repo, {
|
|
329
|
+
head: branch,
|
|
330
|
+
base,
|
|
331
|
+
title: "Deliver Prismic model changes from merged PRs",
|
|
332
|
+
body: "Adds the `prismic-models` workflow. On a PR touching `customtypes/**` or `src/lib/slices/**/model.json` it comments the model delta and writes nothing; on merge to main it pushes those models to Prismic. It can create and update models but never delete \u2014 a model present only in Prismic is reported, not touched."
|
|
333
|
+
});
|
|
334
|
+
notes.unshift(`opened PR ${pr.url}`);
|
|
335
|
+
return resultOf(site, "applied", notes.join("; "), commits);
|
|
336
|
+
} catch (err) {
|
|
337
|
+
return resultOf(site, "failed", messageOf(err), commits);
|
|
338
|
+
} finally {
|
|
339
|
+
if (original !== null && original !== branch) {
|
|
340
|
+
try {
|
|
341
|
+
await checkoutBranch(site.path, original);
|
|
342
|
+
if (!pushedOrOpened) await deleteBranch(site.path, branch);
|
|
343
|
+
} catch (err) {
|
|
344
|
+
console.warn(
|
|
345
|
+
`warning: could not restore branch ${original} after prismic-ci: ${messageOf(err)}`
|
|
346
|
+
);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// src/cli/commands/prismic-ci.ts
|
|
353
|
+
var messageOf2 = (err) => err instanceof Error ? err.message : String(err);
|
|
354
|
+
var failedRow = (site, notes) => ({
|
|
355
|
+
recipe: "prismic-ci",
|
|
356
|
+
site,
|
|
357
|
+
status: "failed",
|
|
358
|
+
commits: [],
|
|
359
|
+
notes
|
|
360
|
+
});
|
|
361
|
+
function formatPrismicCiResults(results) {
|
|
362
|
+
const lines = results.map((r) => `[${r.site}] ${r.status}: ${r.notes ?? ""}`.trimEnd());
|
|
363
|
+
const n = (s) => results.filter((r) => r.status === s).length;
|
|
364
|
+
const failed = n("failed");
|
|
365
|
+
lines.push("");
|
|
366
|
+
if (failed > 0 && n("applied") === 0) {
|
|
367
|
+
lines.push(
|
|
368
|
+
`\u26D4 NO SITE GOT THE DELIVERY WORKFLOW. ${failed} of ${results.length} site(s) failed and not one pull request was opened, so no site's model changes reach Prismic on merge. Do NOT read this run as a rollout.`
|
|
369
|
+
);
|
|
370
|
+
lines.push("");
|
|
371
|
+
}
|
|
372
|
+
lines.push(`${n("applied")} applied, ${n("noop")} noop, ${failed} failed.`);
|
|
373
|
+
return lines.join("\n");
|
|
374
|
+
}
|
|
375
|
+
async function checkoutFailure(repoRoot) {
|
|
376
|
+
let entries;
|
|
377
|
+
try {
|
|
378
|
+
entries = await readdir(repoRoot);
|
|
379
|
+
} catch (e) {
|
|
380
|
+
return `cannot read this checkout at ${repoRoot}: ${messageOf2(e)}`;
|
|
381
|
+
}
|
|
382
|
+
return noWorkingTreeFailure(
|
|
383
|
+
repoRoot,
|
|
384
|
+
entries,
|
|
385
|
+
"No delivery workflow was proposed for it and no pull request was opened"
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
async function runPrismicCiCommand(site, opts, deps = {}) {
|
|
389
|
+
const cwd = opts.cwd ? resolve(opts.cwd) : process.cwd();
|
|
390
|
+
let sites = await resolveSites({
|
|
391
|
+
...site !== void 0 ? { site } : {},
|
|
392
|
+
...opts.fleet !== void 0 ? { fleet: opts.fleet } : {},
|
|
393
|
+
// Passed through because `--fleet airtable` derives each site's path from
|
|
394
|
+
// it; without it the keyword inventory would resolve paths under a different
|
|
395
|
+
// workdir than the one this run then prepares and commits in.
|
|
396
|
+
...opts.workdir !== void 0 ? { workdir: opts.workdir } : {},
|
|
397
|
+
cwd
|
|
398
|
+
});
|
|
399
|
+
if (sites.length === 0) {
|
|
400
|
+
return {
|
|
401
|
+
output: `the inventory resolved NO SITES, so no site was offered the delivery workflow. This is not a delivered fleet \u2014 check the inventory (an Airtable view filter, an empty JSON file, a dynamic inventory returning []). Do NOT read this exit as a rollout.`,
|
|
402
|
+
code: 1
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
let skipped = [];
|
|
406
|
+
if (opts.fleet) {
|
|
407
|
+
const prep = await prepareFleetSites(sites, { workdir: opts.workdir ?? fleetWorkdir() });
|
|
408
|
+
sites = prep.prepared;
|
|
409
|
+
skipped = prep.skipped;
|
|
410
|
+
}
|
|
411
|
+
const pin = deps.pin ?? REUSABLE_WORKFLOW_PIN;
|
|
412
|
+
const pinUnresolved = !isPinResolved(pin) ? `\u26D4 the reusable-workflow pin is unresolved (${pin.sha}) \u2014 every site below would be REFUSED, not delivered. Publish and tag the workflow in reddoorla/.github, then set REUSABLE_WORKFLOW_PIN.` : "";
|
|
413
|
+
if (opts.dry) {
|
|
414
|
+
const lines = sites.map(
|
|
415
|
+
(s) => `[${siteLabel(s)}] would be offered the delivery workflow (no gate was evaluated: the secret, default-branch and already-delivered checks run only on a real run)`
|
|
416
|
+
);
|
|
417
|
+
return {
|
|
418
|
+
output: appendSkipNotice(
|
|
419
|
+
[pinUnresolved, lines.join("\n")].filter((s) => s !== "").join("\n\n"),
|
|
420
|
+
skipped
|
|
421
|
+
),
|
|
422
|
+
code: pinUnresolved === "" ? 0 : 1
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
const run = deps.runRecipe ?? ((s) => prismicCi(s, { pin }));
|
|
426
|
+
const results = await runRecipeOverSites("prismic-ci", sites, async (s) => {
|
|
427
|
+
const failure = await checkoutFailure(s.path);
|
|
428
|
+
return failure ? failedRow(siteLabel(s), failure) : run(s);
|
|
429
|
+
});
|
|
430
|
+
for (const s of skipped) {
|
|
431
|
+
results.push(
|
|
432
|
+
failedRow(
|
|
433
|
+
s.site,
|
|
434
|
+
`could not prepare this checkout: ${s.reason}. No delivery workflow was proposed for it \u2014 this is NOT "this site already has one".`
|
|
435
|
+
)
|
|
436
|
+
);
|
|
437
|
+
}
|
|
438
|
+
return {
|
|
439
|
+
output: appendSkipNotice(formatPrismicCiResults(results), skipped),
|
|
440
|
+
code: results.some((r) => r.status === "failed") ? 1 : 0
|
|
441
|
+
};
|
|
442
|
+
}
|
|
443
|
+
export {
|
|
444
|
+
formatPrismicCiResults,
|
|
445
|
+
runPrismicCiCommand
|
|
446
|
+
};
|
|
447
|
+
//# sourceMappingURL=prismic-ci-4PDATHU6.js.map
|