azul-sync 1.3.0 → 1.3.2

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.
Files changed (76) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +139 -142
  3. package/dist/cli.js +43 -43
  4. package/dist/ipc/messages.d.ts +1 -0
  5. package/dist/ipc/messages.d.ts.map +1 -1
  6. package/dist/pack.d.ts.map +1 -1
  7. package/dist/pack.js +8 -1
  8. package/dist/pack.js.map +1 -1
  9. package/dist/push.d.ts +2 -0
  10. package/dist/push.d.ts.map +1 -1
  11. package/dist/push.js +46 -1
  12. package/dist/push.js.map +1 -1
  13. package/dist/sourcemap/propertyLoader.d.ts +1 -0
  14. package/dist/sourcemap/propertyLoader.d.ts.map +1 -1
  15. package/dist/sourcemap/propertyLoader.js +7 -1
  16. package/dist/sourcemap/propertyLoader.js.map +1 -1
  17. package/package.json +45 -41
  18. package/.gitattributes +0 -1
  19. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  20. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  21. package/dist/rojo.d.ts +0 -9
  22. package/dist/rojo.d.ts.map +0 -1
  23. package/dist/rojo.js +0 -114
  24. package/dist/rojo.js.map +0 -1
  25. package/docs/assets/azul-logo.pdn +0 -0
  26. package/docs/assets/logo-200px.png +0 -0
  27. package/docs/assets/logo.png +0 -0
  28. package/docs/assets/plugin/toolbox.png +0 -0
  29. package/docs/assets/synced.png +0 -0
  30. package/plugin/README.md +0 -54
  31. package/plugin/sourcemap.json +0 -264
  32. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Actor/AzulSync.server.luau +0 -905
  33. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/AzulService.luau +0 -1010
  34. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Config.luau +0 -29
  35. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/Enums.luau +0 -11
  36. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/CollapsibleTitledSection.luau +0 -214
  37. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/ColorPicker.luau +0 -360
  38. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/CustomTextButton.luau +0 -170
  39. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/DropdownMenu.luau +0 -363
  40. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/HorizontalLine.luau +0 -43
  41. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/ImageButtonWithText.luau +0 -181
  42. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledCheckbox.luau +0 -295
  43. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledColorInputPicker.luau +0 -294
  44. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledMultiChoice.luau +0 -163
  45. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledNumberInput.luau +0 -312
  46. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledRadioButton.luau +0 -55
  47. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledSlider.luau +0 -151
  48. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledTextInput.luau +0 -222
  49. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/LabeledToggleButton.luau +0 -73
  50. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/StatefulImageButton.luau +0 -125
  51. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticalScrollingFrame.luau +0 -100
  52. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticalSpacer.luau +0 -35
  53. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/Components/VerticallyScalingListFrame.luau +0 -107
  54. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/GuiUtilities.luau +0 -429
  55. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/StudioWidgets/RbxGui.luau +0 -4363
  56. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/UI.luau +0 -425
  57. package/plugin/sync/ReplicatedFirst/AzulCompanionPlugin/WebSocketClient.luau +0 -161
  58. package/src/build.ts +0 -120
  59. package/src/cli.ts +0 -496
  60. package/src/config.ts +0 -170
  61. package/src/fs/fileWriter.ts +0 -414
  62. package/src/fs/treeManager.ts +0 -458
  63. package/src/fs/watcher.ts +0 -142
  64. package/src/index.ts +0 -450
  65. package/src/ipc/httpPolling.ts +0 -214
  66. package/src/ipc/messages.ts +0 -159
  67. package/src/ipc/server.ts +0 -196
  68. package/src/pack.ts +0 -309
  69. package/src/push.ts +0 -726
  70. package/src/snapshot/rojo.ts +0 -467
  71. package/src/snapshot.ts +0 -161
  72. package/src/sourcemap/generator.ts +0 -504
  73. package/src/sourcemap/propertyLoader.ts +0 -195
  74. package/src/util/id.ts +0 -15
  75. package/src/util/log.ts +0 -94
  76. package/tsconfig.json +0 -24
