[config]
skip_core_tasks = true
default_to_workspace = false
[tasks.zip-release]
description = "Compiles the binary in release mode and zips it up"
condition = { env_set = ["CARGO_MAKE_RELEASE_FLOW_TARGET"] }
dependencies = [
"setup-release-build-env",
"build-release-for-target",
"zip-release-binary-for-target",
]
[tasks.setup-release-build-env]
description = "Sets up any non-rust dependencies in the build environment"
condition = { env_set = ["CARGO_MAKE_RELEASE_FLOW_TARGET"], platforms = ["linux"] }
script = '''
rustup target add ${CARGO_MAKE_RELEASE_FLOW_TARGET}
'''
[tasks.build-release-for-target]
description = "Makes a release build for a given target"
condition = { env_set = ["CARGO_MAKE_RELEASE_FLOW_TARGET"] }
install_crate = false
command = "cargo"
args = [
"build",
"--manifest-path",
"crossbundle/cli/Cargo.toml",
"--release",
"--all-features",
"--target",
"${CARGO_MAKE_RELEASE_FLOW_TARGET}",
]
[tasks.zip-release-binary-for-target]
description = "Zips up the release binary, README, and license(s)"
condition = { env_set = [
"CARGO_MAKE_RELEASE_FLOW_TARGET",
"CARGO_MAKE_PROJECT_NAME",
"CARGO_MAKE_CRATE_VERSION",
] }
env = { OUTPUT_NAME = "${CARGO_MAKE_PROJECT_NAME}-v${CARGO_MAKE_CRATE_VERSION}-${CARGO_MAKE_RELEASE_FLOW_TARGET}" }
script_runner = "@shell"
script = '''
mkdir ${OUTPUT_NAME}
cp target/${CARGO_MAKE_RELEASE_FLOW_TARGET}/release/crossbundle ${OUTPUT_NAME}/
cp README.md LICENSE* ${OUTPUT_NAME}/
zip -r ${OUTPUT_NAME}.zip ${OUTPUT_NAME}
'''
[tasks.zip-release-binary-for-target.windows]
script = '''
mkdir ${OUTPUT_NAME}
dir target
powershell copy-item -path target/${CARGO_MAKE_RELEASE_FLOW_TARGET}/release/crossbundle.exe -destination ${OUTPUT_NAME}
powershell copy-item -path README.md -destination ${OUTPUT_NAME}
powershell copy-item -path LICENSE -destination ${OUTPUT_NAME}
dir ${OUTPUT_NAME}
powershell Compress-Archive -Path ${OUTPUT_NAME}/* -DestinationPath ${OUTPUT_NAME}.zip
'''
[tasks.build-release-examples]
description = "Build examples in release mode"
script = '''
mkdir -p target/apks
examples=(
"2d Crossbow 2D"
"3d Crossbow 3D"
)
for i in "${examples[@]}"
do
set -- $i
crate="${1}"
name="${2} ${3}"
echo "Building ${name}"
pushd examples/$crate
crossbundle build android --release
popd
mv "target/android/release/${name}.apk" target/apks/
done
'''
[tasks.publish-to-crates-io]
description = "Publishes crates to crates.io"
script = '''
crates=(
plugins/ads
plugins/permissions
crossbundle/derive
crossbundle/tools
crossbundle/cli
)
for crate in "${crates[@]}"
do
echo "Publishing ${crate}"
cargo publish --manifest-path=$crate/Cargo.toml
sleep 40
done
sleep 40
cargo publish
'''