@meetploy/cli 1.2.0 → 1.4.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.
@@ -0,0 +1,7 @@
1
+ interface BuildCommandOptions {
2
+ config?: string;
3
+ }
4
+ export declare function buildCommand(options?: BuildCommandOptions): Promise<void>;
5
+ export declare function parseBuildArgs(args: string[]): BuildCommandOptions;
6
+ export declare function printBuildHelp(): void;
7
+ export {};
@@ -0,0 +1,178 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFileSync, existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { parse as parseYaml } from "yaml";
5
+ function readPloyConfig(projectDir, configPath) {
6
+ const configFile = configPath || "ploy.yaml";
7
+ const fullPath = join(projectDir, configFile);
8
+ if (!existsSync(fullPath)) {
9
+ throw new Error(`Config file not found: ${fullPath}`);
10
+ }
11
+ const content = readFileSync(fullPath, "utf-8");
12
+ const config = parseYaml(content);
13
+ return config;
14
+ }
15
+ function validatePloyConfig(config, configFile) {
16
+ if (config.kind !== undefined) {
17
+ const validKinds = ["nextjs", "static", "dynamic", "worker"];
18
+ if (!validKinds.includes(config.kind)) {
19
+ throw new Error(`Invalid kind '${config.kind}' in ${configFile}. Must be one of: ${validKinds.join(", ")}`);
20
+ }
21
+ }
22
+ if (config.out !== undefined) {
23
+ if (typeof config.out !== "string") {
24
+ throw new Error(`'out' in ${configFile} must be a string`);
25
+ }
26
+ if (config.out.startsWith("/")) {
27
+ throw new Error(`'out' in ${configFile} must be a relative path`);
28
+ }
29
+ if (config.out.includes("..")) {
30
+ throw new Error(`'out' in ${configFile} cannot contain path traversal (..)`);
31
+ }
32
+ }
33
+ if (config.base !== undefined) {
34
+ if (typeof config.base !== "string") {
35
+ throw new Error(`'base' in ${configFile} must be a string`);
36
+ }
37
+ if (config.base.startsWith("/")) {
38
+ throw new Error(`'base' in ${configFile} must be a relative path`);
39
+ }
40
+ if (config.base.includes("..")) {
41
+ throw new Error(`'base' in ${configFile} cannot contain path traversal (..)`);
42
+ }
43
+ }
44
+ if (config.main !== undefined) {
45
+ if (typeof config.main !== "string") {
46
+ throw new Error(`'main' in ${configFile} must be a string`);
47
+ }
48
+ if (config.main.startsWith("/")) {
49
+ throw new Error(`'main' in ${configFile} must be a relative path`);
50
+ }
51
+ if (config.main.includes("..")) {
52
+ throw new Error(`'main' in ${configFile} cannot contain path traversal (..)`);
53
+ }
54
+ }
55
+ if (config.build !== undefined && typeof config.build !== "string") {
56
+ throw new Error(`'build' in ${configFile} must be a string`);
57
+ }
58
+ validateBindings(config.db, "db", configFile);
59
+ validateBindings(config.queue, "queue", configFile);
60
+ validateBindings(config.workflow, "workflow", configFile);
61
+ if (config.ai !== undefined && typeof config.ai !== "boolean") {
62
+ throw new Error(`'ai' in ${configFile} must be a boolean`);
63
+ }
64
+ if (config.monorepo !== undefined && typeof config.monorepo !== "boolean") {
65
+ throw new Error(`'monorepo' in ${configFile} must be a boolean`);
66
+ }
67
+ }
68
+ function validateBindings(bindings, bindingType, configFile) {
69
+ if (bindings === undefined) {
70
+ return;
71
+ }
72
+ if (typeof bindings !== "object" || bindings === null) {
73
+ throw new Error(`'${bindingType}' in ${configFile} must be an object`);
74
+ }
75
+ for (const [bindingName, resourceName] of Object.entries(bindings)) {
76
+ if (!/^[A-Z][A-Z0-9_]*$/.test(bindingName)) {
77
+ throw new Error(`Invalid ${bindingType} binding name '${bindingName}' in ${configFile}. ` +
78
+ `Binding names must be uppercase with underscores (e.g., DB, USERS_DB)`);
79
+ }
80
+ if (typeof resourceName !== "string") {
81
+ throw new Error(`${bindingType} binding '${bindingName}' in ${configFile} must have a string value`);
82
+ }
83
+ if (!/^[a-z][a-z0-9_]*$/.test(resourceName)) {
84
+ throw new Error(`Invalid ${bindingType} resource name '${resourceName}' for binding '${bindingName}' in ${configFile}. ` +
85
+ `Resource names must be lowercase with underscores (e.g., default, users_db)`);
86
+ }
87
+ }
88
+ }
89
+ function detectPackageManager() {
90
+ const cwd = process.cwd();
91
+ if (existsSync(join(cwd, "pnpm-lock.yaml"))) {
92
+ return "pnpm";
93
+ }
94
+ if (existsSync(join(cwd, "yarn.lock"))) {
95
+ return "yarn";
96
+ }
97
+ return "npm";
98
+ }
99
+ function runWranglerBuild() {
100
+ return new Promise((resolve, reject) => {
101
+ const packageManager = detectPackageManager();
102
+ let command;
103
+ let args;
104
+ if (packageManager === "npm") {
105
+ command = "npx";
106
+ args = ["wrangler", "build"];
107
+ }
108
+ else if (packageManager === "yarn") {
109
+ command = "yarn";
110
+ args = ["wrangler", "build"];
111
+ }
112
+ else {
113
+ command = "pnpm";
114
+ args = ["wrangler", "build"];
115
+ }
116
+ console.log(`Running: ${command} ${args.join(" ")}`);
117
+ const child = spawn(command, args, {
118
+ cwd: process.cwd(),
119
+ stdio: "inherit",
120
+ shell: process.platform === "win32",
121
+ });
122
+ child.on("error", (error) => {
123
+ reject(new Error(`Failed to run wrangler build: ${error.message}`));
124
+ });
125
+ child.on("close", (code) => {
126
+ if (code === 0) {
127
+ resolve();
128
+ }
129
+ else {
130
+ reject(new Error(`wrangler build exited with code ${code}`));
131
+ }
132
+ });
133
+ });
134
+ }
135
+ export async function buildCommand(options = {}) {
136
+ const cwd = process.cwd();
137
+ const configFile = options.config || "ploy.yaml";
138
+ console.log("Validating ploy.yaml...");
139
+ const config = readPloyConfig(cwd, options.config);
140
+ validatePloyConfig(config, configFile);
141
+ console.log("Configuration valid.");
142
+ console.log("");
143
+ await runWranglerBuild();
144
+ }
145
+ export function parseBuildArgs(args) {
146
+ const options = {};
147
+ for (let i = 0; i < args.length; i++) {
148
+ const arg = args[i];
149
+ if (arg === "-c" || arg === "--config") {
150
+ const nextArg = args[i + 1];
151
+ if (!nextArg || nextArg.startsWith("-")) {
152
+ console.error(`Error: ${arg} requires a path argument`);
153
+ process.exit(1);
154
+ }
155
+ options.config = nextArg;
156
+ i++;
157
+ }
158
+ else if (arg === "-h" || arg === "--help") {
159
+ printBuildHelp();
160
+ process.exit(0);
161
+ }
162
+ }
163
+ return options;
164
+ }
165
+ export function printBuildHelp() {
166
+ console.log("Usage: ploy build [options]");
167
+ console.log("");
168
+ console.log("Build your Ploy project");
169
+ console.log("");
170
+ console.log("Options:");
171
+ console.log(" -c, --config <path> Path to config file (default: ploy.yaml)");
172
+ console.log(" -h, --help Show this help message");
173
+ console.log("");
174
+ console.log("Examples:");
175
+ console.log(" ploy build Build using ploy.yaml in current directory");
176
+ console.log(" ploy build -c custom.yaml Build using a custom config file");
177
+ }
178
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAmB1C,SAAS,cAAc,CAAC,UAAkB,EAAE,UAAmB;IAC9D,MAAM,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAe,CAAC;IAEhD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAkB,EAAE,UAAkB;IAEjE,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACd,iBAAiB,MAAM,CAAC,IAAI,QAAQ,UAAU,qBAAqB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1F,CAAC;QACH,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,mBAAmB,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,YAAY,UAAU,0BAA0B,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACd,YAAY,UAAU,qCAAqC,CAC3D,CAAC;QACH,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,mBAAmB,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACd,aAAa,UAAU,qCAAqC,CAC5D,CAAC;QACH,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,mBAAmB,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,aAAa,UAAU,0BAA0B,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACd,aAAa,UAAU,qCAAqC,CAC5D,CAAC;QACH,CAAC;IACF,CAAC;IAGD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAGD,gBAAgB,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;IAC9C,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACpD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAG1D,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,WAAW,UAAU,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,iBAAiB,UAAU,oBAAoB,CAAC,CAAC;IAClE,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CACxB,QAA4C,EAC5C,WAAmB,EACnB,UAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO;IACR,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,IAAI,WAAW,QAAQ,UAAU,oBAAoB,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEpE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACd,WAAW,WAAW,kBAAkB,WAAW,QAAQ,UAAU,IAAI;gBACxE,uEAAuE,CACxE,CAAC;QACH,CAAC;QAGD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACd,GAAG,WAAW,aAAa,WAAW,QAAQ,UAAU,2BAA2B,CACnF,CAAC;QACH,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CACd,WAAW,WAAW,mBAAmB,YAAY,kBAAkB,WAAW,QAAQ,UAAU,IAAI;gBACvG,6EAA6E,CAC9E,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,oBAAoB;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB;IACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;QAE9C,IAAI,OAAe,CAAC;QACpB,IAAI,IAAc,CAAC;QAEnB,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;YAC9B,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACP,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACnC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;YACX,CAAC;iBAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9D,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAA+B,EAAE;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAGvC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEvC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAGhB,MAAM,gBAAgB,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,2BAA2B,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,CAAC,EAAE,CAAC;QACL,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,GAAG,CACV,iEAAiE,CACjE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CACV,6EAA6E,CAC7E,CAAC;IACF,OAAO,CAAC,GAAG,CACV,mEAAmE,CACnE,CAAC;AACH,CAAC"}
package/dist/index.js CHANGED
@@ -1,33 +1,71 @@
1
1
  #!/usr/bin/env node
