Package evaluation of Comonicon on Julia 1.10.8 (92f03a4775*) started at 2025-02-25T05:57:43.095 ################################################################################ # Set-up # Installing PkgEval dependencies (TestEnv)... Set-up completed after 5.37s ################################################################################ # Installation # Installing Comonicon... Resolving package versions... Updating `~/.julia/environments/v1.10/Project.toml` [863f3e99] + Comonicon v1.0.8 Updating `~/.julia/environments/v1.10/Manifest.toml` [863f3e99] + Comonicon v1.0.8 [5218b696] + Configurations v0.17.6 [55351af7] + ExproniconLite v0.10.14 [c27321d9] + Glob v1.3.1 [bac558e1] + OrderedCollections v1.8.0 [9b87118b] + PackageCompiler v2.2.0 [05181044] + RelocatableFolders v1.0.1 [6c6a2e73] + Scratch v1.2.1 [0dad84c5] + ArgTools v1.1.1 [56f22d72] + Artifacts [2a0f44e3] + Base64 [ade2ca70] + Dates [f43a241f] + Downloads v1.6.0 [7b1f6079] + FileWatching [b77e0a4c] + InteractiveUtils [4af54fe1] + LazyArtifacts [b27032c2] + LibCURL v0.6.4 [76f85450] + LibGit2 [8f399da3] + Libdl [56ddb016] + Logging [d6f4376e] + Markdown [ca575930] + NetworkOptions v1.2.0 [44cfe95a] + Pkg v1.10.0 [de0858da] + Printf [3fa0cd96] + REPL [9a3f8284] + Random [ea8e919c] + SHA v0.7.0 [9e88b42a] + Serialization [6462fe0b] + Sockets [fa267f1f] + TOML v1.0.3 [a4e569a6] + Tar v1.10.0 [cf7118a7] + UUIDs [4ec0a83e] + Unicode [deac9b47] + LibCURL_jll v8.4.0+0 [e37daf67] + LibGit2_jll v1.6.4+0 [29816b5a] + LibSSH2_jll v1.11.0+1 [c8ffd9c3] + MbedTLS_jll v2.28.2+1 [14a3606d] + MozillaCACerts_jll v2023.1.10 [83775a58] + Zlib_jll v1.2.13+1 [8e850ede] + nghttp2_jll v1.52.0+1 [3f19e933] + p7zip_jll v17.4.0+2 Installation completed after 4.68s ################################################################################ # Precompilation # Precompiling PkgEval dependencies... Precompiling package dependencies... Precompilation completed after 9.51s ################################################################################ # Testing # Testing Comonicon Status `/tmp/jl_cTiWSt/Project.toml` [863f3e99] Comonicon v1.0.8 [53b67e40] ComoniconTestUtils v1.0.0 [5218b696] Configurations v0.17.6 [55351af7] ExproniconLite v0.10.14 [0efc519c] Faker v0.3.5 [ff7dd447] FromFile v0.1.6 [9b87118b] PackageCompiler v2.2.0 [6c6a2e73] Scratch v1.2.1 [a896ed2c] SimpleMock v1.2.1 [37e2e46d] LinearAlgebra [d6f4376e] Markdown [44cfe95a] Pkg v1.10.0 [9a3f8284] Random [8dfed614] Test Status `/tmp/jl_cTiWSt/Manifest.toml` [7057c7e9] Cassette v0.3.14 [863f3e99] Comonicon v1.0.8 [53b67e40] ComoniconTestUtils v1.0.0 [5218b696] Configurations v0.17.6 [55351af7] ExproniconLite v0.10.14 [0efc519c] Faker v0.3.5 [ff7dd447] FromFile v0.1.6 [c27321d9] Glob v1.3.1 [692b3bcd] JLLWrappers v1.7.0 [bac558e1] OrderedCollections v1.8.0 [9b87118b] PackageCompiler v2.2.0 [21216c6a] Preferences v1.4.3 [05181044] RelocatableFolders v1.0.1 [ae029012] Requires v1.3.0 [6c6a2e73] Scratch v1.2.1 [a896ed2c] SimpleMock v1.2.1 [69024149] StringEncodings v0.3.7 [ddb6d928] YAML v0.4.12 [94ce4f54] Libiconv_jll v1.18.0+0 [0dad84c5] ArgTools v1.1.1 [56f22d72] Artifacts [2a0f44e3] Base64 [ade2ca70] Dates [f43a241f] Downloads v1.6.0 [7b1f6079] FileWatching [b77e0a4c] InteractiveUtils [4af54fe1] LazyArtifacts [b27032c2] LibCURL v0.6.4 [76f85450] LibGit2 [8f399da3] Libdl [37e2e46d] LinearAlgebra [56ddb016] Logging [d6f4376e] Markdown [ca575930] NetworkOptions v1.2.0 [44cfe95a] Pkg v1.10.0 [de0858da] Printf [3fa0cd96] REPL [9a3f8284] Random [ea8e919c] SHA v0.7.0 [9e88b42a] Serialization [6462fe0b] Sockets [fa267f1f] TOML v1.0.3 [a4e569a6] Tar v1.10.0 [8dfed614] Test [cf7118a7] UUIDs [4ec0a83e] Unicode [e66e0078] CompilerSupportLibraries_jll v1.1.1+0 [deac9b47] LibCURL_jll v8.4.0+0 [e37daf67] LibGit2_jll v1.6.4+0 [29816b5a] LibSSH2_jll v1.11.0+1 [c8ffd9c3] MbedTLS_jll v2.28.2+1 [14a3606d] MozillaCACerts_jll v2023.1.10 [4536629a] OpenBLAS_jll v0.3.23+4 [83775a58] Zlib_jll v1.2.13+1 [8e850b90] libblastrampoline_jll v5.11.0+0 [8e850ede] nghttp2_jll v1.52.0+1 [3f19e933] p7zip_jll v17.4.0+2 Testing Running tests... Test Summary: |Time compat | None 0.9s Comonicon.Configs.Comonicon("foo", Comonicon.Configs.Command(true, true, 120, true, false), Comonicon.Configs.Install("/home/pkgeval/.julia", true, false, "min", 2, "auto"), Comonicon.Configs.SysImg("deps", true, false, "native", Comonicon.Configs.Precompile(["deps/precopmile.jl"], String[])), Comonicon.Configs.Download("github.com", "Roger-luo", "Foo.jl"), Comonicon.Configs.Application("build", Comonicon.Configs.Asset[Comonicon.Configs.Asset("PkgTemplate", "templates"), Comonicon.Configs.Asset(nothing, "assets/images")], true, false, true, "generic;sandybridge,-xsaveopt,clone_all;haswell,-rdrnd,base(1)", Comonicon.Configs.Precompile(String[], String[]), "/home/pkgeval/.julia/packages/PackageCompiler/UbaS4/src/embedding_wrapper.c", ["zsh"])) Test Summary: | Pass Total Time options | 2 2 11.4s Test Summary: | Pass Total Time argtype | 3 3 0.1s ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 registry you want to register the package. If the package has not been registered, ion will try to register the package in the General registry. Or the user needs to specify the registry to register using this option.Test Summary: | Pass Total Time ast | 26 26 8.6s WARNING: ignoring conflicting import of Comonicon.read_options into Main cmd.options = OrderedCollections.OrderedDict{String, Option}("option1" => Option(:option1, "option1", "nothing", false, Any, true, Description("test option.", ""), :(#= line 0 =#)), "o" => Option(:option1, "option1", "nothing", false, Any, true, Description("test option.", ""), :(#= line 0 =#)), "option2" => Option(:option2, "option2", "int", false, Int64, false, Description("test option.", ""), :(#= line 0 =#)), "option3" => Option(:option3, "option3", "name", false, String, false, Description("test option.", ""), :(#= line 0 =#)), "option4" => Option(:option4, "option4", "1::Int", false, Int64, false, Description("test option.", ""), :(#= line 0 =#))) cmd.flags = OrderedCollections.OrderedDict{String, Flag}("flag1" => Flag(:flag1, "flag1", true, Description("test flag.", ""), :(#= line 0 =#)), "f" => Flag(:flag1, "flag1", true, Description("test flag.", ""), :(#= line 0 =#)), "flag2" => Flag(:flag2, "flag2", false, Description("test flag.", ""), :(#= line 0 =#))) Test Summary: | Pass Total Time frontend | 109 109 18.4s Error: unknown command cmd3  node v1.2.0 Usage node  Commands cmd1 cmd2 Flags  -h, --help Print this help message.  --version Print version. Error: expect at most 0 positional arguments, use -h or --help to check more detailed help info cmd1 Flags  -h, --help Print this help message. cmd1 Flags  -h, --help Print this help message. 1.2.0 Error: valid sub-commands for command node are: cmd1, cmd2, use -h or --help to check more detailed help info  node v1.2.0 Usage node  Commands cmd1 cmd2 Flags  -h, --help Print this help message.  --version Print version. Error: expect value of type: Int64, use -h or --help to check more detailed help info  leaf v1.1.0 Usage leaf  Args <a::Int64> Flags  -h, --help Print this help message.  --version Print version. ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand(fn::Function, name::String, arg::Vector{Argument}, nrequire::Int64, vararg::Argument, flags::Dict{String, Flag}, options::Dict{String, Option}, description::Description, line::LineNumberNode) at types.jl:221 └ @ Comonicon.AST ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand(fn::Function, name::String, arg::Vector{Argument}, nrequire::Int64, vararg::Argument, flags::Dict{String, Flag}, options::Dict{String, Option}, description::Description, line::LineNumberNode) at types.jl:221 └ @ Comonicon.AST ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 unknown command: cmd  leaf v1.1.0 Usage leaf  [options] [flags] Args <a::Int64> [b::Int64] [c::Int64...] Options -o, --option-a  --option-b  Flags -f, --flag-a --flag-b  -h, --help Print this help message.  --version Print version. ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 Error: expect value of type: Int64, use -h or --help to check more detailed help info -o, --option-a  Error: expect value of type: Int64, use -h or --help to check more detailed help info -o, --option-a  WARNING: Method definition command_main() in module TestLeafOptions at /home/pkgeval/.julia/packages/Comonicon/F3QqZ/src/codegen/julia.jl:90 overwritten on the same line (check for duplicate calls to `include`). WARNING: Method definition command_main(Array{String, 1}) in module TestLeafOptions at /home/pkgeval/.julia/packages/Comonicon/F3QqZ/src/codegen/julia.jl:90 overwritten on the same line (check for duplicate calls to `include`). Error: expect option --shots, use -h or --help to check more detailed help info  run Usage run [options] Options --name  name --shots  Flags  -h, --help Print this help message.  --version Print version. CommandError: a command error thrown exit with 128 throw-error Flags  -h, --help Print this help message. command exit with 0  issue218 Usage issue218  Commands print Flags  -h, --help Print this help message.  --version Print version. ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 #compdef _node node function _node() { # These are set by _arguments local context state state_descr line typeset -A opt_args _arguments -C \ '(- 1 *)'{-h,--help}'[show help information]' \ '(- 1 *)'--version'[show version information]' \ "1: :((cmd1\:'' cmd2\:''))" \ "*:: :->args" \ case $state in (args) case ${words[1]} in cmd1) _node_cmd1 ;; cmd2) _node_cmd2 ;; esac esac } function _node_cmd1() { # These are set by _arguments local context state state_descr line typeset -A opt_args _arguments -C \ '(- 1 *)'{-h,--help}'[show help information]' \ "1: :((cmd11\:''))" \ "*:: :->args" \ case $state in (args) case ${words[1]} in cmd11) _node_cmd1_cmd11 ;; esac esac } function _node_cmd1_cmd11() { _arguments \ '(- 1 *)'{-h,--help}'[show help information]' \ } function _node_cmd2() { _arguments \ '(- 1 *)'{-h,--help}'[show help information]' \ } ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Flag}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 ┌ Warning: Conversion to OrderedDict is deprecated for unordered associative containers (in this case, Dict{String, Option}). Use an ordered or sorted associative type, such as SortedDict and OrderedDict. │ caller = LeafCommand at types.jl:221 [inlined] └ @ Core ~/.julia/packages/Comonicon/F3QqZ/src/ast/types.jl:221 #compdef _leaf leaf function _leaf() { _arguments \ '(- 1 *)'{-h,--help}'[show help information]' \ '(- 1 *)'--version'[show version information]' \ {-o,--option-a}='[test]:int:_path_files' \ --option-b='[]:float64:_path_files' \ {-f,--flag-a}'[]' \ --flag-b'[]' \ "1:path:_path_files" \ "2::dir:_dir_list" \ "*::c:_path_files" \ } _node_completion() { local curr_word_idx=${1:-1} local curr_word="${COMP_WORDS[curr_word_idx]}" if [[ "$curr_word_idx" -eq "$COMP_CWORD" ]] then COMPREPLY=($(compgen -W "cmd1 cmd2 -h --help --version" -- "$curr_word")) return # return early if we're still completing the 'current' command fi case "$curr_word" in cmd1) _node_cmd1_completion $((curr_word_idx+1));; cmd2) _node_cmd2_completion $((curr_word_idx+1));; *) ;; esac } _node_cmd1_completion() { local curr_word_idx=${1:-1} local last_word="${COMP_WORDS[COMP_CWORD]}" local prev_word="${COMP_WORDS[COMP_CWORD-1]}" if [[ "$prev_word" == "=" ]] then prev_word="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ "$last_word" == "=" ]] then last_word="" fi case "$prev_word" in esac case "$last_word" in -*) # complete flag or option name COMPREPLY=($(compgen -o nospace -W "-h --help --version" -- "$last_word")) ;; *) # complete arguments # count which argument to complete local narguments=0 i=$curr_word_idx while [[ "$i" -lt "$COMP_CWORD" ]]; do s="${COMP_WORDS[i]}" case "$s" in -*) ;; *) (( narguments++ )) ;; esac (( i++ )) done (( narguments++ )) case "$narguments" in *) COMPREPLY=() ;; # too much arguments just ignore esac ;; esac } _node_cmd2_completion() { local curr_word_idx=${1:-1} local last_word="${COMP_WORDS[COMP_CWORD]}" local prev_word="${COMP_WORDS[COMP_CWORD-1]}" if [[ "$prev_word" == "=" ]] then prev_word="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ "$last_word" == "=" ]] then last_word="" fi case "$prev_word" in esac case "$last_word" in -*) # complete flag or option name COMPREPLY=($(compgen -o nospace -W "-h --help --version" -- "$last_word")) ;; *) # complete arguments # count which argument to complete local narguments=0 i=$curr_word_idx while [[ "$i" -lt "$COMP_CWORD" ]]; do s="${COMP_WORDS[i]}" case "$s" in -*) ;; *) (( narguments++ )) ;; esac (( i++ )) done (( narguments++ )) case "$narguments" in *) COMPREPLY=() ;; # too much arguments just ignore esac ;; esac } _node_completion_entry() { _node_completion 1 } complete -o nospace -F _node_completion_entry node _node_completion() { local curr_word_idx=${1:-1} local curr_word="${COMP_WORDS[curr_word_idx]}" if [[ "$curr_word_idx" -eq "$COMP_CWORD" ]] then COMPREPLY=($(compgen -W "cmd1 cmd2 -h --help --version" -- "$curr_word")) return # return early if we're still completing the 'current' command fi case "$curr_word" in cmd1) _node_cmd1_completion $((curr_word_idx+1));; cmd2) _node_cmd2_completion $((curr_word_idx+1));; *) ;; esac } _node_cmd1_completion() { local curr_word_idx=${1:-1} local curr_word="${COMP_WORDS[curr_word_idx]}" if [[ "$curr_word_idx" -eq "$COMP_CWORD" ]] then COMPREPLY=($(compgen -W "cmd11 -h --help --version" -- "$curr_word")) return # return early if we're still completing the 'current' command fi case "$curr_word" in cmd11) _node_cmd1_cmd11_completion $((curr_word_idx+1));; *) ;; esac } _node_cmd1_cmd11_completion() { local curr_word_idx=${1:-1} local last_word="${COMP_WORDS[COMP_CWORD]}" local prev_word="${COMP_WORDS[COMP_CWORD-1]}" if [[ "$prev_word" == "=" ]] then prev_word="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ "$last_word" == "=" ]] then last_word="" fi case "$prev_word" in esac case "$last_word" in -*) # complete flag or option name COMPREPLY=($(compgen -o nospace -W "-h --help --version" -- "$last_word")) ;; *) # complete arguments # count which argument to complete local narguments=0 i=$curr_word_idx while [[ "$i" -lt "$COMP_CWORD" ]]; do s="${COMP_WORDS[i]}" case "$s" in -*) ;; *) (( narguments++ )) ;; esac (( i++ )) done (( narguments++ )) case "$narguments" in *) COMPREPLY=() ;; # too much arguments just ignore esac ;; esac } _node_cmd2_completion() { local curr_word_idx=${1:-1} local last_word="${COMP_WORDS[COMP_CWORD]}" local prev_word="${COMP_WORDS[COMP_CWORD-1]}" if [[ "$prev_word" == "=" ]] then prev_word="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ "$last_word" == "=" ]] then last_word="" fi case "$prev_word" in esac case "$last_word" in -*) # complete flag or option name COMPREPLY=($(compgen -o nospace -W "-h --help --version" -- "$last_word")) ;; *) # complete arguments # count which argument to complete local narguments=0 i=$curr_word_idx while [[ "$i" -lt "$COMP_CWORD" ]]; do s="${COMP_WORDS[i]}" case "$s" in -*) ;; *) (( narguments++ )) ;; esac (( i++ )) done (( narguments++ )) case "$narguments" in *) COMPREPLY=() ;; # too much arguments just ignore esac ;; esac } _node_completion_entry() { _node_completion 1 } complete -o nospace -F _node_completion_entry node _leaf_completion() { local curr_word_idx=${1:-1} local last_word="${COMP_WORDS[COMP_CWORD]}" local prev_word="${COMP_WORDS[COMP_CWORD-1]}" if [[ "$prev_word" == "=" ]] then prev_word="${COMP_WORDS[COMP_CWORD-2]}" fi if [[ "$last_word" == "=" ]] then last_word="" fi case "$prev_word" in --option-a) COMPREPLY=($(compgen -o default -- "$last_word")) return ;; -o) COMPREPLY=($(compgen -o default -- "$last_word")) return ;; --option-b) COMPREPLY=($(compgen -o default -- "$last_word")) return ;; esac case "$last_word" in -*) # complete flag or option name COMPREPLY=($(compgen -o nospace -W "--flag-a -flag-a --flag-b -h --help --version --option-a= -o --option-b=" -- "$last_word")) ;; *) # complete arguments # count which argument to complete local narguments=0 i=$curr_word_idx while [[ "$i" -lt "$COMP_CWORD" ]]; do s="${COMP_WORDS[i]}" case "$s" in --option-a) if [[ "${COMP_WORDS[i+1]}" == "=" ]] then (( i+=2 )) else (( i+=1 )) fi ;; --option-b) if [[ "${COMP_WORDS[i+1]}" == "=" ]] then (( i+=2 )) else (( i+=1 )) fi ;; -*) ;; *) (( narguments++ )) ;; esac (( i++ )) done (( narguments++ )) case "$narguments" in 1) COMPREPLY=($(compgen -o default -- "$last_word")) ;; 2) COMPREPLY=($(compgen -d -- "$last_word")) ;; *) COMPREPLY=($(compgen -o default -- "$last_word")) ;; esac ;; esac } _leaf_completion_entry() { _leaf_completion 1 } complete -o nospace -F _leaf_completion_entry leaf Test Summary: | Pass Total Time codegen | 63 63 31.7s [ Info: creating /tmp/jl_MvGpOdwdCb Comonicon - Builder CLI. Builder CLI for Comonicon Applications. If not sepcified, run the command install by default. USAGE julia --project deps/build.jl [command] COMMAND install install the CLI locally. app (disabled, add [application] section in Comonicon.toml to enable) [tarball] build the application, optionally make a tarball. sysimg (disabled, add [sysimg] section in Comonicon.toml to enable) [tarball] build the system image, optionally make a tarball. tarball build application and system image then make tarballs for them. EXAMPLE julia --project deps/build.jl install install the CLI to ~/.julia/bin. julia --project deps/build.jl sysimg build the system image in the path defined by Comonicon.toml or in deps by default. julia --project deps/build.jl sysimg tarball build the system image then make a tarball on this system image. julia --project deps/build.jl app tarball build the application based on Comonicon.toml and make a tarball from it. unknown command: aaahelp Comonicon - Builder CLI. Builder CLI for Comonicon Applications. If not sepcified, run the command install by default. USAGE julia --project deps/build.jl [command] COMMAND install install the CLI locally. app (disabled, add [application] section in Comonicon.toml to enable) [tarball] build the application, optionally make a tarball. sysimg (disabled, add [sysimg] section in Comonicon.toml to enable) [tarball] build the system image, optionally make a tarball. tarball build application and system image then make tarballs for them. EXAMPLE julia --project deps/build.jl install install the CLI to ~/.julia/bin. julia --project deps/build.jl sysimg build the system image in the path defined by Comonicon.toml or in deps by default. julia --project deps/build.jl sysimg tarball build the system image then make a tarball on this system image. julia --project deps/build.jl app tarball build the application based on Comonicon.toml and make a tarball from it. Test Summary: | Pass Total Time builder | 17 17 11.5s activate  [flags] Args <path> the path of the environment Flags --shared whether activate the shared environment  -h, --help Print this help message. WARNING: replacing module PkgCmd. ┌ Warning: replacing command main in the registry └ @ Comonicon ~/.julia/packages/Comonicon/F3QqZ/src/frontend/utils.jl:35 WARNING: Method definition command_main() in module Main at /home/pkgeval/.julia/packages/Comonicon/F3QqZ/src/codegen/julia.jl:90 overwritten on the same line (check for duplicate calls to `include`). WARNING: Method definition command_main(Array{String, 1}) in module Main at /home/pkgeval/.julia/packages/Comonicon/F3QqZ/src/codegen/julia.jl:90 overwritten on the same line (check for duplicate calls to `include`). Test Summary: | Pass Total Time scripts | 10 10 2.3s Error: unknown command  main Usage main  Commands both none random Flags  -h, --help Print this help message.  --version Print version. Random is loaded Random is loaded LinearAlgebra is loaded Test Summary: | Pass Total Time example scripts | 4 4 1m13.1s Testing Comonicon tests passed Testing completed after 162.34s PkgEval succeeded after 184.93s