--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+source buildscripts/init.sh "$1"
+
+cargo build --target "${RUST_TARGET}"
--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+
+TAG=$1
+
+BASENAME="m17rt-${TAG}"
+FILENAME="${BASENAME}.tar.xz"
+
+git archive "${TAG}" -o "${FILENAME}" --prefix="${BASENAME}/"
+
+echo "GENERIC_ARTIFACT|${FILENAME}|Source Code"
+echo "URL|Git Tag|https://code.octet-stream.net/m17rt/shortlog/refs/tags/${TAG}|${TAG}"
--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+
+PLATFORM=$1
+TAG=$2
+source buildscripts/init.sh "${PLATFORM}"
+
+# TODO
--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+
+PLATFORM=$1
+
+case $PLATFORM in
+mac-x86_64)
+ RUST_TARGET=x86_64-apple-darwin
+ ;;
+mac-arm64)
+ RUST_TARGET=aarch64-apple-darwin
+ ;;
+linux-x86_64)
+ RUST_TARGET=x86_64-unknown-linux-gnu
+ ;;
+linux-armhf)
+ RUST_TARGET=armv7-unknown-linux-gnueabihf
+ ;;
+linux-arm64)
+ RUST_TARGET=aarch64-unknown-linux-gnu
+ ;;
+windows-x86_64)
+ RUST_TARGET=x86_64-pc-windows-msvc
+ ;;
+*)
+ echo "Unrecognised platform"
+ exit 1
+ ;;
+esac
+
+export RUST_TARGET
--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+source buildscripts/init.sh "$1"
+
+cargo clippy --all-targets --target "${RUST_TARGET}" -- -D warnings
+cargo fmt --all --check
--- /dev/null
+#!/bin/bash
+set -euxo pipefail
+cd "$(git rev-parse --show-toplevel)"
+source buildscripts/init.sh "$1"
+
+cargo test --target "${RUST_TARGET}"