create-grist-widget 0.2.21 → 0.2.22
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/package.json
CHANGED
|
@@ -5,6 +5,12 @@ name: Deploy widget to GitHub Pages
|
|
|
5
5
|
# /<repo>/v<version>/ + mutable /<repo>/latest/.
|
|
6
6
|
# Rebuilt only when package.json's version has no v<version> dir yet, so
|
|
7
7
|
# re-pushing main without a version bump is a no-op deploy.
|
|
8
|
+
# A push that *creates* the main ref (github.event.created) -- fired by
|
|
9
|
+
# GitHub's "Use this template" copying this repo onto a brand-new ref --
|
|
10
|
+
# is skipped entirely instead: it would otherwise publish whatever
|
|
11
|
+
# boilerplate version package.json happens to have checked in and
|
|
12
|
+
# permanently spend the first-release override before anyone's done
|
|
13
|
+
# real work.
|
|
8
14
|
# - push to dev -> dev channel: mutable /<repo>/dev/
|
|
9
15
|
# with version.json + a self-reload snippet, for live review inside Grist.
|
|
10
16
|
#
|
|
@@ -91,7 +97,8 @@ jobs:
|
|
|
91
97
|
--site site --repo "$REPO_NAME" \
|
|
92
98
|
--event "${{ github.event_name }}" \
|
|
93
99
|
--ref "${{ github.ref }}" \
|
|
94
|
-
${{ github.event.inputs.force == 'true' && '--force' || '' }}
|
|
100
|
+
${{ github.event.inputs.force == 'true' && '--force' || '' }} \
|
|
101
|
+
${{ github.event.created == true && '--created' || '' }})
|
|
95
102
|
echo "Plan: $PLAN"
|
|
96
103
|
node -e '
|
|
97
104
|
const p = JSON.parse(process.argv[1]);
|
package/template/README.md
CHANGED
|
@@ -111,6 +111,13 @@ automatically.
|
|
|
111
111
|
> only ever apply before your *first* genuine release — once one exists,
|
|
112
112
|
> they're permanently a no-op, so it's still safest to never manually
|
|
113
113
|
> re-seed `gh-pages` again after that point.
|
|
114
|
+
>
|
|
115
|
+
> "Use this template" also immediately fires this workflow once on its own,
|
|
116
|
+
> the moment the repo is created — before you've cloned it, let alone
|
|
117
|
+
> changed anything. That run is recognized (GitHub marks it as the push
|
|
118
|
+
> that *created* the `main` ref) and skipped entirely: nothing gets
|
|
119
|
+
> published, and it doesn't count as your first release, so the `0.0.1`
|
|
120
|
+
> override above still applies in full once you actually push real changes.
|
|
114
121
|
|
|
115
122
|
**One-time setup** (the workflow can't do this part for you):
|
|
116
123
|
|
|
@@ -19,10 +19,13 @@
|
|
|
19
19
|
//
|
|
20
20
|
// Subcommands:
|
|
21
21
|
// plan --site <dir> --repo <name> --event <push|workflow_dispatch>
|
|
22
|
-
// --ref <ref> [--force]
|
|
22
|
+
// --ref <ref> [--force] [--created]
|
|
23
23
|
// Prints JSON { context: "release"|"dev", version?, base, skip }.
|
|
24
24
|
// Release is skipped when v<version> already exists on gh-pages
|
|
25
25
|
// (idempotence: re-pushing main without a version bump is a no-op).
|
|
26
|
+
// --created (github.event.created off a push event) additionally skips
|
|
27
|
+
// unconditionally, without consuming the first-release version override
|
|
28
|
+
// -- see plan()'s own comment.
|
|
26
29
|
//
|
|
27
30
|
// place --site <dir> --repo <name> --channel <release|dev>
|
|
28
31
|
// [--version <v>] --dist <dir> --sha <sha> [--ref <ref>]
|
|
@@ -101,7 +104,7 @@ function hasGenuineRelease(siteDir, repo) {
|
|
|
101
104
|
* genuinely published by this repo before (unless force), so re-pushing main
|
|
102
105
|
* without a version bump is a no-op.
|
|
103
106
|
*/
|
|
104
|
-
export function plan(siteDir, repo, event, ref, { force = false } = {}) {
|
|
107
|
+
export function plan(siteDir, repo, event, ref, { force = false, created = false } = {}) {
|
|
105
108
|
const isRelease = event === "workflow_dispatch" || ref === "refs/heads/main" || ref === "main"
|
|
106
109
|
if (!isRelease) {
|
|
107
110
|
return { context: "dev", base: basePathFor(repo, "dev") }
|
|
@@ -118,6 +121,28 @@ export function plan(siteDir, repo, event, ref, { force = false } = {}) {
|
|
|
118
121
|
const version = firstRelease ? "0.0.1" : pkg.version
|
|
119
122
|
if (!version) throw new Error("package.json has no version")
|
|
120
123
|
const versionDir = join(siteDir, `v${version}`)
|
|
124
|
+
// GitHub's "Use this template" copies the source repo's main branch onto a
|
|
125
|
+
// brand-new ref, which fires this same push-to-main event itself --
|
|
126
|
+
// before anyone has done any real work. Without this check, that event
|
|
127
|
+
// would consume the first-release override above on whatever unmodified
|
|
128
|
+
// boilerplate happens to be checked in, so the widget's *actual* first
|
|
129
|
+
// release (once someone merges real content) no longer counts as
|
|
130
|
+
// firstRelease and publishes under that boilerplate's version verbatim
|
|
131
|
+
// instead of a clean 0.0.1 -- found live (a monorepo widget moved into its
|
|
132
|
+
// own repo this way published its real first release as "v0.2.21").
|
|
133
|
+
// Skipping this event entirely (never placing anything, never touching
|
|
134
|
+
// gh-pages) keeps hasGenuineRelease() false, so the override survives
|
|
135
|
+
// intact for whenever a real release actually happens.
|
|
136
|
+
if (created && event === "push") {
|
|
137
|
+
return {
|
|
138
|
+
context: "release",
|
|
139
|
+
version,
|
|
140
|
+
base: basePathFor(repo, "release", version),
|
|
141
|
+
skip: true,
|
|
142
|
+
reason: "ref-created",
|
|
143
|
+
firstRelease,
|
|
144
|
+
}
|
|
145
|
+
}
|
|
121
146
|
const exists = isGenuineRelease(versionDir, repo)
|
|
122
147
|
return {
|
|
123
148
|
context: "release",
|
|
@@ -382,7 +407,10 @@ function main() {
|
|
|
382
407
|
|
|
383
408
|
switch (cmd) {
|
|
384
409
|
case "plan": {
|
|
385
|
-
const result = plan(args.site, args.repo, args.event, args.ref, {
|
|
410
|
+
const result = plan(args.site, args.repo, args.event, args.ref, {
|
|
411
|
+
force: !!args.force,
|
|
412
|
+
created: !!args.created,
|
|
413
|
+
})
|
|
386
414
|
process.stdout.write(JSON.stringify(result))
|
|
387
415
|
break
|
|
388
416
|
}
|