wasmer_argus/argus/
config.rs1use clap::ValueEnum;
2use serde::{Deserialize, Serialize};
3use std::path::PathBuf;
4
5fn get_default_out_path() -> PathBuf {
6 let mut path = std::env::current_dir().unwrap();
7 path.push("out");
8 path
9}
10
11fn get_default_token() -> String {
12 std::env::var("WASMER_TOKEN").unwrap_or_default()
13}
14
15fn get_default_jobs() -> usize {
16 std::thread::available_parallelism()
17 .unwrap_or(std::num::NonZeroUsize::new(2).unwrap())
18 .into()
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, ValueEnum, derive_more::Display)]
22pub enum Backend {
23 Llvm,
24 Singlepass,
25 Cranelift,
26}
27
28#[derive(Debug, clap::Parser, Clone, Serialize, Deserialize)]
30#[command(version, about, long_about = None)]
31pub struct ArgusConfig {
32 #[arg(
34 short,
35 long,
36 default_value_t = String::from("http://registry.wasmer.io/graphql")
37 )]
38 pub registry_url: String,
39
40 #[arg(short = 'b', long = "backend", value_enum, default_value_t = Backend::Singlepass)]
42 pub compiler_backend: Backend,
43
44 #[arg(short = 'o', long, default_value = get_default_out_path().into_os_string())]
46 pub outdir: std::path::PathBuf,
47
48 #[arg(long, default_value_t = get_default_token())]
50 pub auth_token: String,
51
52 #[arg(long, default_value_t = get_default_jobs()) ]
54 pub jobs: usize,
55
56 #[arg(long)]
58 pub cli_path: Option<String>,
59
60 #[cfg(feature = "wasmer_lib")]
62 #[arg(long, conflicts_with = "cli_path")]
63 pub use_lib: bool,
64
65 #[arg(long)]
67 pub webhook_url: Option<String>,
68}