summaryrefslogtreecommitdiffstats
path: root/ci/before_deploy.bash
diff options
context:
space:
mode:
Diffstat (limited to 'ci/before_deploy.bash')
-rwxr-xr-xci/before_deploy.bash103
1 files changed, 103 insertions, 0 deletions
diff --git a/ci/before_deploy.bash b/ci/before_deploy.bash
new file mode 100755
index 0000000..e9530c0
--- /dev/null
+++ b/ci/before_deploy.bash
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+# Building and packaging for release
+
+set -ex
+
+build() {
+ cargo build --target "$TARGET" --release --verbose
+}
+
+pack() {
+ local tempdir
+ local out_dir
+ local package_name
+
+ tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
+ out_dir=$(pwd)
+ package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET"
+
+ # create a "staging" directory
+ mkdir "$tempdir/$package_name"
+
+ # copying the main binary
+ cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/"
+ strip "$tempdir/$package_name/$PROJECT_NAME"
+
+ # readme and license
+ cp README.md "$tempdir/$package_name"
+ cp LICENSE-MIT "$tempdir/$package_name"
+ cp LICENSE-APACHE "$tempdir/$package_name"
+
+ # archiving
+ pushd "$tempdir"
+ tar czf "$out_dir/$package_name.tar.gz" "$package_name"/*
+ popd
+ rm -r "$tempdir"
+}
+
+make_deb() {
+ local tempdir
+ local architecture
+ local version
+ local dpkgname
+ local conflictname
+
+ case $TARGET in
+ x86_64*)
+ architecture=amd64
+ ;;
+ i686*)
+ architecture=i386
+ ;;
+ *)
+ echo "ERROR: unknown target" >&2
+ return 1
+ ;;
+ esac
+ version=${TRAVIS_TAG#v}
+ if [[ $TARGET = *musl* ]]; then
+ dpkgname=$PROJECT_NAME-musl
+ conflictname=$PROJECT_NAME
+ else
+ dpkgname=$PROJECT_NAME
+ conflictname=$PROJECT_NAME-musl
+ fi
+
+ tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
+
+ # copy the main binary
+ install -Dm755 "target/$TARGET/release/$PROJECT_NAME" "$tempdir/usr/bin/$PROJECT_NAME"
+ strip "$tempdir/usr/bin/$PROJECT_NAME"
+
+ # readme and license
+ install -Dm644 README.md "$tempdir/usr/share/doc/$PROJECT_NAME/README.md"
+ install -Dm644 LICENSE-MIT "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-MIT"
+ install -Dm644 LICENSE-APACHE "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-APACHE"
+
+ # Control file
+ mkdir "$tempdir/DEBIAN"
+ cat > "$tempdir/DEBIAN/control" <<EOF
+Package: $dpkgname
+Version: $version
+Section: utils
+Priority: optional
+Maintainer: David Peter <mail@david-peter.de>
+Architecture: $architecture
+Provides: $PROJECT_NAME
+Conflicts: $conflictname
+Description: A minimal, fast alternative to 'du -sh'.
+EOF
+
+ fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
+}
+
+
+main() {
+ build
+ pack
+ if [[ $TARGET = *linux* ]]; then
+ make_deb
+ fi
+}
+
+main