pub mod build;
mod login;
mod pack;
pub mod publish;
pub mod test;
pub mod utils;
use self::build::{Build, BuildOptions};
use self::login::login;
use self::pack::pack;
use self::publish::{access::Access, publish};
use self::test::{Test, TestOptions};
use failure::Error;
use log::info;
use std::path::PathBuf;
use std::result;
#[derive(Debug, StructOpt)]
pub enum Command {
#[structopt(name = "build", alias = "init")]
Build(BuildOptions),
#[structopt(name = "pack")]
Pack {
#[structopt(parse(from_os_str))]
path: Option<PathBuf>,
},
#[structopt(name = "publish")]
Publish {
#[structopt(long = "target", short = "t", default_value = "browser")]
target: String,
#[structopt(long = "access", short = "a")]
access: Option<Access>,
#[structopt(parse(from_os_str))]
path: Option<PathBuf>,
},
#[structopt(name = "login", alias = "adduser", alias = "add-user")]
Login {
#[structopt(long = "registry", short = "r")]
registry: Option<String>,
#[structopt(long = "scope", short = "s")]
scope: Option<String>,
#[structopt(long = "always-auth", short = "a")]
always_auth: bool,
#[structopt(long = "auth-type", short = "t")]
auth_type: Option<String>,
},
#[structopt(name = "test")]
Test(TestOptions),
}
pub fn run_wasm_pack(command: Command) -> result::Result<(), Error> {
match command {
Command::Build(build_opts) => {
info!("Running build command...");
Build::try_from_opts(build_opts).and_then(|mut b| b.run())
}
Command::Pack { path } => {
info!("Running pack command...");
info!("Path: {:?}", &path);
pack(path)
}
Command::Publish {
target,
path,
access,
} => {
info!("Running publish command...");
info!("Path: {:?}", &path);
publish(&target, path, access)
}
Command::Login {
registry,
scope,
always_auth,
auth_type,
} => {
info!("Running login command...");
info!(
"Registry: {:?}, Scope: {:?}, Always Auth: {}, Auth Type: {:?}",
®istry, &scope, &always_auth, &auth_type
);
login(registry, &scope, always_auth, &auth_type)
}
Command::Test(test_opts) => {
info!("Running test command...");
Test::try_from_opts(test_opts).and_then(|t| t.run())
}
}
}