From 21411159b9db0ba3830a326cc68b706a5b475dfa Mon Sep 17 00:00:00 2001 From: Arnav Jindal Date: Sun, 1 May 2022 23:59:57 +0530 Subject: [PATCH 1/3] Add skip-gitignore cli arg --- src/command/build.rs | 9 ++++++++- src/command/utils.rs | 6 ++++-- tests/all/manifest.rs | 28 ++++++++++++++-------------- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/command/build.rs b/src/command/build.rs index b6802704..405b0186 100644 --- a/src/command/build.rs +++ b/src/command/build.rs @@ -30,6 +30,7 @@ pub struct Build { pub disable_dts: bool, pub target: Target, pub profile: BuildProfile, + pub skip_gitignore: bool, pub mode: InstallMode, pub out_dir: PathBuf, pub out_name: Option, @@ -148,6 +149,10 @@ pub struct BuildOptions { /// Create a profiling build. Enable optimizations and debug info. pub profiling: bool, + #[structopt(long = "skip-gitignore")] + /// Sets the output file names. Defaults to package name. + pub skip_gitignore: bool, + #[structopt(long = "out-dir", short = "d", default_value = "pkg")] /// Sets the output directory with a relative path. pub out_dir: String, @@ -173,6 +178,7 @@ impl Default for BuildOptions { dev: false, release: false, profiling: false, + skip_gitignore: false, out_dir: String::new(), out_name: None, extra_options: Vec::new(), @@ -214,6 +220,7 @@ impl Build { disable_dts: build_opts.disable_dts, target: build_opts.target, profile, + skip_gitignore, mode: build_opts.mode, out_dir, out_name: build_opts.out_name, @@ -329,7 +336,7 @@ impl Build { fn step_create_dir(&mut self) -> Result<(), Error> { info!("Creating a pkg directory..."); - create_pkg_dir(&self.out_dir)?; + create_pkg_dir(&self.out_dir, self.skip_gitignore)?; info!("Created a pkg directory at {:#?}.", &self.crate_path); Ok(()) } diff --git a/src/command/utils.rs b/src/command/utils.rs index 4a735e2f..c8ab2065 100644 --- a/src/command/utils.rs +++ b/src/command/utils.rs @@ -36,9 +36,11 @@ fn find_manifest_from_cwd() -> Result { } /// Construct our `pkg` directory in the crate. -pub fn create_pkg_dir(out_dir: &Path) -> Result<(), failure::Error> { +pub fn create_pkg_dir(out_dir: &Path, skip_gitignore: bool) -> Result<(), failure::Error> { fs::create_dir_all(&out_dir)?; - fs::write(out_dir.join(".gitignore"), "*")?; + if !skip_gitignore { + fs::write(out_dir.join(".gitignore"), "*")?; + }; Ok(()) } diff --git a/tests/all/manifest.rs b/tests/all/manifest.rs index c5f0fbf2..036023aa 100644 --- a/tests/all/manifest.rs +++ b/tests/all/manifest.rs @@ -77,7 +77,7 @@ fn it_creates_a_package_json_default_path() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::Bundler) .is_ok()); @@ -113,7 +113,7 @@ fn it_creates_a_package_json_provided_path() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::Bundler) .is_ok()); @@ -142,7 +142,7 @@ fn it_creates_a_package_json_provided_path_with_scope() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &Some("test".to_string()), false, Target::Bundler,) .is_ok()); @@ -171,7 +171,7 @@ fn it_creates_a_pkg_json_with_correct_files_on_node() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::Nodejs) .is_ok()); @@ -205,7 +205,7 @@ fn it_creates_a_pkg_json_with_correct_files_on_nomodules() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::NoModules) .is_ok()); @@ -239,7 +239,7 @@ fn it_creates_a_package_json_with_correct_files_when_out_name_is_provided() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, Some("index".to_owned())).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::Bundler) .is_ok()); @@ -271,7 +271,7 @@ fn it_creates_a_pkg_json_in_out_dir() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("./custom/out"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, false, Target::Bundler) .is_ok()); @@ -286,7 +286,7 @@ fn it_creates_a_package_json_with_correct_keys_when_types_are_skipped() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); assert!(crate_data .write_package_json(&out_dir, &None, true, Target::Bundler) .is_ok()); @@ -319,7 +319,7 @@ fn it_creates_a_package_json_with_npm_dependencies_provided_by_wasm_bindgen() { let fixture = fixture::js_hello_world(); let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); // Write a `package.json` in the out_dir, as wasm-bindgen does: utils::manifest::create_wbg_package_json( &out_dir, @@ -399,7 +399,7 @@ fn it_sets_homepage_field_if_available_in_cargo_toml() { let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); crate_data .write_package_json(&out_dir, &None, true, Target::Bundler) .unwrap(); @@ -415,7 +415,7 @@ fn it_sets_homepage_field_if_available_in_cargo_toml() { let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); crate_data .write_package_json(&out_dir, &None, true, Target::Bundler) .unwrap(); @@ -454,7 +454,7 @@ fn it_sets_keywords_field_if_available_in_cargo_toml() { let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); crate_data .write_package_json(&out_dir, &None, true, Target::Bundler) .unwrap(); @@ -472,7 +472,7 @@ fn it_sets_keywords_field_if_available_in_cargo_toml() { let out_dir = fixture.path.join("pkg"); let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); crate_data .write_package_json(&out_dir, &None, true, Target::Bundler) .unwrap(); @@ -572,7 +572,7 @@ fn it_lists_license_files_in_files_field_of_package_json() { let crate_data = manifest::CrateData::new(&fixture.path, None).unwrap(); - wasm_pack::command::utils::create_pkg_dir(&out_dir).unwrap(); + wasm_pack::command::utils::create_pkg_dir(&out_dir, false).unwrap(); license::copy_from_crate(&crate_data, &fixture.path, &out_dir).unwrap(); crate_data .write_package_json(&out_dir, &None, false, Target::Bundler) From 976d000e4bc4f1fb4cd376021de2aeabf2331875 Mon Sep 17 00:00:00 2001 From: Arnav Date: Mon, 2 May 2022 00:27:04 +0530 Subject: [PATCH 2/3] docstring fix --- src/command/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/command/build.rs b/src/command/build.rs index 405b0186..c0f7f4af 100644 --- a/src/command/build.rs +++ b/src/command/build.rs @@ -150,7 +150,7 @@ pub struct BuildOptions { pub profiling: bool, #[structopt(long = "skip-gitignore")] - /// Sets the output file names. Defaults to package name. + /// Skips generating .gitignore file. pub skip_gitignore: bool, #[structopt(long = "out-dir", short = "d", default_value = "pkg")] @@ -220,7 +220,7 @@ impl Build { disable_dts: build_opts.disable_dts, target: build_opts.target, profile, - skip_gitignore, + skip_gitignore: build_opts.skip_gitignore, mode: build_opts.mode, out_dir, out_name: build_opts.out_name, From 1265a0cf6ee66ff0284e59f2c7866e2f47e187f5 Mon Sep 17 00:00:00 2001 From: Arnav Date: Fri, 6 May 2022 01:20:59 +0530 Subject: [PATCH 3/3] Restructuring order --- src/command/build.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/command/build.rs b/src/command/build.rs index c0f7f4af..25dc2a39 100644 --- a/src/command/build.rs +++ b/src/command/build.rs @@ -28,9 +28,9 @@ pub struct Build { pub crate_data: manifest::CrateData, pub scope: Option, pub disable_dts: bool, + pub skip_gitignore: bool, pub target: Target, pub profile: BuildProfile, - pub skip_gitignore: bool, pub mode: InstallMode, pub out_dir: PathBuf, pub out_name: Option, @@ -128,6 +128,10 @@ pub struct BuildOptions { /// this flag will disable generating this TypeScript file. pub disable_dts: bool, + #[structopt(long = "skip-gitignore")] + /// Skips generating .gitignore file. + pub skip_gitignore: bool, + #[structopt(long = "target", short = "t", default_value = "bundler")] /// Sets the target environment. [possible values: bundler, nodejs, web, no-modules] pub target: Target, @@ -149,10 +153,6 @@ pub struct BuildOptions { /// Create a profiling build. Enable optimizations and debug info. pub profiling: bool, - #[structopt(long = "skip-gitignore")] - /// Skips generating .gitignore file. - pub skip_gitignore: bool, - #[structopt(long = "out-dir", short = "d", default_value = "pkg")] /// Sets the output directory with a relative path. pub out_dir: String, @@ -173,12 +173,12 @@ impl Default for BuildOptions { scope: None, mode: InstallMode::default(), disable_dts: false, + skip_gitignore: false, target: Target::default(), debug: false, dev: false, release: false, profiling: false, - skip_gitignore: false, out_dir: String::new(), out_name: None, extra_options: Vec::new(), @@ -218,9 +218,9 @@ impl Build { crate_data, scope: build_opts.scope, disable_dts: build_opts.disable_dts, + skip_gitignore: build_opts.skip_gitignore, target: build_opts.target, profile, - skip_gitignore: build_opts.skip_gitignore, mode: build_opts.mode, out_dir, out_name: build_opts.out_name,