use camino::Utf8PathBuf;
use clap::Parser;
mod build;
#[derive(Debug, clap::Parser)]
pub enum SubCommand {
Build(build::Args),
}
#[derive(Clone, Copy, Debug, clap::ValueEnum)]
pub enum ExtensionTarget {
#[value(name = "vscode")]
VisualStudioCode,
}
impl ExtensionTarget {
pub fn name(&self) -> &str {
match self {
ExtensionTarget::VisualStudioCode => "vscode",
}
}
pub fn base_path(&self, metadata: &cargo_metadata::Metadata) -> Utf8PathBuf {
// TODO: get the workspace root
let workspace_root = &metadata.workspace_root;
assert!(workspace_root.exists());
assert!(workspace_root.is_dir());
let path = workspace_root.join("extensions").join(self.name());
assert!(path.exists());
assert!(path.is_dir());
path
}
}
fn main() -> Result<(), anyhow::Error> {
let sub_command = SubCommand::parse();
let metadata = cargo_metadata::MetadataCommand::new().exec()?;
match sub_command {
SubCommand::Build(args) => args.run(&metadata),
}
}