on 90c7d0c help sign in
bat/ci/before_deploy.bash
116 lines 2.9 kB history raw
1#!/usr/bin/env bash
2# Building and packaging for release
4set -ex
6build() {
7 cargo build --target "$TARGET" --release --verbose
8}
10pack() {
11 local tempdir
12 local out_dir
13 local package_name
14 local gcc_prefix
16 tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
17 out_dir=$(pwd)
18 package_name="$PROJECT_NAME-$TRAVIS_TAG-$TARGET"
20 if [[ $TARGET == "arm-unknown-linux-gnueabihf" ]]; then
21 gcc_prefix="arm-linux-gnueabihf-"
22 else
23 gcc_prefix=""
24 fi
26 # create a "staging" directory
27 mkdir "$tempdir/$package_name"
29 # copying the main binary
30 cp "target/$TARGET/release/$PROJECT_NAME" "$tempdir/$package_name/"
31 "${gcc_prefix}"strip "$tempdir/$package_name/$PROJECT_NAME"
33 # manpage, readme and license
34 cp "doc/$PROJECT_NAME.1" "$tempdir/$package_name"
35 cp README.md "$tempdir/$package_name"
36 cp LICENSE-MIT "$tempdir/$package_name"
37 cp LICENSE-APACHE "$tempdir/$package_name"
39 # archiving
40 pushd "$tempdir"
41 tar czf "$out_dir/$package_name.tar.gz" "$package_name"/*
42 popd
43 rm -r "$tempdir"
46make_deb() {
47 local tempdir
48 local architecture
49 local version
50 local dpkgname
51 local conflictname
53 case $TARGET in
54 x86_64*)
55 architecture=amd64
56 ;;
57 i686*)
58 architecture=i386
59 ;;
60 *)
61 echo "make_deb: skipping target '${TARGET}'" >&2
62 return 0
63 ;;
64 esac
65 version=${TRAVIS_TAG#v}
66 if [[ $TARGET = *musl* ]]; then
67 dpkgname=$PROJECT_NAME-musl
68 conflictname=$PROJECT_NAME
69 else
70 dpkgname=$PROJECT_NAME
71 conflictname=$PROJECT_NAME-musl
72 fi
74 tempdir=$(mktemp -d 2>/dev/null || mktemp -d -t tmp)
76 # copy the main binary
77 install -Dm755 "target/$TARGET/release/$PROJECT_NAME" "$tempdir/usr/bin/$PROJECT_NAME"
78 strip "$tempdir/usr/bin/$PROJECT_NAME"
80 # manpage
81 install -Dm644 "doc/$PROJECT_NAME.1" "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
82 gzip --best "$tempdir/usr/share/man/man1/$PROJECT_NAME.1"
84 # readme and license
85 install -Dm644 README.md "$tempdir/usr/share/doc/$PROJECT_NAME/README.md"
86 install -Dm644 LICENSE-MIT "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-MIT"
87 install -Dm644 LICENSE-APACHE "$tempdir/usr/share/doc/$PROJECT_NAME/LICENSE-APACHE"
89 # Control file
90 mkdir "$tempdir/DEBIAN"
91 cat > "$tempdir/DEBIAN/control" <<EOF
92Package: $dpkgname
93Version: $version
94Section: utils
95Priority: optional
96Maintainer: David Peter <mail@david-peter.de>
97Architecture: $architecture
98Provides: $PROJECT_NAME
99Conflicts: $conflictname
100Description: A cat(1) clone with wings.
101 A cat(1) clone with syntax highlighting and Git integration.
102EOF
104 fakeroot dpkg-deb --build "$tempdir" "${dpkgname}_${version}_${architecture}.deb"
108main() {
109 build
110 pack
111 if [[ $TARGET = *linux* ]]; then
112 make_deb
113 fi
116main