2
- import { spawn } from "node:child_process";
2
+ import { buildCommand, parseBuildArgs } from "./commands/build.js";
3
3
  import { typesCommand, parseTypesArgs } from "./commands/types.js";
4
4
  const args = process.argv.slice(2);
5
5
  const command = args[0];
6
6
  if (!command) {
7
7
  console.error("Usage: ploy <command>");
8
8
  console.error("\nAvailable commands:");
9
+ console.error(" build Build your Ploy project");
9
10
  console.error(" dev Start development server");
10
11
  console.error(" types Generate TypeScript types from ploy.yaml");
11
12
  process.exit(1);
12
13
  }
14
+ function parseDevArgs(args) {
15
+ const options = {
16
+ port: undefined,
17
+ host: undefined,
18
+ config: undefined,
19
+ watch: true,
20
+ verbose: false,
21
+ };
22
+ for (let i = 0; i < args.length; i++) {
23
+ const arg = args[i];
24
+ if (arg === "-p" || arg === "--port") {
25
+ const value = args[++i];
26
+ if (value) {
27
+ options.port = parseInt(value, 10);
28
+ }
29
+ }
30
+ else if (arg === "-h" || arg === "--host") {
31
+ options.host = args[++i];
32
+ }
33
+ else if (arg === "-c" || arg === "--config") {
34
+ options.config = args[++i];
35
+ }
36
+ else if (arg === "--no-watch") {
37
+ options.watch = false;
38
+ }
39
+ else if (arg === "-v" || arg === "--verbose") {
40
+ options.verbose = true;
41
+ }
42
+ }
43
+ return options;
44
+ }
13
45
  if (command === "dev") {
14
- const wranglerArgs = ["dev", ...args.slice(1)];
15
- const wrangler = spawn("wrangler", wranglerArgs, {
16
- stdio: "inherit",
17
- shell: true,
18
- });
19
- wrangler.on("exit", (code) => {
20
- process.exit(code ?? 0);
46
+ const options = parseDevArgs(args.slice(1));
47
+ const { startEmulator } = await import("@meetploy/emulator");
48
+ await startEmulator({
49
+ port: options.port,
50
+ host: options.host,
51
+ configPath: options.config,
52
+ watch: options.watch,
53
+ verbose: options.verbose,
21
54
  });
22
55
  }
23
56
  else if (command === "types") {
24
57
  const options = parseTypesArgs(args.slice(1));
25
58
  typesCommand(options);
26
59
  }
60
+ else if (command === "build") {
61
+ const options = parseBuildArgs(args.slice(1));
62
+ await buildCommand(options);
63
+ }
27
64
  else {
28
65
  console.error(`Unknown command: ${command}`);
29
66
  console.error("\nAvailable commands:");
30
- console.error(" dev Start development server using wrangler");
67
+ console.error(" build Build your Ploy project");
68
+ console.error(" dev Start development server");
31
69
  console.error(" types Generate TypeScript types from ploy.yaml");
32
70
  process.exit(1);
33
71
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE;QAChD,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC;KAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,YAAY,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEnE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,IAAI,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAOnC,MAAM,OAAO,GAAG;QACf,IAAI,EAAE,SAA+B;QACrC,IAAI,EAAE,SAA+B;QACrC,MAAM,EAAE,SAA+B;QACvC,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,KAAK;KACd,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACpC,CAAC;QACF,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAChD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC7D,MAAM,aAAa,CAAC;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,MAAM;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC,CAAC;AACJ,CAAC;KAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,YAAY,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;KAAM,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;KAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meetploy/cli",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,7 +30,7 @@
30
30
  "lint": "eslint . && prettier --check ."
31
31
  },
32
32
  "dependencies": {
33
- "wrangler": "4.45.1",
33
+ "@meetploy/emulator": "*",
34
34
  "yaml": "^2.7.0"
35
35
  }
36
36
  }