package/README.md CHANGED
@@ -1,142 +1,139 @@
1
- # <span><img src="./docs/assets/logo.png" alt="Azul Logo" height="30"></span> Azul
2
-
3
- Azul is a two-way synchronization tool between Roblox Studio and your local filesystem with full Luau-LSP support, which allows code completion & type checking.
4
-
5
- Azul allows you to use professional-grade tools like Visual Studio Code in Roblox development.
6
-
7
- _Yes, the name is a pun on Rojo (Spanish for "red"). Azul means "blue"!_
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>
10
-
11
- ## Philosophy
12
-
13
- Azul treats **Studio as the source of truth**. The local filesystem mirrors what's in Studio, not the other way around.
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.
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.
18
-
19
- ## Features
20
-
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] 🔴 **Rojo compatibility mode**: Supports importing from Rojo projects with the `--rojo` flag.
25
- - - [x] 🌳 **DataModel mirroring**: Instance hierarchy 1:1 mapped to folder structure
26
- - - [x] 🎯 **No manual config / required structure**: Works out of the box with new and existing Roblox Studio projects, regardless of structure.
27
- - - [x] 🗺️ **Automatic sourcemap generation**: Generates a Rojo-compatible `sourcemap.json` so tools like Luau-lsp work out of the box.
28
-
29
- ### Upcoming Features
30
-
31
- - [ ] 🏛️ **Fully hermetic builds**: Make Azul fully serialize `Instance` properties, allowing for fully reproducible 1:1 builds.
32
-
33
- ## Why Azul?
34
-
35
- Because Azul is as simple as it gets: Run the azul command in your project folder, connect the companion plugin in Studio & start coding.
36
-
37
- Compatible with projects both old and new, no more extra worrying about how to “Rojo-ify” your project. Your code is literally 1:1 mapped to what’s in Studio.
38
-
39
- ### Rojo already exists, why make another tool?
40
-
41
- 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.
42
-
43
- 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.
44
-
45
- ### Why not use the upcoming Script Sync feature?
46
-
47
- Azul offers several advantages over the upcoming Script Sync feature:
48
-
49
- - **Azul mirrors everything**: Script Sync can only sync specified folders and scripts, not entire projects. Azul directly mirrors the entire DataModel, meaning you don't have to worry about manually syncing specific parts of your project.
50
-
51
- - **Building from filesystem**: Script Sync only syncs changes made in Studio to the filesystem. Azul allows you to push changes from your local files into Studio using the `azul build` command.
52
-
53
- - **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)
54
-
55
- - **Rojo compatibility**: Azul can import existing Rojo projects using the `--rojo` & `--rojo-project=<ProjectFile>` flags, making Azul compatible with many existing open source projects.
56
- - **Generates a Rojo-compatible `sourcemap.json`**: This allows any tooling that require Rojo-style sourcemaps _(like luau-lsp, the language server)_ to work seamlessly.
57
-
58
- - **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.
59
-
60
- ---
61
-
62
- ## Quick Start
63
-
64
- ### Auto-Install (Recommended)
65
-
66
- 1. Install Node.js from [nodejs.org](https://nodejs.org/).
67
- 2. Run the following command in your terminal:
68
- ```ps1
69
- npm install -g azul
70
- ```
71
- 3. Install the Azul Companion Plugin to Roblox Studio.
72
- - **Guide: [Azul Plugin: Install Instructions](/plugin/README.md)**
73
- 4. Create a new Folder to house your Azul project and open it in your IDE.
74
- 5. With the terminal in your project folder, run:
75
- ```
76
- azul
77
- ```
78
- 6. In Roblox Studio, click on the "Connect" button in the Azul plugin.
79
- 7. Start coding!
80
- 8. _(Optional)_ For the best experience, check out the [Recommended Tools & Extensions](#recommended-tools--extensions).
81
-
82
- ### Manual Install
83
-
84
- 1. Clone this repository using Git:
85
- ```ps1
86
- git clone https://github.com/Ransomwave/azul.git
87
- ```
88
- 2. Install Node.js from [nodejs.org](https://nodejs.org/) or by using your system's package manager:
89
- ```ps1
90
- # Windows (using winget)
91
- winget install OpenJS.NodeJS.LTS
92
- # macOS (using Homebrew)
93
- brew install node
94
- # Linux (using apt)
95
- sudo apt install nodejs npm
96
- ```
97
- 3. Install dependencies by running
98
- ```ps1
99
- npm install
100
- ```
101
- 4. Build the project
102
- ```ps1
103
- npm run build
104
- ```
105
- 5. Install the project globally
106
- ```ps1
107
- npm install -g .
108
- ```
109
- 6. Install the Azul Companion Plugin to Roblox Studio.
110
- - **Guide: [Azul Plugin: Install Instructions](/plugin/README.md)**
111
- 7. Create a new Folder to house your Azul project and open it in your IDE.
112
- 8. With the terminal in your project folder, run:
113
- ```ps1
114
- azul
115
- ```
116
- 9. In Roblox Studio, click on the "Connect" button in the Azul plugin.
117
-
118
- ## Recommended Tools & Extensions
119
-
120
- ### VSCode with Luau-LSP
121
-
122
- To get the best experience, use [Visual Studio Code](https://code.visualstudio.com/) with the [Luau Language Server extension](https://marketplace.visualstudio.com/items?itemName=JohnnyMorganz.luau-lsp).
123
-
124
- To get IntelliSense working, open your `User Settings (JSON)` from the command palette (`Ctrl+Shift+P` or `Cmd+Shift+P`) and make sure to set up luau-lsp like this:
125
-
126
- ```json
127
- "luau-lsp.plugin.enabled": true,
128
- "luau-lsp.sourcemap.enabled": true,
129
- "luau-lsp.sourcemap.autogenerate": false,
130
- "luau-lsp.sourcemap.sourcemapFile": "sourcemap.json",
131
- "luau-lsp.sourcemap.includeNonScripts": true,
132
- ```
133
-
134
- This is my recommended setup for Azul projects. That said, Azul is compatible with any IDE or text editor that can edit `.luau` files. Luau-LSP is also available for other editors like [Neovim](https://github.com/lopi-py/luau-lsp.nvim).
135
-
136
- ### VSCode with Verde
137
-
138
- [Verde](https://marketplace.visualstudio.com/items?itemName=Dvitash.verde) is a VSCode extension that mimics the Roblox Studio Explorer and Properties windows. It works great alongside Azul to provide a seamless development experience.
139
-
140
- ## Contributing
141
-
142
- Contributions are welcome! Please open issues or pull requests on GitHub. I want to make Azul the best it can be for myself and anybody who wants to use it.
1
+ # <span><img src="./docs/assets/logo.png" alt="Azul Logo" height="30"></span> Azul
2
+
3
+ Azul is a two-way synchronization tool between Roblox Studio and your local filesystem with full Luau-LSP support, which allows code completion & type checking.
4
+
5
+ Azul allows you to use professional-grade tools like Visual Studio Code in Roblox development.
6
+
7
+ _Yes, the name is a pun on Rojo (Spanish for "red"). Azul means "blue"!_
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>
10
+
11
+ ## Philosophy
12
+
13
+ Azul treats **Studio as the source of truth**. The local filesystem mirrors what's in Studio, not the other way around.
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.
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.
18
+
19
+ ## Features
20
+
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
+ - - [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.
28
+ - - [x] 🗺️ **Automatic sourcemap generation**: Generates a Rojo-compatible `sourcemap.json` so tools like Luau-lsp work out of the box.
29
+
30
+ ## Why Azul?
31
+
32
+ Because Azul is as simple as it gets: Run the azul command in your project folder, connect the companion plugin in Studio & start coding.
33
+
34
+ Compatible with projects both old and new, no more extra worrying about how to “Rojo-ify” your project. Your code is literally 1:1 mapped to what’s in Studio.
35
+
36
+ ### Rojo already exists, why make another tool?
37
+
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
+
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.
41
+
42
+ ### Why not use the upcoming Script Sync feature?
43
+
44
+ Azul offers several advantages over the upcoming Script Sync feature:
45
+
46
+ - **Azul mirrors everything**: Script Sync can only sync specified folders and scripts, not entire projects. Azul directly mirrors the entire DataModel, meaning you don't have to worry about manually syncing specific parts of your project.
47
+
48
+ - **Building from filesystem**: Script Sync only syncs changes made in Studio to the filesystem. Azul allows you to push changes from your local files into Studio using the `azul build` command.
49
+
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
+
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.
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
+
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.
56
+
57
+ ---
58
+
59
+ ## Quick Start
60
+
61
+ ### Auto-Install (Recommended)
62
+
63
+ 1. Install Node.js from [nodejs.org](https://nodejs.org/).
64
+ 2. Run the following command in your terminal:
65
+ ```ps1
66
+ npm install azul-sync -g
67
+ ```
68
+ 3. Install the Azul Companion Plugin to Roblox Studio.
69
+ - **Guide: [Azul Plugin: Install Instructions](/plugin/README.md)**
70
+ 4. Create a new Folder to house your Azul project and open it in your IDE.
71
+ 5. With the terminal in your project folder, run:
72
+ ```
73
+ azul
74
+ ```
75
+ 6. In Roblox Studio, click on the "Connect" button in the Azul plugin.
76
+ 7. Start coding!
77
+ 8. _(Optional)_ For the best experience, check out the [Recommended Tools & Extensions](#recommended-tools--extensions).
78
+
79
+ ### Manual Install
80
+
81
+ 1. Clone this repository using Git:
82
+ ```ps1
83
+ git clone https://github.com/Ransomwave/azul.git
84
+ ```
85
+ 2. Install Node.js from [nodejs.org](https://nodejs.org/) or by using your system's package manager:
86
+ ```ps1
87
+ # Windows (using winget)
88
+ winget install OpenJS.NodeJS.LTS
89
+ # macOS (using Homebrew)
90
+ brew install node
91
+ # Linux (using apt)
92
+ sudo apt install nodejs npm
93
+ ```
94
+ 3. Install dependencies by running
95
+ ```ps1
96
+ npm install
97
+ ```
98
+ 4. Build the project
99
+ ```ps1
100
+ npm run build
101
+ ```
102
+ 5. Install the project globally
103
+ ```ps1
104
+ npm install -g .
105
+ ```
106
+ 6. Install the Azul Companion Plugin to Roblox Studio.
107
+ - **Guide: [Azul Plugin: Install Instructions](/plugin/README.md)**
108
+ 7. Create a new Folder to house your Azul project and open it in your IDE.
109
+ 8. With the terminal in your project folder, run:
110
+ ```ps1
111
+ azul
112
+ ```
113
+ 9. In Roblox Studio, click on the "Connect" button in the Azul plugin.
114
+
115
+ ## Recommended Tools & Extensions
116
+
117
+ ### VSCode with Luau-LSP
118
+
119
+ To get the best experience, use [Visual Studio Code](https://code.visualstudio.com/) with the [Luau Language Server extension](https://marketplace.visualstudio.com/items?itemName=JohnnyMorganz.luau-lsp).
120
+
121
+ To get IntelliSense working, open your `User Settings (JSON)` from the command palette (`Ctrl+Shift+P` or `Cmd+Shift+P`) and make sure to set up luau-lsp like this:
122
+
123
+ ```json
124
+ "luau-lsp.plugin.enabled": true,
125
+ "luau-lsp.sourcemap.enabled": true,
126
+ "luau-lsp.sourcemap.autogenerate": false,
127
+ "luau-lsp.sourcemap.sourcemapFile": "sourcemap.json",
128
+ "luau-lsp.sourcemap.includeNonScripts": true,
129
+ ```
130
+
131
+ This is my recommended setup for Azul projects. That said, Azul is compatible with any IDE or text editor that can edit `.luau` files. Luau-LSP is also available for other editors like [Neovim](https://github.com/lopi-py/luau-lsp.nvim).
132
+
133
+ ### VSCode with Verde
134
+
135
+ [Verde](https://marketplace.visualstudio.com/items?itemName=Dvitash.verde) is a VSCode extension that mimics the Roblox Studio Explorer and Properties windows. It works great alongside Azul to provide a seamless development experience.
136
+
137
+ ## Contributing
138
+
139
+ Contributions are welcome! Please open issues or pull requests on GitHub. I want to make Azul the best it can be for myself and anybody who wants to use it.
package/dist/cli.js CHANGED
@@ -25,49 +25,49 @@ const rojoProjectFlag = getFlagValue(["--rojo-project"], args);
25
25
  const fromSourcemapValue = getFlagValue(["--from-sourcemap"], args);
26
26
  const fromSourcemapFlag = args.includes("--from-sourcemap") || fromSourcemapValue !== null;
27
27
  if (args.includes("--help") || args.includes("-h")) {
28
- console.log(`
29
- Usage:
30
- 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
-
36
- 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
42
-
43
- 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
50
-
51
- Build Options:
52
- --from-sourcemap [FILE] Build from sourcemap
53
- --rojo Enable Rojo-compatible parsing
54
- --rojo-project [FILE] Use a Rojo project file
55
-
56
- 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
64
-
65
- Pack Options:
66
- -o, --output Sourcemap path to write (default: config.sourcemapPath)
67
- --scripts-only Serialize only scripts and their descendants
68
-
69
- Config Options:
70
- --path Print config file path
28
+ console.log(`
29
+ Usage:
30
+ 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
+
36
+ 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
42
+
43
+ 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
50
+
51
+ Build Options:
52
+ --from-sourcemap [FILE] Build from sourcemap
53
+ --rojo Enable Rojo-compatible parsing
54
+ --rojo-project [FILE] Use a Rojo project file
55
+
56
+ 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
64
+
65
+ Pack Options:
66
+ -o, --output Sourcemap path to write (default: config.sourcemapPath)
67
+ --scripts-only Serialize only scripts and their descendants
68
+
69
+ Config Options:
70
+ --path Print config file path
71
71
  `);
72
72
  process.exit(0);
73
73
  }
@@ -14,6 +14,7 @@ export interface InstanceData {
14
14
  source?: string;
15
15
  properties?: Record<string, unknown>;
16
16
  attributes?: Record<string, unknown>;
17
+ tags?: string[];
17
18
  }
18
19
  export interface SnapshotRequestOptions {
19
20
  includeProperties?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/ipc/messages.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,aAAa,GACb,cAAc,GACd,QAAQ,GACR,OAAO,GACP,MAAM,GACN,UAAU,GACV,MAAM,GACN,eAAe,GACf,MAAM,CAAC;AAEX;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,sBAAsB,GACtB,oBAAoB,GACpB,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,oBAAoB,GAAG,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,iBAAiB,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,wBAAwB,GACxB,mBAAmB,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,mBAAmB,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/ipc/messages.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAuBD,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,yBAAyB,CAAU;gBAE/B,OAAO,GAAE,WAAgB;IAQxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBnB,eAAe;IAwC7B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,mBAAmB;IAuF3B,OAAO,CAAC,iBAAiB;IA+EzB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;CAGrB"}
1
+ {"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"AAWA,UAAU,WAAW;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAwBD,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,yBAAyB,CAAU;gBAE/B,OAAO,GAAE,WAAgB;IAQxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBnB,eAAe;IAwC7B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,mBAAmB;IAuF3B,OAAO,CAAC,iBAAiB;IAsFzB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,YAAY;CAGrB"}
package/dist/pack.js CHANGED
@@ -189,13 +189,20 @@ export class PackCommand {
189
189
  else if (!this.scriptsAndDescendantsOnly) {
190
190
  delete node.attributes;
191
191
  }
192
- if (match.properties || match.attributes) {
192
+ if (match.tags && match.tags.length > 0) {
193
+ node.tags = match.tags;
194
+ }
195
+ else if (!this.scriptsAndDescendantsOnly) {
196
+ delete node.tags;
197
+ }
198
+ if (match.properties || match.attributes || match.tags) {
193
199
  packed += 1;
194
200
  }
195
201
  }
196
202
  else if (!this.scriptsAndDescendantsOnly) {
197
203
  delete node.properties;
198
204
  delete node.attributes;
205
+ delete node.tags;
199
206
  }
200
207
  for (const child of node.children ?? []) {
201
208
  visit(child, nodePath);
package/dist/pack.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pack.js","sourceRoot":"","sources":["../src/pack.ts"],"names":[],"mappings":"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"}
package/dist/push.d.ts CHANGED
@@ -17,6 +17,8 @@ export declare class PushCommand {
17
17
  constructor(options?: PushOptions);
18
18
  run(): Promise<void>;
19
19
  private buildRojoInstances;
20
+ private dedupeRojoInstances;
21
+ private isScriptClassName;
20
22
  private collectMappings;
21
23
  private parseDestination;
22
24
  private buildPushInstancesFromSourcemap;
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAuBA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAgD;gBAE1D,OAAO,GAAE,WAAgB;IAWxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAyKnB,kBAAkB;YA8ElB,eAAe;IAkD7B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,+BAA+B;IA6BvC,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,cAAc;YAUR,uBAAuB;IAuDrC;;;OAGG;YACW,gBAAgB;YAsChB,mBAAmB;IA+FjC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAyBtB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;YA2BhB,iBAAiB;CA+BhC"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../src/push.ts"],"names":[],"mappings":"AAuBA,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAgD;gBAE1D,OAAO,GAAE,WAAgB;IAWxB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAyKnB,kBAAkB;IA8EhC,OAAO,CAAC,mBAAmB;IAyD3B,OAAO,CAAC,iBAAiB;YAQX,eAAe;IAkD7B,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,+BAA+B;IA6BvC,OAAO,CAAC,yBAAyB;IA6BjC,OAAO,CAAC,cAAc;YAUR,uBAAuB;IAuDrC;;;OAGG;YACW,gBAAgB;YAsChB,mBAAmB;IA+FjC,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAyBtB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;YA2BhB,iBAAiB;CA+BhC"}
package/dist/push.js CHANGED
@@ -189,7 +189,52 @@ export class PushCommand {
189
189
  if (allInstances.length === 0) {
190
190
  log.warn("Rojo compatibility build produced 0 instances. Check project paths and ignores.");
191
191
  }
192
- return allInstances;
192
+ return this.dedupeRojoInstances(allInstances);
193
+ }
194
+ dedupeRojoInstances(instances) {
195
+ const byKey = new Map();
196
+ for (const instance of instances) {
197
+ const key = `${instance.path.join("/")}::${instance.className}`;
198
+ const existing = byKey.get(key);
199
+ if (!existing) {
200
+ byKey.set(key, instance);
201
+ continue;
202
+ }
203
+ const existingIsFolder = existing.className === "Folder";
204
+ const incomingIsFolder = instance.className === "Folder";
205
+ if (existingIsFolder && !incomingIsFolder) {
206
+ byKey.set(key, instance);
207
+ continue;
208
+ }
209
+ if (!existingIsFolder && incomingIsFolder) {
210
+ continue;
211
+ }
212
+ const existingIsScript = this.isScriptClassName(existing.className);
213
+ const incomingIsScript = this.isScriptClassName(instance.className);
214
+ if (existingIsScript && incomingIsScript) {
215
+ if (typeof existing.source === "string" &&
216
+ typeof instance.source === "string" &&
217
+ existing.source !== instance.source) {
218
+ log.warn(`Rojo push dedupe: conflicting script content at ${instance.path.join("/")} (${instance.className}); keeping first occurrence.`);
219
+ }
220
+ }
221
+ }
222
+ const deduped = [...byKey.values()];
223
+ deduped.sort((a, b) => {
224
+ if (a.path.length !== b.path.length) {
225
+ return a.path.length - b.path.length;
226
+ }
227
+ return a.path.join("/").localeCompare(b.path.join("/"));
228
+ });
229
+ if (deduped.length !== instances.length) {
230
+ log.debug(`Rojo push dedupe removed ${instances.length - deduped.length} duplicate instance(s).`);
231
+ }
232
+ return deduped;
233
+ }
234
+ isScriptClassName(className) {
235
+ return (className === "Script" ||
236
+ className === "LocalScript" ||
237
+ className === "ModuleScript");
193
238
  }
194
239
  async collectMappings() {
195
240
  // CLI-provided mapping takes priority