This blog post is the eighth in a series that describes the structure of the wink command line program that I have written in rust and that I use to invoke other Windows and Linux programs from bash and Windows shells under Windows Subsystem for Linux. This post describes the wince Unix sh shell script that I use to build, test, and install the wink program.
- Anatomy of a Rust Program, Part I: Wink cargo.toml – rustapopoulos.com
- /wince: Unix sh script uses cargo to manage building wink for Windows and Unix.
#!/bin/sh -x
Use the /bin/sh interpreter and echo invoked commands.
clear
Clear the screen to make it easier to fine the latest output from this wince command.
export RUST_BACKTRACE=full # or 1
Setting the RUST_BACKTRACE environment variable to 1 or full causes rust executables to generate more output.
rustup update
Update the rust tools.
projdir=/mnt/c/temp/wink # directory containing cargo.toml winbld='C:\temp\wink.build' # Windows path to directory for building Windows binary linstall=~/bin # WSL binary install path cd $projdir # avoid specifying project path for all commands
Specify some paths. It would probably be appropriate to specify $projdir on all command lines, but most command lines are long enough already, and it is redundant.
cmd="cargo check -v --workspace --all-features" result=$( $cmd 3>&1 1>&2 2>&3 | tee /dev/fd/2 )
The cargo check command is faster than compiling, so a quick way to identify errors before continuing. For unknown reasons, sometimes it fails even though the code is good, but generally works the first or second time. The redirects and tee allow capturing stdout from the command into the result variable.
result=$( find . -type f \( -iname "*.rs" -not -iname "invocablecategory.rs" \) -exec rustfmt -l -v {} \; 3>&1 1>&2 2>&3 | tee /dev/fd/2 )
The rustfmt command applies rust formatting conventions, rewriting the files in place.
rustfmt -l -v --config max_width=2500 ./src/wsl/inv/invocablecategory.rs
The invocablecategory.rs works better with long code lines.
set +x
Do not echo shell commands.
for f in "$(find . -iname \*.rs -print)"; do ls -l $f wc -clw $f done
List file sizes and character/line/word counts.
set -x
Echo shell commands.
cargo update -v
Update package dependencies.
cmd='cargo-clippy -v'
The cargo-clippy command suggests code improvements.
cmd="cargo test -v --workspace --all-features --target-dir $linbld -- --nocapture -- -epdv word a b c"
The cargo test command builds a binary with main not defined in /main.rs to invoke tests in /main.rs and code referenced from /main.rs and /lib.rs.
#cargo clean --target-dir /tmp/wink.build # kills build performance
Cargo clean removes artifacts from prior builds that improve performance for subsequent builds.
cmd="cargo build -v --target-dir $linbld --release"
Cargo build builds any required binaries for the package. I do not use debug build features; I build releases and test in production, which is my desktop.
cargo doc -v --target-dir $linbld # --open to open in browser
The cargo doc command builds HTML documentation from comments in the code.
ls -l ${linbld}/release/wink # show WSL binary file size and build date
The binary seems huge relative to the code volume, and not much different from the debug binary, but performs well.
rm ${linstall}/wink # remove installed WSL binary cp ${linbld}/release/wink $linstall # install new WSL binary
Install the Linux binary. To be honest, WSL could call the Windows binary from a bash shell, or wink could call the Windows binary from a bash shell, or a Windows shell could call bash.exe to invoke the Linux binary of wink, which would be best for putting a finger in Microsoft’s eye for not having migrated Windows to a Linux kernel after Windows NT. It is always better to invoke a binary, or even call wsl.exe or bash.exe, or when needed even wt.exe, rather than cmd.exe or explorer.exe.
cargo.exe build --release --target-dir "$winbld" # --release affects binary path below
Use the Windows version of cargo to build the Windows executable.
`wslpath ${winbld}`/release/wink.exe -ep > ${linbld}/doc/wink/wink.json # export JSON cp ${linbld}/doc/wink/wink.json . # copy JSON to project root for github
Use the Windows executable to export JSON, partly as a test, but also for github.
ls -l ${linbld}/doc/wink/wink.json # show JSON file size and touch time
Show JSON file size and touch time.
path=`cmd.exe /c echo %USERPROFILE% | sed -e 's/\r//g'` # install Windows binary to this directory in %PATH% path=`wslpath $path | sed -e 's/\r//g'`/AppData/Local/Microsoft/WindowsApps cp ${lwinbld}/release/wink.exe $path # install Windows binary
Install the Windows binary for cmd.exe and powershell.exe, which I only use for testing.
set +x
Do not echo shell commands.
${linstall}/wink $@ # run Linux build with parameters supplied on command line
Run the Linux binary.
cp /mnt/c/temp/wink/wince $linstall # install any updates to this wince shell script
Install any updates to this script (this line can result in error messages that are usually irrelevant).
cd - > /dev/null # revert to the previous directory exit 0
Then you just run a command like this and enter the matrix for about 20 seconds.
time wince -vepd word ; time wink -vepd word


