diff options
author | Pietro Albini <pietro@pietroalbini.org> | 2020-12-10 16:39:52 +0100 |
---|---|---|
committer | Pietro Albini <pietro@pietroalbini.org> | 2020-12-10 16:39:52 +0100 |
commit | 88e76e1cd1faa22b0bb469de91921ecb627ad730 (patch) | |
tree | 22135f0edae2b092a3c5a9ad0e2bf145ba4de32b | |
parent | 73fc97cbde41ad8db0617f68bd928b25749781e7 (diff) | |
download | rust-installer-88e76e1cd1faa22b0bb469de91921ecb627ad730.tar.gz |
combine: allow choosing the compression formats to output
-rw-r--r-- | src/combiner.rs | 11 | ||||
-rw-r--r-- | src/main.rs | 1 | ||||
-rw-r--r-- | src/main.yml | 5 | ||||
-rwxr-xr-x | test.sh | 72 |
4 files changed, 87 insertions, 2 deletions
diff --git a/src/combiner.rs b/src/combiner.rs index b25063c..006a40c 100644 --- a/src/combiner.rs +++ b/src/combiner.rs @@ -1,6 +1,9 @@ use super::Scripter; use super::Tarballer; -use crate::{compression::CompressionFormat, util::*}; +use crate::{ + compression::{CompressionFormat, CompressionFormats}, + util::*, +}; use anyhow::{bail, Context, Result}; use std::io::{Read, Write}; use std::path::Path; @@ -35,6 +38,9 @@ actor! { /// The location to put the final image and tarball. output_dir: String = "./dist", + + /// The formats used to compress the tarball + compression_formats: CompressionFormats = CompressionFormats::default(), } } @@ -136,7 +142,8 @@ impl Combiner { tarballer .work_dir(self.work_dir) .input(self.package_name) - .output(path_to_str(&output)?.into()); + .output(path_to_str(&output)?.into()) + .compression_formats(self.compression_formats.clone()); tarballer.run()?; Ok(()) diff --git a/src/main.rs b/src/main.rs index c5d9f23..4e5b50d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,6 +41,7 @@ fn combine(matches: &ArgMatches<'_>) -> Result<()> { "non-installed-overlay" => non_installed_overlay, "work-dir" => work_dir, "output-dir" => output_dir, + "compression-formats" => compression_formats, }); combiner.run().context("failed to combine installers")?; diff --git a/src/main.yml b/src/main.yml index afe235c..c9eab6d 100644 --- a/src/main.yml +++ b/src/main.yml @@ -113,6 +113,11 @@ subcommands: long: output-dir takes_value: true value_name: DIR + - compression-formats: + help: Comma-separated list of compression formats to use + long: compression-formats + takes_value: true + value_name: FORMAT - script: about: Generate an installation script args: @@ -1229,6 +1229,78 @@ generate_compression_formats_error() { } runtest generate_compression_formats_error +combine_compression_formats_one() { + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image1" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rustc \ + --component-name=rustc + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image3" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=cargo \ + --component-name=cargo + try sh "$S/combine-installers.sh" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rust \ + --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ + --compression-formats=xz + + try test ! -e "${OUT_DIR}/rust.tar.gz" + try test -e "${OUT_DIR}/rust.tar.xz" +} +runtest combine_compression_formats_one + +combine_compression_formats_multiple() { + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image1" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rustc \ + --component-name=rustc + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image3" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=cargo \ + --component-name=cargo + try sh "$S/combine-installers.sh" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rust \ + --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ + --compression-formats=xz,gz + + try test -e "${OUT_DIR}/rust.tar.gz" + try test -e "${OUT_DIR}/rust.tar.xz" +} +runtest combine_compression_formats_multiple + +combine_compression_formats_error() { + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image1" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rustc \ + --component-name=rustc + try sh "$S/gen-installer.sh" \ + --image-dir="$TEST_DIR/image3" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=cargo \ + --component-name=cargo + expect_fail sh "$S/combine-installers.sh" \ + --work-dir="$WORK_DIR" \ + --output-dir="$OUT_DIR" \ + --package-name=rust \ + --input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \ + --compression-formats=xz,foobar +} +runtest combine_compression_formats_error + echo echo "TOTAL SUCCESS!" echo |