Skip to content

Latest commit

 

History

History
209 lines (149 loc) · 4.17 KB

maskfile.md

File metadata and controls

209 lines (149 loc) · 4.17 KB

Commands

Needs mask to run.

install-tools

Install tools.

set -e
apt-get install -y asciidoctor
cargo install cargo-binstall
cargo binstall cross cargo-deb cargo-generate-rpm
UPX_VERSION=$(grep -e '^upx_version =' Cargo.toml | sed -e 's/upx_version = "\(.*\)"/\1/')
curl https://github.com/upx/upx/releases/download/v${UPX_VERSION}/upx-${UPX_VERSION}-amd64_linux.tar.xz -Lf | tar -xJ --strip-components=1 -C /usr/local/bin

manpage

Generate manpage.

set -e
echo >&2 "Generating manpage"
if [ ! -f target/vpncloud.1.gz -o vpncloud.adoc -nt target/vpncloud.1.gz ]; then
  asciidoctor -b manpage -o target/vpncloud.1 vpncloud.adoc
  gzip -f target/vpncloud.1
fi

build-packages-cross (target) (target_name) (target_name_rpm)

Build the project packages for a given target.

set -e
VERSION=$(grep -e '^version =' Cargo.toml | sed -e 's/version = "\(.*\)"/\1/')
TARGET=$target
TARGET_DIR=target/$target_name

# compile
echo >&2 "Compiling for $target_name"
cross build --release --target $TARGET --target-dir $TARGET_DIR
mkdir -p target/$TARGET/release
cp $TARGET_DIR/$TARGET/release/vpncloud target/$TARGET/release/

# build deb
echo >&2 "Building deb package"
cargo deb --no-build --no-strip --target $TARGET
mv target/$TARGET/debian/vpncloud_${VERSION}-1_$target_name.deb dist/vpncloud_${VERSION}_$target_name.deb

# build rpm
if [ -n "$target_name_rpm" ]; then
  echo >&2 "Building rpm package"
  cargo generate-rpm --target $TARGET --target-dir $TARGET_DIR
  mv $TARGET_DIR/$TARGET/generate-rpm/vpncloud-${VERSION}-1.$target_name_rpm.rpm dist/vpncloud_${VERSION}-1.$target_name_rpm.rpm
fi

build-amd64-packages

$MASK build-packages-cross x86_64-unknown-linux-gnu amd64 x86_64

build-i386-packages

$MASK build-packages-cross i686-unknown-linux-gnu i386 i686

build-arm64-packages

$MASK build-packages-cross aarch64-unknown-linux-gnu arm64 aarch64

build-armhf-packages

$MASK build-packages-cross armv7-unknown-linux-gnueabihf armhf ""

build-armel-packages

$MASK build-packages-cross armv5te-unknown-linux-gnueabi armel ""

build-static-cross (target) (target_name)

Build the project statically for a given target.

set -e
VERSION=$(grep -e '^version =' Cargo.toml | sed -e 's/version = "\(.*\)"/\1/')
TARGET=$target
TARGET_DIR=target/$target_name-musl
BIN=$TARGET_DIR/$TARGET/release/vpncloud

echo >&2 "Compiling for $target_name musl"
cross build --release --features installer --target $TARGET --target-dir $TARGET_DIR
upx --lzma $BIN
cp $BIN dist/vpncloud_${VERSION}_static_$target_name

build-amd64-static

$MASK build-static-cross x86_64-unknown-linux-musl amd64

build-i386-static

$MASK build-static-cross i686-unknown-linux-musl i386

build-arm64-static

$MASK build-static-cross aarch64-unknown-linux-musl arm64

build-armhf-static

$MASK build-static-cross armv7-unknown-linux-musleabihf armhf

build-armel-static

$MASK build-static-cross armv5te-unknown-linux-musleabi armel

build

Build the project for all architectures.

set -e
$MASK manpage
$MASK build-amd64-packages
$MASK build-amd64-static
$MASK build-i386-packages
$MASK build-i386-static
$MASK build-arm64-packages
$MASK build-arm64-static
$MASK build-armhf-packages
$MASK build-armhf-static
$MASK build-armel-packages
$MASK build-armel-static

sign

Sign the packages.

set -e
VERSION=$(grep -e '^version =' Cargo.toml | sed -e 's/version = "\(.*\)"/\1/')
cd dist
sha256sum vpncloud_${VERSION}_static_* vpncloud_${VERSION}*.rpm vpncloud_${VERSION}*.deb  > vpncloud_${VERSION}_SHA256SUMS.txt
gpg --armor --output vpncloud_${VERSION}_SHA256SUMS.txt.asc --detach-sig vpncloud_${VERSION}_SHA256SUMS.txt

test

Test the project.

cargo test --all-features

release

Release the project.

set -e

$MASK test
nano Cargo.toml
VERSION=$(grep -e '^version =' Cargo.toml | sed -e 's/version = "\(.*\)"/\1/')
nano CHANGELOG.md
nano assets/changelog.txt
$MASK build
$MASK sign
git commit -a
cargo publish
git tag v$VERSION
git push --tags

count

Count the lines of code.

tokei