azul-sync 1.3.4 → 1.3.5

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 CHANGED
@@ -6,25 +6,25 @@ Azul allows you to use professional-grade tools like Visual Studio Code in Roblo
6
6
 
7
7
  _Yes, the name is a pun on Rojo (Spanish for "red"). Azul means "blue"!_
8
8
 
9
- <a href="#quick-start"><b>Quick Start</b></a> — <a href="#why-azul"><b>Why Azul</b></a> — <a href="https://github.com/Ransomwave/azul/wiki"><b>Documentation</b></a>
9
+ <a href="#quick-start"><b>Quick Start</b></a> — <a href="#why-azul"><b>Why Azul</b></a> — <a href="https://azul-docs.vercel.app"><b>Documentation</b></a>
10
10
 
11
11
  ## Philosophy
12
12
 
13
13
  Azul treats **Studio as the source of truth**. The local filesystem mirrors what's in Studio, not the other way around.
14
14
 
15
- Azul avoids the complexity and ambiguity that can come with tools like Rojo: for example, deciding a new Script's parent class, properties, or attributes. Rather than trying to encode Studio state in extra files (e.g. `*.meta.json`), Azul lets Studio be the source of truth. This, in my opinion, leads to a much simpler and more intuitive workflow.
15
+ It avoids the complexity and ambiguity that can come with tools like Rojo: for example, deciding a new Script's parent class, properties, or attributes. Rather than trying to encode Studio state in extra files (i.e. `model.json`, `meta.json`...), Azul lets Studio determine state. This leads to a much simpler and more intuitive workflow.
16
16
 
17
- Azul also allows pushing local files into Studio using the `azul build` command, which creates or overwrites instances in Studio based on your local files.
17
+ While Azul mainly follows this philosophy, it doesn't cut you off from the filesystem. Build from local files using the `azul build` command, or selectively push files using `azul push`.
18
18
 
19
19
  ## Features
20
20
 
21
21
  - - [x] 🔄 **Bi-directional sync**: Changes in Studio update files, and file edits update Studio
