summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPietro Albini <pietro@pietroalbini.org>2020-12-10 16:39:52 +0100
committerPietro Albini <pietro@pietroalbini.org>2020-12-10 16:39:52 +0100
commit88e76e1cd1faa22b0bb469de91921ecb627ad730 (patch)
tree22135f0edae2b092a3c5a9ad0e2bf145ba4de32b
parent73fc97cbde41ad8db0617f68bd928b25749781e7 (diff)
downloadrust-installer-88e76e1cd1faa22b0bb469de91921ecb627ad730.tar.gz
combine: allow choosing the compression formats to output
-rw-r--r--src/combiner.rs11
-rw-r--r--src/main.rs1
-rw-r--r--src/main.yml5
-rwxr-xr-xtest.sh72
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:
diff --git a/test.sh b/test.sh
index a73ea9d..3c68458 100755
--- a/test.sh
+++ b/test.sh
@@ -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