Last active
September 30, 2024 14:31
-
-
Save andyjessop/9a4f4e32d12635b47ff8b798ef74eb2c to your computer and use it in GitHub Desktop.
Ideas for a modular Wrangler
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// /packages/wrangler/versions/versions.test.ts | |
import { versions } from './versions'; | |
it("should output things", async () => { | |
const { completed, dir, logs, mock, seed, stop } = versions({ | |
fixture: "./tests/fixtures/", | |
env: { | |
/* extra environment variables */ | |
}, | |
}).run({ | |
remote: false, // must have mocks saved in ./.mocks/[hash] | |
}); | |
// programmatic seeding | |
seed({...}); | |
mock({...}); | |
// asserting output | |
expect(logs.output.has("some output")).toBe(true); | |
expect(logs.output.has("some error")).toBe(true); | |
expect(logs.stdout.has("some output")).toBe(true); | |
expect(logs.stderr.has("some error")).toBe(true); | |
// using dir to access tmp files | |
expect(existsSync(path.join(dir, "wrangler.toml"))); | |
// stopping a long-lived process | |
await logs.output.waitFor("some output"); | |
stop(); | |
await completed; | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// /packages/wrangler/versions/versions.ts | |
// versions mini-wranlger | |
// has own package.json with own e2e/integration/unit tests - let turbo handle partial task execution | |
// mini-wranlgers are composable in /packages/wrangler/index.ts | |
/* | |
// /packages/wrangler/shared/shared.ts | |
export const shared = new Wrangler(); | |
shared.defineConfig({ | |
// ...sharedConfig | |
}) | |
// /packages/wrangler/wrangler.ts | |
export const wrangler = new Wrangler([ | |
shared, //de-deuplicates shared | |
versions | |
]); | |
*/ | |
export const versions = new Wrangler([shared]); | |
versions | |
.defineConfig({} as VersionsConfig) | |
.defineNamespace("wrangler versions", { | |
metadata: { | |
description: `🫧 List, view, upload and deploy Versions of your Worker to Cloudflare`, | |
status: "open-beta", | |
owner: "Workers: Authoring and Testing", | |
}, | |
}) | |
.defineCommand("wrangler versions list", { | |
args: { | |
name: { | |
describe: "Name of the worker", | |
type: "string", | |
requiresArg: true, | |
}, | |
json: { | |
describe: "Display output as clean JSON", | |
type: "boolean", | |
default: false, | |
}, | |
}, | |
metadata: { | |
description: "List the 10 most recent Versions of your Worker [beta]", // TODO(now): remove [beta] | |
owner: "Workers: Authoring and Testing", | |
status: "open-beta", | |
}, | |
behaviour: {}, | |
async handler({ | |
config, | |
dir, | |
logger, | |
api, | |
}: { | |
config: Config<VersionsConfig /* & anything defined by shared */>; // Config provides get/set and is format-agnostic | |
dir: string; | |
logger: Logger; | |
api: Api<{ versions: VersionsApi /* anything defined by shared */ }>; | |
}) { | |
const flags = config.get("compatabilityFlags"); | |
const versions = await api.versions.getAll(); | |
logger.info("All versions retrieved"); | |
// ...steps how? | |
}, | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment