@bitmagic/cli 0.1.51-dev.0 → 0.1.51-dev.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.
- package/README.md +70 -20
- package/dist/commands/init.js +17 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +6 -1
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/upgrade.js +7 -1
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/config/environments.d.ts +24 -19
- package/dist/config/environments.js +58 -30
- package/dist/config/environments.js.map +1 -1
- package/dist/config/folder-environment.d.ts +31 -0
- package/dist/config/folder-environment.js +83 -0
- package/dist/config/folder-environment.js.map +1 -0
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/shell-page.js +7 -5
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/project/context.d.ts +12 -0
- package/dist/project/context.js +19 -5
- package/dist/project/context.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -78,26 +78,59 @@ pnpm add -g --global-dir ~/.bitmagic-cli/dev --global-bin-dir ~/.bitmagic-cli/d
|
|
|
78
78
|
|
|
79
79
|
pnpm refuses a global bin directory that is not already on your `PATH`, so add both to your shell
|
|
80
80
|
profile once (they are only ever *prepended* per-directory below, so the order here does not
|
|
81
|
-
matter). Then sort your projects into two folders and give each one
|
|
81
|
+
matter). Then sort your projects into two folders, and give each one **two files that do two
|
|
82
|
+
different jobs**:
|
|
82
83
|
|
|
83
84
|
```bash
|
|
84
|
-
# prod-games/.envrc
|
|
85
|
+
# prod-games/.envrc — which BUILD runs
|
|
85
86
|
PATH_add "$HOME/.bitmagic-cli/prod/bin"
|
|
86
87
|
|
|
88
|
+
# prod-games/.bitmagic-env — which SERVER it talks to
|
|
89
|
+
env=prod
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
```bash
|
|
87
93
|
# dev-games/.envrc
|
|
88
94
|
PATH_add "$HOME/.bitmagic-cli/dev/bin"
|
|
95
|
+
|
|
96
|
+
# dev-games/.bitmagic-env
|
|
97
|
+
env=dev
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
The split is not arbitrary. `PATH` is a shell concept, so choosing the binary needs direnv and
|
|
101
|
+
works only where direnv runs. The **environment** is resolved by the CLI itself, reading
|
|
102
|
+
`.bitmagic-env` off the disk — so it is right in your terminal, in a script, in CI, and in a coding
|
|
103
|
+
agent's non-interactive shell, which sources no profile and fires no direnv hook. That last case is
|
|
104
|
+
why the environment moved out of `.envrc`: an agent asked to create a game in `prod-games/` used to
|
|
105
|
+
get whatever environment you last logged in to, and mint the game on the wrong server.
|
|
106
|
+
|
|
107
|
+
`.bitmagic-env` also takes an optional `apiUrl`, which is the only way to point `local` at a
|
|
108
|
+
checkout on shifted ports — `local` otherwise assumes the defaults:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# local-games/.bitmagic-env
|
|
112
|
+
env=local
|
|
113
|
+
apiUrl=http://localhost:3102
|
|
89
114
|
```
|
|
90
115
|
|
|
91
|
-
`direnv allow` each, and
|
|
116
|
+
`direnv allow` each, and both halves are right in each tree:
|
|
92
117
|
|
|
93
118
|
```
|
|
94
|
-
$ cd prod-games
|
|
95
|
-
|
|
119
|
+
$ cd prod-games && bitmagic --version → 0.1.50
|
|
120
|
+
bitmagic whoami → env: prod (from .bitmagic-env in this folder or a parent)
|
|
121
|
+
$ cd dev-games/my-game && bitmagic --version → 0.1.51-dev.0
|
|
122
|
+
bitmagic whoami → env: dev (from .bitmagic-env in this folder or a parent)
|
|
96
123
|
```
|
|
97
124
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
125
|
+
`--version` alone is not the check. Right after a release the `dev` tag can briefly name the same
|
|
126
|
+
build as `latest`, and two roots holding one version look exactly like direnv not firing —
|
|
127
|
+
`command -v bitmagic` and `whoami`'s source line are what actually distinguish them.
|
|
128
|
+
|
|
129
|
+
Both files are inherited by every project beneath the folder, so you do not need a copy per game.
|
|
130
|
+
They disagree about one thing, deliberately: `.bitmagic-env` **loses** to a project's own
|
|
131
|
+
`bitmagic.json` pin, so a `prod` project sitting under `dev-games/` still talks to prod and only
|
|
132
|
+
its *binary* is wrong — which the CLI then tells you about. Sort by environment and the question
|
|
133
|
+
never comes up.
|
|
101
134
|
|
|
102
135
|
The command keeps its name in both trees, which matters: `bitmagic init` writes bare `bitmagic dev`
|
|
103
136
|
and `bitmagic reload` into the project's `AGENTS.md`, so a `bitmagic-dev` alias would leave your
|
|
@@ -106,8 +139,10 @@ coding agent running the wrong build.
|
|
|
106
139
|
Four things worth knowing:
|
|
107
140
|
|
|
108
141
|
- **Your logins already coexist.** Credentials live in one `~/.bitmagic/credentials.json` keyed per
|
|
109
|
-
environment, so a `bitmagic login --env dev` and a prod login sit side by side
|
|
110
|
-
|
|
142
|
+
environment, so a `bitmagic login --env dev` and a prod login sit side by side — they can even be
|
|
143
|
+
different accounts. `bitmagic login` needs no `--env` in either folder, and a login that took its
|
|
144
|
+
environment from the folder does **not** become your machine-wide default: like a project pin,
|
|
145
|
+
a folder marker says "everything under here is prod", not "point this whole machine at prod".
|
|
111
146
|
- **The CLI catches a failed switch.** Run a dev build inside a project pinned to `prod` and it says
|
|
112
147
|
so before the command, naming the right line. It suggests `npm i -g` because that is the fix for a
|
|
113
148
|
single-install machine — with this setup, read it instead as "direnv did not fire, or you are in
|
|
@@ -208,10 +243,20 @@ specific first:
|
|
|
208
243
|
2. the `BITMAGIC_ENV` environment variable — the override for the commands that do not
|
|
209
244
|
(`dev`, `upgrade`, `forge`, `generate`, `publish`), and the one thing that outranks a project;
|
|
210
245
|
3. the `environment` field in the project's `bitmagic.json`;
|
|
211
|
-
4. the
|
|
212
|
-
5. the
|
|
213
|
-
|
|
214
|
-
|
|
246
|
+
4. the `env` in the nearest `.bitmagic-env`, walking up — the **folder** the project lives under;
|
|
247
|
+
5. the stored default, written by `bitmagic login`;
|
|
248
|
+
6. **`prod`** — the fixed default when nothing above has an opinion, whatever build is running.
|
|
249
|
+
|
|
250
|
+
Step 4 is for sorting projects into folders by environment — see **Running both lines side by
|
|
251
|
+
side** below. Its rank is the point of it, in both directions. It sits *below* the project's own
|
|
252
|
+
pin, so a `prod` project dropped into a `dev` folder stays `prod` — the folder never re-aims a
|
|
253
|
+
checkout that already declares itself, which is exactly what `BITMAGIC_ENV` does do. And it sits
|
|
254
|
+
*above* the stored default, so `bitmagic init` — the one moment there is no pin yet, because the
|
|
255
|
+
project does not exist — takes the folder's answer instead of whatever you last logged in to.
|
|
256
|
+
|
|
257
|
+
Unlike steps 1 and 2 it needs no shell involvement, which is the reason it exists: a `direnv`
|
|
258
|
+
`.envrc` exporting `BITMAGIC_ENV` is invisible to a coding agent, whose commands run through a
|
|
259
|
+
non-interactive shell that sources no profile and fires no hook.
|
|
215
260
|
|
|
216
261
|
Step 3 is what makes a checkout self-describing: `bitmagic init` records which api-server minted
|
|
217
262
|
the project's `gameId` and served the engine pinned beside it, so every later command in that
|
|
@@ -225,12 +270,17 @@ it at startup. A pinned project ignores the stored default, so `bitmagic login`
|
|
|
225
270
|
to the project's environment *without* changing your machine-wide default. `BITMAGIC_API_URL`
|
|
226
271
|
overrides the URL alone, keeping the environment name and its Auth0 tenant.
|
|
227
272
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
273
|
+
Step 6 used to ask the CLI about itself — a `-dev.N` build defaulted to `dev`, a release build to
|
|
274
|
+
`prod` — so that each published line reached the api-server it was developed against without a
|
|
275
|
+
flag. `.bitmagic-env` now carries that intent explicitly, and explicit beats inferred: the lane rule
|
|
276
|
+
made one command mean different things on two machines, over a version string nobody was reading.
|
|
277
|
+
|
|
278
|
+
So the last word is simply `prod`, the environment a creator who has said nothing wants. The two
|
|
279
|
+
lines still pair with different api-servers — `@bitmagic/cli@dev` exists to exercise endpoints that
|
|
280
|
+
reach **dev** first, and running it against an environment that has not caught up fails on
|
|
281
|
+
endpoints that are not there yet — but that pairing is now something you state, once, in the folder
|
|
282
|
+
you keep those projects in. **Give every non-prod tree a `.bitmagic-env`**; anything without one is
|
|
283
|
+
talking to production.
|
|
234
284
|
|
|
235
285
|
**Inside a project, the pin decides the line**, and nobody should be asked which one they want:
|
|
236
286
|
`dev` and `local` projects take `@bitmagic/cli@dev`, `prod` projects take the plain
|
package/dist/commands/init.js
CHANGED
|
@@ -6,7 +6,7 @@ import * as path from 'path';
|
|
|
6
6
|
import { spawnSync } from 'child_process';
|
|
7
7
|
import { CliError } from '../errors.js';
|
|
8
8
|
import { installAllCommand, preferredInstallManager, } from '../project/package-manager.js';
|
|
9
|
-
import {
|
|
9
|
+
import { selectEnvironmentForCommand, describeEnvironmentSource, resolveAuth0ClientId, } from '../config/environments.js';
|
|
10
10
|
import { getAccessToken } from '../auth/session.js';
|
|
11
11
|
import { apiPost } from '../http/client.js';
|
|
12
12
|
import { fetchEngineManifest, downloadAndVerify, extractEngine } from '../scaffold/engine-download.js';
|
|
@@ -171,7 +171,18 @@ export const initCommand = defineCommand({
|
|
|
171
171
|
const output = createOutput(args.json === true);
|
|
172
172
|
const targetDir = path.resolve(args.dir ?? '.');
|
|
173
173
|
assertScaffoldable(targetDir, args.force === true);
|
|
174
|
-
|
|
174
|
+
// Resolved from targetDir, NOT from the cwd. This answer is about to be frozen into the new
|
|
175
|
+
// project's bitmagic.json and to mint a game on one api-server, so it has to be a fact about
|
|
176
|
+
// where the project will LIVE — `bitmagic init ../prod-games/thing` run from anywhere else was
|
|
177
|
+
// otherwise reading the folder the operator happened to be standing in. targetDir need not
|
|
178
|
+
// exist yet; the walk falls through to its nearest existing ancestor.
|
|
179
|
+
const selection = selectEnvironmentForCommand({ explicit: args.env, cwd: targetDir });
|
|
180
|
+
const environment = selection.environment;
|
|
181
|
+
// Said out loud, before anything is minted. Every other command that resolves an environment
|
|
182
|
+
// can be re-run somewhere else; this one writes the answer into a file and creates a game that
|
|
183
|
+
// belongs to it, so an unnoticed wrong answer here is the one that costs a whole project. It
|
|
184
|
+
// is also the line that makes a wrong answer diagnosable from an agent's transcript.
|
|
185
|
+
output.info(`Environment: ${environment.name} (${describeEnvironmentSource(selection.source)})`);
|
|
175
186
|
const clientId = resolveAuth0ClientId(environment);
|
|
176
187
|
const token = await getAccessToken(environment, clientId, deps);
|
|
177
188
|
output.info('Fetching the engine manifest…');
|
|
@@ -224,6 +235,10 @@ export const initCommand = defineCommand({
|
|
|
224
235
|
engineVersion: manifest.version,
|
|
225
236
|
// Which api-server produced this project, and what every later command in it will target.
|
|
226
237
|
environment: environment.name,
|
|
238
|
+
// And what decided that — 'folder' means a .bitmagic-env above this project chose it, which
|
|
239
|
+
// is the difference between "the creator meant prod" and "nothing had an opinion, so this
|
|
240
|
+
// is whatever they last logged in to".
|
|
241
|
+
environmentSource: selection.source,
|
|
227
242
|
// An agent needs to know whether to run the install itself before anything else works.
|
|
228
243
|
dependenciesInstalled: installSucceeded,
|
|
229
244
|
// And which manager to run it WITH — the machine decides that, so an agent cannot assume
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GAExB,MAAM,+BAA+B,CAAC;AACvC,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -34,8 +34,13 @@ export const loginCommand = defineCommand({
|
|
|
34
34
|
// them into every other directory — which is the sticky-global wrong-env bug the project pin
|
|
35
35
|
// exists to end, reintroduced by the command most likely to be run inside a project. The login
|
|
36
36
|
// itself still targets the project's environment, which is the point of honouring the pin.
|
|
37
|
-
|
|
37
|
+
//
|
|
38
|
+
// A folder marker is the same kind of statement — "everything under here is prod" — and would
|
|
39
|
+
// leak the same way: one `bitmagic login` inside prod-games/ would aim every unrelated
|
|
40
|
+
// directory on the machine at prod. Both are answers about a PLACE, not about this login.
|
|
41
|
+
if (selection.source !== 'project' && selection.source !== 'folder') {
|
|
38
42
|
writeDefaultEnvironment(environment.name);
|
|
43
|
+
}
|
|
39
44
|
// Prove the login rather than assuming it: a token Auth0 accepted is not the same as an
|
|
40
45
|
// account api-server admits to the CLI, which requires an active Bitmagic Pro subscription.
|
|
41
46
|
// whoami sits OUTSIDE that gate precisely so this answer exists for someone who has not
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;IACxC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,8CAA8C,EAAE;IACpF,IAAI,EAAE;QACJ,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8CAA8C,EAAE;QACpF,IAAI,EAAE;YACJ,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kEAAkE;SAChF;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,2BAA2B,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAEnD,+EAA+E;QAC/E,6EAA6E;QAC7E,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAEnF,4FAA4F;QAC5F,sFAAsF;QACtF,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAErC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC3F,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,4FAA4F;QAC5F,8FAA8F;QAC9F,6FAA6F;QAC7F,+FAA+F;QAC/F,2FAA2F;QAC3F,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/upgrade.js
CHANGED
|
@@ -271,7 +271,13 @@ export const upgradeCommand = defineCommand({
|
|
|
271
271
|
// this tree came from THIS environment's manifest, so it is the right answer by
|
|
272
272
|
// construction. Not stamped when --env or BITMAGIC_ENV chose this run's target — that is a
|
|
273
273
|
// deliberate one-off override, not a statement about where the project lives.
|
|
274
|
-
|
|
274
|
+
//
|
|
275
|
+
// A folder marker IS a statement about where it lives, and can only have decided when the
|
|
276
|
+
// project had no pin of its own — so stamping it is right for the same reason, and turns a
|
|
277
|
+
// positional answer into a durable one that moving the directory can no longer change.
|
|
278
|
+
...(selection.source === 'stored' ||
|
|
279
|
+
selection.source === 'default' ||
|
|
280
|
+
selection.source === 'folder'
|
|
275
281
|
? { environmentToPin: environment.name }
|
|
276
282
|
: {}),
|
|
277
283
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/commands/upgrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,35 +11,42 @@ export declare const ENVIRONMENTS: Record<EnvironmentName, Environment>;
|
|
|
11
11
|
export declare const ENVIRONMENT_NAMES: EnvironmentName[];
|
|
12
12
|
export declare function isEnvironmentName(value: string): value is EnvironmentName;
|
|
13
13
|
/** Which input decided the environment — what `whoami` prints and what `login` checks. */
|
|
14
|
-
export type EnvironmentSource = 'flag' | 'BITMAGIC_ENV' | 'project' | 'stored' | 'default';
|
|
14
|
+
export type EnvironmentSource = 'flag' | 'BITMAGIC_ENV' | 'project' | 'folder' | 'stored' | 'default';
|
|
15
15
|
export interface ResolveEnvironmentOptions {
|
|
16
16
|
/** The --env flag, if given. */
|
|
17
17
|
explicit?: string;
|
|
18
18
|
/** The `environment` field of the nearest bitmagic.json, if the command found one. */
|
|
19
19
|
projectDefault?: string;
|
|
20
|
+
/** The `env` of the nearest .bitmagic-env, if the command found one. */
|
|
21
|
+
folderDefault?: string;
|
|
22
|
+
/** Where that marker was, so a bad value can name the file holding it. */
|
|
23
|
+
folderMarkerPath?: string;
|
|
24
|
+
/** Its optional `apiUrl` — applied only when the marker is also what chose the environment. */
|
|
25
|
+
folderApiUrl?: string;
|
|
20
26
|
/** The default recorded in the credentials file, if any. */
|
|
21
27
|
storedDefault?: string;
|
|
22
|
-
/**
|
|
23
|
-
* This CLI's own version, which decides the final fallback — see laneDefaultEnvironment.
|
|
24
|
-
* Passed in rather than read here so the precedence chain stays pure and testable; the wiring
|
|
25
|
-
* half below supplies it from `currentCliVersion()`.
|
|
26
|
-
*/
|
|
27
|
-
cliVersion?: string;
|
|
28
28
|
env?: Record<string, string | undefined>;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* The environment a CLI points at when nothing else says
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
31
|
+
* The environment a CLI points at when nothing else says at all: prod, always.
|
|
32
|
+
*
|
|
33
|
+
* This used to ask the CLI about its own release line — `-dev.N` meant dev, a plain version meant
|
|
34
|
+
* prod — so that a dev build needed no `--env` to reach the dev api-server. That answer is now
|
|
35
|
+
* carried by `.bitmagic-env` instead, which states it per folder rather than inferring it from an
|
|
36
|
+
* install, and states it for the release line too. Once the intent has somewhere honest to live,
|
|
37
|
+
* inferring it is worse than not: the lane rule made the same command mean different things on two
|
|
38
|
+
* machines, and the difference was a version string nobody was looking at.
|
|
39
|
+
*
|
|
40
|
+
* Prod because this is the bottom of the chain, and the bottom should be the environment a creator
|
|
41
|
+
* who has expressed no preference actually wants: the one their games live on. Everything else is
|
|
42
|
+
* reachable, and now has to be asked for — a marker, a project pin, BITMAGIC_ENV, or --env.
|
|
36
43
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* visibly at the first authenticated call
|
|
40
|
-
*
|
|
44
|
+
* The cost is real and worth naming: aiming at prod by accident is the more expensive mistake, as a
|
|
45
|
+
* command that lands there can touch a published game, whereas one aimed at dev usually fails
|
|
46
|
+
* visibly at the first authenticated call. That is the trade of making the default predictable
|
|
47
|
+
* rather than inferred, and it is why every non-prod tree should carry a marker.
|
|
41
48
|
*/
|
|
42
|
-
export declare
|
|
49
|
+
export declare const DEFAULT_ENVIRONMENT: EnvironmentName;
|
|
43
50
|
export interface EnvironmentSelection {
|
|
44
51
|
environment: Environment;
|
|
45
52
|
source: EnvironmentSource;
|
|
@@ -66,8 +73,6 @@ export interface CommandEnvironmentOptions {
|
|
|
66
73
|
cwd?: string;
|
|
67
74
|
/** Test-only credentials-directory override, matching the `baseDir` deps commands already thread. */
|
|
68
75
|
baseDir?: string;
|
|
69
|
-
/** Test-only override for the running CLI's version; production callers omit it. */
|
|
70
|
-
cliVersion?: string;
|
|
71
76
|
env?: Record<string, string | undefined>;
|
|
72
77
|
}
|
|
73
78
|
export declare function selectEnvironmentForCommand(options?: CommandEnvironmentOptions): EnvironmentSelection;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readProjectEnvironment } from '../project/context.js';
|
|
2
2
|
import { CliError } from '../errors.js';
|
|
3
3
|
import { readDefaultEnvironment } from './credentials.js';
|
|
4
|
-
import {
|
|
4
|
+
import { FOLDER_ENVIRONMENT_MARKER, readFolderEnvironment } from './folder-environment.js';
|
|
5
5
|
const DEV_AUTH0_DOMAIN = 'bitmagic-v3-staging.us.auth0.com';
|
|
6
6
|
const DEV_AUTH0_AUDIENCE = 'https://api.bitmagic.cloud';
|
|
7
7
|
// Public identifier of the "Bitmagic CLI APP" Auth0 Native application, not a secret — native
|
|
@@ -43,29 +43,38 @@ export function isEnvironmentName(value) {
|
|
|
43
43
|
return Object.prototype.hasOwnProperty.call(ENVIRONMENTS, value);
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
|
-
* The environment a CLI points at when nothing else says
|
|
47
|
-
* for. `@bitmagic/cli` from `latest` is the release a creator installs to make a real game, so it
|
|
48
|
-
* targets prod; `@bitmagic/cli@dev` carries `-dev.N` and exists to exercise endpoints that land on
|
|
49
|
-
* the dev api-server first, so it targets dev. Requiring `--env prod` on the release line made the
|
|
50
|
-
* common case the one that needed a flag.
|
|
46
|
+
* The environment a CLI points at when nothing else says at all: prod, always.
|
|
51
47
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
48
|
+
* This used to ask the CLI about its own release line — `-dev.N` meant dev, a plain version meant
|
|
49
|
+
* prod — so that a dev build needed no `--env` to reach the dev api-server. That answer is now
|
|
50
|
+
* carried by `.bitmagic-env` instead, which states it per folder rather than inferring it from an
|
|
51
|
+
* install, and states it for the release line too. Once the intent has somewhere honest to live,
|
|
52
|
+
* inferring it is worse than not: the lane rule made the same command mean different things on two
|
|
53
|
+
* machines, and the difference was a version string nobody was looking at.
|
|
54
|
+
*
|
|
55
|
+
* Prod because this is the bottom of the chain, and the bottom should be the environment a creator
|
|
56
|
+
* who has expressed no preference actually wants: the one their games live on. Everything else is
|
|
57
|
+
* reachable, and now has to be asked for — a marker, a project pin, BITMAGIC_ENV, or --env.
|
|
58
|
+
*
|
|
59
|
+
* The cost is real and worth naming: aiming at prod by accident is the more expensive mistake, as a
|
|
60
|
+
* command that lands there can touch a published game, whereas one aimed at dev usually fails
|
|
61
|
+
* visibly at the first authenticated call. That is the trade of making the default predictable
|
|
62
|
+
* rather than inferred, and it is why every non-prod tree should carry a marker.
|
|
56
63
|
*/
|
|
57
|
-
export
|
|
58
|
-
if (!cliVersion)
|
|
59
|
-
return 'dev';
|
|
60
|
-
return cliVersion.includes('-') ? 'dev' : 'prod';
|
|
61
|
-
}
|
|
64
|
+
export const DEFAULT_ENVIRONMENT = 'prod';
|
|
62
65
|
/** Where the bad value came from, and therefore how to tell the user to fix it. */
|
|
63
|
-
function unknownEnvironmentMessage(candidate, source) {
|
|
66
|
+
function unknownEnvironmentMessage(candidate, source, markerPath) {
|
|
64
67
|
const valid = `Valid environments: ${ENVIRONMENT_NAMES.join(', ')}.`;
|
|
65
68
|
if (source === 'project') {
|
|
66
69
|
return (`Unknown environment "${candidate}" in this project's bitmagic.json. ${valid} ` +
|
|
67
70
|
'Fix the "environment" field, or override it with --env / BITMAGIC_ENV.');
|
|
68
71
|
}
|
|
72
|
+
if (source === 'folder') {
|
|
73
|
+
// Named by path, not by filename: the marker is a dotfile and may sit several directories up,
|
|
74
|
+
// so "check your .bitmagic-env" would leave someone hunting for which one.
|
|
75
|
+
return (`Unknown environment "${candidate}" in ${markerPath ?? FOLDER_ENVIRONMENT_MARKER}. ` +
|
|
76
|
+
`${valid} Fix the "env" line, or override it with --env / BITMAGIC_ENV.`);
|
|
77
|
+
}
|
|
69
78
|
return `Unknown environment "${candidate}". ${valid}`;
|
|
70
79
|
}
|
|
71
80
|
/**
|
|
@@ -79,10 +88,11 @@ export function selectEnvironment(options = {}) {
|
|
|
79
88
|
const env = options.env ?? process.env;
|
|
80
89
|
// A stored default is written by an older or corrupted CLI, not typed by the user, so an
|
|
81
90
|
// unrecognised value (e.g. a stale "staging") must not wedge every command with a CliError —
|
|
82
|
-
// treat it as absent and fall through to
|
|
83
|
-
// the user right now (--env, BITMAGIC_ENV) or sitting in a
|
|
84
|
-
// (bitmagic.json), and those get direct feedback instead of a silent wrong
|
|
85
|
-
//
|
|
91
|
+
// treat it as absent and fall through to the default below. Everything else in the chain is
|
|
92
|
+
// either typed by the user right now (--env, BITMAGIC_ENV) or sitting in a file they can see and
|
|
93
|
+
// edit (bitmagic.json, .bitmagic-env), and those get direct feedback instead of a silent wrong
|
|
94
|
+
// answer: resolving somewhere else because a file says "production" is the wrong-env hazard this
|
|
95
|
+
// chain exists to end.
|
|
86
96
|
const validStoredDefault = options.storedDefault !== undefined && isEnvironmentName(options.storedDefault)
|
|
87
97
|
? options.storedDefault
|
|
88
98
|
: undefined;
|
|
@@ -90,20 +100,33 @@ export function selectEnvironment(options = {}) {
|
|
|
90
100
|
// machine-global sticky state — whatever was last logged into, anywhere — while bitmagic.json
|
|
91
101
|
// records which api-server minted THIS checkout's gameId and served the engine pinned in it.
|
|
92
102
|
// Both lose to a value typed for this one command.
|
|
103
|
+
//
|
|
104
|
+
// The folder marker sits BETWEEN them, and the ranking is the whole point of it. Below the
|
|
105
|
+
// project: a checkout that already declares its environment must never be re-aimed by where it
|
|
106
|
+
// happens to sit on disk, so a prod project dropped into dev-games/ stays prod — the opposite of
|
|
107
|
+
// what BITMAGIC_ENV does, and deliberately so. Above the stored default: a brand-new project has
|
|
108
|
+
// no pin yet, so at `bitmagic init` the folder is the only thing that knows what the creator
|
|
109
|
+
// meant, and without it the answer came from whatever they last logged in to.
|
|
93
110
|
const candidates = [
|
|
94
111
|
[options.explicit, 'flag'],
|
|
95
112
|
[env.BITMAGIC_ENV, 'BITMAGIC_ENV'],
|
|
96
113
|
[options.projectDefault, 'project'],
|
|
114
|
+
[options.folderDefault, 'folder'],
|
|
97
115
|
[validStoredDefault, 'stored'],
|
|
98
116
|
];
|
|
99
117
|
const chosen = candidates.find(([value]) => value !== undefined);
|
|
100
|
-
const candidate = chosen?.[0] ??
|
|
118
|
+
const candidate = chosen?.[0] ?? DEFAULT_ENVIRONMENT;
|
|
101
119
|
const source = chosen?.[1] ?? 'default';
|
|
102
120
|
if (!isEnvironmentName(candidate)) {
|
|
103
|
-
throw new CliError(unknownEnvironmentMessage(candidate, source));
|
|
121
|
+
throw new CliError(unknownEnvironmentMessage(candidate, source, options.folderMarkerPath));
|
|
104
122
|
}
|
|
105
123
|
const resolved = ENVIRONMENTS[candidate];
|
|
106
|
-
|
|
124
|
+
// A marker's apiUrl applies only when that marker also chose the environment. Otherwise a
|
|
125
|
+
// local-games/ folder holding one prod-pinned project would aim PROD at localhost — the pin wins
|
|
126
|
+
// the name, so it must win the address that goes with it.
|
|
127
|
+
const folderApiUrl = source === 'folder' ? options.folderApiUrl : undefined;
|
|
128
|
+
// BITMAGIC_API_URL last, so an override typed for this one command still outranks the file.
|
|
129
|
+
const apiUrlOverride = env.BITMAGIC_API_URL ?? folderApiUrl;
|
|
107
130
|
return {
|
|
108
131
|
environment: apiUrlOverride ? { ...resolved, apiUrl: apiUrlOverride } : resolved,
|
|
109
132
|
source,
|
|
@@ -121,23 +144,28 @@ export function describeEnvironmentSource(source) {
|
|
|
121
144
|
return 'from BITMAGIC_ENV';
|
|
122
145
|
case 'project':
|
|
123
146
|
return 'from bitmagic.json';
|
|
147
|
+
case 'folder':
|
|
148
|
+
return `from ${FOLDER_ENVIRONMENT_MARKER} in this folder or a parent`;
|
|
124
149
|
case 'stored':
|
|
125
150
|
return 'from your last login';
|
|
126
151
|
case 'default':
|
|
127
|
-
// Named
|
|
128
|
-
//
|
|
129
|
-
//
|
|
130
|
-
return 'the default
|
|
152
|
+
// Named so it reads as a rule rather than a decision the CLI made on its own — and so that
|
|
153
|
+
// someone seeing "prod" they did not expect knows nothing chose it, which points them at the
|
|
154
|
+
// fix: put a .bitmagic-env in the tree, or pin the project.
|
|
155
|
+
return 'the default when nothing else says';
|
|
131
156
|
}
|
|
132
157
|
}
|
|
133
158
|
export function selectEnvironmentForCommand(options = {}) {
|
|
159
|
+
// Read once: the marker carries three of the inputs below, and walking the tree twice would let
|
|
160
|
+
// them disagree if a file changed mid-command.
|
|
161
|
+
const folder = readFolderEnvironment(options.cwd);
|
|
134
162
|
return selectEnvironment({
|
|
135
163
|
explicit: options.explicit,
|
|
136
164
|
projectDefault: readProjectEnvironment(options.cwd),
|
|
165
|
+
folderDefault: folder?.environment,
|
|
166
|
+
folderMarkerPath: folder?.file,
|
|
167
|
+
folderApiUrl: folder?.apiUrl,
|
|
137
168
|
storedDefault: readDefaultEnvironment(options.baseDir),
|
|
138
|
-
// Read here rather than in selectEnvironment: this is the wiring half, and currentCliVersion
|
|
139
|
-
// touches the filesystem. `cliVersion` stays overridable so a test can pin a lane.
|
|
140
|
-
cliVersion: options.cliVersion ?? currentCliVersion(),
|
|
141
169
|
env: options.env,
|
|
142
170
|
});
|
|
143
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/config/environments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/config/environments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAa3F,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAC5D,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAExD,8FAA8F;AAC9F,8FAA8F;AAC9F,2FAA2F;AAC3F,4EAA4E;AAC5E,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAE/D,2FAA2F;AAC3F,yFAAyF;AACzF,+FAA+F;AAC/F,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,CAAC,MAAM,YAAY,GAAyC;IAChE,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,oCAAoC;QAC5C,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,kBAAkB;QACjC,aAAa,EAAE,mBAAmB;KACnC;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,qBAAqB;QAC7B,WAAW,EAAE,0BAA0B;QACvC,aAAa,EAAE,yBAAyB;QACxC,aAAa,EAAE,oBAAoB;KACpC;IACD,0FAA0F;IAC1F,6FAA6F;IAC7F,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,uBAAuB;QAC/B,WAAW,EAAE,gBAAgB;QAC7B,aAAa,EAAE,kBAAkB;QACjC,aAAa,EAAE,mBAAmB;KACnC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAsB,CAAC;AAEhF,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AA2BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAoB,MAAM,CAAC;AAO3D,mFAAmF;AACnF,SAAS,yBAAyB,CAChC,SAAiB,EACjB,MAAyB,EACzB,UAAmB;IAEnB,MAAM,KAAK,GAAG,uBAAuB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACrE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,wBAAwB,SAAS,sCAAsC,KAAK,GAAG;YAC/E,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,8FAA8F;QAC9F,2EAA2E;QAC3E,OAAO,CACL,wBAAwB,SAAS,QAAQ,UAAU,IAAI,yBAAyB,IAAI;YACpF,GAAG,KAAK,gEAAgE,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,wBAAwB,SAAS,MAAM,KAAK,EAAE,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAqC,EAAE;IACvE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,yFAAyF;IACzF,6FAA6F;IAC7F,4FAA4F;IAC5F,iGAAiG;IACjG,+FAA+F;IAC/F,iGAAiG;IACjG,uBAAuB;IACvB,MAAM,kBAAkB,GACtB,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7E,CAAC,CAAC,OAAO,CAAC,aAAa;QACvB,CAAC,CAAC,SAAS,CAAC;IAEhB,+FAA+F;IAC/F,8FAA8F;IAC9F,6FAA6F;IAC7F,mDAAmD;IACnD,EAAE;IACF,2FAA2F;IAC3F,+FAA+F;IAC/F,iGAAiG;IACjG,iGAAiG;IACjG,6FAA6F;IAC7F,8EAA8E;IAC9E,MAAM,UAAU,GAA8C;QAC5D,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;QAClC,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC;QACnC,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;QACjC,CAAC,kBAAkB,EAAE,QAAQ,CAAC;KAC/B,CAAC;IACF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC;IACrD,MAAM,MAAM,GAAsB,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAE3D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,QAAQ,CAAC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,0FAA0F;IAC1F,iGAAiG;IACjG,0DAA0D;IAC1D,MAAM,YAAY,GAAG,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,4FAA4F;IAC5F,MAAM,cAAc,GAAG,GAAG,CAAC,gBAAgB,IAAI,YAAY,CAAC;IAC5D,OAAO;QACL,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,QAAQ;QAChF,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAqC,EAAE;IACxE,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAChD,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,yBAAyB,CAAC,MAAyB;IACjE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,cAAc;YACjB,OAAO,mBAAmB,CAAC;QAC7B,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,QAAQ,yBAAyB,6BAA6B,CAAC;QACxE,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC;QAChC,KAAK,SAAS;YACZ,2FAA2F;YAC3F,6FAA6F;YAC7F,4DAA4D;YAC5D,OAAO,oCAAoC,CAAC;IAChD,CAAC;AACH,CAAC;AA4BD,MAAM,UAAU,2BAA2B,CACzC,UAAqC,EAAE;IAEvC,gGAAgG;IAChG,+CAA+C;IAC/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,iBAAiB,CAAC;QACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,cAAc,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC;QACnD,aAAa,EAAE,MAAM,EAAE,WAAW;QAClC,gBAAgB,EAAE,MAAM,EAAE,IAAI;QAC9B,YAAY,EAAE,MAAM,EAAE,MAAM;QAC5B,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC;QACtD,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,4BAA4B,CAAC,UAAqC,EAAE;IAClF,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,MAAM,KAAK,SAAS,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAwB,EACxB,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,QAAQ,GAAG,GAAG,CAAC,wBAAwB,IAAI,WAAW,CAAC,aAAa,CAAC;IAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,QAAQ,CAChB,6CAA6C,WAAW,CAAC,IAAI,iBAAiB;YAC5E,gFAAgF;YAChF,yCAAyC,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const FOLDER_ENVIRONMENT_MARKER = ".bitmagic-env";
|
|
2
|
+
export interface FolderEnvironment {
|
|
3
|
+
/** The raw `env` value. Checking it against the environment table happens in environments.ts. */
|
|
4
|
+
environment: string;
|
|
5
|
+
/** An optional api-server URL for that environment — see the note on `apiUrl` below. */
|
|
6
|
+
apiUrl?: string;
|
|
7
|
+
/** Absolute path of the marker, so an error and `whoami` can both name the file that decided. */
|
|
8
|
+
file: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Reads the nearest `.bitmagic-env`, walking up from `startDir`.
|
|
12
|
+
*
|
|
13
|
+
* Format is `key=value`, one per line, with `#` comments and blank lines skipped:
|
|
14
|
+
*
|
|
15
|
+
* # local-games/.bitmagic-env
|
|
16
|
+
* env=local
|
|
17
|
+
* apiUrl=http://localhost:3102
|
|
18
|
+
*
|
|
19
|
+
* `apiUrl` is here rather than left to BITMAGIC_API_URL for the same reason the whole file exists:
|
|
20
|
+
* an environment variable is invisible to an agent's shell. It matters most for `local`, whose
|
|
21
|
+
* built-in URL assumes the default ports and is therefore wrong for any shifted clone.
|
|
22
|
+
*
|
|
23
|
+
* Every malformed case throws instead of falling through to the next input in the chain. The line
|
|
24
|
+
* config/environments.ts draws is machine-written state versus a file a human typed: a bad STORED
|
|
25
|
+
* default is treated as absent because it would otherwise wedge every command everywhere including
|
|
26
|
+
* the recovery, but this file was typed deliberately, is visible, wedges only commands run beneath
|
|
27
|
+
* its own folder, and `cd ..` or `--env` recovers in place. Falling through silently is exactly the
|
|
28
|
+
* failure this feature was built to end — a folder that said `production` would quietly resolve to
|
|
29
|
+
* whatever the last login happened to be.
|
|
30
|
+
*/
|
|
31
|
+
export declare function readFolderEnvironment(startDir?: string): FolderEnvironment | undefined;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// The folder-level environment marker: one file at the root of a tree of projects, naming the
|
|
2
|
+
// environment everything beneath it belongs to.
|
|
3
|
+
//
|
|
4
|
+
// It exists because the alternative — a shell doing the job, via direnv exporting BITMAGIC_ENV —
|
|
5
|
+
// only works in an INTERACTIVE shell. A coding agent runs its commands through a non-interactive
|
|
6
|
+
// `zsh -c`, which sources neither ~/.zshrc nor any direnv hook, so a creator who sorted their
|
|
7
|
+
// projects into prod/ and dev/ folders got the right answer by hand and the wrong one from their
|
|
8
|
+
// agent. Resolving it here, from the filesystem, is the only way the answer is the same for both.
|
|
9
|
+
//
|
|
10
|
+
// This module reads a file and returns strings. Deciding whether those strings NAME anything is
|
|
11
|
+
// config/environments.ts's job — the same split project/context.ts documents for `environment` in
|
|
12
|
+
// bitmagic.json, and the reason neither module validates on the other's behalf.
|
|
13
|
+
import * as fs from 'fs';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import { CliError } from '../errors.js';
|
|
16
|
+
import { findDirWithFileUpwards } from '../project/context.js';
|
|
17
|
+
export const FOLDER_ENVIRONMENT_MARKER = '.bitmagic-env';
|
|
18
|
+
/** The keys the marker understands. Anything else is a typo, and typos are reported, not ignored. */
|
|
19
|
+
const KNOWN_KEYS = ['env', 'apiUrl'];
|
|
20
|
+
/**
|
|
21
|
+
* Reads the nearest `.bitmagic-env`, walking up from `startDir`.
|
|
22
|
+
*
|
|
23
|
+
* Format is `key=value`, one per line, with `#` comments and blank lines skipped:
|
|
24
|
+
*
|
|
25
|
+
* # local-games/.bitmagic-env
|
|
26
|
+
* env=local
|
|
27
|
+
* apiUrl=http://localhost:3102
|
|
28
|
+
*
|
|
29
|
+
* `apiUrl` is here rather than left to BITMAGIC_API_URL for the same reason the whole file exists:
|
|
30
|
+
* an environment variable is invisible to an agent's shell. It matters most for `local`, whose
|
|
31
|
+
* built-in URL assumes the default ports and is therefore wrong for any shifted clone.
|
|
32
|
+
*
|
|
33
|
+
* Every malformed case throws instead of falling through to the next input in the chain. The line
|
|
34
|
+
* config/environments.ts draws is machine-written state versus a file a human typed: a bad STORED
|
|
35
|
+
* default is treated as absent because it would otherwise wedge every command everywhere including
|
|
36
|
+
* the recovery, but this file was typed deliberately, is visible, wedges only commands run beneath
|
|
37
|
+
* its own folder, and `cd ..` or `--env` recovers in place. Falling through silently is exactly the
|
|
38
|
+
* failure this feature was built to end — a folder that said `production` would quietly resolve to
|
|
39
|
+
* whatever the last login happened to be.
|
|
40
|
+
*/
|
|
41
|
+
export function readFolderEnvironment(startDir) {
|
|
42
|
+
const dir = findDirWithFileUpwards(FOLDER_ENVIRONMENT_MARKER, startDir);
|
|
43
|
+
if (dir === null)
|
|
44
|
+
return undefined;
|
|
45
|
+
const file = path.join(dir, FOLDER_ENVIRONMENT_MARKER);
|
|
46
|
+
let text;
|
|
47
|
+
try {
|
|
48
|
+
text = fs.readFileSync(file, 'utf-8');
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
const code = err.code;
|
|
52
|
+
throw new CliError(`Cannot read ${file}: ${code ?? String(err)}`);
|
|
53
|
+
}
|
|
54
|
+
const values = new Map();
|
|
55
|
+
// A BOM would otherwise ride along on the first key and turn `env` into something unrecognised.
|
|
56
|
+
for (const raw of text.replace(/^\uFEFF/, '').split('\n')) {
|
|
57
|
+
const line = raw.trim();
|
|
58
|
+
if (line.length === 0 || line.startsWith('#'))
|
|
59
|
+
continue;
|
|
60
|
+
const eq = line.indexOf('=');
|
|
61
|
+
if (eq === -1) {
|
|
62
|
+
throw new CliError(`${file} has a line that is not key=value: "${line}". ` +
|
|
63
|
+
`Write ${KNOWN_KEYS.map((k) => `${k}=…`).join(' and ')}, one per line.`);
|
|
64
|
+
}
|
|
65
|
+
const key = line.slice(0, eq).trim();
|
|
66
|
+
const value = line.slice(eq + 1).trim();
|
|
67
|
+
if (!KNOWN_KEYS.includes(key)) {
|
|
68
|
+
throw new CliError(`${file} has an unknown key "${key}". Valid keys: ${KNOWN_KEYS.join(', ')}.`);
|
|
69
|
+
}
|
|
70
|
+
if (value.length === 0) {
|
|
71
|
+
throw new CliError(`${file} has an empty "${key}".`);
|
|
72
|
+
}
|
|
73
|
+
values.set(key, value);
|
|
74
|
+
}
|
|
75
|
+
const environment = values.get('env');
|
|
76
|
+
if (environment === undefined) {
|
|
77
|
+
throw new CliError(`${file} does not set "env". Write one of dev, prod or local as \`env=<name>\`, ` +
|
|
78
|
+
'or delete the file.');
|
|
79
|
+
}
|
|
80
|
+
const apiUrl = values.get('apiUrl');
|
|
81
|
+
return apiUrl === undefined ? { environment, file } : { environment, apiUrl, file };
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=folder-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"folder-environment.js","sourceRoot":"","sources":["../../src/config/folder-environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-viewer.js","sourceRoot":"","sources":["../../src/editor/asset-viewer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"asset-viewer.js","sourceRoot":"","sources":["../../src/editor/asset-viewer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1252,11 +1252,13 @@ ${ASSET_DETAIL_HTML}
|
|
|
1252
1252
|
* in, and a forged city has hundreds of assets: firing them all at once would stutter the game to
|
|
1253
1253
|
* decorate a side panel.
|
|
1254
1254
|
*
|
|
1255
|
-
* Two rather than one attempt, and the second is not defensive padding.
|
|
1256
|
-
*
|
|
1257
|
-
* game is loading is QUEUED
|
|
1258
|
-
*
|
|
1259
|
-
*
|
|
1255
|
+
* Two rather than one attempt, and the second is not defensive padding. On engines vendored before
|
|
1256
|
+
* the thumbnail renderer was taken out of the REQUIRES_GAME_LOADED set, GENERATE_VOXEL_PREVIEW
|
|
1257
|
+
* arriving while a game is loading is QUEUED past this 15 s wait and never seen as an answer;
|
|
1258
|
+
* current engines answer at once (and ACK receipt), but this page talks to whatever engine the
|
|
1259
|
+
* project has, so the retry stays. Marked attempted-once, that asset would keep its glyph for the
|
|
1260
|
+
* rest of the session; the retry costs one extra message and the cap keeps a genuinely broken
|
|
1261
|
+
* asset from asking forever.
|
|
1260
1262
|
*/
|
|
1261
1263
|
var MAX_PREVIEW_ATTEMPTS = 2;
|
|
1262
1264
|
var previewQueue = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,EACL,qBAAqB,EAAE,kBAAkB,GAC1C,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7F,oGAAoG;AACpG,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B;;;;;;;;;;;;GAYG;AACH,SAAS,sBAAsB;IAC7B,OAAO;QACL,6BAA6B,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG;QACjE,iCAAiC,qBAAqB,CAAC,QAAQ,EAAE,GAAG;QACpE,8BAA8B,kBAAkB,CAAC,QAAQ,EAAE,GAAG;KAC/D,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEnC,kGAAkG;AAClG,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC;AASD,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,OAAO,GAAG,oBAAoB,OAAO,CAAC,QAAQ,2BAA2B,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACpH,OAAO;;;;wBAIe,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;EAChD,kBAAkB;;EAElB,mBAAmB;EACnB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsHrB,gBAAgB;EAChB,eAAe;;;;;;uBAMM,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B/C,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;EAyBhB,iBAAiB;;;;mBAIA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;kBACxB,gBAAgB;yBACT,qBAAqB;2BACnB,gBAAgB;;IAEvC,sBAAsB,EAAE
|
|
1
|
+
{"version":3,"file":"shell-page.js","sourceRoot":"","sources":["../../src/editor/shell-page.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0/C3B,CAAC;AACF,CAAC"}
|
|
@@ -21,6 +21,18 @@ export interface ProjectContext {
|
|
|
21
21
|
root: string;
|
|
22
22
|
metadata: ProjectMetadata;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* The nearest ancestor of `startDir` (itself included) holding `fileName`, or null at the root.
|
|
26
|
+
*
|
|
27
|
+
* `startDir` does NOT have to exist. `fs.existsSync` on a path under a missing directory is simply
|
|
28
|
+
* false, so the walk falls through to the nearest ancestor that does exist — which is what lets
|
|
29
|
+
* `bitmagic init <dir>` ask about a target directory it has not created yet.
|
|
30
|
+
*
|
|
31
|
+
* Shared rather than written twice: the loop is four lines and two of them are easy to get wrong
|
|
32
|
+
* (resolving `startDir` on the way in, and stopping when `path.dirname` stops moving), so a second
|
|
33
|
+
* copy would drift. Config markers live above this module — see config/folder-environment.ts.
|
|
34
|
+
*/
|
|
35
|
+
export declare function findDirWithFileUpwards(fileName: string, startDir?: string): string | null;
|
|
24
36
|
/**
|
|
25
37
|
* Like findProjectRoot, but answers "is there one?" instead of insisting there is.
|
|
26
38
|
*
|
package/dist/project/context.js
CHANGED
|
@@ -23,15 +23,20 @@ function findMissingField(value) {
|
|
|
23
23
|
return REQUIRED_STRING_FIELDS.find((field) => typeof value[field] !== 'string' || value[field].length === 0);
|
|
24
24
|
}
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* The nearest ancestor of `startDir` (itself included) holding `fileName`, or null at the root.
|
|
27
27
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
28
|
+
* `startDir` does NOT have to exist. `fs.existsSync` on a path under a missing directory is simply
|
|
29
|
+
* false, so the walk falls through to the nearest ancestor that does exist — which is what lets
|
|
30
|
+
* `bitmagic init <dir>` ask about a target directory it has not created yet.
|
|
31
|
+
*
|
|
32
|
+
* Shared rather than written twice: the loop is four lines and two of them are easy to get wrong
|
|
33
|
+
* (resolving `startDir` on the way in, and stopping when `path.dirname` stops moving), so a second
|
|
34
|
+
* copy would drift. Config markers live above this module — see config/folder-environment.ts.
|
|
30
35
|
*/
|
|
31
|
-
export function
|
|
36
|
+
export function findDirWithFileUpwards(fileName, startDir = process.cwd()) {
|
|
32
37
|
let dir = path.resolve(startDir);
|
|
33
38
|
for (;;) {
|
|
34
|
-
if (fs.existsSync(path.join(dir,
|
|
39
|
+
if (fs.existsSync(path.join(dir, fileName)))
|
|
35
40
|
return dir;
|
|
36
41
|
const parent = path.dirname(dir);
|
|
37
42
|
if (parent === dir)
|
|
@@ -39,6 +44,15 @@ export function findProjectRootOrNull(startDir = process.cwd()) {
|
|
|
39
44
|
dir = parent;
|
|
40
45
|
}
|
|
41
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Like findProjectRoot, but answers "is there one?" instead of insisting there is.
|
|
49
|
+
*
|
|
50
|
+
* Environment resolution runs on EVERY command, including the ones that legitimately have no
|
|
51
|
+
* project — `login`, `logout`, `whoami`, `usage`, `subscribe`, and `init`, which creates one.
|
|
52
|
+
*/
|
|
53
|
+
export function findProjectRootOrNull(startDir = process.cwd()) {
|
|
54
|
+
return findDirWithFileUpwards(MARKER, startDir);
|
|
55
|
+
}
|
|
42
56
|
/** Walks up from `startDir` looking for bitmagic.json, so commands work from any subdirectory. */
|
|
43
57
|
export function findProjectRoot(startDir = process.cwd()) {
|
|
44
58
|
const root = findProjectRootOrNull(startDir);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/project/context.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,gGAAgG;AAChG,4CAA4C;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA2B/E,MAAM,MAAM,GAAG,eAAe,CAAC;AAE/B,MAAM,sBAAsB,GAA8B;IACxD,QAAQ;IACR,eAAe;IACf,OAAO;IACP,UAAU;CACX,CAAC;AAEF;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,KAA8B;IACtD,OAAO,sBAAsB,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,QAAQ,IAAK,KAAK,CAAC,KAAK,CAAY,CAAC,MAAM,KAAK,CAAC,CACrF,CAAC;AACJ,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/project/context.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.51-dev.
|
|
3
|
+
"version": "0.1.51-dev.1",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Bitmagic Oy",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"playwright-core": "^1.59.1",
|
|
25
25
|
"tar": "^7.4.3",
|
|
26
26
|
"@bitmagic/asset-core": "0.2.6-dev.0",
|
|
27
|
-
"@bitmagic/
|
|
28
|
-
"@bitmagic/
|
|
27
|
+
"@bitmagic/animation-forger": "0.1.6-dev.0",
|
|
28
|
+
"@bitmagic/world-forger": "0.1.11-dev.0"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@eslint/js": "^9.38.0",
|