mirror of
https://github.com/zellij-org/zellij.git
synced 2024-11-21 17:39:24 +03:00
285 lines
6.9 KiB
TOML
285 lines
6.9 KiB
TOML
# Global Settings
|
|
[env]
|
|
CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true
|
|
CARGO_TARGET_DIR = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target"
|
|
SKIP_TEST = false
|
|
ZELLIJ_EXAMPLE_DIR = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/example"
|
|
ZELLIJ_ASSETS_DIR = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/zellij-utils/assets"
|
|
|
|
# Add clippy to the default flow
|
|
[tasks.dev-test-flow]
|
|
dependencies = [
|
|
"plugins",
|
|
"format-flow",
|
|
"format-toml-conditioned-flow",
|
|
"pre-build",
|
|
"build",
|
|
"post-build",
|
|
"test-flow",
|
|
"clippy",
|
|
]
|
|
|
|
[tasks.test]
|
|
dependencies = ["get-host-triple"]
|
|
args = ["test", "--target", "${CARGO_HOST_TRIPLE}", "--", "@@split(CARGO_MAKE_TASK_ARGS,;)"]
|
|
|
|
# Running Zellij using the development data directory
|
|
[tasks.run]
|
|
workspace = false
|
|
dependencies = ["build-workspace"]
|
|
run_task = "launch"
|
|
|
|
[tasks.build-workspace]
|
|
run_task = { name = "build", fork = true }
|
|
|
|
[tasks.build]
|
|
env = { "CARGO_MAKE_WORKSPACE_SKIP_MEMBERS" = "default-plugins*" }
|
|
args = ["build"]
|
|
|
|
[tasks.build-release]
|
|
args = ["build", "--release"]
|
|
|
|
[tasks.build-e2e-data-dir]
|
|
dependencies = ["plugins-release"]
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
target_dir = set ${CARGO_TARGET_DIR}
|
|
data_dir = set ${target_dir}/e2e-data
|
|
rm -r ${data_dir}
|
|
plugins = glob_array ${target_dir}/wasm32-wasi/release/*.wasm
|
|
mkdir ${data_dir}
|
|
mkdir ${data_dir}/plugins
|
|
for plugin in ${plugins}
|
|
plugin_name = basename ${plugin}
|
|
cp ${plugin} ${data_dir}/plugins/${plugin_name}
|
|
end
|
|
writefile ${data_dir}/VERSION ${CARGO_MAKE_CRATE_VERSION}
|
|
'''
|
|
|
|
[tasks.launch]
|
|
command = "cargo"
|
|
args = [
|
|
"run",
|
|
"--",
|
|
"--data-dir",
|
|
"${CARGO_TARGET_DIR}/dev-data/",
|
|
"@@split(CARGO_MAKE_TASK_ARGS,;)",
|
|
]
|
|
|
|
# Simple clippy tweak
|
|
[tasks.clippy]
|
|
dependencies = ["plugins"]
|
|
args = ["clippy", "--all-targets", "--all-features", "@@split(CARGO_MAKE_TASK_ARGS,;)"]
|
|
|
|
# Release building and installing Zellij
|
|
[tasks.install]
|
|
workspace = false
|
|
dependencies = ["wasm-opt-plugins", "build-release", "manpage"]
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
if is_dir ${CARGO_MAKE_TASK_ARGS}
|
|
trigger_error "You need to specify a full path for the binary, not just a directory!"
|
|
else
|
|
cp ${CARGO_TARGET_DIR}/release/${CARGO_MAKE_CRATE_NAME} ${CARGO_MAKE_TASK_ARGS}
|
|
end
|
|
'''
|
|
|
|
[tasks.wasm-opt-plugins]
|
|
alias = "plugins-release"
|
|
|
|
[tasks.plugins-release]
|
|
workspace = false
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
plugins = glob_array ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/default-plugins/*
|
|
out_dir = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/zellij-utils/assets/plugins/
|
|
mkdir ${out_dir}
|
|
|
|
for plugin in ${plugins}
|
|
cd ${plugin}
|
|
exec cargo build --release
|
|
plugin_name = basename ${plugin}
|
|
plugin_in = set ${CARGO_TARGET_DIR}/wasm32-wasi/release/${plugin_name}.wasm
|
|
plugin_out = set ${out_dir}/${plugin_name}.wasm
|
|
exec wasm-opt -O ${plugin_in} -o ${plugin_out}
|
|
cd ..
|
|
end
|
|
'''
|
|
|
|
[tasks.plugins]
|
|
workspace = false
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
plugins = glob_array ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/default-plugins/*
|
|
out_dir = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/zellij-utils/assets/plugins/
|
|
mkdir ${out_dir}
|
|
|
|
for plugin in ${plugins}
|
|
cd ${plugin}
|
|
exec cargo build
|
|
plugin_name = basename ${plugin}
|
|
plugin_in = set ${CARGO_TARGET_DIR}/wasm32-wasi/debug/${plugin_name}.wasm
|
|
plugin_out = set ${out_dir}/${plugin_name}.wasm
|
|
cp ${plugin_in} ${plugin_out}
|
|
cd ..
|
|
end
|
|
'''
|
|
|
|
[tasks.get-host-triple]
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
output = exec rustc -v -V
|
|
lines = split ${output.stdout} \n
|
|
triple = set ""
|
|
for line in ${lines}
|
|
if starts_with ${line} "host:" && not is_empty ${line}
|
|
bits = split ${line} " "
|
|
triple = array_get ${bits} 1
|
|
triple = set ${triple}
|
|
end
|
|
end
|
|
|
|
if not is_empty ${triple}
|
|
set_env CARGO_HOST_TRIPLE "${triple}"
|
|
end
|
|
'''
|
|
|
|
[tasks.manpage]
|
|
workspace = false
|
|
description = "Use mandown crate to create or update man entry from docs/MANPAGES.md"
|
|
script = '''
|
|
root_dir=${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}
|
|
mkdir -p ${root_dir}/assets/man
|
|
mandown ${root_dir}/docs/MANPAGE.md ZELLIJ 1 > ${root_dir}/assets/man/zellij.1
|
|
'''
|
|
dependencies = ["install-mandown"]
|
|
|
|
[tasks.install-mandown]
|
|
command = "cargo"
|
|
args = ["install", "mandown"]
|
|
|
|
|
|
# copy the example default config from assets directory to a more user facing one
|
|
[tasks.update-default-config]
|
|
workspace = false
|
|
dependencies = []
|
|
script_runner = "@duckscript"
|
|
script = '''
|
|
cp ${ZELLIJ_ASSETS_DIR}/config/default.kdl ${ZELLIJ_EXAMPLE_DIR}/default.kdl
|
|
'''
|
|
|
|
# CI Releasing Zellij
|
|
[tasks.ci-build-release]
|
|
workspace = false
|
|
dependencies = [
|
|
"plugins-release",
|
|
"setup-cross-compilation",
|
|
"manpage",
|
|
]
|
|
command = "cross"
|
|
args = [
|
|
"build",
|
|
"--verbose",
|
|
"--release",
|
|
"--target",
|
|
"${CARGO_MAKE_TASK_ARGS}",
|
|
]
|
|
|
|
# Build e2e asset
|
|
[tasks.build-e2e]
|
|
workspace = false
|
|
dependencies = ["wasm-opt-plugins", "build-e2e-data-dir"]
|
|
command = "cargo"
|
|
args = [
|
|
"build",
|
|
"--verbose",
|
|
"--release",
|
|
"--target",
|
|
"x86_64-unknown-linux-musl",
|
|
]
|
|
|
|
# Run e2e tests - we mark the e2e tests as "ignored" so they will not be run with the normal ones
|
|
[tasks.e2e-test]
|
|
workspace = false
|
|
dependencies = ["build-e2e", "plugins"]
|
|
command = "cargo"
|
|
args = [
|
|
"test",
|
|
"--",
|
|
"--ignored",
|
|
"--nocapture",
|
|
"--test-threads",
|
|
"1",
|
|
"@@split(CARGO_MAKE_TASK_ARGS,;)",
|
|
]
|
|
|
|
[tasks.setup-cross-compilation]
|
|
command = "cargo"
|
|
args = ["install", "cross"]
|
|
|
|
# Publishing Zellij
|
|
[tasks.publish]
|
|
clear = true
|
|
workspace = false
|
|
dependencies = [
|
|
"plugins-release",
|
|
"update-default-config",
|
|
"release-commit",
|
|
]
|
|
run_task = "publish-zellij"
|
|
|
|
[tasks.release-commit]
|
|
dependencies = ["commit-all", "tag-release"]
|
|
command = "git"
|
|
args = ["push", "--atomic", "origin", "main", "v${CARGO_MAKE_CRATE_VERSION}"]
|
|
|
|
[tasks.commit-all]
|
|
ignore_errors = true
|
|
dependencies = ["plugins-release"]
|
|
command = "git"
|
|
args = ["commit", "-aem", "chore(release): v${CARGO_MAKE_CRATE_VERSION}"]
|
|
|
|
[tasks.tag-release]
|
|
command = "git"
|
|
args = ["tag", "--annotate", "--message", "Version ${CARGO_MAKE_CRATE_VERSION}", "v${CARGO_MAKE_CRATE_VERSION}"]
|
|
|
|
[tasks.publish-zellij-tile]
|
|
ignore_errors = true
|
|
dependencies = ["publish-zellij-utils"]
|
|
cwd = "zellij-tile"
|
|
script = "cargo publish && sleep 15"
|
|
|
|
[tasks.publish-zellij-client]
|
|
ignore_errors = true
|
|
dependencies = ["publish-zellij-utils"]
|
|
cwd = "zellij-client"
|
|
script = "cargo publish && sleep 15"
|
|
|
|
[tasks.publish-zellij-server]
|
|
ignore_errors = true
|
|
dependencies = ["publish-zellij-utils"]
|
|
cwd = "zellij-server"
|
|
script = "cargo publish && sleep 15"
|
|
|
|
[tasks.publish-zellij-utils]
|
|
ignore_errors = true
|
|
dependencies = ["publish-zellij-utils"]
|
|
cwd = "zellij-utils"
|
|
script = "cargo publish && sleep 15"
|
|
|
|
[tasks.publish-zellij-tile-utils]
|
|
ignore_errors = true
|
|
cwd = "zellij-tile-utils"
|
|
script = "cargo publish && sleep 15"
|
|
|
|
[tasks.publish-zellij]
|
|
dependencies = [
|
|
"publish-zellij-utils",
|
|
"publish-zellij-tile-utils",
|
|
"publish-zellij-tile",
|
|
"publish-zellij-client",
|
|
"publish-zellij-server",
|
|
]
|
|
command = "cargo"
|
|
args = ["publish"]
|