Skip to content

Commit 88e76e1

Browse files
committed
combine: allow choosing the compression formats to output
1 parent 73fc97c commit 88e76e1

File tree

4 files changed

+87
-2
lines changed

4 files changed

+87
-2
lines changed

src/combiner.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use super::Scripter;
22
use super::Tarballer;
3-
use crate::{compression::CompressionFormat, util::*};
3+
use crate::{
4+
compression::{CompressionFormat, CompressionFormats},
5+
util::*,
6+
};
47
use anyhow::{bail, Context, Result};
58
use std::io::{Read, Write};
69
use std::path::Path;
@@ -35,6 +38,9 @@ actor! {
3538

3639
/// The location to put the final image and tarball.
3740
output_dir: String = "./dist",
41+
42+
/// The formats used to compress the tarball
43+
compression_formats: CompressionFormats = CompressionFormats::default(),
3844
}
3945
}
4046

@@ -136,7 +142,8 @@ impl Combiner {
136142
tarballer
137143
.work_dir(self.work_dir)
138144
.input(self.package_name)
139-
.output(path_to_str(&output)?.into());
145+
.output(path_to_str(&output)?.into())
146+
.compression_formats(self.compression_formats.clone());
140147
tarballer.run()?;
141148

142149
Ok(())

src/main.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ fn combine(matches: &ArgMatches<'_>) -> Result<()> {
4141
"non-installed-overlay" => non_installed_overlay,
4242
"work-dir" => work_dir,
4343
"output-dir" => output_dir,
44+
"compression-formats" => compression_formats,
4445
});
4546

4647
combiner.run().context("failed to combine installers")?;

src/main.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ subcommands:
113113
long: output-dir
114114
takes_value: true
115115
value_name: DIR
116+
- compression-formats:
117+
help: Comma-separated list of compression formats to use
118+
long: compression-formats
119+
takes_value: true
120+
value_name: FORMAT
116121
- script:
117122
about: Generate an installation script
118123
args:

test.sh

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1229,6 +1229,78 @@ generate_compression_formats_error() {
12291229
}
12301230
runtest generate_compression_formats_error
12311231

1232+
combine_compression_formats_one() {
1233+
try sh "$S/gen-installer.sh" \
1234+
--image-dir="$TEST_DIR/image1" \
1235+
--work-dir="$WORK_DIR" \
1236+
--output-dir="$OUT_DIR" \
1237+
--package-name=rustc \
1238+
--component-name=rustc
1239+
try sh "$S/gen-installer.sh" \
1240+
--image-dir="$TEST_DIR/image3" \
1241+
--work-dir="$WORK_DIR" \
1242+
--output-dir="$OUT_DIR" \
1243+
--package-name=cargo \
1244+
--component-name=cargo
1245+
try sh "$S/combine-installers.sh" \
1246+
--work-dir="$WORK_DIR" \
1247+
--output-dir="$OUT_DIR" \
1248+
--package-name=rust \
1249+
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
1250+
--compression-formats=xz
1251+
1252+
try test ! -e "${OUT_DIR}/rust.tar.gz"
1253+
try test -e "${OUT_DIR}/rust.tar.xz"
1254+
}
1255+
runtest combine_compression_formats_one
1256+
1257+
combine_compression_formats_multiple() {
1258+
try sh "$S/gen-installer.sh" \
1259+
--image-dir="$TEST_DIR/image1" \
1260+
--work-dir="$WORK_DIR" \
1261+
--output-dir="$OUT_DIR" \
1262+
--package-name=rustc \
1263+
--component-name=rustc
1264+
try sh "$S/gen-installer.sh" \
1265+
--image-dir="$TEST_DIR/image3" \
1266+
--work-dir="$WORK_DIR" \
1267+
--output-dir="$OUT_DIR" \
1268+
--package-name=cargo \
1269+
--component-name=cargo
1270+
try sh "$S/combine-installers.sh" \
1271+
--work-dir="$WORK_DIR" \
1272+
--output-dir="$OUT_DIR" \
1273+
--package-name=rust \
1274+
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
1275+
--compression-formats=xz,gz
1276+
1277+
try test -e "${OUT_DIR}/rust.tar.gz"
1278+
try test -e "${OUT_DIR}/rust.tar.xz"
1279+
}
1280+
runtest combine_compression_formats_multiple
1281+
1282+
combine_compression_formats_error() {
1283+
try sh "$S/gen-installer.sh" \
1284+
--image-dir="$TEST_DIR/image1" \
1285+
--work-dir="$WORK_DIR" \
1286+
--output-dir="$OUT_DIR" \
1287+
--package-name=rustc \
1288+
--component-name=rustc
1289+
try sh "$S/gen-installer.sh" \
1290+
--image-dir="$TEST_DIR/image3" \
1291+
--work-dir="$WORK_DIR" \
1292+
--output-dir="$OUT_DIR" \
1293+
--package-name=cargo \
1294+
--component-name=cargo
1295+
expect_fail sh "$S/combine-installers.sh" \
1296+
--work-dir="$WORK_DIR" \
1297+
--output-dir="$OUT_DIR" \
1298+
--package-name=rust \
1299+
--input-tarballs="$OUT_DIR/rustc.tar.gz,$OUT_DIR/cargo.tar.gz" \
1300+
--compression-formats=xz,foobar
1301+
}
1302+
runtest combine_compression_formats_error
1303+
12321304
echo
12331305
echo "TOTAL SUCCESS!"
12341306
echo

0 commit comments

Comments
 (0)