diff --git a/cli/src/commands/args.rs b/cli/src/commands/args.rs index 101f1eac29f..7a8cf1f4f62 100644 --- a/cli/src/commands/args.rs +++ b/cli/src/commands/args.rs @@ -226,6 +226,9 @@ pub struct ServeWebArgs { #[derive(Args, Debug, Clone)] pub struct CommandShellArgs { + #[clap(flatten)] + pub server_args: BaseServerArgs, + /// Listen on a socket instead of stdin/stdout. #[clap(long)] pub on_socket: bool, @@ -638,6 +641,9 @@ pub struct ExistingTunnelArgs { #[derive(Args, Debug, Clone, Default)] pub struct TunnelServeArgs { + #[clap(flatten)] + pub server_args: BaseServerArgs, + /// Optional details to connect to an existing tunnel #[clap(flatten, next_help_heading = Some("ADVANCED OPTIONS"))] pub tunnel: ExistingTunnelArgs, @@ -661,7 +667,10 @@ pub struct TunnelServeArgs { /// If set, the user accepts the server license terms and the server will be started without a user prompt. #[clap(long)] pub accept_server_license_terms: bool, +} +#[derive(Args, Debug, Clone, Default)] +pub struct BaseServerArgs { /// Requests that extensions be preloaded and installed on connecting servers. #[clap(long)] pub install_extension: Vec, @@ -675,8 +684,8 @@ pub struct TunnelServeArgs { pub extensions_dir: Option, } -impl TunnelServeArgs { - pub fn apply_to_server_args(&self, csa: &mut CodeServerArgs) { +impl BaseServerArgs { + pub fn apply_to(&self, csa: &mut CodeServerArgs) { csa.install_extensions .extend_from_slice(&self.install_extension); diff --git a/cli/src/commands/tunnels.rs b/cli/src/commands/tunnels.rs index 2d0014bca55..dc4206e8316 100644 --- a/cli/src/commands/tunnels.rs +++ b/cli/src/commands/tunnels.rs @@ -155,6 +155,8 @@ pub async fn command_shell(ctx: CommandContext, args: CommandShellArgs) -> Resul code_server_args: (&ctx.args).into(), }; + args.server_args.apply_to(&mut params.code_server_args); + let mut listener: Box = match (args.on_port.first(), &args.on_host, args.on_socket) { (_, _, true) => { @@ -440,7 +442,7 @@ pub async fn serve(ctx: CommandContext, gateway_args: TunnelServeArgs) -> Result legal::require_consent(&paths, gateway_args.accept_server_license_terms)?; let mut csa = (&args).into(); - gateway_args.apply_to_server_args(&mut csa); + gateway_args.server_args.apply_to(&mut csa); let result = serve_with_csa(paths, log, gateway_args, csa, TUNNEL_CLI_LOCK_NAME).await; drop(no_sleep); @@ -587,7 +589,7 @@ async fn serve_with_csa( Ok(SingletonConnection::Client(stream)) => { debug!(log, "starting as client to singleton"); if gateway_args.name.is_some() - || !gateway_args.install_extension.is_empty() + || !gateway_args.server_args.install_extension.is_empty() || gateway_args.tunnel.tunnel_id.is_some() { warning!(