diff --git a/plugin/src/App/Components/Studio/StudioPluginGui.lua b/plugin/src/App/Components/Studio/StudioPluginGui.lua index 6b9910a9..236c9300 100644 --- a/plugin/src/App/Components/Studio/StudioPluginGui.lua +++ b/plugin/src/App/Components/Studio/StudioPluginGui.lua @@ -1,3 +1,5 @@ +local HttpService = game:GetService("HttpService") + local Rojo = script:FindFirstAncestor("Rojo") local Plugin = Rojo.Plugin local Packages = Rojo.Packages @@ -36,7 +38,7 @@ function StudioPluginGui:init() minimumSize.Y ) - local pluginGui = self.props.plugin:CreateDockWidgetPluginGui(self.props.id, dockWidgetPluginGuiInfo) + local pluginGui = self.props.plugin:CreateDockWidgetPluginGui(if self.props.isEphemeral then HttpService:GenerateGUID(false) else self.props.id, dockWidgetPluginGuiInfo) pluginGui.Name = self.props.id pluginGui.Title = self.props.title diff --git a/plugin/src/App/StatusPages/Confirming.lua b/plugin/src/App/StatusPages/Confirming.lua index 74c814a1..098c2dbd 100644 --- a/plugin/src/App/StatusPages/Confirming.lua +++ b/plugin/src/App/StatusPages/Confirming.lua @@ -140,6 +140,7 @@ function ConfirmingPage:render() id = "Rojo_ConfirmingSourceDiff", title = "Source diff", active = self.state.showingSourceDiff, + isEphemeral = true, initDockState = Enum.InitialDockState.Float, overridePreviousState = true, @@ -182,6 +183,7 @@ function ConfirmingPage:render() self.props.confirmData.serverInfo.projectName or "UNKNOWN" ), active = true, + isEphemeral = true, initDockState = Enum.InitialDockState.Float, overridePreviousState = false, diff --git a/plugin/src/App/StatusPages/Connected.lua b/plugin/src/App/StatusPages/Connected.lua index 27f4e7ca..b385b1c4 100644 --- a/plugin/src/App/StatusPages/Connected.lua +++ b/plugin/src/App/StatusPages/Connected.lua @@ -398,6 +398,7 @@ function ConnectedPage:render() id = "Rojo_ConnectedSourceDiff", title = "Source diff", active = self.state.showingSourceDiff, + isEphemeral = true, initDockState = Enum.InitialDockState.Float, overridePreviousState = false, diff --git a/plugin/src/App/init.lua b/plugin/src/App/init.lua index e5635de4..8f3437f1 100644 --- a/plugin/src/App/init.lua +++ b/plugin/src/App/init.lua @@ -749,6 +749,7 @@ function App:render() id = pluginName, title = pluginName, active = self.state.guiEnabled, + isEphemeral = false, initDockState = Enum.InitialDockState.Right, overridePreviousState = false, diff --git a/src/cli/build.rs b/src/cli/build.rs index 8f705d37..0593cc05 100644 --- a/src/cli/build.rs +++ b/src/cli/build.rs @@ -30,13 +30,13 @@ pub struct BuildCommand { /// Where to output the result. /// /// Should end in .rbxm, .rbxl, .rbxmx, or .rbxlx. - #[clap(long, short)] + #[clap(long, short, conflicts_with = "plugin")] pub output: Option, /// Alternative to the output flag that outputs the result in the local plugins folder. /// /// Should end in .rbxm or .rbxl. - #[clap(long, short)] + #[clap(long, short, conflicts_with = "output")] pub plugin: Option, /// Whether to automatically rebuild when any input files change. @@ -47,14 +47,6 @@ pub struct BuildCommand { impl BuildCommand { pub fn run(self) -> anyhow::Result<()> { let (output_path, output_kind) = match (self.output, self.plugin) { - (Some(_), Some(_)) => { - BuildCommand::command() - .error( - clap::ErrorKind::ArgumentConflict, - "the argument '--output ' cannot be used with '--plugin '", - ) - .exit(); - } (None, None) => { BuildCommand::command() .error( @@ -80,6 +72,7 @@ impl BuildCommand { (studio.plugins_path().join(&plugin), output_kind) } + _ => unreachable!(), }; let project_path = resolve_path(&self.project);