22
- - - [x] 🏗️ **[Build command](https://github.com/Ransomwave/azul/wiki/Getting-started#building-from-an-existing-project)**: `azul build` one-time pushes your local files into Studio (creates or overwrites, never deletes)
23
- - - [x] 📦 **[Push command](https://github.com/Ransomwave/azul/wiki/Commands#azul-push)**: `azul push` selectively pushes local files. Useful when importing external libraries or using package managers (i.e Wally)
24
- - - [x] 🏛️ **Fully hermetic builds**: Use [`azul pack`](https://github.com/Ransomwave/azul/wiki/Commands#azul-pack) to fully serialize Instance properties, allowing for 1:1 reproductible builds when `build`ing or `push`ing.
25
- - - [x] 🔴 **Rojo compatibility mode**: Supports importing from Rojo projects with the `--rojo` flag.
26
22
  - - [x] 🌳 **DataModel mirroring**: Instance hierarchy 1:1 mapped to folder structure
27
- - - [x] 🎯 **No manual config / required structure**: Works out of the box with new and existing Roblox Studio projects, regardless of structure.
23
+ - - [x] 🎯 **No manual config / required structure**: Works out of the box with new and existing Roblox Studio projects, regardless of structure
24
+ - - [x] 🏗️ **[Build command](https://azul-docs.vercel.app/getting-started/projects/#build-from-an-existing-local-project)**: Sync your local files into Studio with `azul build`.
25
+ - - [x] 📦 **[Push command](https://azul-docs.vercel.app/commands/#azul-push)**: Selectively push local files into Studio using `azul push`. Useful when importing external libraries or using package managers (i.e Wally)
26
+ - - [x] 🏛️ **[Fully hermetic builds](https://azul-docs.vercel.app/commands/#azul-pack)**: Fully serialize Instance properties using `azul pack`, allowing for clean, reproductible builds when `build`ing or `push`ing.
27
+ - - [x] 🔴 **Rojo compatibility mode**: Supports importing from Rojo projects with the `--rojo` flag.
28
28
  - - [x] 🗺️ **Automatic sourcemap generation**: Generates a Rojo-compatible `sourcemap.json` so tools like Luau-lsp work out of the box.
29
29
 
30
30
  ## Why Azul?
@@ -37,7 +37,7 @@ Compatible with projects both old and new, no more extra worrying about how to
37
37
 
38
38
  While Rojo is a powerful tool, I don't believe it's always the best fit for every developer or project. Otherwise trivial tasks in Studio, like inserting a Script inside Tool or Model, suddenly become non-trivial challenges. Rojo just lacks the flexibility of Studio.
39
39
 
40
- Azul is my approach to solve these issues. I built Azul for workflows similar to mine: Studio-first developers who'd rather manage their projects in the dedicated environment instead of fighting with meta files.
40
+ Azul is my approach to solve these issues. I built Azul for workflows similar to mine: Studio-first developers who'd rather manage their projects in the dedicated environment instead of fighting with project files.
41
41
 
42
42
  ### Why not use the upcoming Script Sync feature?
43
43
 
@@ -49,7 +49,7 @@ Azul offers several advantages over the upcoming Script Sync feature:
49
49
 
50
50
  - **Pushing from filesystem**: Sync any code you have stored locally directly to your desired destination using `azul push`. Useful when importing external libraries (e.g. GitHub) or when using Package Managers (e.g. Wally, pesde)
51
51
 
52
- - **Rojo compatibility**: Azul can import existing Rojo projects using the `--rojo` & `--rojo-project=<ProjectFile>` flags, making Azul compatible with many existing open source projects.
52
+ - **Rojo compatibility**: Azul can import existing Rojo projects using the `--rojo` & `--rojo-project <file>` flags, making Azul compatible with many existing open source projects.
53
53
  - **Generates a Rojo-compatible `sourcemap.json`**: This allows any tooling that require Rojo-style sourcemaps _(like luau-lsp, the language server)_ to work seamlessly.
54
54
 
55
55
  - **You can use it today!**: Azul requires no commitment to a specific project structure. If you want to try out Script Sync (or any other tool) in the future, Azul won't get in your way.
package/dist/build.d.ts CHANGED
@@ -2,16 +2,20 @@ interface BuildOptions {
2
2
  syncDir?: string;
3
3
  rojoMode?: boolean;
4
4
  rojoProjectFile?: string;
5
- applySourcemap?: boolean;
6
- fromSourcemap?: boolean;
5
+ applySourcemapProperties?: boolean;
6
+ useSourcemapAsSource?: boolean;
7
+ sourcemapPath?: string;
8
+ destructive?: boolean;
7
9
  }
8
10
  export declare class BuildCommand {
9
11
  private ipc;
10
12
  private syncDir;
11
13
  private rojoMode;
12
14
  private rojoProjectFile?;
13
- private applySourcemap;
14
- private fromSourcemap;
15
+ private applySourcemapProperties;
16
+ private useSourcemapAsSource;
17
+ private sourcemapPath;
18
+ private destructive;
15
19
  constructor(options?: BuildOptions);
16
20
  run(): Promise<void>;
17
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAcA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,aAAa,CAAU;gBAEnB,OAAO,GAAE,YAAiB;IAWzB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8ElC"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"AAcA,UAAU,YAAY;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,wBAAwB,CAAU;IAC1C,OAAO,CAAC,oBAAoB,CAAU;IACtC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,WAAW,CAAU;gBAEjB,OAAO,GAAE,YAAiB;IAezB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsFlC"}
package/dist/build.js CHANGED
@@ -11,14 +11,18 @@ export class BuildCommand {
11
11
  syncDir;
12
12
  rojoMode;
13
13
  rojoProjectFile;
14
- applySourcemap;
15
- fromSourcemap;
14
+ applySourcemapProperties;
15
+ useSourcemapAsSource;
16
+ sourcemapPath;
17
+ destructive;
16
18
  constructor(options = {}) {
17
19
  this.syncDir = path.resolve(options.syncDir ?? config.syncDir);
18
20
  this.rojoMode = Boolean(options.rojoMode);
19
21
  this.rojoProjectFile = options.rojoProjectFile;
20
- this.applySourcemap = options.applySourcemap !== false;
21
- this.fromSourcemap = options.fromSourcemap === true;
22
+ this.applySourcemapProperties = options.applySourcemapProperties !== false;
23
+ this.useSourcemapAsSource = options.useSourcemapAsSource === true;
24
+ this.sourcemapPath = path.resolve(options.sourcemapPath ?? config.sourcemapPath);
25
+ this.destructive = options.destructive === true;
22
26
  this.ipc = new IPCServer(config.port, undefined, {
23
27
  requestSnapshotOnConnect: false,
24
28
  });
@@ -42,8 +46,8 @@ export class BuildCommand {
42
46
  log.info(`Preparing build snapshot from ${this.syncDir}`);
43
47
  }
44
48
  let instances = [];
45
- if (!this.rojoMode && this.fromSourcemap) {
46
- const built = buildInstancesFromSourcemap(config.sourcemapPath);
49
+ if (!this.rojoMode && this.useSourcemapAsSource) {
50
+ const built = buildInstancesFromSourcemap(this.sourcemapPath);
47
51
  if (!built) {
48
52
  log.warn("Falling back to filesystem build because sourcemap import failed.");
49
53
  }
@@ -60,14 +64,16 @@ export class BuildCommand {
60
64
  return;
61
65
  }
62
66
  }
63
- if (!this.rojoMode && this.applySourcemap && !this.fromSourcemap) {
64
- const index = loadSourcemapPropertyIndex(config.sourcemapPath);
67
+ if (!this.rojoMode &&
68
+ this.applySourcemapProperties &&
69
+ !this.useSourcemapAsSource) {
70
+ const index = loadSourcemapPropertyIndex(this.sourcemapPath);
65
71
  const applied = applySourcemapProperties(instances, index);
66
72
  if (applied > 0) {
67
73
  log.success(`Applied properties/attributes from sourcemap to ${applied} instance(s)`);
68
74
  }
69
75
  else {
70
- if (!index && fs.existsSync(config.sourcemapPath)) {
76
+ if (!index && fs.existsSync(this.sourcemapPath)) {
71
77
  log.warn("Sourcemap present but could not be parsed; continuing without properties.");
72
78
  }
73
79
  else {
@@ -79,7 +85,11 @@ export class BuildCommand {
79
85
  await new Promise((resolve) => {
80
86
  this.ipc.onConnection(() => {
81
87
  log.info("Studio connected. Sending build snapshot...");
82
- this.ipc.send({ type: "buildSnapshot", data: instances });
88
+ this.ipc.send({
89
+ type: "buildSnapshot",
90
+ data: instances,
91
+ destructive: this.destructive,
92
+ });
83
93
  log.success(`Sent ${instances.length} instances`);
84
94
  setTimeout(() => {
85
95
  this.ipc.close();
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -10,76 +10,71 @@ import { BuildCommand } from "./build.js";
10
10
  import { PushCommand } from "./push.js";
11
11
  import { PackCommand } from "./pack.js";
12
12
  import { fileURLToPath } from "node:url";
13
+ import { parseCliArgs } from "./util/cliArgs.js";
13
14
  const __dirname = dirname(fileURLToPath(import.meta.url));
14
15
  const pkg = JSON.parse(fs.readFileSync(resolve(__dirname, "../package.json"), "utf8"));
15
16
  const { version } = pkg;
16
- const args = process.argv.slice(2);
17
- const commandIndex = args.findIndex((a) => !a.startsWith("--"));
18
- const command = commandIndex >= 0 ? args[commandIndex] : null;
19
- const syncDirFlag = args.find((a) => a.startsWith("--sync-dir="));
20
- const portFlag = args.find((a) => a.startsWith("--port="));
21
- const debugFlag = args.find((a) => a === "--debug");
22
- const noWarnFlag = args.find((a) => a === "--no-warn");
23
- const rojoFlag = args.includes("--rojo");
24
- const rojoProjectFlag = getFlagValue(["--rojo-project"], args);
25
- const fromSourcemapValue = getFlagValue(["--from-sourcemap"], args);
26
- const fromSourcemapFlag = args.includes("--from-sourcemap") || fromSourcemapValue !== null;
27
- if (args.includes("--help") || args.includes("-h")) {
17
+ let parsedArgs;
18
+ try {
19
+ parsedArgs = parseCliArgs(process.argv.slice(2));
20
+ }
21
+ catch (error) {
22
+ log.error(`${error}`);
23
+ process.exit(1);
24
+ }
25
+ if (parsedArgs.help) {
28
26
  console.log(`
29
27
  Usage:
30
28
  azul <command> [options]
31
- azul build [--from-sourcemap <file>] [--rojo] [--rojo-project <file>]
32
- azul push [options] [--rojo] [--rojo-project <file>] [--from-sourcemap <file>]
33
- azul pack [-o <file>] [--scripts-only]
34
- azul config [--path]
35
29
 
36
30
  Commands:
37
- (no command) Start live sync daemon
38
- build One-time push from filesystem into Studio
39
- push Selective push using mappings (place config or -s/-d)
40
- pack Serialize Studio instance properties into sourcemap.json
41
- config Open the Azul config file in your default editor
31
+ (no command) Start live sync daemon
32
+ build One-time push from filesystem into Studio
33
+ push Selective push using mappings (place config or -s/-d)
34
+ pack Serialize Studio instance properties into sourcemap.json
35
+ config Open the Azul config file in your default editor
42
36
 
43
37
  Global Options:
44
- -h, --help Show this help message
45
- --version Show Azul version
46
- --debug Print verbose debug output
47
- --no-warn Disable confirmation prompts for dangerous operations
48
- --sync-dir [PATH] Directory to sync (default: current directory)
49
- --port [NUMBER] Studio connection port
38
+ -h, --help Show this help message
39
+ --version Show Azul version
40
+ --debug Print verbose debug output
41
+ --no-warn Disable confirmation prompts for dangerous operations
42
+ --sync-dir <path> Directory to sync (default: current directory)
43
+ --port <number> Studio connection port
50
44
 
51
45
  Build Options:
52
- --from-sourcemap [FILE] Build from sourcemap
53
- --rojo Enable Rojo-compatible parsing
54
- --rojo-project [FILE] Use a Rojo project file
46
+ --from-sourcemap <file> Build from sourcemap
47
+ --destructive Wipe destination children for build roots before applying snapshot
48
+ --rojo Enable Rojo-compatible parsing
49
+ --rojo-project <file> Use a Rojo project file
55
50
 
56
51
  Push Options:
57
- -s, --source [DIR] Source folder to push
58
- -d, --destination [PATH] Studio destination path (i.e "ReplicatedStorage.Packages")
59
- --from-sourcemap [FILE] Push from sourcemap
60
- --no-place-config Ignore push mappings from place ModuleScript
61
- --destructive Wipe destination children before pushing
62
- --rojo Enable Rojo-compatible parsing
63
- --rojo-project [FILE] Use a Rojo project file
52
+ -s, --source <dir> Source folder to push
53
+ -d, --destination <path> Studio destination path (i.e "ReplicatedStorage.Packages")
54
+ --from-sourcemap <file> Push from sourcemap
55
+ --no-place-config Ignore push mappings from place ModuleScript
56
+ --destructive Wipe destination children before pushing
57
+ --rojo Enable Rojo-compatible parsing
58
+ --rojo-project <file> Use a Rojo project file
64
59
 
65
60
  Pack Options:
66
- -o, --output Sourcemap path to write (default: config.sourcemapPath)
67
- --scripts-only Serialize only scripts and their descendants
61
+ -o, --output <file> Sourcemap path to write (default: config.sourcemapPath)
62
+ --scripts-only Serialize only scripts and their descendants
68
63
 
69
64
  Config Options:
70
- --path Print config file path
65
+ --path Print config file path
71
66
  `);
72
67
  process.exit(0);
73
68
  }
74
- if (args.includes("--version")) {
69
+ if (parsedArgs.version) {
75
70
  log.info(`Azul version: ${version}`);
76
71
  process.exit(0);
77
72
  }
78
73
  initializeConfig();
79
74
  log.debug(`Loaded user config from: ${getUserConfigPath()}`);
80
- if (command === "config") {
75
+ if (parsedArgs.command === "config") {
81
76
  const userConfigPath = getUserConfigPath();
82
- if (args.includes("--path")) {
77
+ if (parsedArgs.configPath) {
83
78
  console.log(userConfigPath);
84
79
  process.exit(0);
85
80
  }
@@ -88,8 +83,7 @@ if (command === "config") {
88
83
  log.info(`Opened Azul config: ${userConfigPath}`);
89
84
  }
90
85
  catch (error) {
91
- log.error(`Failed to open config file: ${error}`);
92
- process.exit(1);
86
+ throw new Error(`Failed to open config file: ${error}`);
93
87
  }
94
88
  process.exit(0);
95
89
  }
@@ -97,8 +91,8 @@ if (command === "config") {
97
91
  const currentPath = process.cwd();
98
92
  if ((currentPath.includes(`\\${config.syncDir}`) ||
99
93
  currentPath.includes(`/${config.syncDir}`)) &&
100
- !noWarnFlag) {
101
- log.warn(`Looks like you're trying to run Azul from within a '${config.syncDir}' directory. Continuing to run Azul will create a directory like "/${config.syncDir}/${config.syncDir}/".`);
94
+ !parsedArgs.noWarn) {
95
+ log.warn(`Looks like you're trying to run Azul from within a '${config.syncDir}' directory. Running Azul here will create a directory like "/${config.syncDir}/${config.syncDir}/", which may be unintended.`);
102
96
  log.userInput("Continue? (Y/N)");
103
97
  await new Promise((resolve) => {
104
98
  process.stdin.setEncoding("utf-8");
@@ -123,41 +117,59 @@ if ((currentPath.includes(`\\${config.syncDir}`) ||
123
117
  });
124
118
  }
125
119
  log.info(`Running azul from: ${currentPath}`);
126
- if (syncDirFlag)
127
- config.syncDir = resolve(syncDirFlag.split("=")[1]);
128
- if (portFlag)
129
- config.port = Number(portFlag.split("=")[1]);
130
- if (debugFlag)
120
+ if (parsedArgs.syncDir)
121
+ config.syncDir = resolve(parsedArgs.syncDir);
122
+ if (parsedArgs.port)
123
+ config.port = parsedArgs.port;
124
+ if (parsedArgs.debug)
131
125
  config.debugMode = true;
132
126
  log.debug(`Debug mode is on!`);
133
- if (command === "build") {
134
- if (!rojoFlag && fs.existsSync("default.project.json")) {
135
- log.warn('Detected default.project.json! You can enable Rojo compatibility mode by passing the "--rojo" flag.');
127
+ if (parsedArgs.command === "build") {
128
+ if (!parsedArgs.rojo && fs.existsSync("default.project.json")) {
129
+ log.warn('Detected a default.project.json file! You can enable Rojo compatibility mode by passing the "--rojo" flag.');
136
130
  }
137
- const hasBuildSpecificOptions = rojoFlag || Boolean(rojoProjectFlag) || fromSourcemapFlag;
138
- let applySourcemap = !fromSourcemapFlag;
139
- let fromSourcemap = fromSourcemapFlag;
131
+ const hasBuildSpecificOptions = parsedArgs.rojo ||
132
+ Boolean(parsedArgs.rojoProject) ||
133
+ parsedArgs.fromSourcemap !== undefined;
134
+ // || parsedArgs.destructive;
135
+ // Don't consider passing "--destructive" as enough to bypass interactive mode,
136
+ // since destructive building without a sourcemap is very likely a mistake.
137
+ let applySourcemapProperties = true;
138
+ let useSourcemapAsSource = parsedArgs.fromSourcemap !== undefined;
139
+ let interactiveDestructive = parsedArgs.destructive;
140
140
  if (!hasBuildSpecificOptions) {
141
141
  const sourcemapExists = fs.existsSync(config.sourcemapPath);
142
142
  if (sourcemapExists) {
143
143
  log.userInput(`Build directly from ${config.sourcemapPath} (includes non-script instances)? (Y/N)`);
144
144
  const useFull = await promptYesNo();
145
145
  if (useFull) {
146
- fromSourcemap = true;
147
- applySourcemap = false;
146
+ useSourcemapAsSource = true;
147
+ applySourcemapProperties = false;
148
148
  }
149
149
  else {
150
150
  log.userInput(`Use packed properties/attributes from ${config.sourcemapPath}? (Y/N)`);
151
- applySourcemap = await promptYesNo();
151
+ applySourcemapProperties = await promptYesNo();
152
152
  }
153
153
  }
154
154
  else {
155
- applySourcemap = false;
155
+ applySourcemapProperties = false;
156
156
  log.info(`No sourcemap found at ${config.sourcemapPath}. Build will recreate instances as scripts/folders.`);
157
157
  }
158
+ // Only ask about destructive option if we're building from sourcemap.
159
+ // Destructively building without a sourcemap is very likely a mistake, since it wipes everything in Studio instead of building "on top".
160
+ // This functionality is still possible with the "--destructive" flag if someone really wants it
161
+ if (useSourcemapAsSource || applySourcemapProperties) {
162
+ log.userInput("Destructive build (wipe everything in Studio & build from scratch)? (Y/N)");
163
+ interactiveDestructive = await promptYesNo();
164
+ }
158
165
  }
159
- if (!noWarnFlag) {
160
- log.warn("WARNING: Building will overwrite matching Studio scripts and create new ones from your local environment. Existing Studio instances will not be deleted. Proceed with caution!");
166
+ if (!parsedArgs.noWarn) {
167
+ if (interactiveDestructive) {
168
+ log.warn("CAUTION: This will replace your entire Studio state with your local project (all instances, scripts, and properties). Unsaved Studio work WILL BE LOST.");
169
+ }
170
+ else {
171
+ log.warn("CAUTION: This will overwrite matching Studio scripts/instances and create new ones from your local project. Instances with no local equivalent will be left untouched.");
172
+ }
161
173
  log.userInput("Continue with build? (Y/N)");
162
174
  await new Promise((resolve) => {
163
175
  process.stdin.setEncoding("utf-8");
@@ -183,35 +195,34 @@ if (command === "build") {
183
195
  }
184
196
  await new BuildCommand({
185
197
  syncDir: config.syncDir,
186
- rojoMode: rojoFlag,
187
- rojoProjectFile: rojoProjectFlag ?? undefined,
188
- applySourcemap,
189
- fromSourcemap,
198
+ rojoMode: parsedArgs.rojo,
199
+ rojoProjectFile: parsedArgs.rojoProject ?? undefined,
200
+ applySourcemapProperties,
201
+ useSourcemapAsSource,
202
+ sourcemapPath: parsedArgs.fromSourcemap,
203
+ destructive: interactiveDestructive,
190
204
  }).run();
191
205
  log.info("Build command completed.");
192
206
  log.info("Run 'azul' to resume live sync if needed.");
193
207
  log.info("Exiting...");
194
208
  process.exit(0);
195
209
  }
196
- if (command === "push") {
197
- const sourceValue = getFlagValue(["-s", "--source"], args);
198
- const destValue = getFlagValue(["-d", "--destination"], args);
199
- const destructive = args.includes("--destructive");
200
- const usePlaceConfig = !args.includes("--no-place-config");
201
- const hasPushSpecificOptions = Boolean(sourceValue ||
202
- destValue ||
203
- destructive ||
210
+ if (parsedArgs.command === "push") {
211
+ const usePlaceConfig = !parsedArgs.noPlaceConfig;
212
+ const hasPushSpecificOptions = Boolean(parsedArgs.source ||
213
+ parsedArgs.destination ||
214
+ parsedArgs.destructive ||
204
215
  !usePlaceConfig ||
205
- rojoFlag ||
206
- rojoProjectFlag ||
207
- fromSourcemapFlag);
208
- let interactiveSource = sourceValue ?? undefined;
209
- let interactiveDest = destValue ?? undefined;
210
- let interactiveDestructive = destructive;
216
+ parsedArgs.rojo ||
217
+ parsedArgs.rojoProject ||
218
+ parsedArgs.fromSourcemap);
219
+ let interactiveSource = parsedArgs.source ?? undefined;
220
+ let interactiveDest = parsedArgs.destination ?? undefined;
221
+ let interactiveDestructive = parsedArgs.destructive;
211
222
  let interactiveUsePlaceConfig = usePlaceConfig;
212
- let applySourcemap = !rojoFlag && !fromSourcemapFlag;
213
- let fromSourcemap = !rojoFlag && fromSourcemapFlag;
214
- if (!hasPushSpecificOptions && !rojoFlag) {
223
+ let useSourcemapAsSource = !parsedArgs.rojo && parsedArgs.fromSourcemap !== undefined;
224
+ let applySourcemapProperties = !parsedArgs.rojo && parsedArgs.fromSourcemap === undefined;
225
+ if (!hasPushSpecificOptions && !parsedArgs.rojo) {
215
226
  log.userInput("Use place config from Studio (ServerStorage.Azul.Config)? (Y/N)");
216
227
  const useConfig = await promptYesNo();
217
228
  interactiveUsePlaceConfig = useConfig;
@@ -224,32 +235,36 @@ if (command === "push") {
224
235
  interactiveDestructive = await promptYesNo();
225
236
  }
226
237
  }
227
- if (!rojoFlag && !fromSourcemapFlag) {
238
+ const willUsePlaceConfig = !parsedArgs.rojo &&
239
+ interactiveUsePlaceConfig &&
240
+ !(interactiveSource && interactiveDest);
241
+ if (!parsedArgs.rojo &&
242
+ parsedArgs.fromSourcemap === undefined &&
243
+ !willUsePlaceConfig) {
228
244
  log.userInput(`Build push snapshot directly from ${config.sourcemapPath} (includes non-script descendants and ancestors)? (Y/N)`);
229
- fromSourcemap = await promptYesNo();
230
- if (fromSourcemap) {
245
+ useSourcemapAsSource = await promptYesNo();
246
+ if (useSourcemapAsSource) {
231
247
  if (fs.existsSync(config.sourcemapPath)) {
232
248
  log.userInput(`Apply packed properties/attributes from ${config.sourcemapPath}? (Y/N)`);
233
- applySourcemap = await promptYesNo();
249
+ applySourcemapProperties = await promptYesNo();
234
250
  }
235
251
  else {
236
- fromSourcemap = false;
237
- applySourcemap = false;
238
- log.warn(`No sourcemap found at "${config.sourcemapPath}"! Please create one or provide it using the "--from-sourcemap" flag.`);
239
- process.exit(1);
252
+ useSourcemapAsSource = false;
253
+ applySourcemapProperties = false;
254
+ throw new Error(`Sourcemap not found at "${config.sourcemapPath}"! Please create one or provide it using the "--from-sourcemap" flag.`);
240
255
  }
241
256
  }
242
257
  else {
243
- fromSourcemap = false;
244
- applySourcemap = false;
258
+ useSourcemapAsSource = false;
259
+ applySourcemapProperties = false;
245
260
  log.info(`Not using sourcemap. Azul will recreate instances as scripts/folders based on your local filesystem structure with default Properties/Attributes.`);
246
261
  }
247
262
  }
248
- if (!rojoFlag && fs.existsSync("default.project.json")) {
263
+ if (!parsedArgs.rojo && fs.existsSync("default.project.json")) {
249
264
  log.info("Detected default.project.json. Azul stays in native mode unless you pass --rojo.");
250
265
  }
251
- if (destructive && !noWarnFlag) {
252
- log.warn("WARNING: Destructive push will wipe destination children before applying snapshot. Proceed? (Y/N)");
266
+ if (parsedArgs.destructive && !parsedArgs.noWarn) {
267
+ log.warn("CAUTION: Destructive push will wipe destination children before applying snapshot. Proceed? (Y/N)");
253
268
  await new Promise((resolve) => {
254
269
  process.stdin.setEncoding("utf-8");
255
270
  const rl = ReadLine.createInterface({
@@ -276,24 +291,21 @@ if (command === "push") {
276
291
  source: interactiveSource ?? undefined,
277
292
  destination: interactiveDest ?? undefined,
278
293
  destructive: interactiveDestructive,
279
- usePlaceConfig: rojoFlag ? false : interactiveUsePlaceConfig,
280
- rojoMode: rojoFlag,
281
- rojoProjectFile: rojoProjectFlag ?? undefined,
282
- applySourcemap,
283
- fromSourcemap,
284
- sourcemapPath: fromSourcemapValue && !fromSourcemapValue.startsWith("--")
285
- ? fromSourcemapValue
286
- : undefined,
294
+ usePlaceConfig: parsedArgs.rojo ? false : interactiveUsePlaceConfig,
295
+ rojoMode: parsedArgs.rojo,
296
+ rojoProjectFile: parsedArgs.rojoProject ?? undefined,
297
+ applySourcemapProperties,
298
+ useSourcemapAsSource,
299
+ sourcemapPath: parsedArgs.fromSourcemap,
287
300
  }).run();
288
301
  log.info("Push command completed.");
289
302
  log.info("Run 'azul' to resume live sync if needed.");
290
303
  process.exit(0);
291
304
  }
292
- if (command === "pack") {
293
- const outputValue = getFlagValue(["-o", "--output"], args);
294
- let scriptsOnly = args.includes("--scripts-only");
295
- const hasPackSpecificOptions = outputValue !== null || args.includes("--scripts-only");
296
- let finalOutputPath = outputValue ?? config.sourcemapPath;
305
+ if (parsedArgs.command === "pack") {
306
+ let scriptsOnly = parsedArgs.scriptsOnly;
307
+ const hasPackSpecificOptions = parsedArgs.output !== undefined || scriptsOnly;
308
+ let finalOutputPath = parsedArgs.output ?? config.sourcemapPath;
297
309
  if (!hasPackSpecificOptions) {
298
310
  const interactive = await promptPackInteractive(config.sourcemapPath);
299
311
  finalOutputPath = interactive.outputPath;
@@ -306,21 +318,29 @@ if (command === "pack") {
306
318
  log.info("Pack command completed.");
307
319
  process.exit(0);
308
320
  }
309
- new SyncDaemon().start();
310
- function getFlagValue(flags, argv) {
311
- for (let i = 0; i < argv.length; i++) {
312
- const arg = argv[i];
313
- for (const flag of flags) {
314
- if (arg === flag) {
315
- return argv[i + 1] ?? null;
316
- }
317
- if (arg.startsWith(`${flag}=`)) {
318
- return arg.split("=")[1] ?? null;
319
- }
320
- }
321
+ const liveDaemon = new SyncDaemon();
322
+ liveDaemon.start();
323
+ let liveDaemonStopping = false;
324
+ const stopLiveDaemon = async (signal) => {
325
+ if (liveDaemonStopping) {
326
+ return;
321
327
  }
322
- return null;
323
- }
328
+ liveDaemonStopping = true;
329
+ log.info(`Received ${signal}, shutting down...`);
330
+ try {
331
+ await liveDaemon.stop();
332
+ process.exit(0);
333
+ }
334
+ catch (error) {
335
+ throw new Error(`Failed to stop daemon cleanly: ${error}`);
336
+ }
337
+ };
338
+ process.on("SIGINT", () => {
339
+ void stopLiveDaemon("SIGINT");
340
+ });
341
+ process.on("SIGTERM", () => {
342
+ void stopLiveDaemon("SIGTERM");
343
+ });
324
344
  function openWithDefaultEditor(targetPath) {
325
345
  return new Promise((resolvePromise, rejectPromise) => {
326
346
  const currentPlatform = process.platform;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}