# Global Settings [env] CARGO_MAKE_EXTEND_WORKSPACE_MAKEFILE = true CARGO_TARGET_DIR = "${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/target" SKIP_TEST = false # Add clippy to the default flow [tasks.dev-test-flow] dependencies = [ "format-flow", "format-toml-conditioned-flow", "pre-build", "build", "post-build", "test-flow", "clippy", ] # Patching the default flows to skip testing of wasm32-wasi targets [tasks.pre-test] condition = { env = { "CARGO_MAKE_CRATE_TARGET_TRIPLE" = "wasm32-wasi" } } env = { "SKIP_TEST" = true } [tasks.test] condition = { env_false = ["SKIP_TEST"] } dependencies = ["pre-test"] [tasks.post-test] env = { "SKIP_TEST" = false } # Running Zellij using the development data directory [tasks.run] workspace = false dependencies = ["build-workspace", "build-dev-data-dir"] run_task = "launch" [tasks.build-workspace] run_task = { name = "build", fork = true } [tasks.build-dev-data-dir] script_runner = "@duckscript" script = ''' asset_dir = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/assets target_dir = set ${CARGO_TARGET_DIR} data_dir = set ${target_dir}/dev-data rm -r ${data_dir} cp ${asset_dir}/layouts ${data_dir}/ plugins = glob_array ${target_dir}/wasm32-wasi/debug/*.wasm 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] args = ["clippy", "--", "@@split(CARGO_MAKE_TASK_ARGS,;)"] # Release building and installing Zellij [tasks.install] workspace = false dependencies = ["build-plugins-release", "wasm-opt-plugins", "build-release"] 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.build-plugins-release] env = { "CARGO_MAKE_WORKSPACE_SKIP_MEMBERS" = ["."] } run_task = { name = "build-release", fork = true } [tasks.wasm-opt-plugins] script_runner = "@duckscript" script = ''' plugins = glob_array ${CARGO_TARGET_DIR}/wasm32-wasi/release/*.wasm for plugin in ${plugins} mkdir ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/assets/plugins/ plugin_name = basename ${plugin} plugin_out = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/assets/plugins/${plugin_name} if not is_path_exists ${plugin_out} or is_path_newer ${plugin} ${plugin_out} exec wasm-opt -O ${plugin} -o ${plugin_out} end end ''' # CI Releasing Zellij [tasks.ci-build-release] workspace = false dependencies = ["setup-cross-compilation", "build-plugins-release", "wasm-opt-plugins"] command = "cross" args = ["build", "--verbose", "--release", "--target", "${CARGO_MAKE_TASK_ARGS}"] [tasks.setup-cross-compilation] command = "cargo" args = ["install", "cross"] # Publishing Zellij [tasks.publish] clear = true workspace = false dependencies = ["build-plugins-release", "wasm-opt-plugins", "build-release", "publish-zellij-tile"] run_task = "publish-zellij" [tasks.publish-zellij-tile] ignore_errors = true cwd = "zellij-tile" command = "cargo" args = ["publish"] [tasks.publish-zellij] command = "cargo" args = ["publish"]