+ export RUST_BACKTRACE=full + rustup update info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu' info: checking for self-updates stable-x86_64-unknown-linux-gnu unchanged - rustc 1.53.0 (53cb7b09b 2021-06-17) info: cleaning up downloads & tmp directories + projdir=/mnt/c/temp/wink + linbld=/tmp/wink.build + winbld=C:\temp\wink.build + wslpath C:\temp\wink.build + lwinbld=/mnt/c/temp/wink.build + linstall=/home/jw/bin + cd /mnt/c/temp/wink + cmd=time cargo check -v --workspace --all-features + time cargo check -v --workspace --all-features + tee /dev/fd/2 Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Checking wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=d401c06dfe575890 -C extra-filename=-d401c06dfe575890 --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=186c7c3475d472ea -C extra-filename=-186c7c3475d472ea --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta --extern wink=/tmp/debug/deps/libwink-d401c06dfe575890.rmeta` Finished dev [unoptimized + debuginfo] target(s) in 0.94s 0.77user 0.11system 0:01.06elapsed 83%CPU (0avgtext+0avgdata 184256maxresident)k 0inputs+672outputs (0major+46673minor)pagefaults 0swaps + result= Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Checking wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=d401c06dfe575890 -C extra-filename=-d401c06dfe575890 --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=186c7c3475d472ea -C extra-filename=-186c7c3475d472ea --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta --extern wink=/tmp/debug/deps/libwink-d401c06dfe575890.rmeta` Finished dev [unoptimized + debuginfo] target(s) in 0.94s 0.77user 0.11system 0:01.06elapsed 83%CPU (0avgtext+0avgdata 184256maxresident)k 0inputs+672outputs (0major+46673minor)pagefaults 0swaps + [ 0 -ne 0 ] + echo Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive+ v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh termegrep v0.7.0 Fresh -qi serde_json v1.0.64 error|warning Checking wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=d401c06dfe575890 -C extra-filename=-d401c06dfe575890 --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 -C metadata=186c7c3475d472ea -C extra-filename=-186c7c3475d472ea --out-dir /tmp/debug/deps -C incremental=/tmp/debug/incremental -L dependency=/tmp/debug/deps --extern derive_new=/tmp/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/debug/deps/libterm-b1d31558e3368d28.rmeta --extern wink=/tmp/debug/deps/libwink-d401c06dfe575890.rmeta` Finished dev [unoptimized + debuginfo] target(s) in 0.94s 0.77user 0.11system 0:01.06elapsed 83%CPU (0avgtext+0avgdata 184256maxresident)k 0inputs+672outputs (0major+46673minor)pagefaults 0swaps + time time cargo check -v --workspace --all-features + tee /dev/fd/2 Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Fresh wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo] target(s) in 0.06s 0.08user 0.00system 0:00.13elapsed 68%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4848minor)pagefaults 0swaps 0.08user 0.00system 0:00.13elapsed 69%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4933minor)pagefaults 0swaps + result= Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Fresh wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo] target(s) in 0.06s 0.08user 0.00system 0:00.13elapsed 68%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4848minor)pagefaults 0swaps 0.08user 0.00system 0:00.13elapsed 69%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4933minor)pagefaults 0swaps + [ 0 -ne 0 ] + + echoegrep Fresh unicode-xid -qi v0.2.2 error|warning Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Fresh wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo] target(s) in 0.06s 0.08user 0.00system 0:00.13elapsed 68%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4848minor)pagefaults 0swaps 0.08user 0.00system 0:00.13elapsed 69%CPU (0avgtext+0avgdata 18676maxresident)k 0inputs+0outputs (0major+4933minor)pagefaults 0swaps + time find . -type f ( -iname *.rs -not -iname invocablecategory.rs ) -exec rustfmt -l -v {} ; + tee /dev/fd/2 Formatting /mnt/c/temp/wink/src/helperror.rs Spent 0.003 secs in the parsing phase, and 0.000 secs in the formatting phase Formatting /mnt/c/temp/wink/src/helperror.rs Formatting /mnt/c/temp/wink/src/lib.rs Formatting /mnt/c/temp/wink/src/winkconfig.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocable.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategorylist.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invoker.rs Formatting /mnt/c/temp/wink/src/wsl/inv.rs Formatting /mnt/c/temp/wink/src/wsl.rs Spent 0.058 secs in the parsing phase, and 0.025 secs in the formatting phase Formatting /mnt/c/temp/wink/src/main.rs Spent 0.004 secs in the parsing phase, and 0.000 secs in the formatting phase Formatting /mnt/c/temp/wink/src/winkconfig.rs Spent 0.004 secs in the parsing phase, and 0.002 secs in the formatting phase Formatting /mnt/c/temp/wink/src/wsl/inv/invocable.rs Spent 0.003 secs in the parsing phase, and 0.001 secs in the formatting phase Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategorylist.rs Spent 0.002 secs in the parsing phase, and 0.001 secs in the formatting phase Formatting /mnt/c/temp/wink/src/wsl/inv/invoker.rs Spent 0.003 secs in the parsing phase, and 0.001 secs in the formatting phase Formatting /mnt/c/temp/wink/src/wsl/inv/invocable.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategorylist.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invoker.rs Formatting /mnt/c/temp/wink/src/wsl/inv.rs Spent 0.025 secs in the parsing phase, and 0.010 secs in the formatting phase Formatting /mnt/c/temp/wink/src/wsl/inv/invocable.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategorylist.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invoker.rs Formatting /mnt/c/temp/wink/src/wsl/inv.rs Formatting /mnt/c/temp/wink/src/wsl.rs Spent 0.038 secs in the parsing phase, and 0.011 secs in the formatting phase 0.75user 0.22system 0:01.79elapsed 54%CPU (0avgtext+0avgdata 18880maxresident)k 0inputs+0outputs (0major+36887minor)pagefaults 0swaps + result=0.75user 0.22system 0:01.79elapsed 54%CPU (0avgtext+0avgdata 18880maxresident)k 0inputs+0outputs (0major+36887minor)pagefaults 0swaps + [ 0 -ne 0 ] + echo 0.75user 0.22system 0:01.79elapsed 54%CPU (0avgtext+0avgdata+ 18880maxresident)k 0inputs+0outputs (0major+36887minor)pagefaults 0swaps egrep -qi error|warning + rustfmt -l -v --config max_width=2500 ./src/wsl/inv/invocablecategory.rs Formatting /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs /mnt/c/temp/wink/src/wsl/inv/invocablecategory.rs Spent 0.007 secs in the parsing phase, and 0.013 secs in the formatting phase + set +x -rwxrwxrwx 1 jw jw 432 Jun 24 17:01 ./src/helperror.rs -rwxrwxrwx 1 jw jw 7302 Jun 24 16:17 ./src/lib.rs -rwxrwxrwx 1 jw jw 1612 Jun 24 16:15 ./src/main.rs -rwxrwxrwx 1 jw jw 6375 Jun 24 16:32 ./src/winkconfig.rs -rwxrwxrwx 1 jw jw 3735 Jun 24 17:01 ./src/wsl.rs -rwxrwxrwx 1 jw jw 94 Jun 21 06:40 ./src/wsl/inv.rs -rwxrwxrwx 1 jw jw 7081 Jun 23 10:48 ./src/wsl/inv/invocable.rs -rwxrwxrwx 1 jw jw 53405 Jun 24 20:37 ./src/wsl/inv/invocablecategory.rs -rwxrwxrwx 1 jw jw 6725 Jun 23 16:30 ./src/wsl/inv/invocablecategorylist.rs -rwxrwxrwx 1 jw jw 8054 Jun 23 11:05 ./src/wsl/inv/invoker.rs 22 57 432 ./src/helperror.rs 218 611 7302 ./src/lib.rs 26 214 1612 ./src/main.rs 176 684 6375 ./src/winkconfig.rs 199 850 7081 ./src/wsl/inv/invocable.rs 611 3319 53405 ./src/wsl/inv/invocablecategory.rs 157 490 6725 ./src/wsl/inv/invocablecategorylist.rs 219 711 8054 ./src/wsl/inv/invoker.rs 4 12 94 ./src/wsl/inv.rs 142 403 3735 ./src/wsl.rs 1774 7351 94815 total + cargo update -v Updating crates.io index + cmd=time cargo-clippy -v + time cargo-clippy -v + tee /dev/fd/2 Checking wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo] target(s) in 0.77s 0.64user 0.09system 0:00.89elapsed 82%CPU (0avgtext+0avgdata 174072maxresident)k 0inputs+672outputs (0major+42528minor)pagefaults 0swaps + result= Checking wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo] target(s) in 0.77s 0.64user 0.09system 0:00.89elapsed 82%CPU (0avgtext+0avgdata 174072maxresident)k 0inputs+672outputs (0major+42528minor)pagefaults 0swaps + [ 0 -ne 0 ] + echo Checking+ wink v0.1.0 (/mnt/c/temp/wink) Finished dev [unoptimized + debuginfo]egrep target(s) -qi in error|warning 0.77s 0.64user 0.09system 0:00.89elapsed 82%CPU (0avgtext+0avgdata 174072maxresident)k 0inputs+672outputs (0major+42528minor)pagefaults 0swaps + cmd=time cargo test -v --workspace --all-features --target-dir /tmp/wink.build -- --nocapture -- -epdv word a b c + time cargo test -v --workspace --all-features --target-dir /tmp/wink.build -- --nocapture -- -epdv word a b c + tee /dev/fd/2 Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=2c659bbd243ff8ff -C extra-filename=-2c659bbd243ff8ff --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib` Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=8ce63657ac21f2ba -C extra-filename=-8ce63657ac21f2ba --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rmeta --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rmeta --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rmeta --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=442d9986badfd864 -C extra-filename=-442d9986badfd864 --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib` Finished test [unoptimized + debuginfo] target(s) in 1.82s Running `/tmp/wink.build/debug/deps/wink-2c659bbd243ff8ff --nocapture -- -epdv word a b c` running 6 tests thread 'tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/lib.rs:216:9 thread 'stack backtrace: winkconfig::tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/winkconfig.rs:wsl::tests::fail() 174:9 wsl::tests::get_user_home_default() thread 'wsl::tests::fail' panicked at 'wsl::tests::fail()', src/wsl.rs:89:9 test wsl::tests::get_user_home_default ... ok it_gets_from_command_line_args: { "cmd_name": "wink-2c659bbd243ff8ff", "verbose": true, "dry_run": true, "command_code": "word", "export": true, "pretty_print": true, "all_args": [ "/tmp/wink.build/debug/deps/wink-2c659bbd243ff8ff", "--", "-epdv", "word", "a", "b", "c" ], "cmd_args": [ "a", "b", "c" ] } Running `/tmp/wink.build/debug/deps/wink-442d9986badfd864 --nocapture -- -epdv word a b c` running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s Doc-tests wink Running `rustdoc --edition=2018 --crate-type lib --crate-name wink --test /mnt/c/temp/wink/src/lib.rs -L dependency=/tmp/wink.build/debug/deps -L dependency=/tmp/wink.build/debug/deps --test-args --nocapture --test-args -- --test-args -epdv --test-args word --test-args a --test-args b --test-args c --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib -C embed-bitcode=no --error-format human` running 0 tests test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s 4.17user 0.65system 0:02.10elapsed 229%CPU (0avgtext+0avgdata 247328maxresident)k 0inputs+69696outputs (0major+104425minor)pagefaults 0swaps + result= Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=2c659bbd243ff8ff -C extra-filename=-2c659bbd243ff8ff --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib` Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=8ce63657ac21f2ba -C extra-filename=-8ce63657ac21f2ba --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rmeta --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rmeta --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rmeta --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=442d9986badfd864 -C extra-filename=-442d9986badfd864 --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib` Finished test [unoptimized + debuginfo] target(s) in 1.82s Running `/tmp/wink.build/debug/deps/wink-2c659bbd243ff8ff --nocapture -- -epdv word a b c` thread 'tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/lib.rs:216:9 thread 'stack backtrace: winkconfig::tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/winkconfig.rs:174:9 thread 'wsl::tests::fail' panicked at 'wsl::tests::fail()', src/wsl.rs:89:9 Running `/tmp/wink.build/debug/deps/wink-442d9986badfd864 --nocapture -- -epdv word a b c` Doc-tests wink Running `rustdoc --edition=2018 --crate-type lib --crate-name wink --test /mnt/c/temp/wink/src/lib.rs -L dependency=/tmp/wink.build/debug/deps -L dependency=/tmp/wink.build/debug/deps --test-args --nocapture --test-args -- --test-args -epdv --test-args word --test-args a --test-args b --test-args c --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib -C embed-bitcode=no --error-format human` 4.17user 0.65system 0:02.10elapsed 229%CPU (0avgtext+0avgdata 247328maxresident)k 0inputs+69696outputs (0major+104425minor)pagefaults 0swaps + [ 0 -ne 0 ] + egrep -qi could not compile|warning|test result. FAILED|error. test failed + echo Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh itoa v0.4.7 Fresh regex-syntax v0.6.25 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh derive-new v0.5.9 Fresh regex v1.5.4 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=2c659bbd243ff8ff -C extra-filename=-2c659bbd243ff8ff --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib` Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=8ce63657ac21f2ba -C extra-filename=-8ce63657ac21f2ba --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rmeta --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rmeta --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rmeta --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=442d9986badfd864 -C extra-filename=-442d9986badfd864 --out-dir /tmp/wink.build/debug/deps -C incremental=/tmp/wink.build/debug/incremental -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib` Finished test [unoptimized + debuginfo] target(s) in 1.82s Running `/tmp/wink.build/debug/deps/wink-2c659bbd243ff8ff --nocapture -- -epdv word a b c` thread 'tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/lib.rs:216:9 thread 'stack backtrace: winkconfig::tests::it_has_a_path' panicked at 'it_has_a_path intentional panic to render path to parent of this tests module.', src/winkconfig.rs:174:9 thread 'wsl::tests::fail' panicked at 'wsl::tests::fail()', src/wsl.rs:89:9 Running `/tmp/wink.build/debug/deps/wink-442d9986badfd864 --nocapture -- -epdv word a b c` Doc-tests wink Running `rustdoc --edition=2018 --crate-type lib --crate-name wink --test /mnt/c/temp/wink/src/lib.rs -L dependency=/tmp/wink.build/debug/deps -L dependency=/tmp/wink.build/debug/deps --test-args --nocapture --test-args -- --test-args -epdv --test-args word --test-args a --test-args b --test-args c --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-b3cf7363a6486908.rlib --extern serde=/tmp/wink.build/debug/deps/libserde-914d23fcdc0943b9.rlib --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-00a0ad80c3255f73.rlib --extern term=/tmp/wink.build/debug/deps/libterm-7bf2457214a941c6.rlib --extern wink=/tmp/wink.build/debug/deps/libwink-8ce63657ac21f2ba.rlib -C embed-bitcode=no --error-format human` 4.17user 0.65system 0:02.10elapsed 229%CPU (0avgtext+0avgdata 247328maxresident)k 0inputs+69696outputs (0major+104425minor)pagefaults 0swaps + cmd=time cargo build -v --target-dir /tmp/wink.build --release + time cargo build -v --target-dir /tmp/wink.build --release + tee /dev/fd/2 Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh regex-syntax v0.6.25 Fresh itoa v0.4.7 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=4cb40f2fac1cd51f -C extra-filename=-4cb40f2fac1cd51f --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rmeta --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rmeta --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rmeta --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C metadata=64fa342bc94534f1 -C extra-filename=-64fa342bc94534f1 --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rlib --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rlib --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rlib --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rlib --extern wink=/tmp/wink.build/release/deps/libwink-4cb40f2fac1cd51f.rlib` Finished release [optimized] target(s) in 2.72s 9.52user 0.28system 0:02.79elapsed 350%CPU (0avgtext+0avgdata 285136maxresident)k 0inputs+16944outputs (0major+71278minor)pagefaults 0swaps + result= Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh regex-syntax v0.6.25 Fresh itoa v0.4.7 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=4cb40f2fac1cd51f -C extra-filename=-4cb40f2fac1cd51f --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rmeta --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rmeta --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rmeta --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C metadata=64fa342bc94534f1 -C extra-filename=-64fa342bc94534f1 --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rlib --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rlib --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rlib --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rlib --extern wink=/tmp/wink.build/release/deps/libwink-4cb40f2fac1cd51f.rlib` Finished release [optimized] target(s) in 2.72s 9.52user 0.28system 0:02.79elapsed 350%CPU (0avgtext+0avgdata 285136maxresident)k 0inputs+16944outputs (0major+71278minor)pagefaults 0swaps + [ 0 -ne 0 ] + sed -e s/error.format/3rror.format/g + egrep -qi error|warning + echo Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh regex-syntax v0.6.25 Fresh itoa v0.4.7 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Compiling wink v0.1.0 (/mnt/c/temp/wink) Running `rustc --crate-name wink --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=4cb40f2fac1cd51f -C extra-filename=-4cb40f2fac1cd51f --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rmeta --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rmeta --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rmeta --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rmeta` Running `rustc --crate-name wink --edition=2018 src/main.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C embed-bitcode=no -C metadata=64fa342bc94534f1 -C extra-filename=-64fa342bc94534f1 --out-dir /tmp/wink.build/release/deps -L dependency=/tmp/wink.build/release/deps --extern derive_new=/tmp/wink.build/release/deps/libderive_new-590e687adc52fd7b.so --extern regex=/tmp/wink.build/release/deps/libregex-d77a181d4ffe1a8f.rlib --extern serde=/tmp/wink.build/release/deps/libserde-2032a7dd4fa55574.rlib --extern serde_json=/tmp/wink.build/release/deps/libserde_json-a846dacdde46c89d.rlib --extern term=/tmp/wink.build/release/deps/libterm-b564b897c8d84976.rlib --extern wink=/tmp/wink.build/release/deps/libwink-4cb40f2fac1cd51f.rlib` Finished release [optimized] target(s) in 2.72s 9.52user 0.28system 0:02.79elapsed 350%CPU (0avgtext+0avgdata 285136maxresident)k 0inputs+16944outputs (0major+71278minor)pagefaults 0swaps + time cargo doc -v --target-dir /tmp/wink.build Fresh unicode-xid v0.2.2 Fresh cfg-if v1.0.0 Fresh regex-syntax v0.6.25 Fresh itoa v0.4.7 Fresh proc-macro2 v1.0.27 Fresh quote v1.0.9 Fresh libc v0.2.97 Fresh memchr v2.4.0 Fresh ryu v1.0.5 Fresh syn v1.0.73 Fresh dirs-sys-next v0.1.2 Fresh aho-corasick v0.7.18 Fresh serde_derive v1.0.126 Fresh dirs-next v2.0.0 Fresh regex v1.5.4 Fresh derive-new v0.5.9 Fresh serde v1.0.126 Fresh term v0.7.0 Fresh serde_json v1.0.64 Documenting wink v0.1.0 (/mnt/c/temp/wink) Running `rustdoc --edition=2018 --crate-type lib --crate-name wink src/lib.rs -o /tmp/wink.build/doc --error-format=json --json=diagnostic-rendered-ansi -L dependency=/tmp/wink.build/debug/deps --extern derive_new=/tmp/wink.build/debug/deps/libderive_new-f4a32d1b166a72c0.so --extern regex=/tmp/wink.build/debug/deps/libregex-ce229bf00f1a9055.rmeta --extern serde=/tmp/wink.build/debug/deps/libserde-5e0466a5ac1608e4.rmeta --extern serde_json=/tmp/wink.build/debug/deps/libserde_json-0895eb5a0ecbdb48.rmeta --extern term=/tmp/wink.build/debug/deps/libterm-b1d31558e3368d28.rmeta --crate-version 0.1.0` Finished dev [unoptimized + debuginfo] target(s) in 4.59s 0.89user 0.61system 0:04.68elapsed 32%CPU (0avgtext+0avgdata 319932maxresident)k 0inputs+8608outputs (0major+19940minor)pagefaults 0swaps + ls -l /tmp/wink.build/release/wink -rwxr-xr-x 2 jw jw 5564440 Jun 24 20:37 /tmp/wink.build/release/wink + rm /home/jw/bin/wink + cp /tmp/wink.build/release/wink /home/jw/bin + time cargo.exe build --release --target-dir C:\temp\wink.build Compiling wink v0.1.0 (C:\temp\wink) Finished release [optimized] target(s) in 4.16s 0.00user 0.02system 0:04.43elapsed 0%CPU (0avgtext+0avgdata 1012maxresident)k 0inputs+0outputs (0major+85minor)pagefaults 0swaps + wslpath C:\temp\wink.build + /mnt/c/temp/wink.build/release/wink.exe -ep + ls -l /tmp/wink.build/doc/wink/wink.json -rw-r--r-- 1 jw jw 168719 Jun 24 20:37 /tmp/wink.build/doc/wink/wink.json + cp /tmp/wink.build/doc/wink/wink.json . + cmd.exe /c echo %USERPROFILE% + sed -e s/\r//g + path=C:\Users\ms + wslpath C:\Users\ms + sed -e s/\r//g + path=/mnt/c/Users/ms/AppData/Local/Microsoft/WindowsApps + cp /mnt/c/temp/wink.build/release/wink.exe /mnt/c/Users/ms/AppData/Local/Microsoft/WindowsApps + time /home/jw/bin/wink -vepd word { "command_code": "word", "description": "Microsoft Word", "command": "$pf64/Microsoft Office/root/Office16/WINWORD.EXE", "use_cmd": false, "use_start": false, "background": false, "use_call": false, "use_explorer": false, "use_bash": false, "arguments": [] } /mnt/c/Program Files/Microsoft Office/root/Office16/WINWORD.EXE 0.03user 0.00system 0:00.16elapsed 25%CPU (0avgtext+0avgdata 3492maxresident)k 3816inputs+0outputs (20major+497minor)pagefaults 0swaps + cp /mnt/c/temp/wink/wince /home/jw/bin + cd - + exit 0 real 0m19.822s user 0m17.165s sys 0m2.292s { "command_code": "word", "description": "Microsoft Word", "command": "$pf64/Microsoft Office/root/Office16/WINWORD.EXE", "use_cmd": false, "use_start": false, "background": false, "use_call": false, "use_explorer": false, "use_bash": false, "arguments": [] } /mnt/c/Program Files/Microsoft Office/root/Office16/WINWORD.EXE real 0m0.108s user 0m0.010s sys 0m0.009s
Or with no command line arguments, just wince.

