- **Remove semantic_version crate and use semver instead** - **Update upload-nightly** Release Notes: - N/A --------- Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
88 lines
2.3 KiB
Rust
88 lines
2.3 KiB
Rust
mod headless_project;
|
|
|
|
#[cfg(not(windows))]
|
|
pub mod unix;
|
|
|
|
#[cfg(test)]
|
|
mod remote_editing_tests;
|
|
|
|
use clap::Subcommand;
|
|
use std::path::PathBuf;
|
|
|
|
pub use headless_project::{HeadlessAppState, HeadlessProject};
|
|
|
|
#[derive(Subcommand)]
|
|
pub enum Commands {
|
|
Run {
|
|
#[arg(long)]
|
|
log_file: PathBuf,
|
|
#[arg(long)]
|
|
pid_file: PathBuf,
|
|
#[arg(long)]
|
|
stdin_socket: PathBuf,
|
|
#[arg(long)]
|
|
stdout_socket: PathBuf,
|
|
#[arg(long)]
|
|
stderr_socket: PathBuf,
|
|
},
|
|
Proxy {
|
|
#[arg(long)]
|
|
reconnect: bool,
|
|
#[arg(long)]
|
|
identifier: String,
|
|
},
|
|
Version,
|
|
}
|
|
|
|
#[cfg(not(windows))]
|
|
pub fn run(command: Commands) -> anyhow::Result<()> {
|
|
use anyhow::Context;
|
|
use release_channel::{RELEASE_CHANNEL, ReleaseChannel};
|
|
use unix::{ExecuteProxyError, execute_proxy, execute_run};
|
|
|
|
match command {
|
|
Commands::Run {
|
|
log_file,
|
|
pid_file,
|
|
stdin_socket,
|
|
stdout_socket,
|
|
stderr_socket,
|
|
} => execute_run(
|
|
log_file,
|
|
pid_file,
|
|
stdin_socket,
|
|
stdout_socket,
|
|
stderr_socket,
|
|
),
|
|
Commands::Proxy {
|
|
identifier,
|
|
reconnect,
|
|
} => execute_proxy(identifier, reconnect)
|
|
.inspect_err(|err| {
|
|
if let ExecuteProxyError::ServerNotRunning(err) = err {
|
|
std::process::exit(err.to_exit_code());
|
|
}
|
|
})
|
|
.context("running proxy on the remote server"),
|
|
Commands::Version => {
|
|
let release_channel = *RELEASE_CHANNEL;
|
|
match release_channel {
|
|
ReleaseChannel::Stable | ReleaseChannel::Preview => {
|
|
println!("{}", env!("ZED_PKG_VERSION"))
|
|
}
|
|
ReleaseChannel::Nightly | ReleaseChannel::Dev => {
|
|
let commit_sha =
|
|
option_env!("ZED_COMMIT_SHA").unwrap_or(release_channel.dev_name());
|
|
let build_id = option_env!("ZED_BUILD_ID");
|
|
if let Some(build_id) = build_id {
|
|
println!("{}+{}", build_id, commit_sha)
|
|
} else {
|
|
println!("{commit_sha}");
|
|
}
|
|
}
|
|
};
|
|
Ok(())
|
|
}
|
|
}
|
|
}
|