summaryrefslogtreecommitdiffstats
path: root/Makefile.toml
blob: 83cdcb854ccdaabc44fbc81f98826ddbc420e701 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# 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}
    plugin_name = basename ${plugin}
    plugin_out = set ${CARGO_MAKE_WORKSPACE_WORKING_DIRECTORY}/assets/plugins/${plugin_name}
    if 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 = ["build-plugins-release", "wasm-opt-plugins", "build-release"]
command = "cargo"
args = ["build", "--verbose", "--release", "--target", "${CARGO_MAKE_TASK_ARGS}"]

# 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"]