#![allow(clippy::redundant_closure)]
pub mod build;
mod generate;
mod login;
mod pack;
pub mod publish;
pub mod test;
pub mod utils;
use self::build::{Build, BuildOptions};
use self::generate::generate;
use self::login::login;
use self::pack::pack;
use self::publish::{access::Access, publish};
use self::test::{Test, TestOptions};
use crate::install::InstallMode;
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 = "new")]
Generate {
name: String,
#[structopt(
long = "template",
short = "temp",
default_value = "https://github.com/rustwasm/wasm-pack-template"
)]
template: String,
#[structopt(long = "mode", short = "m", default_value = "normal")]
mode: InstallMode,
},
#[structopt(name = "publish")]
Publish {
#[structopt(long = "target", short = "t", default_value = "bundler")]
target: String,
#[structopt(long = "access", short = "a")]
access: Option<Access>,
#[structopt(long = "tag")]
tag: Option<String>,
#[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::Generate {
template,
name,
mode,
} => {
info!("Running generate command...");
info!("Template: {:?}", &template);
info!("Name: {:?}", &name);
generate(template, name, mode.install_permitted())
}
Command::Publish {
target,
path,
access,
tag,
} => {
info!("Running publish command...");
info!("Path: {:?}", &path);
publish(&target, path, access, tag)
}
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())
}
}
}