Here is the current complete output from wink help. Yes, I see many typos in all of this too.
[2021-06-24 22:08:37]:jw@HAL9000-6WQ9TQ2:/mnt/c/temp/wink $ wink -help ----------------------------------------------------------------------------- wink : access Windows and WSL features : Help requested by -help ----------------------------------------------------------------------------- wink : invoked as : wink -help ----------------------------------------------------------------------------- wink EXP explorer.exe ----------------------------------------------------------------------------- wink EXP <file.ext> Set/open default application for extension wink EXP <shell:sendto> Invoke command code (replace <shell:sendto>) ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- wink CMD cmd.exe /c ----------------------------------------------------------------------------- wink CMD <cmd> [args] Invoke Windows console command line wink CMD echo %PATH% Display Windows environment variable ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- wink BASH bash.exe -c ----------------------------------------------------------------------------- wink BASH /path [args] Invoke shell command line wink BASH echo '$USER' Display WSL environment variable ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- wink CODE [args] See command code tables below ----------------------------------------------------------------------------- Applications ----------------------------------------------------------------------------- 7Z 7-Zip compressed file manager AUDACITY Audacity audio file editor DESKPINS DeskPins DOTPEEK JetBrains dotPeek .NET disassembler EDGE Microsoft Edge EMAIL Default email program FIREFOX Mozilla Firefox browser FLP Agent Ransack file search tool FOOBAR Foobar2000 music player IRFAN IfranView Media Viewer KILLSLAK Kill Zoom KILLZOOM Kill Zoom LINQPAD LINQPad for C# MDP MarkdownPad2 POSTMAN Postman RANSACK Mozilla Thunderbird email client RIDER JetBrains Rider IDE SKYPE Skype SLACK Slack SPOTIFY Spotify SUB Sublime Text Editor TB Mozilla Thunderbird email client TEAMS Microsoft Teams TRACKME Microsoft Edge VLC VLC Media Player VS Microsoft Visual Studio VSCODE Microsoft Visual Studio Code WINMERGE WinMerge file and directory comparison tool ZOOM Zoom Ease of Access ----------------------------------------------------------------------------- CAPTIONS Ease of Access closed captioning settings EAAUDIO Ease of Access audio settings EACOLFLT Ease of Access color filter EADISP Ease of Access display settings EAEYEC Ease of Access eye control EAHIGHC Ease of Access high contrast EAKEYB Ease of Access keyboard settings EAMAG Ease of Access magnifier EAMOUSE Ease of Access mouse settings EANAR Ease of Access narrator settings EASE Ease of Access Settings EASPEECH Ease of Access speech recognition settings EATCUR Ease of Access text cursor settings Features ----------------------------------------------------------------------------- DEFAULTS Default Programs DELIVOPT Microsoft Updates Delivery Optimization Settings FEATURES Optional Apps and Features Settings OPTIONAL Optional Features Settings PROGRAMS Uninstall or Change a Program UPDATE Windows Update UPDATEAH Windows Update Active Hours Settings UPDATEH Windows Update History UPDATEO Windows Update Advanced Option Settingss UPDATER Windows Update Restart Options Settings Linux ----------------------------------------------------------------------------- BASH Run the Unix command specified on the command line GEDIT gedit (graphical editor) GIMP gimp (image manipulation) GOOGLE-CHROME google-chrome (browser) GOWINDOW GoWindow (God Mode) LVLC Linux VLC (media player) MICROSOFT-EDGE microsoft-edge (brower) NAUTILUS nautilus (file browser) WINCE Run the shell script that recompiles this program XCALC xcalc (calculator) XCLOCK xclock (visual clock) XEYES xeyes (visual eyeballs) XGC xgc (graphics demo) XLOGO xlogo (visual X logo) XMAN xman (man pages) XMORE xmore (read-only text UI) Locations ----------------------------------------------------------------------------- ACCTPICT shell:AccountPictures ADDNPROG shell:AddNewProgramsFolder ADMTOOLS shell:Common Administrative Tools ALLSTART Common Startup Folder APPDATA shell:AppData APPS Applications folder BURN shell:CD Burning CHNGPROG shell:ChangeRemoveProgramsFolder COMMONPL Common Places CONTACTS shell:Contacts COOKIES shell:Cookies CREDS shell:CredentialManager CRYPKEYS shell:Cryptokeys DESKTOP User desktop folder DOCLIB shell:DocumentsLibrary DOWNLOAD shell:Downloads DPAPIKEY shell:DpAPIKeys EXPSRCH shell:SearchHomeFolder FAVS Favorites folder FONTSDIR shell:Fonts FREQ Frequently accessed folders FSMGMT Shared Folders GAMEXP shell:PublicGameTasks HISTORY shell:History HOMEGRP Home Group folder IMPAPPSC shell:ImplicitAppShortcuts INETCACH shell:cache LIBS shell:Libraries LINKS shell:Links MAIL outlookmail: MEDIASRV Media Servers MSVIDEO microsoftvideo: MYDOCS My Documents MYVIDEO shell:My Video PC This Computer PICTLIB shell:PicturesLibrary PLAYLIST shell:playlists PORTDEV Portable Devices folder PRINTHOOD shell:PrintHood PRINTRSF shell:PrintersFolder PROFILEF shell:Profile PROGF C:\Program Files PROGF86 C:\Program Files (x86) PROGFC C:\Program Files\Common Files PROGFC86 C:\Program Files (x86)\Common Files PROGRAMF shell:Programs PROGRAMSC Shared programs folder PUBDESK Common desktop folder PUBDOCS shell:Common Documents PUBDOWN shell:CommonDownloads PUBLIC shell:Public PUBVIDEO shell:CommonVideo QUICK shell:Quick Launch RECENT shell:recent RECYC Recycle bin folder REMOVABL Removable Devices folder RESOURCE shell:ResourceDir RINGTONC shell:CommonRingtones RINGTONE shell:Ringtones ROAMTILE %USERPROFILE%\AppData\Local\Microsoft\Windows\RoamingTiles SAVEGAME shell:SavedGames SAVELOC Change where new content is saved SEARCHES shell:Searches SENDTO shell:sendto STARTALL shell:Common Start Menu STARTME shell:Start Menu STARTUP User Startup Folder SYS32 shell:System SYS86 shell:Systemx86 TEMPLATES shell:templates THISDEV This Device folder UNUPDATE Installed Updates/Uninstall an Update USERPINS shell:User Pinned VIDLIB shell:VideosLibrary WINDOWSF shell:Windows Microsoft Office ----------------------------------------------------------------------------- EXCEL Microsoft Excel OA Microsoft Outlook Attach File <path> OC Microsoft Outlook Compose OD Microsoft OneDrive OM Microsoft Outlook Compose To <email> ONENOTE Microsoft OneNote OUTLOOK Microsoft Outlook PPT Microsoft PowerPoint WORD Microsoft Word Miscelaneous ----------------------------------------------------------------------------- INSIDER Microsoft Windows Insider Program QUICKASS Windows Quick Assist SHOWD Show Windows desktop TROUBLE Troubleshooting Windows WINTAB Switch windows (Windows+Tab) WUPDATE Update WSL Networking ----------------------------------------------------------------------------- ADDNETP Add Network Place ADDPHONE Mobile Devices/Add Phone BLUETOO Bluetooth settings DIALUP Dialup Networking settings ETHERNET Ethernet LAN Cable networking settings FLUSHDNS Flush DNS Cache HOTSPOT Mobile Hotspot Wi-Fi network settings NETAVAIL Available networks NETCON Network Connections folder NETHOOD Network Shortcuts NETSHARE Network and Sharing Center NETSTAT Network status settings PROXY Network Proxy settings REMOTEAPP RemoteApp and Desktop Connections VPN Virtual Private Network settings WHEELSUP Airplane Mode settingse WIFINETS Wi-Fi Network settings WIFISETS Wi-Fi Network settings YURPHONE Mobile Devices/Your Phone Privacy ----------------------------------------------------------------------------- MICCHECK Microphone privacy settings PAPPDIAG App Diagnostics privacy settings PAUTODWN Automatic File Downloads privacy settings PBACKAPP Background Apps privacy settings PCALLH Call History privacy settings PCALLS Phone Calls privacy settings PCALS Calendar privacy settings PCAM ms-settings:privacy-webcam PCONTACT ms-settings:privacy-contacts PDEV Custom/Other Devices privacy settings PDOC Documents privacy settings PDOCS ms-settings:privacy-documents PEMAIL Email privacy settings PFEED ms-settings:privacy-feedback PFS File system access privacy settings PHIST ms-settings:privacy-activityhistory PMSG Messaging privacy settings PMYINFO Accoung Information privacy settings PNAGS Notifications privacy settings PPICS ms-settings:privacy-pictures PRADIOS ms-settings:privacy-radios PRIVACY Privacy settings control panel PSPEECH ms-settings:privacy-speech PTASKS ms-settings:privacy-tasks PTYPE ms-settings:privacy-speechtyping PVOICEA ms-settings:privacy-voiceactivation SRCHPRM Permissions and History STALKME Location privacy settings Screen Savers ----------------------------------------------------------------------------- 3DTSS 3D Text Screen Saver 3DTSSS 3D Text Screen Saver settings 3DTSSW 3D Text Screen Saver window BLANK Blank Screen Saver BUBBLES Bubbles Screen Saver BUBBLESS Bubbles Screen Saver settings BUBBLESW Bubbles Screen Saver window DEFAULTSS Default Screen Saver MYSTIFY Mystify Screen Saver MYSTIFYW Mystify Screen Saver window PHOTOSS Photos Screen Saver PHOTOSSS Photos Screen Saver settings PHOTOSSW Photos Screen Saver window RIBBONS Ribbons Screen Saver RIBBONSS Ribbons Screen Saver settings RIBBONSW Ribbons Screen Saver window SSS Screen Saver Settings Security ----------------------------------------------------------------------------- ADVSEC Advanced firewall security settings AUTHMAN Security Authorization Manager BITLOCK Bitlocker Drive Encryption CERTLM Security Certificate Manager - Local Machine CERTMGR Security Certificate Manager - Current User CREDWIZ Stored Usernames and Passwords EUP Edit User Profiles FACESIGN Face recognition security settings FINGSIGN Fingerprint recognition security settings FIREWALL Firewall security settings GPEDIT Local Group Policy Editor KEYSIGN Security key (USB) security settings LUSRMGR Local Users and Groups PSR Steps Recorder REKEYWIZ Encrypt Filesystem with Certificate SECCNTR Windows Security Center/Security at a Glance SECMAN Security and Maintenance control panel SECPOL Security Policy SIGNIN Security sign-in settings SYSCERTS System Security Certificates UAC UserAccountControlSettings.exe UPSIGN Security dynamic lock settings USER User Accounts USERACTS Security User Accounts USERPASS control.exe USERS User Profiles WINSEC Windows Security Settings Settings ----------------------------------------------------------------------------- ABOUT About settings ACTIVATE Activate Windows ACTIVATN Windows activation settings AUTOPLAY Autoplay Settings (defaults) AUTOPLYD Autoplay Settings by Device type BACKGROUND Desktop background settings BACKUP Backup settings BATTERY Battery settings CAPTURES Screen capture settings CLP Clipboard settings COLORS Windows Colors settings CONDEV Connected devices (bluetooth and other devices) settings CONTROL Control Panel (small icons) CPCATS Control Panel (categories) CROSSDEV Shared experiences accross devices settings DATAUSE Data usage settings DATETIME Date and time settings DEFAULT Choose default applications settings DEV Developer settings DEVDISC Connectable device discovery settings DEVICES Devices and Printers DEVMAN Device Manager control pane DISPLAY Display settings FILEHIST File History FILEOPT File Explorer settings FINDMYDV Find my device settings FOCUS Quiet hours/focus assist settungs FONTVIEW Font Viewer GAMEBAR Game bar settings GAMEMODE Game mode settings GRAPHICS Advanced graphics settings INET Internet control panel INTL Region ISCSICPL iSCSI JOY Game Controllers control panel KEYBOARD Keyboard settings LANGUAGE Regional language settings LOC Location Information control panel LOCK Lock screen settings MAPS Map settings MORFONTS More Font settings MOUSE Mouse control panel MOUSESET Mouse settings MULTITSK Multitasking settings NAGS Notification settings NIGHT Night light settings OFFLMAPS Offline map settings OLDFONTS Legacy fonts control panel OTHERUSR Other users settings PEN Pen input settings PERFOPT Performance Options PERSONAL Personalization settings POWER Power control panel POWS Power and Sleep settings PRNTSCAN Printer and Scanner settings PROJECT Project (dark gray sidebar at right of screen) PROJECTME Projecting to this PC RDSET ms-settings:remotedesktop RECOVER Recovery settings REGION Regional formatting settings SCALING ms-settings:display-advanced SETEMAIL Email and Accounts settings SETSPCH ms-settings:speech SETSTART ms-settings:startupapps SETTINGS Settings control panel SETVIDEO ms-settings:videoplayback SIGVERIF File Signature Verification SOUND Sound control panel SOUNDDEV ms-settings:sound-devices SOUNDS Sound settings SPEECH Configure your speech recognition experience SRCHSETS Windows Search (Cortana) Settings START Start Menu personalization settings STARTFOL Personalize/choose which folders appear on the start menu STORPOL Storage Policies STORSENS Storage Sense STORSP Manage Storage Spaces SYNCSET Sync Settings...settings SYSPROP Sound Properties control panel TABLET Tablet Mode settings TASKBAR Taskbar settings THEMES Windows Themes settings TIMEDATE Date and Time control panel TOUCHPAD Touchpad settings TYPING Typing settings USB USB settings UTILMAN Utility Manager (display) VOL Volume settings WEBAPPS ms-settings:appsforwebsites WORKPLC Workplace or school settings YOURINFO Your Information Shutdown ----------------------------------------------------------------------------- BOOT Reboot BOOTOPT Reboot to boot options DOWN Shut down FIRMWARE Reboot to firmware HYB Hybernate LOGOFF Log off SHUTUI Shutdown UI Sysinternals.com ----------------------------------------------------------------------------- AUTORUNS Identify and control startup processes BGINFO Set desktop background to system information DISKVIEW Disk space usage visualizer DU Disk usage HANDLE List open file handles LISTDLLS List processes and their DLLs PROCEXP Process Explorer PROCMON Process Monitor PSKILL Process killer PSLIST Process lister ZOOMIT crash it, change it, mail – upgrade it, Charge it, point it, zoom it, press it, Snap it, work it, quick – erase it...Technologic Utilities ----------------------------------------------------------------------------- ALARMS Alarmns & Clock BACKUP7 Windows 7 backup BINGMAPS Bing Maps BINGNEWS Bing News CAL Calendar CALC Calculator CAM Camera CDINFO Crystal Disk Info CHARMAP Character Map CHKDSK Check hard disk for errors and issues CLEANMGR Disk Cleanup CLICONFG SQL Server Client Network Utility CLOCK Clock CMD cmd.exe (see above) COLORCPL Color Management COMPMGMT Computer Management COMSERV Component Services Configuration CTTUNE Clear Type Text Tuner DEVMODE DevModeRunAsUserConfig.msc DFRGUI Optimize Hard Drives DIALER Phone Dialer DISKMAN Disk Management DISKPART Disk partitioner DPAPIMIG Protected Content Migration DVDPLAY DVD player (Windows Media Player) DXDIAG DirectX Diagnostics Tool EDITENV Edit environment variables ENV Show Windows environment EUDCEDIT Private Character Editor EVENTVWR Windows Event Viewer EXP explorer.exe (see above) FAM Ask for permission (family) FAXSCAN Windows Fax and Scan FSQUIRT Bluetooth File Transfer FXSCOVER Fax Cover Page Editor GROOVE Microsoft Groove Music HDWWIZ Add Hardware Wizard IEXPLORE Internet Explorer IEXPRESS Create a Self-Extracting Executable ISOBURN ISO disk burner KIOSK Set up a Kiosk LPKSETUP Language Pack Setup MAGNIFY Screen magnifier MDSCHED Windows Memory Diagnostics MMC Microsoft Management Console MOBILITY Windows Mobility Center MOVIES Microsoft Windows Video (Movies and TV) MP Windows Media Player MRT Malicious Software Removal Tool MSACT Windows Action Center (right dark gray sidebar) MSCONFIG Microsoft Configuration tool MSDT Microsoft Support Diagnostics Tool MSINFO32 System Information NOTEPAD Windows Notepad ODBCCONF odbcconf.exe OSK On-screen keyboard PAINT Windows Paint PAINT3D Paint3D PEOPLE People PERFMON Performance Monitor PHOTOS Photos and Video Editor PRESSET Presentation Settings PRINTMAN Print Management PRINTMIG Printer Migration PRINTUI Print User Interface PSISE PowerShell Integrated Scripting Environment (ISE) PWRD keymgr.dll,PRShowSaveWizardExW RASPHONE Remove Access Phonebook RD Remote Desktop Client RECDISC Create a system repair disk REGEDT32 Windows Registry Editor REMOTEAS Windows Remote Assistance RESMON Windows Resource Monitor RESTORE Restore system files and settings RSOP Resultant Set of Policy RUN Windows Run Dialog SCAN Scan SCLIP Screen capture (Windows+Shift+S) SERVICES Windows Services SHRPUBW Create Shared Folder Wiard SNDVOL Sound and Volume SNIPTOOL SnippingTool SOL Solitare SOUNDREC Sound Recorder SSKETCH Snip and sketch STIKYNOT Sticky Notes STORE Microsoft store SUPPORT Microsoft support SYNC Sync Center TABCAL Digitizer Calibration Tool TASKMGR Windows Task Manager TASKSCHD Windows Task Scheduler TIPS Windows tips / getting started TPM Trusted Platform Module TPM.MSC Trusted Platform Module Management on Local Computer VERIFIER Driver Verifier Manager WINTOOLS Windows Tools WINVER Windows Version WMIMGMT WMI Management WORDPAD Windows Wordpad WUSA Windows Update Standalone Installer wink : 459 known command codes wink : access Windows features : Help requested by -help wink [opts] <CODE> [arguments] -d dry (do not execute) -e export (configuraiton JSON) -p pretty-print (for use with -e) -v verbose (print command line) wink HELP : display command usage information wink HELP | grep -i "text" # identify command code matching text
3 thoughts on “Anatomy of a Rust Program, Part VIII: Anatomy of a Cargo Build Script”