[env]
RUST_TEST_THREADS = "1"
CARGO_MAKE_TEST_COVERAGE_BINARY_FILTER = "cli-[a-z0-9]*$\\|makers-[a-z0-9]*$\\|${CARGO_MAKE_TEST_COVERAGE_DEFAULT_BINARY_FILTER}"
TARGET = { source = "${CARGO_MAKE_RUST_TARGET_ARCH}-${CARGO_MAKE_RUST_TARGET_VENDOR}-${CARGO_MAKE_RUST_TARGET_OS}-${CARGO_MAKE_RUST_TARGET_ENV}", mapping = { x86_64-apple-macos- = "x86_64-apple-darwin" }}
LIBZ_SYS_STATIC = "1"
PKG_CONFIG_ALLOW_CROSS = "1"
OPENSSL_STATIC = "1"
[init]
mac_alias = "init_mac"
[init_mac.env]
CFLAGS = "$CFLAGS -fno-stack-check"
RUSTFLAGS = "-Clink-args=-Wl,-bind_at_load"
[tasks.dist_env.env]
DIST_VERSION = "${CARGO_MAKE_CRATE_VERSION}"
DIST_NAME = "${CARGO_MAKE_CRATE_NAME}_${DIST_VERSION}-${TARGET}"
DIST_EXT = { source = "${CARGO_MAKE_RUST_TARGET_OS}", default_value = "tar.gz", mapping = { windows = "zip" }}
DIST_PATH ="target/dist/${DIST_NAME}"
GITHUB_RELEASE_VERSION = "v0.7.2"
GITHUB_RELEASE_PATH = { source = "${CARGO_MAKE_RUST_TARGET_OS}", mapping = { linux = "target/bin/linux/amd64", macos = "target/bin/darwin/amd64", windows = "target/bin/windows/amd64" }}
[tasks.debug]
dependencies = ["dist_env"]
script_runner = "@shell"
script = [
'''
echo "PROFILE=${PROFILE}"
echo "FILE=${GITHUB_RELEASE_PATH_REV}${DIST_PATH}.${DIST_EXT}"
echo "TARGET=${TARGET}"
echo "DIST_VERSION=${DIST_VERSION}"
echo "TAG=${TAG}"
echo "GITHUB_REPOSITORY=${GITHUB_REPOSITORY}"
echo "GITHUB_REF=${GITHUB_REF}"
echo ${CARGO_MAKE_PROFILE} : ${DIST_PATH} : ${GITHUB_RELEASE_PATH} : ${platform}
'''
]
[tasks.zip-release-ci-flow]
description = "Compiles the binary in release mode and zips it up"
category = "CI"
condition = { env_set = ["TARGET"] }
dependencies = [
"dist_env",
"build-release-for-target",
"zip-release-binary-for-target"
]
[tasks.build-release-for-target]
description = "Makes a release build for a given target"
condition = { env_set = [ "TARGET" ] }
command = "cargo"
args = [
"build",
"--release",
"--all-features",
"--target",
"${TARGET}"
]
[tasks.zip-release-binary-for-target]
windows_alias = "zip-release-binary-for-target_windows"
description = "Zips up the release binary, README, and license(s)"
category = "Publish"
condition = { env_set = [ "TARGET" ] }
script_runner = "@shell"
script = [
'''
rm -Rf ${DIST_PATH}*
mkdir -p ${DIST_PATH}
cp target/${TARGET}/release/${CARGO_MAKE_CRATE_NAME} ${DIST_PATH}/
strip ${DIST_PATH}/${CARGO_MAKE_CRATE_NAME}
cp LICENSE* ${DIST_PATH}/ || echo "ignore if no LICENSE"
# "cp README* ${DIST_PATH}/
tar -czvf "${DIST_PATH}.${DIST_EXT}" -C "${DIST_PATH}" "${CARGO_MAKE_CRATE_NAME}"
'''
]
[tasks.zip-release-binary-for-target_windows]
script_runner = "powershell"
script_extension = "ps1"
script = [
'''
Set-PSDebug -Strict # -Trace 1
$ErrorActionPreference = "Stop"
Remove-Item -Recurse -Force "${env:DIST_PATH}" -ErrorAction SilentlyContinue
New-Item -ItemType directory -Path "${env:DIST_PATH}"
Copy-Item -Path "target\\${env:TARGET}\\release\\${env:CARGO_MAKE_CRATE_NAME}.exe" -Destination "${env:DIST_PATH}"
Copy-Item -Path "LICENSE*" -Destination "${env:DIST_PATH}"
# Copy-Item -Path "README*" -Destination "${env:DIST_PATH}"
Compress-Archive -Path "${env:DIST_PATH}\\*" -DestinationPath "${env:DIST_PATH}.${env:DIST_EXT}" -CompressionLevel Optimal -Force
''',
]
[tasks.update-changelog]
category = "Publish"
install_crate = {crate_name = "gitmoji-changelog", binary = "gitmoji-changelog", test_arg = "--help"}
script = [
'''
rm -Rf CHANGELOG.md
gitmoji-changelog -r x.y.z-dev -o CHANGELOG.md .
'''
]
[tasks.update-bom]
category = "Publish"
install_crate = { crate_name = "cargo-bom", binary = "cargo", test_arg = "bom"}
script = [
'''
cargo bom > BOM.txt
'''
]
[tasks.update-book]
category = "Publish"
install_crate = {crate_name = "mdbook", binary = "mdbook", test_arg = "--help"}
script = [
'''
cd docs
rm -Rf book
mdbook build
'''
]
[tasks.pre-publish]
dependencies = [
"update-docs"
]
[tasks.update-docs]
env = { COMMIT_MSG = ":pencil: pre-publish update book, changelog, bom" }
run_task = "_update-docs-do"
[tasks._update-docs-do]
dependencies = [
"update-book",
"update-changelog",
"update-bom",
"git-add",
"git-commit-message",
]
[tasks.publish]
command = "cargo"
args = ["release", "${@}"]
[tasks.github-upload-flow]
description = "Upload dist on githup release"
dependencies = [
"dist_env",
"github-upload",
]
[tasks.github-release-install]
linux_alias = "github-release-install_linux"
mac_alias = "github-release-install_mac"
windows_alias = "github-release-install_windows"
[tasks.github-release-install_mac]
condition = { files_not_exist = [ "${GITHUB_RELEASE_PATH}/github-release" ]}
script = [
'''
cd target
echo download "https://github.com/aktau/github-release/releases/download/${GITHUB_RELEASE_VERSION}/darwin-amd64-github-release.tar.bz2"
curl -o darwin-amd64-github-release.tar.bz2 -sS -L "https://github.com/aktau/github-release/releases/download/${GITHUB_RELEASE_VERSION}/darwin-amd64-github-release.tar.bz2"
tar -xzvf darwin-amd64-github-release.tar.bz2
'''
]
[tasks.github-release-install_linux]
condition = { files_not_exist = [ "${GITHUB_RELEASE_PATH}/github-release" ]}
script = [
'''
cd target
echo download "https://github.com/aktau/github-release/releases/download/${GITHUB_RELEASE_VERSION}/linux-amd64-github-release.tar.bz2"
curl -o linux-amd64-github-release.tar.bz2 -sS -L "https://github.com/aktau/github-release/releases/download/${GITHUB_RELEASE_VERSION}/linux-amd64-github-release.tar.bz2"
tar -xjvf linux-amd64-github-release.tar.bz2
'''
]
[tasks.github-release-install_windows]
condition = { files_not_exist = [ "${GITHUB_RELEASE_PATH}/github-release.exe" ]}
script_runner = "powershell"
script_extension = "ps1"
script = [
'''
Set-PSDebug -Strict # -Trace 1
$ErrorActionPreference = "Stop"
$url ="https://github.com/aktau/github-release/releases/download/$env:GITHUB_RELEASE_VERSION/windows-amd64-github-release.zip"
$output = "windows-amd64-github-release.zip"
cd target
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
echo $url
Invoke-WebRequest -Uri $url -OutFile $output
Expand-Archive -LiteralPath $output -Destination . -Force
'''
]
[tasks.check_GITHUB_REPOSITORY]
condition = { env_not_set = [ "GITHUB_REPOSITORY" ] }
script_runner = "@shell"
script = ['''echo "env variable GITHUB_REPOSITORY is not set"''']
[tasks.check_GITHUB_TOKEN]
condition = { env_not_set = [ "GITHUB_TOKEN" ] }
script_runner = "@shell"
script = ['''echo "env variable GITHUB_TOKEN is not set"''']
[tasks.github-upload]
windows_alias = "github-upload_windows"
condition = { env_set = [ "GITHUB_RELEASE_PATH", "GITHUB_REPOSITORY", "GITHUB_TOKEN", "DIST_NAME", "DIST_PATH", "DIST_EXT"] }
script_runner = "@shell"
script= [
'''
export GITHUB_USER=$(dirname $GITHUB_REPOSITORY)
export GITHUB_REPO=$(basename $GITHUB_REPOSITORY)
${GITHUB_RELEASE_PATH}/github-release release --tag "${DIST_VERSION}" || echo "ignore error"
${GITHUB_RELEASE_PATH}/github-release upload --tag "${DIST_VERSION}" --name "${DIST_NAME}.${DIST_EXT}" --file "${DIST_PATH}.${DIST_EXT}"
'''
]
dependencies = [
"check_GITHUB_REPOSITORY",
"check_GITHUB_TOKEN",
"github-release-install",
]
[tasks.github-upload_windows]
condition = { env_set = [ "GITHUB_RELEASE_PATH", "GITHUB_REPOSITORY", "GITHUB_TOKEN", "DIST_NAME", "DIST_PATH", "DIST_EXT"] }
script_runner = "powershell"
script_extension = "ps1"
script = [
'''
Set-PSDebug -Strict # -Trace 1
$ErrorActionPreference = "Stop"
$env:GITHUB_USER,$env:GITHUB_REPO=$($env:GITHUB_REPOSITORY).split("/")
& "${env:GITHUB_RELEASE_PATH}\\github-release.exe" release --tag "$env:DIST_VERSION"
& "${env:GITHUB_RELEASE_PATH}\\github-release.exe" upload --tag "$env:DIST_VERSION" --name ($env:DIST_NAME + '.' + $env:DIST_EXT) --file ($env:DIST_PATH + '.' + $env:DIST_EXT)
'''
]
dependencies = [
"check_GITHUB_REPOSITORY",
"check_GITHUB_TOKEN",
"github-release-install",
]
[tasks.snapcraft-push]
condition = { platforms = ["linux"], env_set = [ "SNAPCRAFT_TOKEN", "SNAPCRAFT_CHANNEL"] }
script_runner = "bash"
script = [
'''
lsb_release -a
sudo snap install snapcraft --classic
# sudo snap install multipass --classic --beta
sudo chown root:root /
hash -r
echo "${SNAPCRAFT_TOKEN}" | snapcraft login --with -
# multipass can not run on ubuntu-18.04 vm of github action
sudo snapcraft --destructive-mode
sudo snapcraft push --release ${SNAPCRAFT_CHANNEL} *.snap
sudo rm -f *.snap
'''
]