diff --git a/.gitignore b/.gitignore index bd4f4d0..4044385 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ .task.mk .venv +!docs/examples/**/.task.mk diff --git a/README.md b/README.md index 0ca6a78..1c0a463 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,7 @@

Documentation

- -
GNU make is an excellent build tool and the task runner we love to hate, but can't escape. @@ -19,20 +17,22 @@ So let's improve the UX to make it the best task runner it can be. to add some QOL improvements for your users and fellow maintainers. Current Features: - - ANSI escape code support (including NO_COLOR) + + - ANSI escape code support (including NO_COLOR) - formatted help output - custom print function - confirmation prompt + - goal phonifier (disabled by default) Depends on `GNU Make`, obviously and `Python >=3.7`, and `bash` (or `zsh`). Wait python?!?!, I'm not `pip` installing some package just to parse my makefile. I agree, all you need is one file [`.task.mk`](./task.mk). -You can automagically include it with just two additional lines to your `Makefile` (and probably one to your `.gitignore`) and your good to go. +You can automagically include it with just two additional lines to your `Makefile` (and probably one to your `.gitignore`) and you're good to go. ## Setup -One line setup: +One line setup to download .task.mk and add appropriate includes to your `Makefile`. ```bash bash <(curl -fsSL gh.dayl.in/task.mk/init) # or w/ TASKMK_VERSION= ``` @@ -45,7 +45,7 @@ If someone tries to invoke `make help` it will download `.task.mk` for them. $(if $(filter help,$(MAKECMDGOALS)),$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/v23.1.1/task.mk -o .task.mk)) ``` -You might also consider making it a consistently downloaded dependency if you plan to use any of it's advanced feature set, by dropping the `$(MAKECMDGOALS)` check. +If you plan to use any features besides the help prompt you may want to instead commit `.task.mk` to version control or drop the `$(MAKECMDGOALS)` check so it's always downloaded once `make` is invoked. ```make -include .task.mk @@ -53,21 +53,3 @@ $(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent. ``` For more info see the [documentation](https://gh.dayl.in/task.mk). - -## Simpler Alternative - -But I just want a basic help output, surely I don't need python for this... you would be right. -`Task.mk` replaces my old `make help` recipe boilerplate which may better serve you (so long as you have `sed`/`awk`). - - -```make -## h, help | show this help -### additional text printed with the help -.PHONY: help h -help h: Makefile - @awk -v fill=$(shell sed -n 's/^## \(.*\) | .*/\1/p' $< | wc -L)\ - 'match($$0,/^## (.*) \|/,name) && match($$0,/\| (.*)$$/,help)\ - {printf "\033[1;93m%*s\033[0m | \033[30m%s\033[0m\n",\ - fill,name[1],help[1];} match($$0,/^### (.*)/,str) \ - {printf "%*s \033[30m%s\033[0m\n",fill," ",str[1];}' $< -``` diff --git a/docs/assets/help.svg b/docs/assets/help.svg index c4b2bca..83dd2fe 100644 --- a/docs/assets/help.svg +++ b/docs/assets/help.svg @@ -1,4 +1,4 @@ - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - make help + make help - + - - usage: -make <recipe> - -  Turn your `Makefile` into -  the task runner you always needed. -  See the example output below. - -          task.mk development           -  ────────────────────────────────────────── -  bootstrap │ generate local dev environment -    l, lint │ lint the python -     assets │ generate assets -    release │ release new version of task.mk -   c, clean │ remove the generated files -  ────────────────────────────────────────── - -      examples of task.mk features      -  ────────────────────────────────────────── -     list-% │ use pathlib.Path to list files -name the directory in rule (make list-src) -       info │ demonstrate usage of tprint -      check │ get user confirmation or exit -  ────────────────────────────────────────── -    h, help │ show this help - -for more info: github.com/daylinmorgan/task.mk + + usage: +make <recipe> + +  Turn your `Makefile` into +  the task runner you always needed. +  See the example output below. + +          task.mk development           +  ────────────────────────────────────────── +  bootstrap │ generate local dev environment +     l lint │ lint the python +     assets │ generate assets +    release │ release new version of task.mk +    c clean │ remove the generated files +       info │ demonstrate usage of tprint +     h help │ show this help + +for more info: gh.dayl.in/task.mk diff --git a/docs/examples/.bashrc b/docs/examples/.bashrc deleted file mode 100644 index 85f6e24..0000000 --- a/docs/examples/.bashrc +++ /dev/null @@ -1 +0,0 @@ -export PS1='task.mk demo % ' diff --git a/docs/examples/Makefile b/docs/examples/Makefile index 3c0f669..46d25c2 100644 --- a/docs/examples/Makefile +++ b/docs/examples/Makefile @@ -1,18 +1,13 @@ MAKEFLAGS += --no-print-directory -COLS ?= 60 -ROWS ?= 20 -EXAMPLES := check embedded recipe-help -CASTS := $(addsuffix /demo.cast, $(EXAMPLES)) +EXAMPLES := check embedded recipe-help phonify +GIFS := $(addsuffix /demo.gif, $(EXAMPLES)) -all: $(CASTS) +all: $(GIFS) -%/demo.cast: %/record.sh - asciinema rec --cols $(COLS) --rows $(ROWS) --overwrite -c $< $@ - -check/demo.cast: COLS = 48 -check/demo.cast: ROWS = 12 +%/demo.gif: %/demo.tape %/Makefile + cd $* && vhs < demo.tape clean: - rm -rf $(CASTS) + rm -rf $(GIFS) -.PHONY:all clean +.PHONY: all clean diff --git a/docs/examples/check/.task.mk b/docs/examples/check/.task.mk new file mode 120000 index 0000000..039c0ec --- /dev/null +++ b/docs/examples/check/.task.mk @@ -0,0 +1 @@ +../../../task.mk \ No newline at end of file diff --git a/docs/examples/check/Makefile b/docs/examples/check/Makefile new file mode 100644 index 0000000..a23e7d6 --- /dev/null +++ b/docs/examples/check/Makefile @@ -0,0 +1,11 @@ +.PHONY: check +check: ## get user confirmation or exit + $(call tconfirm,Would you like to proceed?) + @echo "you said yes!" + +define USAGE +{a.$(HEADER_STYLE)}usage:{a.end}\n make \n\n interactivity w/ task.mk\n +endef + +.DEFAULT_GOAL = help +include .task.mk diff --git a/docs/examples/check/check.mk b/docs/examples/check/check.mk deleted file mode 100644 index 29de5d2..0000000 --- a/docs/examples/check/check.mk +++ /dev/null @@ -1,16 +0,0 @@ -## check | get user confirmation or exit -.PHONY: check -check: - $(call tconfirm,Would you like to proceed?) - @echo "you said yes!" - -define USAGE -{a.$(HEADER_STYLE)}usage:{a.end} - make - - interactivity w/ task.mk\n -endef - -.DEFAULT_GOAL = help -include $(shell git rev-parse --show-toplevel)/task.mk - diff --git a/docs/examples/check/demo.gif b/docs/examples/check/demo.gif new file mode 100644 index 0000000..e09a9f6 Binary files /dev/null and b/docs/examples/check/demo.gif differ diff --git a/docs/examples/check/demo.tape b/docs/examples/check/demo.tape new file mode 100644 index 0000000..072049e --- /dev/null +++ b/docs/examples/check/demo.tape @@ -0,0 +1,15 @@ +Output demo.gif + +Set FontSize 32 +Set Width 1600 +Set Height 800 +Set Theme "Catppuccin Mocha" + +Type "make help" Sleep 1s Enter Sleep 2s +Type "make check" Sleep 1s Enter Sleep 2s +Type "y" Sleep 1s Enter Sleep 2s +Type "# Let's try again but instead say no this time" Sleep 1s Enter +Type "make check" Sleep 1s Enter Sleep 2s +Type "n" Sleep 1s Enter Sleep 2s +Sleep 2s + diff --git a/docs/examples/check/index.md b/docs/examples/check/index.md index d32e2ba..46f1a02 100644 --- a/docs/examples/check/index.md +++ b/docs/examples/check/index.md @@ -1,12 +1,8 @@ ---- -asciinema: true ---- - # Check -
+![demo](./demo.gif) -```make title="check.mk" ---8<-- "docs/examples/check/check.mk" +```make title="Makefile (check)" +--8<-- "docs/examples/check/Makefile" ``` diff --git a/docs/examples/check/record.sh b/docs/examples/check/record.sh deleted file mode 100755 index fbe8433..0000000 --- a/docs/examples/check/record.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -source "$(dirname "${BASH_SOURCE[0]}")/../functions.sh" - -cmd 'make -f check/check.mk help' -cmd 'make -f check/check.mk check' -msg "# Let's try again but instead say no this time" -cmd 'make -f check/check.mk check' - -sleep 1 diff --git a/docs/examples/embedded/.task.mk b/docs/examples/embedded/.task.mk new file mode 120000 index 0000000..039c0ec --- /dev/null +++ b/docs/examples/embedded/.task.mk @@ -0,0 +1 @@ +../../../task.mk \ No newline at end of file diff --git a/docs/examples/embedded/Makefile b/docs/examples/embedded/Makefile new file mode 100644 index 0000000..05a935b --- /dev/null +++ b/docs/examples/embedded/Makefile @@ -0,0 +1,35 @@ +### examples of task.mk features |> --divider --align center --msg-style b_red +define list_files_py +from pathlib import Path +print("files in $(2)") +print([f.name for f in (Path("$(2)").iterdir())]) +endef + +## list-% |> use pathlib.Path to list files +### name the directory in rule (make list-src) |> --align sep +list-%: + $(call py,list_files_py,$*) + +# dollar signs will always be a problem :| +define bash_script +echo "Is the process running bash? We can check with ps" +ps -o args= -p $$$$ | grep -E -m 1 -o '\w{0,5}sh' +echo "Get input at runtime" +printf "type input now! " +read -r name +echo "you typed -> $$name" +echo "the argument below as given in the makefile itself" +echo "it's expanded before the script is passed to bash" +printf "%s\n" "$(2)" +endef + +.PHONY: embedded-bash +embedded-bash: ## bash script with pipes and make input + $(call tbash,bash_script,bash multiline is working 🤞) + +define USAGE +{a.$(HEADER_STYLE)}usage:{a.end}\n make \n\n examples of embedded scripts in `{a.magenta}Makefile{a.end}`\n +endef + +.DEFAULT_GOAL = help +include .task.mk diff --git a/docs/examples/embedded/demo.cast b/docs/examples/embedded/demo.cast deleted file mode 100644 index 48c2967..0000000 --- a/docs/examples/embedded/demo.cast +++ /dev/null @@ -1,83 +0,0 @@ -{"version": 2, "width": 60, "height": 20, "timestamp": 1664060088, "env": {"SHELL": "/usr/bin/zsh", "TERM": "xterm-256color"}} -[0.008131, "o", "\u001b[H\u001b[2J\u001b[3J"] -[0.008522, "o", "bash >> "] -[0.008683, "o", "ma"] -[0.189166, "o", "ke"] -[0.279481, "o", " -"] -[0.369776, "o", "f "] -[0.460021, "o", "em"] -[0.550229, "o", "be"] -[0.640359, "o", "dd"] -[0.730591, "o", "ed"] -[0.820572, "o", "/e"] -[0.910745, "o", "mb"] -[1.091087, "o", "ed"] -[1.181312, "o", "de"] -[1.271441, "o", "d."] -[1.361501, "o", "mk"] -[1.451615, "o", " h"] -[1.541783, "o", "el"] -[1.63204, "o", "p\r\n"] -[2.664242, "o", "\u001b[1;36musage:\u001b[0m\r\n\tmake \r\n\t\r\n\texamples of embedded scripts in `\u001b[35mMakefile\u001b[0m`\r\n\r\n \u001b[1;31m examples of task.mk features \u001b[0m\r\n\u001b[38m ─────────────────────────────────────────────────────\u001b[0m\r\n\u001b[1;33m list-%\u001b[0m │ \u001b[2muse pathlib.Path to list files\u001b[0m\r\n \u001b[2mname the directory in rule (make list-src)\u001b[0m\r\n\u001b[1;33m embedded-bash\u001b[0m │ \u001b[2mbash script with pipes and make input\u001b[0m\r\n\u001b[1;33m h, help\u001b[0m │ \u001b[2mshow this help\u001b[0m\r\n\r\n"] -[4.671801, "o", "\u001b[H\u001b[2J\u001b[3Jbash >> "] -[4.67392, "o", "ma"] -[4.854455, "o", "ke"] -[4.944728, "o", " -"] -[5.034921, "o", "f "] -[5.124982, "o", "em"] -[5.215103, "o", "be"] -[5.305188, "o", "dd"] -[5.395353, "o", "ed"] -[5.485457, "o", "/e"] -[5.576246, "o", "mb"] -[5.75589, "o", "ed"] -[5.846014, "o", "de"] -[5.93612, "o", "d."] -[6.026298, "o", "mk"] -[6.11644, "o", " l"] -[6.206464, "o", "is"] -[6.296631, "o", "t-"] -[6.386781, "o", "em"] -[6.477052, "o", "be"] -[6.657201, "o", "dd"] -[6.747412, "o", "ed"] -[6.837566, "o", "\r\n"] -[7.867599, "o", "files in embedded\r\n['embedded.mk', 'demo.cast', 'record.sh', 'index.md']\r\n"] -[9.872436, "o", "\u001b[H\u001b[2J\u001b[3J"] -[9.872754, "o", "bash >> "] -[9.874651, "o", "ma"] -[10.055031, "o", "ke"] -[10.145171, "o", " -"] -[10.235256, "o", "f "] -[10.325347, "o", "em"] -[10.415525, "o", "be"] -[10.505721, "o", "dd"] -[10.595814, "o", "ed"] -[10.685931, "o", "/e"] -[10.776068, "o", "mb"] -[10.956362, "o", "ed"] -[11.046547, "o", "de"] -[11.136692, "o", "d."] -[11.226851, "o", "mk"] -[11.316894, "o", " e"] -[11.406996, "o", "mb"] -[11.497205, "o", "ed"] -[11.58725, "o", "de"] -[11.677471, "o", "d-"] -[11.85761, "o", "ba"] -[11.947917, "o", "sh"] -[12.038071, "o", "\r\n"] -[13.045213, "o", "Is the process running bash? We can check with ps\r\n"] -[13.051057, "o", "bash\r\n"] -[13.051385, "o", "What text to figlet? \r\n"] -[14.434504, "o", "t"] -[14.503239, "o", "a"] -[14.605384, "o", "s"] -[14.745978, "o", "k"] -[14.946139, "o", "."] -[15.080651, "o", "m"] -[15.228545, "o", "k"] -[15.617669, "o", "\r\n"] -[15.618495, "o", " _ _ _ \r\n| |_ __ _ ___| | __ _ __ ___ | | __\r\n| __/ _` / __| |/ / | '_ ` _ \\| |/ /\r\n| || (_| \\__ \\ < _| | | | | | < \r\n \\__\\__,_|___/_|\\_(_)_| |_| |_|_|\\_\\\r\n \r\n"] -[15.618636, "o", "the argument below as given in the makefile itself\r\n"] -[15.618695, "o", "it's expanded before the script is passed to bash\r\nbash multiline is probably working\r\n"] diff --git a/docs/examples/embedded/demo.gif b/docs/examples/embedded/demo.gif new file mode 100644 index 0000000..460a950 Binary files /dev/null and b/docs/examples/embedded/demo.gif differ diff --git a/docs/examples/embedded/demo.tape b/docs/examples/embedded/demo.tape new file mode 100644 index 0000000..08fc3f4 --- /dev/null +++ b/docs/examples/embedded/demo.tape @@ -0,0 +1,13 @@ +Output demo.gif + +Set FontSize 32 +Set Width 1600 +Set Height 800 +Set Theme "Catppuccin Mocha" + +Type "make help" Sleep 1s Enter Sleep 2s +Type "make list-'.'" Sleep 1s Enter Sleep 2s +Type "make embedded-bash" Sleep 1s Enter Sleep 2s +Type "input!!" Sleep 500ms Enter Sleep 2s +Sleep 2s + diff --git a/docs/examples/embedded/embedded.mk b/docs/examples/embedded/embedded.mk deleted file mode 100644 index c34f79b..0000000 --- a/docs/examples/embedded/embedded.mk +++ /dev/null @@ -1,43 +0,0 @@ -### examples of task.mk features | args: --divider --align center --msg-style b_red -define list_files_py -from pathlib import Path -print("files in $(2)") -print([f.name for f in (Path("$(2)").iterdir())]) -endef - -## list-% | use pathlib.Path to list files -### name the directory in rule (make list-src) | args: --align sep -list-%: - $(call py,list_files_py,$*) - -# dollar signs will always be a problem -define bash_script -echo "Is the process running bash? We can check with ps" -ps -o args= -p $$$$ | grep -E -m 1 -o '\w{0,5}sh' -if [ -x "$(command -v figlet)" ]; then - echo 'no figlet :(' -else - echo "What text to figlet? " - read name - figlet $$name -fi -echo "the argument below as given in the makefile itself" -echo "it's expanded before the script is passed to bash" -printf "%s\n" "$(2)" -endef - -## embedded-bash | bash script with pipes and make input -.PHONY: embedded-bash -embedded-bash: - $(call tbash,bash_script,bash multiline is probably working) - -define USAGE -{a.$(HEADER_STYLE)}usage:{a.end} - make - - examples of embedded scripts in `{a.magenta}Makefile{a.end}` - -endef -.DEFAULT_GOAL = help -include $(shell git rev-parse --show-toplevel)/task.mk - diff --git a/docs/examples/embedded/index.md b/docs/examples/embedded/index.md index 08a15c8..c4086d9 100644 --- a/docs/examples/embedded/index.md +++ b/docs/examples/embedded/index.md @@ -1,12 +1,8 @@ ---- -asciinema: true ---- - # Embedded -
+![demo](./demo.gif) -```make title="embedded.mk" ---8<-- "docs/examples/embedded/embedded.mk" +```make title="Makefile (embedded)" +--8<-- "docs/examples/embedded/Makefile" ``` diff --git a/docs/examples/embedded/record.sh b/docs/examples/embedded/record.sh deleted file mode 100755 index cdfc42e..0000000 --- a/docs/examples/embedded/record.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -source "$(dirname "${BASH_SOURCE[0]}")/../functions.sh" - -cmd 'make -f embedded/embedded.mk help' -cmd 'make -f embedded/embedded.mk list-embedded' -cmd 'make -f embedded/embedded.mk embedded-bash' -sleep 1 - diff --git a/docs/examples/functions.sh b/docs/examples/functions.sh deleted file mode 100755 index 25436e7..0000000 --- a/docs/examples/functions.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -msg() { - printf '%s\n' "$1" | pv -qL 20 - sleep 1 -} - -cmd (){ - clear - printf 'bash >> ' - msg "$1" - $1 - sleep 2 -} - diff --git a/docs/examples/index.md b/docs/examples/index.md index c7939cb..8660713 100644 --- a/docs/examples/index.md +++ b/docs/examples/index.md @@ -12,3 +12,7 @@ [Recipe Help](./recipe-help) : Display the target, docstring and recipe for a given target then exit. + +[Phonify](./phonify) + +: Automatically generate the phony call for any documented tasks. diff --git a/docs/examples/phonify/.task.mk b/docs/examples/phonify/.task.mk new file mode 120000 index 0000000..039c0ec --- /dev/null +++ b/docs/examples/phonify/.task.mk @@ -0,0 +1 @@ +../../../task.mk \ No newline at end of file diff --git a/docs/examples/phonify/Makefile b/docs/examples/phonify/Makefile new file mode 100644 index 0000000..5883604 --- /dev/null +++ b/docs/examples/phonify/Makefile @@ -0,0 +1,22 @@ +a-task: ## will be marked phony + @echo a-task executed + +b-task: ## wont be marked phony |> --not-phony + @echo b-task executed + +c-task: + @echo c-task executed + +.PHONY: gen-task-files +gen-task-files: + touch a-task b-task c-task + +define USAGE +{a.$(HEADER_STYLE)}usage:{a.end}\n make \n + phonifying tasks + {a.faint}hint: there is also a c-task...{a.end}\n +endef + +PHONIFY = true +.DEFAULT_GOAL = help +include .task.mk diff --git a/docs/examples/phonify/a-task b/docs/examples/phonify/a-task new file mode 100644 index 0000000..e69de29 diff --git a/docs/examples/phonify/b-task b/docs/examples/phonify/b-task new file mode 100644 index 0000000..e69de29 diff --git a/docs/examples/phonify/c-task b/docs/examples/phonify/c-task new file mode 100644 index 0000000..e69de29 diff --git a/docs/examples/phonify/demo.gif b/docs/examples/phonify/demo.gif new file mode 100644 index 0000000..c1426b8 Binary files /dev/null and b/docs/examples/phonify/demo.gif differ diff --git a/docs/examples/phonify/demo.tape b/docs/examples/phonify/demo.tape new file mode 100644 index 0000000..0415704 --- /dev/null +++ b/docs/examples/phonify/demo.tape @@ -0,0 +1,14 @@ +Output demo.gif + +Set FontSize 32 +Set Width 1600 +Set Height 800 +Set Theme "Catppuccin Mocha" + +Type "make help" Sleep 1s Enter Sleep 2s +Type "ls" Sleep 1s Enter Sleep 2s +Type "make a-task" Sleep 1s Enter Sleep 2s +Type "make b-task" Sleep 1s Enter Sleep 2s +Type "make c-task" Sleep 1s Enter Sleep 2s +Sleep 2s + diff --git a/docs/examples/phonify/index.md b/docs/examples/phonify/index.md new file mode 100644 index 0000000..6674840 --- /dev/null +++ b/docs/examples/phonify/index.md @@ -0,0 +1,8 @@ +# Phonify + +![demo](./demo.gif) + +```make title="Makefile (phonify)" +--8<-- "docs/examples/phonify/Makefile" +``` + diff --git a/docs/examples/recipe-help/.task.mk b/docs/examples/recipe-help/.task.mk new file mode 120000 index 0000000..039c0ec --- /dev/null +++ b/docs/examples/recipe-help/.task.mk @@ -0,0 +1 @@ +../../../task.mk \ No newline at end of file diff --git a/docs/examples/recipe-help/recipe-help.mk b/docs/examples/recipe-help/Makefile similarity index 56% rename from docs/examples/recipe-help/recipe-help.mk rename to docs/examples/recipe-help/Makefile index 1f50dbf..39ac98b 100644 --- a/docs/examples/recipe-help/recipe-help.mk +++ b/docs/examples/recipe-help/Makefile @@ -1,10 +1,8 @@ -## deps-only | a task/target with dependencies .PHONY: deps-only -deps-only: foo +deps-only: foo ## a task/target with dependencies -## foo | a dummy rule that depends on the local files .PHONY: foo -foo: $(wildcard *) +foo: $(wildcard *) ## a dummy rule that depends on the local files @echo 'this is a dummy rule' # bar but no docstring @@ -20,5 +18,5 @@ define USAGE endef .DEFAULT_GOAL = help -include $(shell git rev-parse --show-toplevel)/task.mk +include .task.mk diff --git a/docs/examples/recipe-help/demo.cast b/docs/examples/recipe-help/demo.cast deleted file mode 100644 index 251e71f..0000000 --- a/docs/examples/recipe-help/demo.cast +++ /dev/null @@ -1,138 +0,0 @@ -{"version": 2, "width": 60, "height": 20, "timestamp": 1664060106, "env": {"SHELL": "/usr/bin/zsh", "TERM": "xterm-256color"}} -[0.007806, "o", "\u001b[H\u001b[2J\u001b[3J"] -[0.008354, "o", "bash >> "] -[0.008532, "o", "ma"] -[0.189207, "o", "ke"] -[0.279458, "o", " -"] -[0.369697, "o", "f "] -[0.459892, "o", "re"] -[0.550111, "o", "ci"] -[0.640099, "o", "pe"] -[0.730309, "o", "-h"] -[0.820408, "o", "el"] -[0.910572, "o", "p/"] -[1.090837, "o", "re"] -[1.180944, "o", "ci"] -[1.271024, "o", "pe"] -[1.36131, "o", "-h"] -[1.451464, "o", "el"] -[1.541712, "o", "p."] -[1.631676, "o", "mk"] -[1.721815, "o", " h"] -[1.812133, "o", "el"] -[1.99248, "o", "p\r\n"] -[3.025715, "o", "\u001b[1;36musage:\u001b[0m\r\n\tmake \r\n\tmake help \r\n\r\n\u001b[1;33m deps-only\u001b[0m │ \u001b[2ma task/target with dependencies\u001b[0m\r\n\u001b[1;33m foo\u001b[0m │ \u001b[2ma dummy rule that depends on the local files\u001b[0m\r\n\u001b[1;33m h, help\u001b[0m │ \u001b[2mshow this help\u001b[0m\r\n\r\n"] -[5.032814, "o", "\u001b[H\u001b[2J\u001b[3Jbash >> "] -[5.034705, "o", "ma"] -[5.215256, "o", "ke"] -[5.305482, "o", " -"] -[5.395504, "o", "f "] -[5.485805, "o", "re"] -[5.576036, "o", "ci"] -[5.666095, "o", "pe"] -[5.756177, "o", "-h"] -[5.846563, "o", "el"] -[5.93671, "o", "p/"] -[6.11689, "o", "re"] -[6.206935, "o", "ci"] -[6.297128, "o", "pe"] -[6.387205, "o", "-h"] -[6.477454, "o", "el"] -[6.567496, "o", "p."] -[6.657713, "o", "mk"] -[6.747729, "o", " h"] -[6.838006, "o", "el"] -[7.018242, "o", "p "] -[7.108261, "o", "he"] -[7.198405, "o", "lp"] -[7.288809, "o", "\r\n"] -[8.318829, "o", "\u001b[1;36mtask.mk recipe help\u001b[0m\r\n\r\n"] -[8.325694, "o", " \u001b[1;33mh help\u001b[0m\r\n\u001b[38m ────────────────────────────────────────────────────────\u001b[0m\r\n $(call py,help_py) || { echo \"exiting early!\"; exit 1; }\r\n\r\n"] -[8.329695, "o", "exiting early!\r\nmake[1]: *** [/home/daylin/dev/github/mine/task.mk/task.mk:30: help] Error 1\r\n"] -[10.332715, "o", "\u001b[H\u001b[2J\u001b[3J"] -[10.333056, "o", "bash >> "] -[10.335005, "o", "ma"] -[10.515605, "o", "ke"] -[10.605896, "o", " -"] -[10.696226, "o", "f "] -[10.78629, "o", "re"] -[10.876669, "o", "ci"] -[10.966704, "o", "pe"] -[11.056858, "o", "-h"] -[11.146831, "o", "el"] -[11.236969, "o", "p/"] -[11.417281, "o", "re"] -[11.507468, "o", "ci"] -[11.597442, "o", "pe"] -[11.687589, "o", "-h"] -[11.777832, "o", "el"] -[11.867969, "o", "p."] -[11.958105, "o", "mk"] -[12.048177, "o", " h"] -[12.138291, "o", "el"] -[12.318676, "o", "p "] -[12.408796, "o", "de"] -[12.498823, "o", "ps"] -[12.588985, "o", "-o"] -[12.679133, "o", "nl"] -[12.769237, "o", "y\r\n"] -[13.807661, "o", "\u001b[1;36mtask.mk recipe help\u001b[0m\r\n\r\n"] -[13.816448, "o", "\u001b[1;33m deps-only\u001b[0m │ \u001b[2ma task/target with dependencies\u001b[0m\r\n \u001b[38mdeps\u001b[0m: \u001b[2mfoo\u001b[0m\r\n\r\n"] -[13.820255, "o", "exiting early!\r\n"] -[13.820461, "o", "make[1]: *** [/home/daylin/dev/github/mine/task.mk/task.mk:30: help] Error 1\r\n"] -[15.823763, "o", "\u001b[H\u001b[2J\u001b[3J"] -[15.824036, "o", "bash >> "] -[15.826016, "o", "ma"] -[16.006673, "o", "ke"] -[16.09685, "o", " -"] -[16.186936, "o", "f "] -[16.277228, "o", "re"] -[16.367339, "o", "ci"] -[16.45744, "o", "pe"] -[16.547483, "o", "-h"] -[16.637622, "o", "el"] -[16.727742, "o", "p/"] -[16.907989, "o", "re"] -[16.99817, "o", "ci"] -[17.088391, "o", "pe"] -[17.178352, "o", "-h"] -[17.268476, "o", "el"] -[17.358766, "o", "p."] -[17.448842, "o", "mk"] -[17.539039, "o", " h"] -[17.629197, "o", "el"] -[17.809354, "o", "p "] -[17.899578, "o", "fo"] -[17.989694, "o", "o\r\n"] -[19.020047, "o", "\u001b[1;36mtask.mk recipe help\u001b[0m\r\n\r\n"] -[19.03039, "o", "\u001b[1;33m foo\u001b[0m │ \u001b[2ma dummy rule that depends on the local files\u001b[0m\r\n \u001b[38mdeps\u001b[0m: \u001b[2mcheck embedded functions.sh index.md Makefile recipe-help\u001b[0m\r\n\u001b[38m ────────────────────────────\u001b[0m\r\n @echo 'this is a dummy rule'\r\n\r\n"] -[19.035496, "o", "exiting early!\r\n"] -[19.035706, "o", "make[1]: *** [/home/daylin/dev/github/mine/task.mk/task.mk:30: help] Error 1\r\n"] -[21.039168, "o", "\u001b[H\u001b[2J\u001b[3J"] -[21.03927, "o", "bash >> "] -[21.041378, "o", "ma"] -[21.221916, "o", "ke"] -[21.31205, "o", " -"] -[21.402214, "o", "f "] -[21.492482, "o", "re"] -[21.582638, "o", "ci"] -[21.672609, "o", "pe"] -[21.762748, "o", "-h"] -[21.853045, "o", "el"] -[21.943154, "o", "p/"] -[22.123286, "o", "re"] -[22.2134, "o", "ci"] -[22.303509, "o", "pe"] -[22.393685, "o", "-h"] -[22.483815, "o", "el"] -[22.574005, "o", "p."] -[22.664056, "o", "mk"] -[22.754229, "o", " h"] -[22.844432, "o", "el"] -[23.02464, "o", "p "] -[23.114692, "o", "ba"] -[23.205123, "o", "r\r\n"] -[24.260098, "o", "\u001b[1;36mtask.mk recipe help\u001b[0m\r\n\r\n"] -[24.267129, "o", " \u001b[1;33mbar\u001b[0m\r\n\u001b[38m ─────────────────────────────────────\u001b[0m\r\n @echo 'some rule with no help string'\r\n\r\n"] -[24.271004, "o", "exiting early!\r\n"] -[24.271137, "o", "make[1]: *** [/home/daylin/dev/github/mine/task.mk/task.mk:30: help] Error 1\r\n"] diff --git a/docs/examples/recipe-help/demo.gif b/docs/examples/recipe-help/demo.gif new file mode 100644 index 0000000..3efd86b Binary files /dev/null and b/docs/examples/recipe-help/demo.gif differ diff --git a/docs/examples/recipe-help/demo.tape b/docs/examples/recipe-help/demo.tape new file mode 100644 index 0000000..b4c1b7f --- /dev/null +++ b/docs/examples/recipe-help/demo.tape @@ -0,0 +1,14 @@ +Output demo.gif + +Set FontSize 32 +Set Width 1600 +Set Height 800 +Set Theme "Catppuccin Mocha" + +Type "make help" Sleep 1s Enter Sleep 2s +Type "make help help" Sleep 1s Enter Sleep 2s +Type "make help deps-only" Sleep 1s Enter Sleep 2s +Type "make help foo" Sleep 1s Enter Sleep 2s +Type "make help bar" Sleep 1s Enter Sleep 2s +Sleep 2s + diff --git a/docs/examples/recipe-help/index.md b/docs/examples/recipe-help/index.md index 1a93e93..617a21f 100644 --- a/docs/examples/recipe-help/index.md +++ b/docs/examples/recipe-help/index.md @@ -1,12 +1,8 @@ ---- -asciinema: true ---- - # Recipe Help -
+![demo](./demo.gif) -```make title="recipe-help.mk" ---8<-- "docs/examples/recipe-help/recipe-help.mk" +```make title="Makefile (recipe-help)" +--8<-- "docs/examples/recipe-help/Makefile" ``` diff --git a/docs/examples/recipe-help/record.sh b/docs/examples/recipe-help/record.sh deleted file mode 100755 index 0ce5a85..0000000 --- a/docs/examples/recipe-help/record.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/env bash - -source "$(dirname "${BASH_SOURCE[0]}")/../functions.sh" - -cmd 'make -f recipe-help/recipe-help.mk help' -cmd 'make -f recipe-help/recipe-help.mk help help' -cmd 'make -f recipe-help/recipe-help.mk help deps-only' -cmd 'make -f recipe-help/recipe-help.mk help foo' -cmd 'make -f recipe-help/recipe-help.mk help bar' - -sleep 1 diff --git a/docs/index.md b/docs/index.md index 13048dd..1c0a463 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,9 +1,12 @@

task.mk

- help + help

the task runner for GNU Make you've been missing

+

+ Documentation +


@@ -15,19 +18,25 @@ to add some QOL improvements for your users and fellow maintainers. Current Features: -- ANSI escape code support (including NO\_COLOR) -- formatted help output -- custom print function -- confirmation prompt + - ANSI escape code support (including NO_COLOR) + - formatted help output + - custom print function + - confirmation prompt + - goal phonifier (disabled by default) Depends on `GNU Make`, obviously and `Python >=3.7`, and `bash` (or `zsh`). Wait python?!?!, I'm not `pip` installing some package just to parse my makefile. -I agree, all you need is one file [`.task.mk`](https://github.com/daylinmorgan/task.mk/v23.1.1/task.mk). -You can automagically include it with just two additional lines to your `Makefile` (and probably one to your `.gitignore`) and your good to go. +I agree, all you need is one file [`.task.mk`](./task.mk). +You can automagically include it with just two additional lines to your `Makefile` (and probably one to your `.gitignore`) and you're good to go. ## Setup +One line setup to download .task.mk and add appropriate includes to your `Makefile`. +```bash +bash <(curl -fsSL gh.dayl.in/task.mk/init) # or w/ TASKMK_VERSION= +``` + You can include this as an optional dependency on your project by adding the below lines to the end of your `Makefile`. If someone tries to invoke `make help` it will download `.task.mk` for them. @@ -36,54 +45,11 @@ If someone tries to invoke `make help` it will download `.task.mk` for them. $(if $(filter help,$(MAKECMDGOALS)),$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/v23.1.1/task.mk -o .task.mk)) ``` -You might also consider making it a consistently downloaded dependency if you plan to use any of it's advanced feature set, by dropping the `$(MAKECMDGOALS)` check. +If you plan to use any features besides the help prompt you may want to instead commit `.task.mk` to version control or drop the `$(MAKECMDGOALS)` check so it's always downloaded once `make` is invoked. ```make -include .task.mk $(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/v23.1.1/task.mk -o .task.mk) ``` -Alternatively, you can use the builtin rule `_update-task.mk` to update to the latest development version. - -See [Usage](./usage) to get started running all your tasks. -See [Examples](./examples) for more use cases. - -## Zsh Completions for GNU Make - -If you use `GNU Make` with zsh you may want to add the following -line to your rc file to allow `make` to handle the autocomplete. - -```zsh -zstyle ':completion::complete:make:*:targets' call-command true -``` - -## Why Make? - -There are lot of `GNU Make` alternatives but none have near the same level of ubiquity. -This project attaches to `make` some of the native features of [`just`](https://github.com/casey/just), a command runner. - -Just is a great task runner, but it suffers two problems, users probably don't have it installed already, and there is no way to define file specific recipes. -Most of my `Makefile`'s are comprised primarily of handy `.PHONY` recipes, but I always end up with a few file specific recipes. - -Another interesting project I've evaluated for these purposes is [`go-task/task`](https://github.com/go-task/task). -`Task` has many of the features of `GNU Make` and some novel features of it's own. -But like `just` it's a tool people don't usually already have and it's configured using a `yaml` file. -`Yaml` files can be finicky to work with and and it uses a golang based shell runtime, not your native shell, which might lead to unexpected behavior. - - -## Simpler Alternative - -But I just want a basic help output, surely I don't need python for this... you would be right. -`Task.mk` replaces my old `make help` recipe boilerplate which may better serve you (so long as you have `sed`/`awk`). - - -```make -## h, help | show this help -.PHONY: help h -help h: Makefile - @awk -v fill=$(shell sed -n 's/^## \(.*\) | .*/\1/p' $< | wc -L)\ - 'match($$0,/^## (.*) \|/,name) && match($$0,/\| (.*)$$/,help)\ - {printf "\033[1;93m%*s\033[0m | \033[30m%s\033[0m\n",\ - fill,name[1],help[1];} match($$0,/^### (.*)/,str) \ - {printf "%*s \033[30m%s\033[0m\n",fill," ",str[1];}' $< -``` +For more info see the [documentation](https://gh.dayl.in/task.mk). diff --git a/docs/init b/docs/init index bd724d9..96dbf04 100644 --- a/docs/init +++ b/docs/init @@ -11,20 +11,22 @@ if [ -f "./.task.mk" ]; then fi curl -fsSL "https://raw.githubusercontent.com/daylinmorgan/task.mk/$VERSION/task.mk" -o .task.mk echo .task.mk >>.gitignore -printf '\n-include .task.cfg.mk .task.mk\n' >>Makefile -printf '$(if $(filter help,$(MAKECMDGOALS)),$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/%s/task.mk -o .task.mk))' \ +printf '\n-include .task.cfg.mk\n' >>Makefile +printf '%s %s\n' '-include' '.task.mk' >>.task.cfg.mk +printf '$(if $(filter help,$(MAKECMDGOALS)),$(if $(wildcard .task.mk),,.task.mk: ; curl -fsSL https://raw.githubusercontent.com/daylinmorgan/task.mk/%s/task.mk -o .task.mk))\n' \ "$VERSION" \ - >>Makefile + >>.task.cfg.mk printf ".task.mk files added to repo\n\n" echo "Do you want to commit these changes?" -printf "RUN COMMAND: %s (Y/n) " \ - "git add Makefile .gitignore && git commit -m \"chore: initialize .task.mk\"" +printf "Run the below command?\n\n %s (Y/n) " \ + "git add Makefile .gitignore .task.cfg.mk && git commit -m \"chore: initialize .task.mk\"" -read -r answer +read -r answer =0;--C){var E=this.tryEntries[C],t=E.completion;if("root"===E.tryLoc)return Q("end");if(E.tryLoc<=this.prev){var e=B.call(E,"catchLoc"),i=B.call(E,"finallyLoc");if(e&&i){if(this.prev=0;--I){var Q=this.tryEntries[I];if(Q.tryLoc<=this.prev&&B.call(Q,"finallyLoc")&&this.prev=0;--g){var I=this.tryEntries[g];if(I.finallyLoc===A)return this.complete(I.completion,I.afterLoc),F(I),c}},catch:function(A){for(var g=this.tryEntries.length-1;g>=0;--g){var I=this.tryEntries[g];if(I.tryLoc===A){var B=I.completion;if("throw"===B.type){var Q=B.arg;F(I)}return Q}}throw new Error("illegal catch attempt")},delegateYield:function(A,I,B){return this.delegate={iterator:R(A),resultName:I,nextLoc:B},"next"===this.method&&(this.arg=g),c}},A}(A.exports);try{regeneratorRuntime=g}catch(A){"object"==typeof globalThis?globalThis.regeneratorRuntime=g:Function("r","regeneratorRuntime = r")(g)}}(E);var t=E.exports;function e(A){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A})(A)}function i(A,g){(null==g||g>A.length)&&(g=A.length);for(var I=0,B=new Array(g);IA===g};let s=H;const a={},c={owned:null,cleanups:null,context:null,owner:null};var u=null;let w=null,D=null,h=null,l=null,y=0;function f(A,g){const I=w,B=u,Q=0===A.length?c:{owned:null,cleanups:null,context:null,owner:g||B};u=Q,w=null;try{return b((()=>A((()=>j(Q)))),!0)}finally{w=I,u=B}}function G(A,g){g=g?Object.assign({},r,g):r;const I={value:A,observers:null,observerSlots:null,pending:a,comparator:g.equals||void 0};return[J.bind(I),A=>("function"==typeof A&&(A=A(I.pending!==a?I.pending:I.value)),S(I,A))]}function k(A,g,I){v(U(A,g,!1,1))}function N(A,g,I){s=m;const B=U(A,g,!1,1);B.user=!0,l?l.push(B):queueMicrotask((()=>v(B)))}function d(A,g,I){I=I?Object.assign({},r,I):r;const B=U(A,g,!0,0);return B.pending=a,B.observers=null,B.observerSlots=null,B.comparator=I.equals||void 0,v(B),J.bind(B)}function F(A){if(D)return A();let g;const I=D=[];try{g=A()}finally{D=null}return b((()=>{for(let A=0;AM(A)))}function p(A){return null===u||(null===u.cleanups?u.cleanups=[A]:u.cleanups.push(A)),A}function L(){return w}function Y(A){const g=d(A);return d((()=>Z(g())))}function J(){if(this.sources&&this.state){const A=h;h=null,1===this.state?v(this):q(this),h=A}if(w){const A=this.observers?this.observers.length:0;w.sources?(w.sources.push(this),w.sourceSlots.push(A)):(w.sources=[this],w.sourceSlots=[A]),this.observers?(this.observers.push(w),this.observerSlots.push(w.sources.length-1)):(this.observers=[w],this.observerSlots=[w.sources.length-1])}return this.value}function S(A,g,I){if(D)return A.pending===a&&D.push(A),A.pending=g,g;if(A.comparator&&A.comparator(A.value,g))return g;let B=!1;return A.value=g,A.observers&&A.observers.length&&b((()=>{for(let g=0;g1e6)throw h=[],new Error}),!1),g}function v(A){if(!A.fn)return;j(A);const g=u,I=w,B=y;w=u=A,function(A,g,I){let B;try{B=A.fn(g)}catch(A){T(A)}(!A.updatedAt||A.updatedAt<=I)&&(A.observers&&A.observers.length?S(A,B):A.value=B,A.updatedAt=I)}(A,A.value,B),w=I,u=g}function U(A,g,I,B=1,Q){const C={fn:A,state:B,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:g,owner:u,context:null,pure:I};return null===u||u!==c&&(u.owned?u.owned.push(C):u.owned=[C]),C}function K(A){if(0===A.state)return;if(2===A.state)return q(A);if(A.suspense&&M(A.suspense.inFallback))return A.suspense.effects.push(A);const g=[A];for(;(A=A.owner)&&(!A.updatedAt||A.updatedAt=0;I--)if(1===(A=g[I]).state)v(A);else if(2===A.state){const I=h;h=null,q(A,g[0]),h=I}}function b(A,g){if(h)return A();let I=!1;g||(h=[]),l?I=!0:l=[],y++;try{return A()}catch(A){T(A)}finally{!function(A){h&&(H(h),h=null);if(A)return;l.length?F((()=>{s(l),l=null})):l=null}(I)}}function H(A){for(let g=0;gA(g)))}function V(A){const g="fallback"in A&&{fallback:()=>A.fallback};return d(function(A,g,I={}){let B=[],Q=[],C=[],E=0,t=g.length>1?[]:null;return p((()=>O(C))),()=>{let e,i,n=A()||[];return M((()=>{let A,g,r,s,a,c,u,w,D,h=n.length;if(0===h)0!==E&&(O(C),C=[],B=[],Q=[],E=0,t&&(t=[])),I.fallback&&(B=[W],Q[0]=f((A=>(C[0]=A,I.fallback()))),E=1);else if(0===E){for(Q=new Array(h),i=0;i=c&&w>=c&&B[u]===n[w];u--,w--)r[w]=Q[u],s[w]=C[u],t&&(a[w]=t[u]);for(A=new Map,g=new Array(w+1),i=w;i>=c;i--)D=n[i],e=A.get(D),g[i]=void 0===e?-1:e,A.set(D,i);for(e=c;e<=u;e++)D=B[e],i=A.get(D),void 0!==i&&-1!==i?(r[i]=Q[e],s[i]=C[e],t&&(a[i]=t[e]),i=g[i],A.set(D,i)):C[e]();for(i=c;iA.each),A.children,g||void 0))}function P(A){const g="fallback"in A&&{fallback:()=>A.fallback};return d(function(A,g,I={}){let B,Q=[],C=[],E=[],t=[],e=0;return p((()=>O(E))),()=>{const i=A()||[];return M((()=>{if(0===i.length)return 0!==e&&(O(E),E=[],Q=[],C=[],e=0,t=[]),I.fallback&&(Q=[W],C[0]=f((A=>(E[0]=A,I.fallback()))),e=1),C;for(Q[0]===W&&(E[0](),E=[],Q=[],C=[],e=0),B=0;Bi[B])):B>=Q.length&&(C[B]=f(n));for(;BA.each),A.children,g||void 0))}function z(A){let g=!1;const I=d((()=>A.when),void 0,{equals:(A,I)=>g?A===I:!A==!I});return d((()=>{const B=I();if(B){const I=A.children;return(g="function"==typeof I&&I.length>0)?M((()=>I(B))):I}return A.fallback}))}function _(A){let g=!1;const I=Y((()=>A.children)),B=d((()=>{let A=I();Array.isArray(A)||(A=[A]);for(let g=0;gA[0]===I[0]&&(g?A[1]===I[1]:!A[1]==!I[1])&&A[2]===I[2]});return d((()=>{const[I,Q,C]=B();if(I<0)return A.fallback;const E=C.children;return(g="function"==typeof E&&E.length>0)?M((()=>E(Q))):E}))}function $(A){return A}const AA="_$DX_DELEGATE";function gA(A,g,I){let B;return f((Q=>{B=Q,g===document?A():EA(g,A(),g.firstChild?null:void 0,I)})),()=>{B(),g.textContent=""}}function IA(A,g,I){const B=document.createElement("template");B.innerHTML=A;let Q=B.content.firstChild;return I&&(Q=Q.firstChild),Q}function BA(A,g=window.document){const I=g[AA]||(g[AA]=new Set);for(let B=0,Q=A.length;BI[0](I[1],A))):A.addEventListener(g,I)}function CA(A,g,I={}){const B=A.style;if(null==g||"string"==typeof g)return B.cssText=g;let Q,C;for(C in"string"==typeof I&&(I={}),I)null==g[C]&&B.removeProperty(C),delete I[C];for(C in g)Q=g[C],Q!==I[C]&&(B.setProperty(C,Q),I[C]=Q);return I}function EA(A,g,I,B){if(void 0===I||B||(B=[]),"function"!=typeof g)return eA(A,g,B,I);k((B=>eA(A,g(),B,I)),B)}function tA(A){const g=`$$${A.type}`;let I=A.composedPath&&A.composedPath()[0]||A.target;for(A.target!==I&&Object.defineProperty(A,"target",{configurable:!0,value:I}),Object.defineProperty(A,"currentTarget",{configurable:!0,get:()=>I||document});null!==I;){const B=I[g];if(B&&!I.disabled){const Q=I[`${g}Data`];if(void 0!==Q?B(Q,A):B(A),A.cancelBubble)return}I=I.host&&I.host!==I&&I.host instanceof Node?I.host:I.parentNode}}function eA(A,g,I,B,Q){for(;"function"==typeof I;)I=I();if(g===I)return I;const C=typeof g,E=void 0!==B;if(A=E&&I[0]&&I[0].parentNode||A,"string"===C||"number"===C)if("number"===C&&(g=g.toString()),E){let Q=I[0];Q&&3===Q.nodeType?Q.data=g:Q=document.createTextNode(g),I=oA(A,I,B,Q)}else I=""!==I&&"string"==typeof I?A.firstChild.data=g:A.textContent=g;else if(null==g||"boolean"===C)I=oA(A,I,B);else{if("function"===C)return k((()=>{let Q=g();for(;"function"==typeof Q;)Q=Q();I=eA(A,Q,I,B)})),()=>I;if(Array.isArray(g)){const C=[];if(iA(C,g,Q))return k((()=>I=eA(A,C,I,B,!0))),()=>I;if(0===C.length){if(I=oA(A,I,B),E)return I}else Array.isArray(I)?0===I.length?nA(A,C,B):function(A,g,I){let B=I.length,Q=g.length,C=B,E=0,t=0,e=g[Q-1].nextSibling,i=null;for(;EB-t){const Q=g[E];for(;t=0;C--){const E=g[C];if(Q!==E){const g=E.parentNode===A;B||C?g&&E.remove():g?A.replaceChild(Q,E):A.insertBefore(Q,I)}else B=!0}}else A.insertBefore(Q,I);return[Q]}var rA,sA=new Array(32).fill(void 0);function aA(A){return sA[A]}sA.push(void 0,null,!0,!1);var cA=sA.length;function uA(A){var g=aA(A);return function(A){A<36||(sA[A]=cA,cA=A)}(A),g}function wA(A){cA===sA.length&&sA.push(sA.length+1);var g=cA;return cA=sA[g],sA[g]=A,g}var DA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});DA.decode();var hA=null;function lA(){return null!==hA&&hA.buffer===rA.memory.buffer||(hA=new Uint8Array(rA.memory.buffer)),hA}function yA(A,g){return DA.decode(lA().subarray(A,A+g))}function fA(A){var g=e(A);if("number"==g||"boolean"==g||null==A)return"".concat(A);if("string"==g)return'"'.concat(A,'"');if("symbol"==g){var I=A.description;return null==I?"Symbol":"Symbol(".concat(I,")")}if("function"==g){var B=A.name;return"string"==typeof B&&B.length>0?"Function(".concat(B,")"):"Function"}if(Array.isArray(A)){var Q=A.length,C="[";Q>0&&(C+=fA(A[0]));for(var E=1;E1))return toString.call(A);if("Object"==(t=i[1]))try{return"Object("+JSON.stringify(A)+")"}catch(A){return"Object"}return A instanceof Error?"".concat(A.name,": ").concat(A.message,"\n").concat(A.stack):t}var GA=0,kA=new TextEncoder("utf-8"),NA="function"==typeof kA.encodeInto?function(A,g){return kA.encodeInto(A,g)}:function(A,g){var I=kA.encode(A);return g.set(I),{read:A.length,written:I.length}};function dA(A,g,I){if(void 0===I){var B=kA.encode(A),Q=g(B.length);return lA().subarray(Q,Q+B.length).set(B),GA=B.length,Q}for(var C=A.length,E=g(C),t=lA(),e=0;e127)break;t[E+e]=i}if(e!==C){0!==e&&(A=A.slice(e)),E=I(E,C,C=e+3*A.length);var n=lA().subarray(E+e,E+C);e+=NA(A,n).written}return GA=e,E}var FA=null;function MA(){return null!==FA&&FA.buffer===rA.memory.buffer||(FA=new Int32Array(rA.memory.buffer)),FA}var RA=null;function pA(A,g){return(null!==RA&&RA.buffer===rA.memory.buffer||(RA=new Uint32Array(rA.memory.buffer)),RA).subarray(A/4,A/4+g)}var LA=new Uint32Array(2),YA=new BigUint64Array(LA.buffer),JA=function(){function A(){B(this,A)}return C(A,[{key:"__destroy_into_raw",value:function(){var A=this.ptr;return this.ptr=0,A}},{key:"free",value:function(){var A=this.__destroy_into_raw();rA.__wbg_vtwrapper_free(A)}},{key:"feed",value:function(A){try{var g=rA.__wbindgen_add_to_stack_pointer(-16),I=dA(A,rA.__wbindgen_malloc,rA.__wbindgen_realloc),B=GA;rA.vtwrapper_feed(g,this.ptr,I,B);var Q=MA()[g/4+0],C=MA()[g/4+1],E=pA(Q,C).slice();return rA.__wbindgen_free(Q,4*C),E}finally{rA.__wbindgen_add_to_stack_pointer(16)}}},{key:"inspect",value:function(){try{var A=rA.__wbindgen_add_to_stack_pointer(-16);rA.vtwrapper_inspect(A,this.ptr);var g=MA()[A/4+0],I=MA()[A/4+1];return yA(g,I)}finally{rA.__wbindgen_add_to_stack_pointer(16),rA.__wbindgen_free(g,I)}}},{key:"get_line",value:function(A){return uA(rA.vtwrapper_get_line(this.ptr,A))}},{key:"get_cursor",value:function(){return uA(rA.vtwrapper_get_cursor(this.ptr))}}],[{key:"__wrap",value:function(g){var I=Object.create(A.prototype);return I.ptr=g,I}}]),A}();function SA(A,g){return vA.apply(this,arguments)}function vA(){return(vA=I(t.mark((function A(g,I){var B,Q;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(!("function"==typeof Response&&g instanceof Response)){A.next=23;break}if("function"!=typeof WebAssembly.instantiateStreaming){A.next=15;break}return A.prev=2,A.next=5,WebAssembly.instantiateStreaming(g,I);case 5:return A.abrupt("return",A.sent);case 8:if(A.prev=8,A.t0=A.catch(2),"application/wasm"==g.headers.get("Content-Type")){A.next=14;break}console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",A.t0),A.next=15;break;case 14:throw A.t0;case 15:return A.next=17,g.arrayBuffer();case 17:return B=A.sent,A.next=20,WebAssembly.instantiate(B,I);case 20:return A.abrupt("return",A.sent);case 23:return A.next=25,WebAssembly.instantiate(g,I);case 25:if(!((Q=A.sent)instanceof WebAssembly.Instance)){A.next=30;break}return A.abrupt("return",{instance:Q,module:g});case 30:return A.abrupt("return",Q);case 31:case"end":return A.stop()}}),A,null,[[2,8]])})))).apply(this,arguments)}function UA(A){return KA.apply(this,arguments)}function KA(){return(KA=I(t.mark((function A(g){var I,B,Q,C;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return void 0===g&&(g=new URL("index_bg.wasm","")),(I={}).wbg={},I.wbg.__wbindgen_object_drop_ref=function(A){uA(A)},I.wbg.__wbindgen_number_new=function(A){return wA(A)},I.wbg.__wbg_BigInt_1b7cf17b993da2bd=function(A,g){LA[0]=A,LA[1]=g;var I=YA[0];return wA(BigInt(I))},I.wbg.__wbindgen_string_new=function(A,g){return wA(yA(A,g))},I.wbg.__wbg_set_fbb49ad265f9dee8=function(A,g,I){aA(A)[uA(g)]=uA(I)},I.wbg.__wbg_new_949bbc1147195c4e=function(){return wA(new Array)},I.wbg.__wbg_new_ac32179a660db4bb=function(){return wA(new Map)},I.wbg.__wbg_new_0b83d3df67ecb33e=function(){return wA(new Object)},I.wbg.__wbindgen_is_string=function(A){return"string"==typeof aA(A)},I.wbg.__wbg_push_284486ca27c6aa8b=function(A,g){return aA(A).push(aA(g))},I.wbg.__wbg_new_342a24ca698edd87=function(A,g){return wA(new Error(yA(A,g)))},I.wbg.__wbg_set_a46091b120cc63e9=function(A,g,I){return wA(aA(A).set(aA(g),aA(I)))},I.wbg.__wbindgen_debug_string=function(A,g){var I=dA(fA(aA(g)),rA.__wbindgen_malloc,rA.__wbindgen_realloc),B=GA;MA()[A/4+1]=B,MA()[A/4+0]=I},I.wbg.__wbindgen_throw=function(A,g){throw new Error(yA(A,g))},("string"==typeof g||"function"==typeof Request&&g instanceof Request||"function"==typeof URL&&g instanceof URL)&&(g=fetch(g)),A.t0=SA,A.next=21,g;case 21:return A.t1=A.sent,A.t2=I,A.next=25,(0,A.t0)(A.t1,A.t2);case 25:return B=A.sent,Q=B.instance,C=B.module,rA=Q.exports,UA.__wbindgen_wasm_module=C,A.abrupt("return",rA);case 31:case"end":return A.stop()}}),A)})))).apply(this,arguments)}var bA=Object.freeze({__proto__:null,create:function(A,g){var I=rA.create(A,g);return JA.__wrap(I)},VtWrapper:JA,default:UA});const HA=[62,0,0,0,63,52,53,54,55,56,57,58,59,60,61,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,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];function mA(A){return HA[A-43]}const qA=function(A){let g,I=A.endsWith("==")?2:A.endsWith("=")?1:0,B=A.length,Q=new Uint8Array(B/4*3);for(let I=0,C=0;I>16,Q[C+1]=g>>8&255,Q[C+2]=255&g;return Q.subarray(0,Q.length-I)}("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AjYCCCAAIAI2AgwgAiABNgIMIAIgADYCCCAFQQhqIQIMAgtBpLzAAEH/HzYCAEGYvMAAIAc2AgBBkLzAACAKNgIAQYy8wAAgCDYCAEH4uMAAQey4wAA2AgBBgLnAAEH0uMAANgIAQfS4wABB7LjAADYCAEGIucAAQfy4wAA2AgBB/LjAAEH0uMAANgIAQZC5wABBhLnAADYCAEGEucAAQfy4wAA2AgBBmLnAAEGMucAANgIAQYy5wABBhLnAADYCAEGgucAAQZS5wAA2AgBBlLnAAEGMucAANgIAQai5wABBnLnAADYCAEGcucAAQZS5wAA2AgBBsLnAAEGkucAANgIAQaS5wABBnLnAADYCAEG4ucAAQay5wAA2AgBBrLnAAEGkucAANgIAQbS5wABBrLnAADYCAEHAucAAQbS5wAA2AgBBvLnAAEG0ucAANgIAQci5wABBvLnAADYCAEHEucAAQby5wAA2AgBB0LnAAEHEucAANgIAQcy5wABBxLnAADYCAEHYucAAQcy5wAA2AgBB1LnAAEHMucAANgIAQeC5wABB1LnAADYCAEHcucAAQdS5wAA2AgBB6LnAAEHcucAANgIAQeS5wABB3LnAADYCAEHwucAAQeS5wAA2AgBB7LnAAEHkucAANgIAQfi5wABB7LnAADYCAEGAusAAQfS5wAA2AgBB9LnAAEHsucAANgIAQYi6wABB/LnAADYCAEH8ucAAQfS5wAA2AgBBkLrAAEGEusAANgIAQYS6wABB/LnAADYCAEGYusAAQYy6wAA2AgBBjLrAAEGEusAANgIAQaC6wABBlLrAADYCAEGUusAAQYy6wAA2AgBBqLrAAEGcusAANgIAQZy6wABBlLrAADYCAEGwusAAQaS6wAA2AgBBpLrAAEGcusAANgIAQbi6wABBrLrAADYCAEGsusAAQaS6wAA2AgBBwLrAAEG0usAANgIAQbS6wABBrLrAADYCAEHIusAAQby6wAA2AgBBvLrAAEG0usAANgIAQdC6wABBxLrAADYCAEHEusAAQby6wAA2AgBB2LrAAEHMusAANgIAQcy6wABBxLrAADYCAEHgusAAQdS6wAA2AgBB1LrAAEHMusAANgIAQei6wABB3LrAADYCAEHcusAAQdS6wAA2AgBB8LrAAEHkusAANgIAQeS6wABB3LrAADYCAEHsusAA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EGkgBCgCACAEKAIIQQF0akEAOwEAIAQgBCgCCEEBajYCCEG4ksAAKAIAIQICQCAEQRBqKAIAIgVFDQAgBUECdEUNACAEKAIMEBALIARCADcCECAEIAI2AgwgA0EQaiIFIANBKGooAgA2AgAgAyADKQMgNwMIIARBIGoiAhBjAkAgBEEkaigCACIGRQ0AIAZBDGxFDQAgAigCABAQCyACIAMpAwg3AgAgAkEIaiAFKAIANgIAIARBLGoiAhBjAkAgBEEwaigCACIFRQ0AIAVBDGxFDQAgAigCABAQCyACIAMpAzA3AgAgBEEAOgCRASACQQhqIANBOGooAgA2AgAgA0EIaiAEKAIYEEAgBEFAayECAkAgBEHEAGooAgAiBUUNACAFQQJ0RQ0AIAIoAgAQEAsgAiADKQMINwIAIAJBCGogA0EIaiILQQhqIgIoAgA2AgAgBEEBOgCSASAEQgA3AjggA0EPaiIFQQA7AAAgBEGXAWpBAjoAACAEQQI6AJMBIANBADYACyAEQZgBaiADKQAINwAAIARBoAFqIAItAAA6AAAgBEEAOwClASAEQYCAgAg2AKEBIARBADYCTCAEIAQoAhwiBkEBazYCUCAFQQA7AAAgA0EANgALIARB4QBqIAMpAAg3AAAgBEHpAGogAi0AADoAACAEQeoAakGAAjsBACAEQeAAakECOgAAIARB3ABqQQI6AAAgBEIANwJUIAVBADsAACADQQA2AAsgBEH5AGogAykACDcAACAEQYEBaiACLQAAOgAAIARBggFqQYACOwEAIARB+ABqQQI6AAAgBEH0AGpBAjoAACAEQgA3AmwgAyAGEF4gAkEANgIAIAMgAykDADcDCCALIAYQSSADQcgAaiACKAIANgIAIAMgAykDCDcDQCAEQYQBaiECIARBiAFqKAIABEAgAigCABAQCyACIAMpA0A3AgAgAkEIaiADQcgAaigCADYCAAwCCyAFIAJBpIzAABBUAAsgAkEoRw0AIARBADoAoQELIANB0ABqJAALIAkgE0cNAAsLIAQoAowBIQMgBCgChAEhAiANQQA2AgggDSACIANqNgIEIA0gAjYCACMAQTBrIgUkACANKAIAIQIgDSgCBCEGAkACQANAIAIgBkYNASANIAJBAWoiAzYCACANIA0oAggiCUEBajYCCCACLQAAIAMhAkUNAAsg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aigCACIGIARPBEAgASECIAQgBkcNAQwECyABQQFqIQMLIAIgA2shASACIANLDQALCwJAIABBQGsiACgCCCICIANPBEAgAiAAKAIERgRAIAAgAhBnCyAAKAIAIANBAnRqIgFBBGogASACIANrQQJ0EBUgACACQQFqNgIIIAEgBDYCAAwBCyMAQTBrIgAkACAAIAI2AgQgACADNgIAIABBHGpBAjYCACAAQSxqQd0ANgIAIABCAzcCDCAAQaScwAA2AgggAEHdADYCJCAAIABBIGo2AhggACAAQQRqNgIoIAAgADYCICAAQQhqQbycwAAQfwALCwumAQEDfyMAQdAAayIAJAAgAEEzNgIMIABBuIPAADYCCCAAQgA3AhQgAEGYhsAAKAIANgIQIABBIGoiASAAQRBqEIABIABBCGoiAigCACACKAIEIAEQvQEEQEGEhcAAQTcgAEHIAGpBoIbAAEGIhsAAEE0ACyAAIABBEGoiASgCCDYCBCAAIAEoAgA2AgAgACgCACAAKAIEEL4BIAEQjwEgAEHQAGokAAuWAQECfyAALQAIIQEgACgCBCICBEAgAUH/AXEhASAAAn9BASABDQAaAkAgAkEBRw0AIAAtAAlFDQAgACgCACICLQAAQQRxDQBBASACKAIYQayfwABBASACQRxqKAIAKAIMEQEADQEaCyAAKAIAIgEoAhhBrZ/AAEEBIAFBHGooAgAoAgwRAQALIgE6AAgLIAFB/wFxQQBHC6gCAQZ/AkAgAEHIAGooAgAiAUUNACAAQUBrIQMgACgCQCEFIAAoAjghBEEAIQAgASECA0ACQAJAIAUgAUEBdiAAaiIBQQJ0aigCACIGIARPBEAgBCAGRg0CIAEhAgwBCyABQQFqIQALIAIgAGshASAAIAJJDQEMAgsLAkAgAygCCCICIAFLBEAgAygCACABQQJ0aiIAKAIAGiAAIABBBGogAiABQX9zakECdBAVIAMgAkEBazYCCAwBCyMAQTBrIgAkACAAIAI2AgQgACABNgIAIABBHGpBAjYCACAAQSxqQd0ANgIAIABCAzcCDCAAQeCcwAA2AgggAEHdADYCJCAAIABBIGo2AhggACAAQQRqNgIoIAAgADYCICAAQQhqQbCLwAAQfwALCwvcAgEEfyMAQSBrIgYkACABBEAgBiABIAMgBCAFIAIoAhARCAAg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ajYCKCADIAM2AiAgA0EIaiACEH8AC24BAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakHdADYCACADQgI3AgwgA0GEo8AANgIIIANB3QA2AiQgAyADQSBqNgIYIAMgA0EEajYCKCADIAM2AiAgA0EIaiACEH8AC1sBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGoiAEEQaiABQRBqKQIANwMAIABBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHAmMAAIAAQFyACQSBqJAALWwEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEIaiIAQRBqIAFBEGopAgA3AwAgAEEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQZCawAAgABAXIAJBIGokAAtbAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQQhqIgBBEGogAUEQaikCADcDACAAQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBiJ3AACAAEBcgAkEgaiQAC1sBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGoiAEEQaiABQRBqKQIANwMAIABBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGoocAAIAAQFyACQSBqJAALWAEBfyMAQSBrIgIkACACIAA2AgQgAkEIaiIAQRBqIAFBEGopAgA3AwAgAEEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQcCYwAAgABAXIAJBIGokAAtYAQF/IwBBIGsiAiQAIAIgADYCBCACQQhqIgBBEGogAUEQaikCADcDACAAQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBqKHAACAAEBcgAkEgaiQAC1ABAX8CQAJAIAFBAE4EQCABRQ0BIAFBARCeASICDQIgAUEBQdC4wAAoAgAiAEHQACAAGxECAAALEKUBAAtBASECCyAAIAE2AgQgACACNgIAC80FAgd/An4jAEEQayIFJAAgBUEIaiABIAJBAhBGIAAiCgJ/IAUoAghFBEBBACECIwBBIGsiBCQAIAEpAgwhCyABQQA2AgwCfwJAIAunBEAgBCALQiCIpyIINgIYIARBEGohCSABKAIAIQYjAEGAAWsiACQAAkAgAy0AAEEBRwRAIABBKGoiBiADLQAB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ADYCACACQRBqIAFBEGopAwA3AwAgAkEIaiABQQhqKQMANwMAIAEgASkDADcDMAwDCyABQQxqIQUgA0EUbEEUayELQQAhCEEBIQIDQAJAAkACQCAHIAhqIgNBGGoiCS0AACIGQQJHIAEtAAwiDEECR3MNAAJAIAZBAkYNACAMQQJGDQAgBiAMRw0BIAZBAUcEQCADQRlqLQAAIAEtAA1GDQEMAgsgA0EZai0AACABLQANRw0BIANBGmotAAAgAS0ADkcNASADQRtqLQAAIAEtAA9HDQELIANBHGotAAAiBkECRyABLQAQIgxBAkdzDQACQCAGQQJGDQAgDEECRg0AIAYgDEcNASAGQQFHBEAgA0Edai0AACABLQARRg0BDAILIANBHWotAAAgAS0AEUcNASADQR5qLQAAIAEtABJHDQEgA0Efai0AACABLQATRw0BCyADQSBqLQAARSABLQAUQQBHRg0AIANBIWotAABFIAEtABVBAEdGDQAgA0Eiai0AAEUgAS0AFkEAR0YNACADQSNqLQAARSABLQAXQQBHRg0AIANBJGotAABFIAEtABhBAEdGDQAgA0Elai0AAEUgAS0AGUEAR3MNAQsgAUEwaiICQRhqIgwgAUEYaigCADYCACACQRBqIg0gAUEQaikDADcDACACQQhqIg8gAUEIaikDADcDACABIAEpAwA3AzAgASgCKCICIAEoAiRGBEAgAUEgaiACEGogASgCKCECCyABKAIgIAJBHGxqIgYgASkDMDcCACAGQQhqIA8pAwA3AgAgBkEQaiANKQMANwIAIAZBGGogDCgCADYCACABIAJBAWo2AihBBEEEEJ4BIgJFDQggAiADQRRqKAIANgIAIAEgCSkCADcDMCABIAlBBmopAQA3ATYgBSABKQMwNwIAIAVBBmogASkBNjcBACABIAI2AgAgAUKBgICAEDcCBEEBIQIMAQsgA0EUaigCACEDIAEoAgQgAkYEQCABIAIQZyABKAIIIQILIAEoAgAgAkECdGogAzYCACABIAEoAghBAWoiAjYCCAsgCyAIQRRqIghHDQALDAELDAQLIAEoAiQgASgCKCEGIAFBMGoiAkEYaiABQRhqKAIANgIAIAJBEGogAUEQaikDADcDACACQQhqIAFBCGopAwA3AwAgASABKQMANwMwIAZHDQELIAFBIGogBhBq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AgA2AgAgAiADKQMYNwIsIAJBNGogB0EIaigCADYCACACQZcBakECOgAAIAJCADcCOCACQQA6AKEBIAJBgIAENgGiASACQQA6AKYBIAJBADYCTCACIAFBAWs2AlAgAkIANwJUIAJB4ABqQQI6AAAgAkHcAGpBAjoAACACQZgBaiADKQBHNwAAIAJBoAFqIApBCGotAAA6AAAgAiADKQM4NwJAIAJByABqIAlBCGooAgA2AgAgAkHpAGogCy0AADoAACACQeEAaiADKQNQNwAAIAJB+ABqQQI6AAAgAkH0AGpBAjoAACACQgA3AmwgAkHqAGpBgAI7AQAgAkGBAWogBS0AADoAACACQfkAaiADKQNgNwAAIAJBggFqQYACOwEAIANBgAFqJAAgAkGoAWoiASACQagBECIaQawBQQQQngEiAEUEQEGsAUEEQdC4wAAoAgAiAEHQACAAGxECAAALIABBADYCACAAQQRqIAFBqAEQIhogAkHQAmokACAACysAAkAgAEF8Sw0AIABFBEBBBA8LIAAgAEF9SUECdBCeASIARQ0AIAAPCwALLQAgASACTwRAIAEgAmsiASAAIAFBFGxqIAIQGg8LQcCTwABBIUHkk8AAEHAACy0AIAEgAk8EQCABIAJrIgEgACABQQxsaiACEA8PC0H8lMAAQSFBoJXAABBwAAvDAgEDfyAAKAIAIQIgAS0AAEEQcUEEdkUEQCABLQAAQSBxQQV2RQRAIAIgARCoAQ8LQQAhACMAQYABayIDJAAgAigCACECA0AgACADakH/AGpBMEE3IAJBD3EiBEEKSRsgBGo6AAAgAEEBayEAIAJBD0sgAkEEdiECDQALIABBgAFqIgJBgQFPBEAgAkGAAUHMn8AAEFUACyABQdyfwABBAiAAIANqQYABakEAIABrEBMgA0GAAWokAA8LQQAhACMAQYABayIDJAAgAigCACECA0AgACADakH/AGpBMEHXACACQQ9xIgRBCkkbIARqOgAAIABBAWshACACQQ9LIAJBBHYhAg0ACyAAQYABaiICQYEBTwRAIAJBgAFBzJ/AABBVAAsgAUHcn8AAQQIgACADakGAAWpBACAAaxATIANBgAFqJAALPAECfyMAQRBrIgIkACACQQhqIgMgACgCCDYCBCADIAAoAgA2AgAgAigCCCACKAIMIAEQvQEgAkEQaiQAC9MCAQN/IAAoAgAhACABLQAAQRBxQQR2RQRAIAEtAABBIHFBBXZFBEAgADMBACABECQPCyMAQYABayIDJAAgAC8BACECQQAhAANAIAAgA2pB/wBqQTBBNyACQQ9xIgRBCkkbIARqOgAAIABBAWshACACQf//A3EiBEEEdiECIARBD0sNAAsgAEGAAWoiAkGBAU8EQCACQYABQcyfwAAQVQALIAFB3J/AAEECIAAgA2pBgAFqQQAgAGsQEyADQYABaiQADwsjAEGAAWsiAyQAIAAvAQAhAkEAIQADQCAAIANqQf8AakEwQdcAIAJBD3EiBEEKSRsgBGo6AAAgAEEBayEAIAJB//8DcSIEQQR2IQIgBEEPSw0ACyAAQYABaiICQYEBTwRAIAJBgAFBzJ/AABBVAAsgAUHcn8AAQQIgACADakGAAWpBACAAaxATIANBgAFqJAALzwIBA38gACgCACEAIAEtAABBEHFBBHZFBEAgAS0AAEEgcUEFdkUEQCAAIAEQqwEPCyMAQYABayIDJAAgAC0AACECQQAhAANAIAAgA2pB/wBqQTBBNyACQQ9xIgRBCkkbIARqOgAAIABBAWshACACQf8BcSIEQQR2IQIgBEEPSw0ACyAAQYABaiICQYEBTwRAIAJBgAFBzJ/AABBVAAsgAUHcn8AAQQIgACADakGAAWpBACAAaxATIANBgAFqJAAPCyMAQYABayIDJAAgAC0AACECQQAhAANAIAAgA2pB/wBqQTBB1wAgAkEPcSIEQQpJGyAEajoAACAAQQFrIQAgAkH/AXEiBEEEdiECIARBD0sNAAsgAEGAAWoiAkGBAU8EQCACQYABQcyfwAAQVQALIAFB3J/AAEECIAAgA2pBgAFqQQAgAGsQEyADQYABaiQACzQAIAAgASgCGCACIAMgAUEcaigCACgCDBEBADoACCAAIAE2AgAgACADRToACSAAQQA2AgQLKwAgASACTwRAIAIgACACQQxsaiABIAJrEA8PC0H8k8AAQSNB7JTAABBwAAv9AQEFfyABKAIIIgIgASgCBEkEQCMAQRBrIgMkAAJAIAEoAgQiBCACTwRAAkAgBEUNACABKAIAIQUCQAJAIAJFBEBBASEEIAUQEAwBCyAFIARBASACEJIBIgRFDQELIAEgAjYCBCABIAQ2AgAMAQsgAyACNgIEIANBCGpBATYCAEEBIQYLIAMgBjYCAAwBC0GMmMAAQSRBsJjAABBwAAsCQAJAIAMoAgBBAUYEQCADQQhqKAIAIgBFDQEgAygCBCAAQdC4wAAoAgAiAEHQACAAGxECAAALIANBEGokAAwBCxClAQALIAEoAgghAgsgACACNgIEIAAgASgCADYCAAsqACAAIAAoAgRBAXEgAXJBAnI2AgQgACABakEEaiIAIAAoAgBBAXI2AgALpgIBA38jAEEQayICJAAgAiABNgIMIAIgADYCCCACQdidwAA2AgQgAkGgncAANgIAIwBBEGsiACQAIAIoAgwiAUUEQEHgmMAAQStBqJnAABBwAAsgAigCCCIERQRAQeCYwABBK0G4mcAAEHAACyAAIAE2AgggACACNgIEIAAgBDYCACAAKAIAIQEgACgCBCECIAAoAgghBCMAQRBrIgAkACABQRRqKAIAIQMCQAJ/AkACQCABQQRqKAIADgIAAQMLIAMNAkEAIQFB2JjAAAwBCyADDQEgASgCACIDKAIEIQEgAygCAAshAyAAIAE2AgQgACADNgIAIABB/JnAACACKAIIIAQQNQALIABBADYCBCAAIAE2AgAgAEHomcAAIAIoAgggBBA1AAs3ACAAQQM6ACAgAEKAgICAgAQ3AgAgACABNgIYIABBADYCECAAQQA2AgggAEEcakHshMAANgIACyABAX8CQCAAKAIEIgFFDQAgAUECdEUNACAAKAIAEBALCyABAX8CQCAAKAIEIgFFDQAgAUEMbEUNACAAKAIAEBALCx4AAkAgAEEEaigCAEUNACAAKAIAIgBFDQAgABAQCwsgAQF/AkAgACgCBCIBRQ0AIABBCGooAgBFDQAgARAQCwsfAAJAIAFBfE0EQCAAIAFBBCACEJIBIgANAQsACyAACyUAIABFBEBBsIfAAEEwELgBAAsgACACIAMgBCAFIAEoAhARCQALIwAgAEUEQEGwh8AAQTAQuAEACyAAIAIgAyAEIAEoAhARBQALIwAgAEUEQEGwh8AAQTAQuAEACyAAIAIgAyAEIAEoAhAREwALIwAgAEUEQEGwh8AAQTAQuAEACyAAIAIgAyAEIAEoAhARCgALIwAgAEUEQEGwh8AAQTAQuAEACyAAIAIgAyAEIAEoAhARFQALIAEBfxAFIQIgACABNgIEIABBADYCACAAQQhq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AEsAAAASBwAAGgAAAFwEEABLAAAANQcAABcAAABcBBAASwAAADsHAAAJAAAAU29zUG1BcGNTdHJpbmdPc2NTdHJpbmdEY3NJZ25vcmVEY3NQYXNzdGhyb3VnaERjc0ludGVybWVkaWF0ZURjc1BhcmFtRGNzRW50cnlDc2lJZ25vcmVDc2lJbnRlcm1lZGlhdGVDc2lQYXJhbUNzaUVudHJ5RXNjYXBlSW50ZXJtZWRpYXRlRXNjYXBlR3JvdW5kUkdCAAAiAAAABAAAAAQAAAAjAAAASW5kZXhlZFBlbmZvcmVncm91bmQkAAAABAAAAAQAAAAlAAAAYmFja2dyb3VuZGJvbGQAACYAAAAEAAAABAAAACcAAABpdGFsaWN1bmRlcmxpbmVzdHJpa2V0aHJvdWdoYmxpbmtpbnZlcnNlQ2VsbCgAAAAEAAAABAAAACkAAAAqAAAABAAAAAQAAAArAAAALAAAAAQAAAAEAAAALQAAAEcxRzBBbHRlcm5hdGVQcmltYXJ5U2F2ZWRDdHhjdXJzb3JfeC4AAAAEAAAABAAAAC8AAABjdXJzb3JfeXBlbm9yaWdpbl9tb2RlYXV0b193cmFwX21vZGVWVHN0YXRlADAAAAAEAAAABAAAADEAAABwYXJhbXMAADIAAAAEAAAABAAAADMAAABpbnRlcm1lZGlhdGVzY29sdW1uc3Jvd3NidWZmZXIAADQAAAAEAAAABAAAADUAAABhbHRlcm5hdGVfYnVmZmVyYWN0aXZlX2J1ZmZlcl90eXBlAAA2AAAABAAAAAQAAAA3AAAAY3Vyc29yX3Zpc2libGVjaGFyc2V0AAAAOAAAAAQAAAAEAAAAOQAAAHRhYnM6AAAABAAAAAQAAAA7AAAAaW5zZXJ0X21vZGVuZXdfbGluZV9tb2RlbmV4dF9wcmludF93cmFwc3RvcF9tYXJnaW5ib3R0b21fbWFyZ2luc2F2ZWRfY3R4PAAAAAQAAAAEAAAAPQAAAGFsdGVybmF0ZV9zYXZlZF9jdHhhZmZlY3RlZF9saW5lcwAAAD4AAAAEAAAABAAAAD8AAAACAAAAAAAAAAQAAAAAAAAAYXNzZXJ0aW9uIGZhaWxlZDogbWlkIDw9IHNlbGYubGVuKCkvcnVzdGMvOWQxYjIxMDZlMjNiMWFiZDMyZmNlMWYxNzI2NzYwNGE1MTAyZjU3YS9saWJyYXJ5L2NvcmUvc3JjL3NsaWNlL21vZC5yc2MJEABNAAAAogsAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBrIDw9IHNlbGYubGVuKCkAAABjCRAATQAAAM0LAAAJAAAABAAAAAAAAABhc3NlcnRpb24gZmFpbGVkOiBtaWQgPD0gc2VsZi5sZW4oKS9ydXN0Yy85ZDFiMjEwNmUyM2IxYWJkMzJmY2UxZjE3MjY3NjA0YTUxMDJmNTdhL2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzHwoQAE0AAACiCwAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAB8KEABNAAAAzQsAAAkAAABAAAAABAAAAAQAAABBAAAAQgAAAAQAAAAEAAAAJwAAAEMAAAAEAAAABAAAACkAAABEAAAABAAAAAQAAABFAAAARgAAAAQAAAAEAAAALwAAAEcAAAAEAAAABAAAAEgAAAABAAAAAAAAAFNvbWVJAAAABAAAAAQAAABKAAAATm9uZUpzVmFsdWUoKQAAADALEAAIAAAAOAsQAAEAAABudWxsIHBvaW50ZXIgcGFzc2VkIHRvIHJ1c3RyZWN1cnNpdmUgdXNlIG9mIGFuIG9iamVjdCBkZXRlY3RlZCB3aGljaCB3b3VsZCBsZWFkIHRvIHVuc2FmZSBhbGlhc2luZyBpbiBydXN0AAAEAAAAAAAAAC9ydXN0Yy85ZDFiMjEwNmUyM2IxYWJkMzJmY2UxZjE3MjY3NjA0YTUxMDJmNTdhL2xpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNUcmllZCB0byBzaHJpbmsgdG8gYSBsYXJnZXIgY2FwYWNpdHnACxAATAAAAKsBAAAJAAAATAAAAAQAAAAEAAAATQAAAE4AAABPAAAAAQAAAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5ycwCLDBAAHAAAAPABAAAfAAAAiwwQABwAAADxAQAAHgAAAFEAAAAMAAAABAAAAFIAAABTAAAACAAAAAQAAABUAAAAVQAAABAAAAAEAAAAVgAAAFcAAABTAAAACAAAAAQAAABYAAAAWQAAAFMAAAAEAAAABAAAAFoAAABbAAAAXAAAAGxpYnJhcnkvYWxsb2Mvc3JjL3Jhd192ZWMucnNjYXBhY2l0eSBvdmVyZmxvdwAAACgNEAAcAAAABgIAAAUAAABhIGZvcm1hdHRpbmcgdHJhaXQgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3JsaWJyYXJ5L2FsbG9jL3NyYy9mbXQucnMAmw0QABgAAABVAgAAHAAAACkgc2hvdWxkIGJlIDwgbGVuIChpcyApbGlicmFyeS9hbGxvYy9zcmMvdmVjL21vZC5yc2luc2VydGlvbiBpbmRleCAoaXMgKSBzaG91bGQgYmUgPD0gbGVuIChpcyAAAPcNEAAUAAAACw4QABcAAADaDRAAAQAAANsNEAAcAAAAPQUAAA0AAAByZW1vdmFsIGluZGV4IChpcyAAAEwOEAASAAAAxA0QABYAAADaDRAAAQAAAF4AAAAAAAAAAQAAAA0AAABeAAAABAAAAAQAAABfAAAAYAAAAGEAAAAuLgAAoA4QAAIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAGcAAAAAAAAAAQAAAGgAAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAA6A4QACAAAAAIDxAAEgAAAGA6IACgDhAAAAAAAC0PEAACAAAAZwAAAAwAAAAEAAAAaQAAAGoAAABrAAAAICAgIGxpYnJhcnkvY29yZS9zcmMvZm10L2J1aWxkZXJzLnJzXA8QACAAAAAvAAAAIQAAAFwPEAAgAAAAMAAAABIAAAAgewosCiwgIHsgfSB9KAooLCkKW11saWJyYXJ5L2NvcmUvc3JjL2ZtdC9udW0ucnOxDxAAGwAAAGUAAAAUAAAAMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5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");function xA(A){return"number"==typeof A?A:"string"==typeof A?A.split(":").reverse().map(parseFloat).reduce((function(A,g,I){return A+g*Math.pow(60,I)})):void 0}function jA(A,g){var I="undefined"!=typeof Symbol&&A[Symbol.iterator]||A["@@iterator"];if(!I){if(Array.isArray(A)||(I=function(A,g){if(!A)return;if("string"==typeof A)return TA(A,g);var I=Object.prototype.toString.call(A).slice(8,-1);"Object"===I&&A.constructor&&(I=A.constructor.name);if("Map"===I||"Set"===I)return Array.from(A);if("Arguments"===I||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(I))return TA(A,g)}(A))||g&&A&&"number"==typeof A.length){I&&(A=I);var B=0,Q=function(){};return{s:Q,n:function(){return B>=A.length?{done:!0}:{done:!1,value:A[B++]}},e:function(A){throw A},f:Q}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var C,E=!0,t=!1;return{s:function(){I=I.call(A)},n:function(){var A=I.next();return E=A.done,A},e:function(A){t=!0,C=A},f:function(){try{E||null==I.return||I.return()}finally{if(t)throw C}}}}function TA(A,g){(null==g||g>A.length)&&(g=A.length);for(var I=0,B=new Array(g);I(await UA(qA),bA))(),WA=function(){function A(g,I){var Q;B(this,A),this.state="initial",this.driver=null,this.driverFn=g,this.changedLines=new Set,this.cursor=void 0,this.duration=null,this.cols=I.cols,this.rows=I.rows,this.startTime=null,this.speed=null!==(Q=I.speed)&&void 0!==Q?Q:1,this.loop=I.loop,this.idleTimeLimit=I.idleTimeLimit,this.preload=I.preload,this.startAt=xA(I.startAt),this.poster=I.poster,this.eventHandlers=new Map([["starting",[]],["waiting",[]],["reset",[]],["play",[]],["pause",[]],["terminalUpdate",[]],["seeked",[]],["ended",[]]])}var g,Q,E,e,i,n,o,r;return C(A,[{key:"addEventListener",value:function(A,g){this.eventHandlers.get(A).push(g)}},{key:"dispatchEvent",value:function(A){var g,I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},B=jA(this.eventHandlers.get(A));try{for(B.s();!(g=B.n()).done;){var Q=g.value;Q(I)}}catch(A){B.e(A)}finally{B.f()}}},{key:"init",value:function(){var A=I(t.mark((function A(){var g,I,B,Q,C,E,e,i,n,o,r,s=this;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return B=0,Q=this.feed.bind(this),C=this.now.bind(this),E=function(A,g){return window.setTimeout(A,g/s.speed)},e=function(A,g){return window.setInterval(A,g/s.speed)},i=function(A,g){s.resetVt(A,g)},n=function(){B++,!0===s.loop||"number"==typeof s.loop&&B0){var A,g=new Map,I=jA(this.changedLines);try{for(I.s();!(A=I.n()).done;){var B=A.value;g.set(B,{id:B,segments:this.vt.get_line(B)})}}catch(A){I.e(A)}finally{I.f()}return this.changedLines.clear(),g}}},{key:"getCursor",value:function(){var A;void 0===this.cursor&&this.vt&&(this.cursor=null!==(A=this.vt.get_cursor())&&void 0!==A&&A);return this.cursor}},{key:"getCurrentTime",value:function(){return"function"==typeof this.driver.getCurrentTime?this.driver.getCurrentTime():this.startTime?(this.now()-this.startTime)/1e3:void 0}},{key:"getRemainingTime",value:function(){if("number"==typeof this.duration)return this.duration-Math.min(this.getCurrentTime(),this.duration)}},{key:"getProgress",value:function(){if("number"==typeof this.duration)return Math.min(this.getCurrentTime(),this.duration)/this.duration}},{key:"getDuration",value:function(){return this.duration}},{key:"start",value:(i=I(t.mark((function A(){var g,I,B=this;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return this.dispatchEvent("starting"),g=setTimeout((function(){B.dispatchEvent("waiting")}),2e3),A.next=4,this.initializeDriver();case 4:return this.dispatchEvent("terminalUpdate"),A.next=7,this.driver.start();case 7:I=A.sent,clearTimeout(g),"function"==typeof I&&(this.driver.stop=I),this.startTime=this.now(),this.state="playing",this.dispatchEvent("play");case 13:case"end":return A.stop()}}),A,this)}))),function(){return i.apply(this,arguments)})},{key:"doPause",value:function(){"function"==typeof this.driver.pauseOrResume&&(this.driver.pauseOrResume(),this.state="paused",this.dispatchEvent("pause"))}},{key:"resume",value:function(){"function"==typeof this.driver.pauseOrResume&&(this.state="playing",this.driver.pauseOrResume(),this.dispatchEvent("play"))}},{key:"doSeek",value:(e=I(t.mark((function A(g){return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if("function"!=typeof this.driver.seek){A.next=8;break}return A.next=3,this.initializeDriver();case 3:return"playing"!=this.state&&(this.state="paused"),this.driver.seek(g),A.abrupt("return",!0);case 8:return A.abrupt("return",!1);case 9:case"end":return A.stop()}}),A,this)}))),function(A){return e.apply(this,arguments)})},{key:"restart",value:(E=I(t.mark((function A(){return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=2,this.doSeek(0);case 2:if(!A.sent){A.next=5;break}this.resume(),this.dispatchEvent("play");case 5:case"end":return A.stop()}}),A,this)}))),function(){return E.apply(this,arguments)})},{key:"feed",value:function(A){var g=this;this.vt.feed(A).forEach((function(A){return g.changedLines.add(A)})),this.cursor=void 0,this.dispatchEvent("terminalUpdate")}},{key:"now",value:function(){return performance.now()*this.speed}},{key:"initializeDriver",value:function(){return void 0===this.initializeDriverPromise&&(this.initializeDriverPromise=this.doInitializeDriver()),this.initializeDriverPromise}},{key:"doInitializeDriver",value:(Q=I(t.mark((function A(){var g,I,B,Q;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if("function"!=typeof this.driver.init){A.next=7;break}return A.next=3,this.driver.init();case 3:Q=A.sent,this.duration=null!==(g=this.duration)&&void 0!==g?g:Q.duration,this.cols=null!==(I=this.cols)&&void 0!==I?I:Q.cols,this.rows=null!==(B=this.rows)&&void 0!==B?B:Q.rows;case 7:this.ensureVt();case 8:case"end":return A.stop()}}),A,this)}))),function(){return Q.apply(this,arguments)})},{key:"ensureVt",value:function(){var A,g,I=null!==(A=this.cols)&&void 0!==A?A:80,B=null!==(g=this.rows)&&void 0!==g?g:24;void 0!==this.vt&&this.vt.cols===I&&this.vt.rows===B||this.initializeVt(I,B)}},{key:"resetVt",value:function(A,g){this.cols=A,this.rows=g,this.initializeVt(A,g)}},{key:"initializeVt",value:function(A,g){this.vt=this.wasm.create(A,g),this.vt.cols=A,this.vt.rows=g,this.changedLines.clear();for(var I=0;I!0,deleteProperty:()=>!0,ownKeys:function(A){if(L()){const g=$A(A);(g._||(g._=Ag()))()}return Reflect.ownKeys(A)},getOwnPropertyDescriptor:function(A,g){const I=Reflect.getOwnPropertyDescriptor(A,g);return I&&!I.get&&I.configurable&&g!==o&&g!==XA&&g!==VA?(delete I.value,delete I.writable,I.get=()=>A[o][g],I):I}};function Ig(A,g,I){if(A[g]===I)return;const B=Array.isArray(A),Q=A.length,C=void 0===I,E=B||C===g in A;C?delete A[g]:A[g]=I;let t,e=$A(A);(t=e[g])&&t.$(),B&&A.length!==Q&&(t=e.length)&&t.$(),E&&(t=e._)&&t.$()}function Bg(A,g,I=[]){let B,Q=A;if(g.length>1){B=g.shift();const C=typeof B,E=Array.isArray(A);if(Array.isArray(B)){for(let Q=0;Q1)return void Bg(A[B],g,[B].concat(I));Q=A[B],I=[B].concat(I)}let C=g[0];"function"==typeof C&&(C=C(Q,I),C===Q)||void 0===B&&null==C||(C=_A(C),void 0===B||zA(Q)&&zA(C)&&!Array.isArray(C)?function(A,g){const I=Object.keys(g);for(let B=0;BBg(I,A)))}]}function Cg(A,g,I,B,Q){const C=g[I];if(A===C)return;if(!zA(A)||!zA(C)||Q&&A[Q]!==C[Q])return void(A!==C&&Ig(g,I,A));if(Array.isArray(A)){if(A.length&&C.length&&(!B||Q&&null!=A[0][Q])){let g,I,E,t,e,i,n,o;for(E=0,t=Math.min(C.length,A.length);E=E&&e>=E&&(C[t]===A[e]||Q&&C[t][Q]===A[e][Q]);t--,e--)r[e]=C[t];if(E>e||E>t){for(I=E;I<=e;I++)Ig(C,I,A[I]);for(;IA.length&&Ig(C,"length",A.length))}for(n=new Array(e+1),I=e;I>=E;I--)i=A[I],o=Q?i[Q]:i,g=s.get(o),n[I]=void 0===g?-1:g,s.set(o,I);for(g=E;g<=t;g++)i=C[g],o=Q?i[Q]:i,I=s.get(o),void 0!==I&&-1!==I&&(r[I]=C[g],I=n[I],s.set(o,I));for(I=E;IA.length&&Ig(C,"length",A.length))}const E=Object.keys(A);for(let g=0,I=E.length;gzA(A)&&zA(Q)?(Cg(Q,{state:A},"state",I,B),A):Q}const tg=IA("");var eg=function(A){return EA(g=tg.cloneNode(!0),(function(){return A.text})),k((function(I){var B,Q,C,E,t,e,i,n=(B=A.attrs,Q=A.extraClass,C=B.get("inverse")?B.has("bg")?B.get("bg"):"bg":B.get("fg"),E=B.get("inverse")?B.has("fg")?B.get("fg"):"fg":B.get("bg"),t=ig(C,B.get("bold"),"fg-"),e=ig(E,B.get("blink"),"bg-"),i=null!=Q?Q:"",t&&(i+=" "+t),e&&(i+=" "+e),B.has("bold")&&(i+=" bright"),B.has("italic")&&(i+=" italic"),B.has("underline")&&(i+=" underline"),B.has("blink")&&(i+=" blink"),i),o=function(A){var g=A.get("inverse")?A.get("bg"):A.get("fg"),I=A.get("inverse")?A.get("fg"):A.get("bg"),B={};return"string"==typeof g&&(B.color=g),"string"==typeof I&&(B["background-color"]=I),B}(A.attrs);return n!==I._v$&&(g.className=I._v$=n),I._v$2=CA(g,o,I._v$2),I}),{_v$:void 0,_v$2:void 0}),g;var g};function ig(A,g,I){return"number"==typeof A?(g&&A<8&&(A+=8),"".concat(I).concat(A)):"fg"==A||"bg"==A?"".concat(I).concat(A):void 0}const ng=IA('');var og=function(A){var g;return EA(g=ng.cloneNode(!0),X(P,{get each(){return function(){if("number"==typeof A.cursor){for(var g=[],I=0,B=0;B0&&g.push([C[0].substring(0,e),C[1]]),g.push([C[0][e],E," cursor-a"]),g.push([C[0][e],t," cursor-b"]),e');var sg=function(A){var g,I,B=function(){var g;return null!==(g=A.lineHeight)&&void 0!==g?g:1.3333333333},Q=d((function(){return{width:"".concat(A.cols,"ch"),height:"".concat(B()*A.rows,"em"),"font-size":"".concat(100*(A.scale||1),"%"),"font-family":A.fontFamily,"line-height":"".concat(B(),"em")}}));return g=rg.cloneNode(!0),"function"==typeof(I=A.ref)?I(g):A.ref=g,EA(g,X(V,{get each(){return A.lines},children:function(g,I){return C=d((function(){return I()===(null===(g=A.cursor)||void 0===g?void 0:g[1]);var g}),void 0,(Q=!0)?void 0:{equals:Q}),X(og,{get segments(){return g.segments},get cursor(){return C()?null===(g=A.cursor)||void 0===g?void 0:g[0]:null;var g},get height(){return"".concat(B(),"em")}});var Q,C}})),k((function(I){var B=A.blink||A.cursorHold,C=A.blink,E=Q();return B!==I._v$&&g.classList.toggle("cursor",I._v$=B),C!==I._v$2&&g.classList.toggle("blink",I._v$2=C),I._v$3=CA(g,E,I._v$3),I}),{_v$:void 0,_v$2:void 0,_v$3:void 0}),g};const ag=IA(''),cg=IA(''),ug=IA(''),wg=IA(''),Dg=IA('
');function hg(A){A=Math.floor(A);var g=Math.floor(A/60),I=A%60,B="";return g<10&&(B+="0"),B+="".concat(g,":"),I<10&&(B+="0"),B+="".concat(I)}var lg=function(A){var g,I,B,Q,C,E=function(A){return function(g){g.preventDefault(),A(g)}},t=function(){return"number"==typeof A.currentTime?hg(A.currentTime):"--:--"},e=function(){return"number"==typeof A.remainingTime?"-"+hg(A.remainingTime):t()},i=function(g){if(!(g.altKey||g.shiftKey||g.metaKey||g.ctrlKey)){var I=g.currentTarget.offsetWidth,B=g.currentTarget.getBoundingClientRect(),Q=(g.clientX-B.left)/I;return A.onSeekClick("".concat(100*Q,"%"))}};return g=Dg.cloneNode(!0),I=g.firstChild,B=I.firstChild,Q=B.nextSibling,C=I.nextSibling,EA(g,X(z,{get when(){return A.isPausable},get children(){var g=ug.cloneNode(!0);return QA(g,"click",E(A.onPlayClick),!0),EA(g,X(_,{get children(){return[X($,{get when(){return A.isPlaying},get children(){return ag.cloneNode(!0)}}),X($,{get when(){return!A.isPlaying},get children(){return cg.cloneNode(!0)}})]}})),g}}),I),EA(B,t),EA(Q,e),QA(C,"click",E(A.onFullscreenClick),!0),EA(g,X(z,{get when(){return"number"==typeof A.progress||A.isSeekable},get children(){var g=wg.cloneNode(!0),I=g.firstChild,B=I.firstChild.firstChild;return I.$$mousedown=i,k((function(g){return CA(B,{width:"100%",transform:"scaleX(".concat(A.progress||0),"transform-origin":"left center"},g)})),g}}),null),k((function(){return g.classList.toggle("seekable",A.isSeekable)})),g};BA(["click","mousedown"]);const yg=IA('
');var fg=function(A){for(var g,I=["▓","▒","░","▒"],B=1,Q="",C=0;C
');var kg=function(A){var g,I;return QA(I=Gg.cloneNode(!0),"click",(g=A.onClick,function(A){A.preventDefault(),g(A)}),!0),I};BA(["click"]);const Ng=IA('
');var dg=function(A){var g,B,Q,C,E,e,i,o,r=A.core,s=A.autoPlay,a=n(Qg({coreState:"initial",cols:A.cols,rows:A.rows,lines:[],cursor:void 0,charW:null,charH:null,bordersW:null,bordersH:null,containerW:null,containerH:null,showControls:!1,showStartOverlay:!s,isPausable:!0,isSeekable:!0,isFullscreen:!1,currentTime:null,remainingTime:null,progress:null,blink:!0,cursorHold:!1}),2),c=a[0],u=a[1],w=function(){return c.cols||80},D=function(){return c.rows||24};r.addEventListener("starting",(function(){u("showStartOverlay",!1)})),r.addEventListener("waiting",(function(){u("coreState","waiting")})),r.addEventListener("reset",(function(A){var g=A.cols,I=A.rows;II/B?"height":"width";if(!1===Q||"none"===Q)return{};if("width"===Q){var C=c.containerW/I;return{scale:C,width:c.containerW,height:B*C}}if("height"===Q){var E=c.containerH/B;return{scale:E,width:I*E,height:c.containerH}}throw"unsupported fit mode: ".concat(Q)}})),y=function(){var A;u("isFullscreen",null!==(A=document.fullscreenElement)&&void 0!==A?A:document.webkitFullscreenElement)},f=function(){var A,g,I,B;c.isFullscreen?(null!==(A=null!==(g=document.exitFullscreen)&&void 0!==g?g:document.webkitExitFullscreen)&&void 0!==A?A:function(){}).apply(document):(null!==(I=null!==(B=E.requestFullscreen)&&void 0!==B?B:E.webkitRequestFullscreen)&&void 0!==I?I:function(){}).apply(E)},G=function(A){if(!(A.altKey||A.metaKey||A.ctrlKey))if(A.shiftKey){if("ArrowLeft"==A.key)r.seek("<<<");else{if("ArrowRight"!=A.key)return;r.seek(">>>")}A.preventDefault()}else{if(" "==A.key)r.pauseOrResume();else if("f"==A.key)f();else if("ArrowLeft"==A.key)r.seek("<<");else if("ArrowRight"==A.key)r.seek(">>");else{if(!(A.key.charCodeAt(0)>=48&&A.key.charCodeAt(0)<=57))return;var g=(A.key.charCodeAt(0)-48)/10;r.seek("".concat(100*g,"%"))}A.preventDefault()}},F=function(){c.isFullscreen&&U(!0)},M=function(){c.isFullscreen||U(!1)},L=function(){Q=setInterval(J,100)},Y=function(){clearInterval(Q)},J=function(){var A=r.getCurrentTime(),g=r.getRemainingTime(),I=r.getProgress();u({currentTime:A,remainingTime:g,progress:I})},S=function(){C=setInterval((function(){u((function(A){var g={blink:!A.blink};return g.blink&&(g.cursorHold=!1),g}))}),500)},v=function(){clearInterval(C),u("blink",!0)},U=function A(g){clearTimeout(B),g&&(B=setTimeout((function(){return A(!1)}),2e3)),u("showControls",g)},K=function(){var A;return null===(A=l())||void 0===A?void 0:A.scale};return function(){var g=Ng.cloneNode(!0),I=g.firstChild;"function"==typeof E?E(g):E=g,g.addEventListener("webkitfullscreenchange",y),g.addEventListener("fullscreenchange",y),g.$$mousemove=F,g.$$keydown=G,g.addEventListener("keypress",G);return"function"==typeof e?e(I):e=I,I.$$mousemove=function(){return U(!0)},I.addEventListener("mouseleave",M),EA(I,X(sg,{get cols(){return w()},get rows(){return D()},get scale(){return K()},get blink(){return c.blink},get lines(){return c.lines},get cursor(){return c.cursor},get cursorHold(){return c.cursorHold},get fontFamily(){return A.terminalFontFamily},get lineHeight(){return A.terminalLineHeight},ref:function(A){"function"==typeof i?i(A):i=A}}),null),EA(I,X(lg,{get currentTime(){return c.currentTime},get remainingTime(){return c.remainingTime},get progress(){return c.progress},get isPlaying(){return"playing"==c.coreState},get isPausable(){return c.isPausable},get isSeekable(){return c.isSeekable},onPlayClick:function(){return r.pauseOrResume()},onFullscreenClick:f,onSeekClick:function(A){return r.seek(A)}}),null),EA(I,X(_,{get children(){return[X($,{get when(){return c.showStartOverlay},get children(){return X(kg,{onClick:function(){return r.play()}})}}),X($,{get when(){return"waiting"==c.coreState},get children(){return X(fg,{get cols(){return w()},get rows(){return D()},get scale(){return K()},get terminalFontFamily(){return A.terminalFontFamily},get terminalLineHeight(){return A.terminalLineHeight}})}})]}}),null),k((function(B){var Q,C=c.showControls,E="asciinema-player asciinema-theme-".concat(null!==(Q=A.theme)&&void 0!==Q?Q:"asciinema"),t=function(){var g={};!1!==A.fit&&"none"!==A.fit||void 0===A.terminalFontSize||("small"===A.terminalFontSize?g["font-size"]="12px":"medium"===A.terminalFontSize?g["font-size"]="18px":"big"===A.terminalFontSize?g["font-size"]="24px":g["font-size"]=A.terminalFontSize);var I=l();return void 0===I?(g.height=0,g):(void 0!==I.width&&(g.width="".concat(I.width,"px"),g.height="".concat(I.height,"px")),g)}();return C!==B._v$&&g.classList.toggle("hud",B._v$=C),E!==B._v$2&&(I.className=B._v$2=E),B._v$3=CA(I,t,B._v$3),B}),{_v$:void 0,_v$2:void 0,_v$3:void 0}),g}()};BA(["keydown","mousemove"]);var Fg=function(A){function g(A,I){B(this,g),this.input=A,this.xfs=null!=I?I:[]}return C(g,[{key:"map",value:function(A){return this.transform(function(A){return function(g){return function(I){g(A(I))}}}(A))}},{key:"flatMap",value:function(A){return this.transform(function(A){return function(g){return function(I){A(I).forEach(g)}}}(A))}},{key:"filter",value:function(A){return this.transform(function(A){return function(g){return function(I){A(I)&&g(I)}}}(A))}},{key:"take",value:function(A){return this.transform(function(A){var g=0;return function(I){return function(B){gA&&I(B)}}}(A))}},{key:"transform",value:function(A){return new g(this.input,this.xfs.concat([A]))}},{key:"toArray",value:function(){return Array.from(this)}},{key:Symbol.iterator,value:function(){var A,g,I=this,B=0,Q=0,C=[],E=!1,t=(A=this.xfs,g=function(A){return C.push(A)},A.reverse().reduce((function(A,g){var I=Mg(g(A.step));return{step:I.step,flush:function(){I.flush(),A.flush()}}}),Mg(g)));return{next:function(){for(Q===C.length&&(C=[],Q=0);0===C.length&&B0?{done:!1,value:C[Q++]}:{done:!0}}}}}]),g}();function Mg(A){return"function"==typeof A?{step:A,flush:function(){}}:A}function Rg(A,g,B){var Q,C,E,e,i,n,o,r,s,a=g.feed,c=g.now,u=g.setTimeout,w=g.onFinish,D=B.idleTimeLimit,h=B.startAt,l=0,y=0;function f(){return G.apply(this,arguments)}function G(){return(G=I(t.mark((function g(){var I,B,n;return t.wrap((function(g){for(;;)switch(g.prev=g.next){case 0:if(!E){g.next=2;break}return g.abrupt("return");case 2:return g.t0=pg,g.next=5,k(A);case 5:if(g.t1=g.sent,B=(0,g.t0)(g.t1),Q=B.cols,C=B.rows,D=null!==(I=D)&&void 0!==I?I:B.idleTimeLimit,n=Yg(B.frames,D,h),0!==(E=n.frames).length){g.next=14;break}throw"asciicast is missing events";case 14:i=n.effectiveStartAt,e=E[E.length-1][0];case 16:case"end":return g.stop()}}),g)})))).apply(this,arguments)}function k(A){return N.apply(this,arguments)}function N(){return(N=I(t.mark((function A(g){var I,B,Q,C,E;return t.wrap((function(A){for(;;)switch(A.prev=A.next){case 0:if(I=g.url,B=g.data,Q=g.fetchOpts,C=void 0===Q?{}:Q,void 0===I){A.next=12;break}return A.next=4,fetch(I,C);case 4:if((E=A.sent).ok){A.next=7;break}throw"failed fetching asciicast file: ".concat(E.statusText," (").concat(E.status,")");case 7:return A.next=9,E.text();case 9:return A.abrupt("return",A.sent);case 12:if(void 0===B){A.next=19;break}return"function"==typeof B&&(B=B()),A.next=16,B;case 16:return A.abrupt("return",A.sent);case 19:throw"failed fetching asciicast file: url/data missing in src";case 20:case"end":return A.stop()}}),A)})))).apply(this,arguments)}function d(){var A=E[l];if(A){var g=1e3*A[0]-(c()-o);g<0&&(g=0),n=u(F,g)}else n=null,r=1e3*e,w()}function F(){var A,g=E[l];do{a(g[1]),y=1e3*g[0],g=E[++l],A=c()-o}while(g&&A>1e3*g[0]);d()}function M(){clearTimeout(n),n=null,r=c()-o}function R(){o=c()-r,r=null,d()}function p(A){var g=!!n;if(g&&M(),"string"==typeof A){var I,B=(null!==(I=r)&&void 0!==I?I:0)/1e3;"<<"===A?A=B-5:">>"===A?A=B+5:"<<<"===A?A=B-.1*e:">>>"===A?A=B+.1*e:"%"===A[A.length-1]&&(A=parseFloat(A.substring(0,A.length-1))/100*e)}var Q=1e3*Math.min(Math.max(A,0),e);Q1&&void 0!==arguments[1]?arguments[1]:1/0,I=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,B=0,Q=0,C=I,E=Array.from(Lg(A).map((function(A){var E=A[0]-B-g;return B=A[0],E>0&&(Q+=E,A[0]C)){I.next=5;break}return I.next=5,Kg(E-C);case 5:A(Q[2]);case 6:case"end":return I.stop()}}),I)})));return function(A){return Q.apply(this,arguments)}}());return{pushEvent:function(A){void 0===B&&(B=Ug()),"o"==A[1]&&Q.push(A)},pushText:function(A){void 0===B&&(B=Ug());var g=(Ug()-B)/1e3;Q.push([g,"o",A])},stop:function(){C()}}}function Ug(){return(new Date).getTime()}function Kg(A){return new Promise((function(g){setTimeout(g,A)}))}function bg(A,g){var I,B,Q=A.url,C=A.bufferTime,E=void 0===C?0:C,t=g.feed,e=g.reset,i=g.setWaiting,n=g.onFinish,o=new TextDecoder,r=250,s=!1;function a(){void 0!==B&&B.stop(),B=vg(t,E)}function c(){(I=new WebSocket(Q)).binaryType="arraybuffer",I.onopen=function(){console.debug("websocket: opened"),i(!1),a(),r=250},I.onmessage=function(A){if("string"==typeof A.data){var g,I,Q=JSON.parse(A.data);if(void 0!==Q.cols||void 0!==Q.width)a(),e(null!==(g=Q.cols)&&void 0!==g?g:Q.width,null!==(I=Q.rows)&&void 0!==I?I:Q.height);else B.pushEvent(Q)}else B.pushText(o.decode(A.data))},I.onclose=function(A){s||1e3===A.code||1005===A.code?(console.debug("websocket: closed"),n()):(console.debug("websocket: unclean close, reconnecting in ".concat(r,"...")),i(!0),setTimeout(c,r),r=Math.min(2*r,5e3))}}return{start:function(){c()},stop:function(){s=!0,void 0!==B&&B.stop(),void 0!==I&&I.close()}}}function Hg(A,g){var I,B,Q=A.url,C=A.bufferTime,E=void 0===C?0:C,t=g.feed,e=g.reset,i=g.setWaiting,n=g.onFinish;function o(){void 0!==B&&B.stop(),B=vg(t,E)}return{start:function(){(I=new EventSource(Q)).addEventListener("open",(function(){console.debug("eventsource: opened"),i(!1),o()})),I.addEventListener("error",(function(A){console.debug("eventsource: errored"),console.debug(A),i(!0)})),I.addEventListener("message",(function(A){var g,I,Q=JSON.parse(A.data);void 0!==Q.cols||void 0!==Q.width?(o(),e(null!==(g=Q.cols)&&void 0!==g?g:Q.width,null!==(I=Q.rows)&&void 0!==I?I:Q.height)):B.pushEvent(Q)})),I.addEventListener("done",(function(){console.debug("eventsource: closed"),I.close(),n()}))},stop:function(){void 0!==B&&B.stop(),void 0!==I&&I.close()}}}function mg(A){"string"==typeof A&&(A="ws://"==A.substring(0,5)||"wss://"==A.substring(0,6)?{driver:"websocket",url:A}:"test://"==A.substring(0,7)?{driver:"test",kind:A.substring(7)}:{driver:"asciicast",url:A}),void 0===A.driver&&(A.driver="asciicast");var g=new Map([["asciicast",Rg],["websocket",bg],["eventsource",Hg],["test",Jg]]);if("function"==typeof A)return A;if(g.has(A.driver)){var I=g.get(A.driver);return function(g,B){return I(A,g,B)}}throw"unsupported driver: ".concat(JSON.stringify(A))}return A.create=function(A,g){var I,B,Q=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},C=new WA(mg(A),{cols:Q.cols,rows:Q.rows,loop:Q.loop,speed:Q.speed,preload:Q.preload,startAt:Q.startAt,poster:Q.poster,idleTimeLimit:Q.idleTimeLimit}),E={core:C,cols:Q.cols,rows:Q.rows,fit:Q.fit,autoPlay:null!==(I=Q.autoPlay)&&void 0!==I?I:Q.autoplay,terminalFontSize:Q.terminalFontSize,terminalFontFamily:Q.terminalFontFamily,terminalLineHeight:Q.terminalLineHeight,theme:Q.theme},t=gA((function(){return B=X(dg,E)}),g),e={el:B,dispose:t,getCurrentTime:function(){return C.getCurrentTime()},getDuration:function(){return C.getDuration()},play:function(){return C.play()},pause:function(){return C.pause()},seek:function(A){return C.seek(A)},addEventListener:function(A,g){return C.addEventListener(A,g.bind(e))}};return e},Object.defineProperty(A,"__esModule",{value:!0}),A}({}); diff --git a/docs/overrides/main.html b/docs/overrides/main.html deleted file mode 100644 index 527f891..0000000 --- a/docs/overrides/main.html +++ /dev/null @@ -1,16 +0,0 @@ -{% extends "base.html" %} - -{% block scripts %} - - {{ super() }} - - {% if page.meta %} - {% if page.meta.asciinema %} - - {% endif %} - {% endif %} - - -{% endblock %} diff --git a/docs/stylesheets/asciinema-player.css b/docs/stylesheets/asciinema-player.css deleted file mode 100644 index 6a8a3cc..0000000 --- a/docs/stylesheets/asciinema-player.css +++ /dev/null @@ -1,2508 +0,0 @@ -.asciinema-player-wrapper { - outline: none; - height: 100%; - display: flex; - justify-content: center; -} -.asciinema-player-wrapper .title-bar { - display: none; - top: -78px; - transition: top 0.15s linear; - position: absolute; - left: 0; - right: 0; - box-sizing: content-box; - font-size: 20px; - line-height: 1em; - padding: 15px; - font-family: sans-serif; - color: white; - background-color: rgba(0, 0, 0, 0.8); -} -.asciinema-player-wrapper .title-bar img { - vertical-align: middle; - height: 48px; - margin-right: 16px; -} -.asciinema-player-wrapper .title-bar a { - color: white; - text-decoration: underline; -} -.asciinema-player-wrapper .title-bar a:hover { - text-decoration: none; -} -.asciinema-player-wrapper:fullscreen { - background-color: #000; - width: 100%; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:fullscreen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:fullscreen .title-bar { - display: initial; -} -.asciinema-player-wrapper:fullscreen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-webkit-full-screen { - background-color: #000; - width: 100%; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-webkit-full-screen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-webkit-full-screen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-webkit-full-screen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-moz-full-screen { - background-color: #000; - width: 100%; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-moz-full-screen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-moz-full-screen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-moz-full-screen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper:-ms-fullscreen { - background-color: #000; - width: 100%; - -webkit-align-items: center; - align-items: center; -} -.asciinema-player-wrapper:-ms-fullscreen .asciinema-player { - position: static; -} -.asciinema-player-wrapper:-ms-fullscreen .title-bar { - display: initial; -} -.asciinema-player-wrapper:-ms-fullscreen.hud .title-bar { - top: 0; -} -.asciinema-player-wrapper .asciinema-player { - text-align: left; - display: inline-block; - padding: 0px; - position: relative; - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - overflow: hidden; - max-width: 100%; - border-radius: 4px; - font-size: 12px; -} -.asciinema-terminal { - box-sizing: content-box; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - overflow: hidden; - padding: 0; - margin: 0px; - display: block; - white-space: pre; - border: 0; - word-wrap: normal; - word-break: normal; - border-radius: 0; - border-style: solid; - cursor: text; - border-width: 0.75em; - font-family: Consolas, Menlo, 'Bitstream Vera Sans Mono', monospace, 'Powerline Symbols'; -} -.asciinema-terminal .line { - letter-spacing: normal; - overflow: hidden; -} -.asciinema-terminal .line span { - padding: 0; - display: inline-block; - height: 100%; -} -.asciinema-terminal .line { - display: block; - width: 200%; -} -.asciinema-terminal .line .cursor-a { - display: inline-block; -} -.asciinema-terminal .line .cursor-b { - display: none; - border-radius: 0.05em; -} -.asciinema-terminal .line .blink { - visibility: hidden; -} -.asciinema-terminal.cursor .line .cursor-a { - display: none; -} -.asciinema-terminal.cursor .line .cursor-b { - display: inline-block; -} -.asciinema-terminal.blink .line .blink { - visibility: visible; -} -.asciinema-terminal .bright { - font-weight: bold; -} -.asciinema-terminal .underline { - text-decoration: underline; -} -.asciinema-terminal .italic { - font-style: italic; -} -.asciinema-terminal .strikethrough { - text-decoration: line-through; -} -.asciinema-player .loading > .asciinema-terminal { - background-color: transparent; -} -.asciinema-player .control-bar { - width: 100%; - height: 32px; - background: rgba(0, 0, 0, 0.8); - /* no gradient fallback */ - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* FF3.6-15 */ - background: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* Chrome10-25,Safari5.1-6 */ - background: linear-gradient(to bottom, rgba(0, 0, 0, 0.5) 0%, #000000 25%, #000000 100%); - /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ - color: #bbb; - box-sizing: content-box; - line-height: 1; - position: absolute; - bottom: -35px; - left: 0; - transition: bottom 0.15s linear; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - z-index: 30; -} -.asciinema-player .control-bar * { - box-sizing: inherit; - font-size: 0; -} -.asciinema-player .control-bar svg.icon path { - fill: #bbb; -} -.asciinema-player .control-bar .playback-button { - display: block; - float: left; - cursor: pointer; - height: 12px; - width: 12px; - padding: 10px; -} -.asciinema-player .control-bar .playback-button svg { - height: 12px; - width: 12px; -} -.asciinema-player .control-bar .timer { - display: block; - float: left; - width: 50px; - height: 100%; - text-align: center; - font-family: Helvetica, Arial, sans-serif; - font-size: 11px; - font-weight: bold; - line-height: 32px; - cursor: default; -} -.asciinema-player .control-bar .timer span { - display: inline-block; - font-size: inherit; -} -.asciinema-player .control-bar .timer .time-remaining { - display: none; -} -.asciinema-player .control-bar .timer:hover .time-elapsed { - display: none; -} -.asciinema-player .control-bar .timer:hover .time-remaining { - display: inline; -} -.asciinema-player .control-bar .progressbar { - display: block; - overflow: hidden; - height: 100%; - padding: 0 10px; -} -.asciinema-player .control-bar .progressbar .bar { - display: block; - cursor: default; - height: 100%; - padding-top: 15px; - font-size: 0; -} -.asciinema-player .control-bar .progressbar .bar .gutter { - display: block; - height: 3px; - background-color: #333; -} -.asciinema-player .control-bar .progressbar .bar .gutter span { - display: inline-block; - height: 100%; - background-color: #bbb; - border-radius: 3px; -} -.asciinema-player .control-bar.seekable .progressbar .bar { - cursor: pointer; -} -.asciinema-player .control-bar .fullscreen-button { - display: block; - float: right; - width: 14px; - height: 14px; - padding: 9px; - cursor: pointer; -} -.asciinema-player .control-bar .fullscreen-button svg { - width: 14px; - height: 14px; -} -.asciinema-player .control-bar .fullscreen-button svg:first-child { - display: inline; -} -.asciinema-player .control-bar .fullscreen-button svg:last-child { - display: none; -} -.asciinema-player-wrapper.hud .control-bar { - bottom: 0px; -} -.asciinema-player-wrapper:fullscreen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:fullscreen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-webkit-full-screen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-moz-full-screen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:first-child { - display: none; -} -.asciinema-player-wrapper:-ms-fullscreen .fullscreen-button svg:last-child { - display: inline; -} -.asciinema-player .loading { - z-index: 10; - background-repeat: no-repeat; - background-position: center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - display: flex; - justify-content: center; - align-items: center; -} -.asciinema-player .start-prompt { - z-index: 10; - background-repeat: no-repeat; - background-position: center; - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - z-index: 20; - cursor: pointer; -} -.asciinema-player .start-prompt .play-button { - font-size: 0px; - position: absolute; - left: 0; - top: 0; - right: 0; - bottom: 0; - text-align: center; - color: white; - height: 80px; - max-height: 66%; - margin: auto; -} -.asciinema-player .start-prompt .play-button div { - height: 100%; -} -.asciinema-player .start-prompt .play-button div span { - height: 100%; - display: block; -} -.asciinema-player .start-prompt .play-button div span svg { - height: 100%; -} -.asciinema-terminal .fg-16 { - color: #000000; -} -.asciinema-terminal .bg-16 { - background-color: #000000; -} -.asciinema-terminal .fg-17 { - color: #00005f; -} -.asciinema-terminal .bg-17 { - background-color: #00005f; -} -.asciinema-terminal .fg-18 { - color: #000087; -} -.asciinema-terminal .bg-18 { - background-color: #000087; -} -.asciinema-terminal .fg-19 { - color: #0000af; -} -.asciinema-terminal .bg-19 { - background-color: #0000af; -} -.asciinema-terminal .fg-20 { - color: #0000d7; -} -.asciinema-terminal .bg-20 { - background-color: #0000d7; -} -.asciinema-terminal .fg-21 { - color: #0000ff; -} -.asciinema-terminal .bg-21 { - background-color: #0000ff; -} -.asciinema-terminal .fg-22 { - color: #005f00; -} -.asciinema-terminal .bg-22 { - background-color: #005f00; -} -.asciinema-terminal .fg-23 { - color: #005f5f; -} -.asciinema-terminal .bg-23 { - background-color: #005f5f; -} -.asciinema-terminal .fg-24 { - color: #005f87; -} -.asciinema-terminal .bg-24 { - background-color: #005f87; -} -.asciinema-terminal .fg-25 { - color: #005faf; -} -.asciinema-terminal .bg-25 { - background-color: #005faf; -} -.asciinema-terminal .fg-26 { - color: #005fd7; -} -.asciinema-terminal .bg-26 { - background-color: #005fd7; -} -.asciinema-terminal .fg-27 { - color: #005fff; -} -.asciinema-terminal .bg-27 { - background-color: #005fff; -} -.asciinema-terminal .fg-28 { - color: #008700; -} -.asciinema-terminal .bg-28 { - background-color: #008700; -} -.asciinema-terminal .fg-29 { - color: #00875f; -} -.asciinema-terminal .bg-29 { - background-color: #00875f; -} -.asciinema-terminal .fg-30 { - color: #008787; -} -.asciinema-terminal .bg-30 { - background-color: #008787; -} -.asciinema-terminal .fg-31 { - color: #0087af; -} -.asciinema-terminal .bg-31 { - background-color: #0087af; -} -.asciinema-terminal .fg-32 { - color: #0087d7; -} -.asciinema-terminal .bg-32 { - background-color: #0087d7; -} -.asciinema-terminal .fg-33 { - color: #0087ff; -} -.asciinema-terminal .bg-33 { - background-color: #0087ff; -} -.asciinema-terminal .fg-34 { - color: #00af00; -} -.asciinema-terminal .bg-34 { - background-color: #00af00; -} -.asciinema-terminal .fg-35 { - color: #00af5f; -} -.asciinema-terminal .bg-35 { - background-color: #00af5f; -} -.asciinema-terminal .fg-36 { - color: #00af87; -} -.asciinema-terminal .bg-36 { - background-color: #00af87; -} -.asciinema-terminal .fg-37 { - color: #00afaf; -} -.asciinema-terminal .bg-37 { - background-color: #00afaf; -} -.asciinema-terminal .fg-38 { - color: #00afd7; -} -.asciinema-terminal .bg-38 { - background-color: #00afd7; -} -.asciinema-terminal .fg-39 { - color: #00afff; -} -.asciinema-terminal .bg-39 { - background-color: #00afff; -} -.asciinema-terminal .fg-40 { - color: #00d700; -} -.asciinema-terminal .bg-40 { - background-color: #00d700; -} -.asciinema-terminal .fg-41 { - color: #00d75f; -} -.asciinema-terminal .bg-41 { - background-color: #00d75f; -} -.asciinema-terminal .fg-42 { - color: #00d787; -} -.asciinema-terminal .bg-42 { - background-color: #00d787; -} -.asciinema-terminal .fg-43 { - color: #00d7af; -} -.asciinema-terminal .bg-43 { - background-color: #00d7af; -} -.asciinema-terminal .fg-44 { - color: #00d7d7; -} -.asciinema-terminal .bg-44 { - background-color: #00d7d7; -} -.asciinema-terminal .fg-45 { - color: #00d7ff; -} -.asciinema-terminal .bg-45 { - background-color: #00d7ff; -} -.asciinema-terminal .fg-46 { - color: #00ff00; -} -.asciinema-terminal .bg-46 { - background-color: #00ff00; -} -.asciinema-terminal .fg-47 { - color: #00ff5f; -} -.asciinema-terminal .bg-47 { - background-color: #00ff5f; -} -.asciinema-terminal .fg-48 { - color: #00ff87; -} -.asciinema-terminal .bg-48 { - background-color: #00ff87; -} -.asciinema-terminal .fg-49 { - color: #00ffaf; -} -.asciinema-terminal .bg-49 { - background-color: #00ffaf; -} -.asciinema-terminal .fg-50 { - color: #00ffd7; -} -.asciinema-terminal .bg-50 { - background-color: #00ffd7; -} -.asciinema-terminal .fg-51 { - color: #00ffff; -} -.asciinema-terminal .bg-51 { - background-color: #00ffff; -} -.asciinema-terminal .fg-52 { - color: #5f0000; -} -.asciinema-terminal .bg-52 { - background-color: #5f0000; -} -.asciinema-terminal .fg-53 { - color: #5f005f; -} -.asciinema-terminal .bg-53 { - background-color: #5f005f; -} -.asciinema-terminal .fg-54 { - color: #5f0087; -} -.asciinema-terminal .bg-54 { - background-color: #5f0087; -} -.asciinema-terminal .fg-55 { - color: #5f00af; -} -.asciinema-terminal .bg-55 { - background-color: #5f00af; -} -.asciinema-terminal .fg-56 { - color: #5f00d7; -} -.asciinema-terminal .bg-56 { - background-color: #5f00d7; -} -.asciinema-terminal .fg-57 { - color: #5f00ff; -} -.asciinema-terminal .bg-57 { - background-color: #5f00ff; -} -.asciinema-terminal .fg-58 { - color: #5f5f00; -} -.asciinema-terminal .bg-58 { - background-color: #5f5f00; -} -.asciinema-terminal .fg-59 { - color: #5f5f5f; -} -.asciinema-terminal .bg-59 { - background-color: #5f5f5f; -} -.asciinema-terminal .fg-60 { - color: #5f5f87; -} -.asciinema-terminal .bg-60 { - background-color: #5f5f87; -} -.asciinema-terminal .fg-61 { - color: #5f5faf; -} -.asciinema-terminal .bg-61 { - background-color: #5f5faf; -} -.asciinema-terminal .fg-62 { - color: #5f5fd7; -} -.asciinema-terminal .bg-62 { - background-color: #5f5fd7; -} -.asciinema-terminal .fg-63 { - color: #5f5fff; -} -.asciinema-terminal .bg-63 { - background-color: #5f5fff; -} -.asciinema-terminal .fg-64 { - color: #5f8700; -} -.asciinema-terminal .bg-64 { - background-color: #5f8700; -} -.asciinema-terminal .fg-65 { - color: #5f875f; -} -.asciinema-terminal .bg-65 { - background-color: #5f875f; -} -.asciinema-terminal .fg-66 { - color: #5f8787; -} -.asciinema-terminal .bg-66 { - background-color: #5f8787; -} -.asciinema-terminal .fg-67 { - color: #5f87af; -} -.asciinema-terminal .bg-67 { - background-color: #5f87af; -} -.asciinema-terminal .fg-68 { - color: #5f87d7; -} -.asciinema-terminal .bg-68 { - background-color: #5f87d7; -} -.asciinema-terminal .fg-69 { - color: #5f87ff; -} -.asciinema-terminal .bg-69 { - background-color: #5f87ff; -} -.asciinema-terminal .fg-70 { - color: #5faf00; -} -.asciinema-terminal .bg-70 { - background-color: #5faf00; -} -.asciinema-terminal .fg-71 { - color: #5faf5f; -} -.asciinema-terminal .bg-71 { - background-color: #5faf5f; -} -.asciinema-terminal .fg-72 { - color: #5faf87; -} -.asciinema-terminal .bg-72 { - background-color: #5faf87; -} -.asciinema-terminal .fg-73 { - color: #5fafaf; -} -.asciinema-terminal .bg-73 { - background-color: #5fafaf; -} -.asciinema-terminal .fg-74 { - color: #5fafd7; -} -.asciinema-terminal .bg-74 { - background-color: #5fafd7; -} -.asciinema-terminal .fg-75 { - color: #5fafff; -} -.asciinema-terminal .bg-75 { - background-color: #5fafff; -} -.asciinema-terminal .fg-76 { - color: #5fd700; -} -.asciinema-terminal .bg-76 { - background-color: #5fd700; -} -.asciinema-terminal .fg-77 { - color: #5fd75f; -} -.asciinema-terminal .bg-77 { - background-color: #5fd75f; -} -.asciinema-terminal .fg-78 { - color: #5fd787; -} -.asciinema-terminal .bg-78 { - background-color: #5fd787; -} -.asciinema-terminal .fg-79 { - color: #5fd7af; -} -.asciinema-terminal .bg-79 { - background-color: #5fd7af; -} -.asciinema-terminal .fg-80 { - color: #5fd7d7; -} -.asciinema-terminal .bg-80 { - background-color: #5fd7d7; -} -.asciinema-terminal .fg-81 { - color: #5fd7ff; -} -.asciinema-terminal .bg-81 { - background-color: #5fd7ff; -} -.asciinema-terminal .fg-82 { - color: #5fff00; -} -.asciinema-terminal .bg-82 { - background-color: #5fff00; -} -.asciinema-terminal .fg-83 { - color: #5fff5f; -} -.asciinema-terminal .bg-83 { - background-color: #5fff5f; -} -.asciinema-terminal .fg-84 { - color: #5fff87; -} -.asciinema-terminal .bg-84 { - background-color: #5fff87; -} -.asciinema-terminal .fg-85 { - color: #5fffaf; -} -.asciinema-terminal .bg-85 { - background-color: #5fffaf; -} -.asciinema-terminal .fg-86 { - color: #5fffd7; -} -.asciinema-terminal .bg-86 { - background-color: #5fffd7; -} -.asciinema-terminal .fg-87 { - color: #5fffff; -} -.asciinema-terminal .bg-87 { - background-color: #5fffff; -} -.asciinema-terminal .fg-88 { - color: #870000; -} -.asciinema-terminal .bg-88 { - background-color: #870000; -} -.asciinema-terminal .fg-89 { - color: #87005f; -} -.asciinema-terminal .bg-89 { - background-color: #87005f; -} -.asciinema-terminal .fg-90 { - color: #870087; -} -.asciinema-terminal .bg-90 { - background-color: #870087; -} -.asciinema-terminal .fg-91 { - color: #8700af; -} -.asciinema-terminal .bg-91 { - background-color: #8700af; -} -.asciinema-terminal .fg-92 { - color: #8700d7; -} -.asciinema-terminal .bg-92 { - background-color: #8700d7; -} -.asciinema-terminal .fg-93 { - color: #8700ff; -} -.asciinema-terminal .bg-93 { - background-color: #8700ff; -} -.asciinema-terminal .fg-94 { - color: #875f00; -} -.asciinema-terminal .bg-94 { - background-color: #875f00; -} -.asciinema-terminal .fg-95 { - color: #875f5f; -} -.asciinema-terminal .bg-95 { - background-color: #875f5f; -} -.asciinema-terminal .fg-96 { - color: #875f87; -} -.asciinema-terminal .bg-96 { - background-color: #875f87; -} -.asciinema-terminal .fg-97 { - color: #875faf; -} -.asciinema-terminal .bg-97 { - background-color: #875faf; -} -.asciinema-terminal .fg-98 { - color: #875fd7; -} -.asciinema-terminal .bg-98 { - background-color: #875fd7; -} -.asciinema-terminal .fg-99 { - color: #875fff; -} -.asciinema-terminal .bg-99 { - background-color: #875fff; -} -.asciinema-terminal .fg-100 { - color: #878700; -} -.asciinema-terminal .bg-100 { - background-color: #878700; -} -.asciinema-terminal .fg-101 { - color: #87875f; -} -.asciinema-terminal .bg-101 { - background-color: #87875f; -} -.asciinema-terminal .fg-102 { - color: #878787; -} -.asciinema-terminal .bg-102 { - background-color: #878787; -} -.asciinema-terminal .fg-103 { - color: #8787af; -} -.asciinema-terminal .bg-103 { - background-color: #8787af; -} -.asciinema-terminal .fg-104 { - color: #8787d7; -} -.asciinema-terminal .bg-104 { - background-color: #8787d7; -} -.asciinema-terminal .fg-105 { - color: #8787ff; -} -.asciinema-terminal .bg-105 { - background-color: #8787ff; -} -.asciinema-terminal .fg-106 { - color: #87af00; -} -.asciinema-terminal .bg-106 { - background-color: #87af00; -} -.asciinema-terminal .fg-107 { - color: #87af5f; -} -.asciinema-terminal .bg-107 { - background-color: #87af5f; -} -.asciinema-terminal .fg-108 { - color: #87af87; -} -.asciinema-terminal .bg-108 { - background-color: #87af87; -} -.asciinema-terminal .fg-109 { - color: #87afaf; -} -.asciinema-terminal .bg-109 { - background-color: #87afaf; -} -.asciinema-terminal .fg-110 { - color: #87afd7; -} -.asciinema-terminal .bg-110 { - background-color: #87afd7; -} -.asciinema-terminal .fg-111 { - color: #87afff; -} -.asciinema-terminal .bg-111 { - background-color: #87afff; -} -.asciinema-terminal .fg-112 { - color: #87d700; -} -.asciinema-terminal .bg-112 { - background-color: #87d700; -} -.asciinema-terminal .fg-113 { - color: #87d75f; -} -.asciinema-terminal .bg-113 { - background-color: #87d75f; -} -.asciinema-terminal .fg-114 { - color: #87d787; -} -.asciinema-terminal .bg-114 { - background-color: #87d787; -} -.asciinema-terminal .fg-115 { - color: #87d7af; -} -.asciinema-terminal .bg-115 { - background-color: #87d7af; -} -.asciinema-terminal .fg-116 { - color: #87d7d7; -} -.asciinema-terminal .bg-116 { - background-color: #87d7d7; -} -.asciinema-terminal .fg-117 { - color: #87d7ff; -} -.asciinema-terminal .bg-117 { - background-color: #87d7ff; -} -.asciinema-terminal .fg-118 { - color: #87ff00; -} -.asciinema-terminal .bg-118 { - background-color: #87ff00; -} -.asciinema-terminal .fg-119 { - color: #87ff5f; -} -.asciinema-terminal .bg-119 { - background-color: #87ff5f; -} -.asciinema-terminal .fg-120 { - color: #87ff87; -} -.asciinema-terminal .bg-120 { - background-color: #87ff87; -} -.asciinema-terminal .fg-121 { - color: #87ffaf; -} -.asciinema-terminal .bg-121 { - background-color: #87ffaf; -} -.asciinema-terminal .fg-122 { - color: #87ffd7; -} -.asciinema-terminal .bg-122 { - background-color: #87ffd7; -} -.asciinema-terminal .fg-123 { - color: #87ffff; -} -.asciinema-terminal .bg-123 { - background-color: #87ffff; -} -.asciinema-terminal .fg-124 { - color: #af0000; -} -.asciinema-terminal .bg-124 { - background-color: #af0000; -} -.asciinema-terminal .fg-125 { - color: #af005f; -} -.asciinema-terminal .bg-125 { - background-color: #af005f; -} -.asciinema-terminal .fg-126 { - color: #af0087; -} -.asciinema-terminal .bg-126 { - background-color: #af0087; -} -.asciinema-terminal .fg-127 { - color: #af00af; -} -.asciinema-terminal .bg-127 { - background-color: #af00af; -} -.asciinema-terminal .fg-128 { - color: #af00d7; -} -.asciinema-terminal .bg-128 { - background-color: #af00d7; -} -.asciinema-terminal .fg-129 { - color: #af00ff; -} -.asciinema-terminal .bg-129 { - background-color: #af00ff; -} -.asciinema-terminal .fg-130 { - color: #af5f00; -} -.asciinema-terminal .bg-130 { - background-color: #af5f00; -} -.asciinema-terminal .fg-131 { - color: #af5f5f; -} -.asciinema-terminal .bg-131 { - background-color: #af5f5f; -} -.asciinema-terminal .fg-132 { - color: #af5f87; -} -.asciinema-terminal .bg-132 { - background-color: #af5f87; -} -.asciinema-terminal .fg-133 { - color: #af5faf; -} -.asciinema-terminal .bg-133 { - background-color: #af5faf; -} -.asciinema-terminal .fg-134 { - color: #af5fd7; -} -.asciinema-terminal .bg-134 { - background-color: #af5fd7; -} -.asciinema-terminal .fg-135 { - color: #af5fff; -} -.asciinema-terminal .bg-135 { - background-color: #af5fff; -} -.asciinema-terminal .fg-136 { - color: #af8700; -} -.asciinema-terminal .bg-136 { - background-color: #af8700; -} -.asciinema-terminal .fg-137 { - color: #af875f; -} -.asciinema-terminal .bg-137 { - background-color: #af875f; -} -.asciinema-terminal .fg-138 { - color: #af8787; -} -.asciinema-terminal .bg-138 { - background-color: #af8787; -} -.asciinema-terminal .fg-139 { - color: #af87af; -} -.asciinema-terminal .bg-139 { - background-color: #af87af; -} -.asciinema-terminal .fg-140 { - color: #af87d7; -} -.asciinema-terminal .bg-140 { - background-color: #af87d7; -} -.asciinema-terminal .fg-141 { - color: #af87ff; -} -.asciinema-terminal .bg-141 { - background-color: #af87ff; -} -.asciinema-terminal .fg-142 { - color: #afaf00; -} -.asciinema-terminal .bg-142 { - background-color: #afaf00; -} -.asciinema-terminal .fg-143 { - color: #afaf5f; -} -.asciinema-terminal .bg-143 { - background-color: #afaf5f; -} -.asciinema-terminal .fg-144 { - color: #afaf87; -} -.asciinema-terminal .bg-144 { - background-color: #afaf87; -} -.asciinema-terminal .fg-145 { - color: #afafaf; -} -.asciinema-terminal .bg-145 { - background-color: #afafaf; -} -.asciinema-terminal .fg-146 { - color: #afafd7; -} -.asciinema-terminal .bg-146 { - background-color: #afafd7; -} -.asciinema-terminal .fg-147 { - color: #afafff; -} -.asciinema-terminal .bg-147 { - background-color: #afafff; -} -.asciinema-terminal .fg-148 { - color: #afd700; -} -.asciinema-terminal .bg-148 { - background-color: #afd700; -} -.asciinema-terminal .fg-149 { - color: #afd75f; -} -.asciinema-terminal .bg-149 { - background-color: #afd75f; -} -.asciinema-terminal .fg-150 { - color: #afd787; -} -.asciinema-terminal .bg-150 { - background-color: #afd787; -} -.asciinema-terminal .fg-151 { - color: #afd7af; -} -.asciinema-terminal .bg-151 { - background-color: #afd7af; -} -.asciinema-terminal .fg-152 { - color: #afd7d7; -} -.asciinema-terminal .bg-152 { - background-color: #afd7d7; -} -.asciinema-terminal .fg-153 { - color: #afd7ff; -} -.asciinema-terminal .bg-153 { - background-color: #afd7ff; -} -.asciinema-terminal .fg-154 { - color: #afff00; -} -.asciinema-terminal .bg-154 { - background-color: #afff00; -} -.asciinema-terminal .fg-155 { - color: #afff5f; -} -.asciinema-terminal .bg-155 { - background-color: #afff5f; -} -.asciinema-terminal .fg-156 { - color: #afff87; -} -.asciinema-terminal .bg-156 { - background-color: #afff87; -} -.asciinema-terminal .fg-157 { - color: #afffaf; -} -.asciinema-terminal .bg-157 { - background-color: #afffaf; -} -.asciinema-terminal .fg-158 { - color: #afffd7; -} -.asciinema-terminal .bg-158 { - background-color: #afffd7; -} -.asciinema-terminal .fg-159 { - color: #afffff; -} -.asciinema-terminal .bg-159 { - background-color: #afffff; -} -.asciinema-terminal .fg-160 { - color: #d70000; -} -.asciinema-terminal .bg-160 { - background-color: #d70000; -} -.asciinema-terminal .fg-161 { - color: #d7005f; -} -.asciinema-terminal .bg-161 { - background-color: #d7005f; -} -.asciinema-terminal .fg-162 { - color: #d70087; -} -.asciinema-terminal .bg-162 { - background-color: #d70087; -} -.asciinema-terminal .fg-163 { - color: #d700af; -} -.asciinema-terminal .bg-163 { - background-color: #d700af; -} -.asciinema-terminal .fg-164 { - color: #d700d7; -} -.asciinema-terminal .bg-164 { - background-color: #d700d7; -} -.asciinema-terminal .fg-165 { - color: #d700ff; -} -.asciinema-terminal .bg-165 { - background-color: #d700ff; -} -.asciinema-terminal .fg-166 { - color: #d75f00; -} -.asciinema-terminal .bg-166 { - background-color: #d75f00; -} -.asciinema-terminal .fg-167 { - color: #d75f5f; -} -.asciinema-terminal .bg-167 { - background-color: #d75f5f; -} -.asciinema-terminal .fg-168 { - color: #d75f87; -} -.asciinema-terminal .bg-168 { - background-color: #d75f87; -} -.asciinema-terminal .fg-169 { - color: #d75faf; -} -.asciinema-terminal .bg-169 { - background-color: #d75faf; -} -.asciinema-terminal .fg-170 { - color: #d75fd7; -} -.asciinema-terminal .bg-170 { - background-color: #d75fd7; -} -.asciinema-terminal .fg-171 { - color: #d75fff; -} -.asciinema-terminal .bg-171 { - background-color: #d75fff; -} -.asciinema-terminal .fg-172 { - color: #d78700; -} -.asciinema-terminal .bg-172 { - background-color: #d78700; -} -.asciinema-terminal .fg-173 { - color: #d7875f; -} -.asciinema-terminal .bg-173 { - background-color: #d7875f; -} -.asciinema-terminal .fg-174 { - color: #d78787; -} -.asciinema-terminal .bg-174 { - background-color: #d78787; -} -.asciinema-terminal .fg-175 { - color: #d787af; -} -.asciinema-terminal .bg-175 { - background-color: #d787af; -} -.asciinema-terminal .fg-176 { - color: #d787d7; -} -.asciinema-terminal .bg-176 { - background-color: #d787d7; -} -.asciinema-terminal .fg-177 { - color: #d787ff; -} -.asciinema-terminal .bg-177 { - background-color: #d787ff; -} -.asciinema-terminal .fg-178 { - color: #d7af00; -} -.asciinema-terminal .bg-178 { - background-color: #d7af00; -} -.asciinema-terminal .fg-179 { - color: #d7af5f; -} -.asciinema-terminal .bg-179 { - background-color: #d7af5f; -} -.asciinema-terminal .fg-180 { - color: #d7af87; -} -.asciinema-terminal .bg-180 { - background-color: #d7af87; -} -.asciinema-terminal .fg-181 { - color: #d7afaf; -} -.asciinema-terminal .bg-181 { - background-color: #d7afaf; -} -.asciinema-terminal .fg-182 { - color: #d7afd7; -} -.asciinema-terminal .bg-182 { - background-color: #d7afd7; -} -.asciinema-terminal .fg-183 { - color: #d7afff; -} -.asciinema-terminal .bg-183 { - background-color: #d7afff; -} -.asciinema-terminal .fg-184 { - color: #d7d700; -} -.asciinema-terminal .bg-184 { - background-color: #d7d700; -} -.asciinema-terminal .fg-185 { - color: #d7d75f; -} -.asciinema-terminal .bg-185 { - background-color: #d7d75f; -} -.asciinema-terminal .fg-186 { - color: #d7d787; -} -.asciinema-terminal .bg-186 { - background-color: #d7d787; -} -.asciinema-terminal .fg-187 { - color: #d7d7af; -} -.asciinema-terminal .bg-187 { - background-color: #d7d7af; -} -.asciinema-terminal .fg-188 { - color: #d7d7d7; -} -.asciinema-terminal .bg-188 { - background-color: #d7d7d7; -} -.asciinema-terminal .fg-189 { - color: #d7d7ff; -} -.asciinema-terminal .bg-189 { - background-color: #d7d7ff; -} -.asciinema-terminal .fg-190 { - color: #d7ff00; -} -.asciinema-terminal .bg-190 { - background-color: #d7ff00; -} -.asciinema-terminal .fg-191 { - color: #d7ff5f; -} -.asciinema-terminal .bg-191 { - background-color: #d7ff5f; -} -.asciinema-terminal .fg-192 { - color: #d7ff87; -} -.asciinema-terminal .bg-192 { - background-color: #d7ff87; -} -.asciinema-terminal .fg-193 { - color: #d7ffaf; -} -.asciinema-terminal .bg-193 { - background-color: #d7ffaf; -} -.asciinema-terminal .fg-194 { - color: #d7ffd7; -} -.asciinema-terminal .bg-194 { - background-color: #d7ffd7; -} -.asciinema-terminal .fg-195 { - color: #d7ffff; -} -.asciinema-terminal .bg-195 { - background-color: #d7ffff; -} -.asciinema-terminal .fg-196 { - color: #ff0000; -} -.asciinema-terminal .bg-196 { - background-color: #ff0000; -} -.asciinema-terminal .fg-197 { - color: #ff005f; -} -.asciinema-terminal .bg-197 { - background-color: #ff005f; -} -.asciinema-terminal .fg-198 { - color: #ff0087; -} -.asciinema-terminal .bg-198 { - background-color: #ff0087; -} -.asciinema-terminal .fg-199 { - color: #ff00af; -} -.asciinema-terminal .bg-199 { - background-color: #ff00af; -} -.asciinema-terminal .fg-200 { - color: #ff00d7; -} -.asciinema-terminal .bg-200 { - background-color: #ff00d7; -} -.asciinema-terminal .fg-201 { - color: #ff00ff; -} -.asciinema-terminal .bg-201 { - background-color: #ff00ff; -} -.asciinema-terminal .fg-202 { - color: #ff5f00; -} -.asciinema-terminal .bg-202 { - background-color: #ff5f00; -} -.asciinema-terminal .fg-203 { - color: #ff5f5f; -} -.asciinema-terminal .bg-203 { - background-color: #ff5f5f; -} -.asciinema-terminal .fg-204 { - color: #ff5f87; -} -.asciinema-terminal .bg-204 { - background-color: #ff5f87; -} -.asciinema-terminal .fg-205 { - color: #ff5faf; -} -.asciinema-terminal .bg-205 { - background-color: #ff5faf; -} -.asciinema-terminal .fg-206 { - color: #ff5fd7; -} -.asciinema-terminal .bg-206 { - background-color: #ff5fd7; -} -.asciinema-terminal .fg-207 { - color: #ff5fff; -} -.asciinema-terminal .bg-207 { - background-color: #ff5fff; -} -.asciinema-terminal .fg-208 { - color: #ff8700; -} -.asciinema-terminal .bg-208 { - background-color: #ff8700; -} -.asciinema-terminal .fg-209 { - color: #ff875f; -} -.asciinema-terminal .bg-209 { - background-color: #ff875f; -} -.asciinema-terminal .fg-210 { - color: #ff8787; -} -.asciinema-terminal .bg-210 { - background-color: #ff8787; -} -.asciinema-terminal .fg-211 { - color: #ff87af; -} -.asciinema-terminal .bg-211 { - background-color: #ff87af; -} -.asciinema-terminal .fg-212 { - color: #ff87d7; -} -.asciinema-terminal .bg-212 { - background-color: #ff87d7; -} -.asciinema-terminal .fg-213 { - color: #ff87ff; -} -.asciinema-terminal .bg-213 { - background-color: #ff87ff; -} -.asciinema-terminal .fg-214 { - color: #ffaf00; -} -.asciinema-terminal .bg-214 { - background-color: #ffaf00; -} -.asciinema-terminal .fg-215 { - color: #ffaf5f; -} -.asciinema-terminal .bg-215 { - background-color: #ffaf5f; -} -.asciinema-terminal .fg-216 { - color: #ffaf87; -} -.asciinema-terminal .bg-216 { - background-color: #ffaf87; -} -.asciinema-terminal .fg-217 { - color: #ffafaf; -} -.asciinema-terminal .bg-217 { - background-color: #ffafaf; -} -.asciinema-terminal .fg-218 { - color: #ffafd7; -} -.asciinema-terminal .bg-218 { - background-color: #ffafd7; -} -.asciinema-terminal .fg-219 { - color: #ffafff; -} -.asciinema-terminal .bg-219 { - background-color: #ffafff; -} -.asciinema-terminal .fg-220 { - color: #ffd700; -} -.asciinema-terminal .bg-220 { - background-color: #ffd700; -} -.asciinema-terminal .fg-221 { - color: #ffd75f; -} -.asciinema-terminal .bg-221 { - background-color: #ffd75f; -} -.asciinema-terminal .fg-222 { - color: #ffd787; -} -.asciinema-terminal .bg-222 { - background-color: #ffd787; -} -.asciinema-terminal .fg-223 { - color: #ffd7af; -} -.asciinema-terminal .bg-223 { - background-color: #ffd7af; -} -.asciinema-terminal .fg-224 { - color: #ffd7d7; -} -.asciinema-terminal .bg-224 { - background-color: #ffd7d7; -} -.asciinema-terminal .fg-225 { - color: #ffd7ff; -} -.asciinema-terminal .bg-225 { - background-color: #ffd7ff; -} -.asciinema-terminal .fg-226 { - color: #ffff00; -} -.asciinema-terminal .bg-226 { - background-color: #ffff00; -} -.asciinema-terminal .fg-227 { - color: #ffff5f; -} -.asciinema-terminal .bg-227 { - background-color: #ffff5f; -} -.asciinema-terminal .fg-228 { - color: #ffff87; -} -.asciinema-terminal .bg-228 { - background-color: #ffff87; -} -.asciinema-terminal .fg-229 { - color: #ffffaf; -} -.asciinema-terminal .bg-229 { - background-color: #ffffaf; -} -.asciinema-terminal .fg-230 { - color: #ffffd7; -} -.asciinema-terminal .bg-230 { - background-color: #ffffd7; -} -.asciinema-terminal .fg-231 { - color: #ffffff; -} -.asciinema-terminal .bg-231 { - background-color: #ffffff; -} -.asciinema-terminal .fg-232 { - color: #080808; -} -.asciinema-terminal .bg-232 { - background-color: #080808; -} -.asciinema-terminal .fg-233 { - color: #121212; -} -.asciinema-terminal .bg-233 { - background-color: #121212; -} -.asciinema-terminal .fg-234 { - color: #1c1c1c; -} -.asciinema-terminal .bg-234 { - background-color: #1c1c1c; -} -.asciinema-terminal .fg-235 { - color: #262626; -} -.asciinema-terminal .bg-235 { - background-color: #262626; -} -.asciinema-terminal .fg-236 { - color: #303030; -} -.asciinema-terminal .bg-236 { - background-color: #303030; -} -.asciinema-terminal .fg-237 { - color: #3a3a3a; -} -.asciinema-terminal .bg-237 { - background-color: #3a3a3a; -} -.asciinema-terminal .fg-238 { - color: #444444; -} -.asciinema-terminal .bg-238 { - background-color: #444444; -} -.asciinema-terminal .fg-239 { - color: #4e4e4e; -} -.asciinema-terminal .bg-239 { - background-color: #4e4e4e; -} -.asciinema-terminal .fg-240 { - color: #585858; -} -.asciinema-terminal .bg-240 { - background-color: #585858; -} -.asciinema-terminal .fg-241 { - color: #626262; -} -.asciinema-terminal .bg-241 { - background-color: #626262; -} -.asciinema-terminal .fg-242 { - color: #6c6c6c; -} -.asciinema-terminal .bg-242 { - background-color: #6c6c6c; -} -.asciinema-terminal .fg-243 { - color: #767676; -} -.asciinema-terminal .bg-243 { - background-color: #767676; -} -.asciinema-terminal .fg-244 { - color: #808080; -} -.asciinema-terminal .bg-244 { - background-color: #808080; -} -.asciinema-terminal .fg-245 { - color: #8a8a8a; -} -.asciinema-terminal .bg-245 { - background-color: #8a8a8a; -} -.asciinema-terminal .fg-246 { - color: #949494; -} -.asciinema-terminal .bg-246 { - background-color: #949494; -} -.asciinema-terminal .fg-247 { - color: #9e9e9e; -} -.asciinema-terminal .bg-247 { - background-color: #9e9e9e; -} -.asciinema-terminal .fg-248 { - color: #a8a8a8; -} -.asciinema-terminal .bg-248 { - background-color: #a8a8a8; -} -.asciinema-terminal .fg-249 { - color: #b2b2b2; -} -.asciinema-terminal .bg-249 { - background-color: #b2b2b2; -} -.asciinema-terminal .fg-250 { - color: #bcbcbc; -} -.asciinema-terminal .bg-250 { - background-color: #bcbcbc; -} -.asciinema-terminal .fg-251 { - color: #c6c6c6; -} -.asciinema-terminal .bg-251 { - background-color: #c6c6c6; -} -.asciinema-terminal .fg-252 { - color: #d0d0d0; -} -.asciinema-terminal .bg-252 { - background-color: #d0d0d0; -} -.asciinema-terminal .fg-253 { - color: #dadada; -} -.asciinema-terminal .bg-253 { - background-color: #dadada; -} -.asciinema-terminal .fg-254 { - color: #e4e4e4; -} -.asciinema-terminal .bg-254 { - background-color: #e4e4e4; -} -.asciinema-terminal .fg-255 { - color: #eeeeee; -} -.asciinema-terminal .bg-255 { - background-color: #eeeeee; -} -.asciinema-theme-asciinema { - background-color: #121314; -} -.asciinema-theme-asciinema .asciinema-terminal { - color: #CCCCCC; - background-color: #121314; - border-color: #121314; -} -.asciinema-theme-asciinema .fg-bg { - color: #121314; -} -.asciinema-theme-asciinema .bg-fg { - background-color: #CCCCCC; -} -.asciinema-theme-asciinema .fg-0 { - color: hsl(0, 0%, 0%); -} -.asciinema-theme-asciinema .bg-0 { - background-color: hsl(0, 0%, 0%); -} -.asciinema-theme-asciinema .fg-1 { - color: hsl(343, 70%, 55%); -} -.asciinema-theme-asciinema .bg-1 { - background-color: hsl(343, 70%, 55%); -} -.asciinema-theme-asciinema .fg-2 { - color: hsl(103, 70%, 44%); -} -.asciinema-theme-asciinema .bg-2 { - background-color: hsl(103, 70%, 44%); -} -.asciinema-theme-asciinema .fg-3 { - color: hsl(43, 70%, 55%); -} -.asciinema-theme-asciinema .bg-3 { - background-color: hsl(43, 70%, 55%); -} -.asciinema-theme-asciinema .fg-4 { - color: hsl(193, 70%, 49.5%); -} -.asciinema-theme-asciinema .bg-4 { - background-color: hsl(193, 70%, 49.5%); -} -.asciinema-theme-asciinema .fg-5 { - color: hsl(283, 70%, 60.5%); -} -.asciinema-theme-asciinema .bg-5 { - background-color: hsl(283, 70%, 60.5%); -} -.asciinema-theme-asciinema .fg-6 { - color: hsl(163, 70%, 60.5%); -} -.asciinema-theme-asciinema .bg-6 { - background-color: hsl(163, 70%, 60.5%); -} -.asciinema-theme-asciinema .fg-7 { - color: hsl(0, 0%, 85%); -} -.asciinema-theme-asciinema .bg-7 { - background-color: hsl(0, 0%, 85%); -} -.asciinema-theme-asciinema .fg-8 { - color: hsl(0, 0%, 30%); -} -.asciinema-theme-asciinema .bg-8 { - background-color: hsl(0, 0%, 30%); -} -.asciinema-theme-asciinema .fg-9 { - color: hsl(343, 70%, 55%); -} -.asciinema-theme-asciinema .bg-9 { - background-color: hsl(343, 70%, 55%); -} -.asciinema-theme-asciinema .fg-10 { - color: hsl(103, 70%, 44%); -} -.asciinema-theme-asciinema .bg-10 { - background-color: hsl(103, 70%, 44%); -} -.asciinema-theme-asciinema .fg-11 { - color: hsl(43, 70%, 55%); -} -.asciinema-theme-asciinema .bg-11 { - background-color: hsl(43, 70%, 55%); -} -.asciinema-theme-asciinema .fg-12 { - color: hsl(193, 70%, 49.5%); -} -.asciinema-theme-asciinema .bg-12 { - background-color: hsl(193, 70%, 49.5%); -} -.asciinema-theme-asciinema .fg-13 { - color: hsl(283, 70%, 60.5%); -} -.asciinema-theme-asciinema .bg-13 { - background-color: hsl(283, 70%, 60.5%); -} -.asciinema-theme-asciinema .fg-14 { - color: hsl(163, 70%, 60.5%); -} -.asciinema-theme-asciinema .bg-14 { - background-color: hsl(163, 70%, 60.5%); -} -.asciinema-theme-asciinema .fg-15 { - color: hsl(0, 0%, 100%); -} -.asciinema-theme-asciinema .bg-15 { - background-color: hsl(0, 0%, 100%); -} -.asciinema-theme-asciinema .fg-8, -.asciinema-theme-asciinema .fg-9, -.asciinema-theme-asciinema .fg-10, -.asciinema-theme-asciinema .fg-11, -.asciinema-theme-asciinema .fg-12, -.asciinema-theme-asciinema .fg-13, -.asciinema-theme-asciinema .fg-14, -.asciinema-theme-asciinema .fg-15 { - font-weight: bold; -} -.asciinema-theme-tango { - background-color: #121314; -} -.asciinema-theme-tango .asciinema-terminal { - color: #CCCCCC; - background-color: #121314; - border-color: #121314; -} -.asciinema-theme-tango .fg-bg { - color: #121314; -} -.asciinema-theme-tango .bg-fg { - background-color: #CCCCCC; -} -.asciinema-theme-tango .fg-0 { - color: #000000; -} -.asciinema-theme-tango .bg-0 { - background-color: #000000; -} -.asciinema-theme-tango .fg-1 { - color: #CC0000; -} -.asciinema-theme-tango .bg-1 { - background-color: #CC0000; -} -.asciinema-theme-tango .fg-2 { - color: #4E9A06; -} -.asciinema-theme-tango .bg-2 { - background-color: #4E9A06; -} -.asciinema-theme-tango .fg-3 { - color: #C4A000; -} -.asciinema-theme-tango .bg-3 { - background-color: #C4A000; -} -.asciinema-theme-tango .fg-4 { - color: #3465A4; -} -.asciinema-theme-tango .bg-4 { - background-color: #3465A4; -} -.asciinema-theme-tango .fg-5 { - color: #75507B; -} -.asciinema-theme-tango .bg-5 { - background-color: #75507B; -} -.asciinema-theme-tango .fg-6 { - color: #06989A; -} -.asciinema-theme-tango .bg-6 { - background-color: #06989A; -} -.asciinema-theme-tango .fg-7 { - color: #D3D7CF; -} -.asciinema-theme-tango .bg-7 { - background-color: #D3D7CF; -} -.asciinema-theme-tango .fg-8 { - color: #555753; -} -.asciinema-theme-tango .bg-8 { - background-color: #555753; -} -.asciinema-theme-tango .fg-9 { - color: #EF2929; -} -.asciinema-theme-tango .bg-9 { - background-color: #EF2929; -} -.asciinema-theme-tango .fg-10 { - color: #8AE234; -} -.asciinema-theme-tango .bg-10 { - background-color: #8AE234; -} -.asciinema-theme-tango .fg-11 { - color: #FCE94F; -} -.asciinema-theme-tango .bg-11 { - background-color: #FCE94F; -} -.asciinema-theme-tango .fg-12 { - color: #729FCF; -} -.asciinema-theme-tango .bg-12 { - background-color: #729FCF; -} -.asciinema-theme-tango .fg-13 { - color: #AD7FA8; -} -.asciinema-theme-tango .bg-13 { - background-color: #AD7FA8; -} -.asciinema-theme-tango .fg-14 { - color: #34E2E2; -} -.asciinema-theme-tango .bg-14 { - background-color: #34E2E2; -} -.asciinema-theme-tango .fg-15 { - color: #EEEEEC; -} -.asciinema-theme-tango .bg-15 { - background-color: #EEEEEC; -} -.asciinema-theme-tango .fg-8, -.asciinema-theme-tango .fg-9, -.asciinema-theme-tango .fg-10, -.asciinema-theme-tango .fg-11, -.asciinema-theme-tango .fg-12, -.asciinema-theme-tango .fg-13, -.asciinema-theme-tango .fg-14, -.asciinema-theme-tango .fg-15 { - font-weight: bold; -} -.asciinema-theme-solarized-dark { - background-color: #002b36; -} -.asciinema-theme-solarized-dark .asciinema-terminal { - color: #839496; - background-color: #002b36; - border-color: #002b36; -} -.asciinema-theme-solarized-dark .fg-bg { - color: #002b36; -} -.asciinema-theme-solarized-dark .bg-fg { - background-color: #839496; -} -.asciinema-theme-solarized-dark .fg-0 { - color: #073642; -} -.asciinema-theme-solarized-dark .bg-0 { - background-color: #073642; -} -.asciinema-theme-solarized-dark .fg-1 { - color: #dc322f; -} -.asciinema-theme-solarized-dark .bg-1 { - background-color: #dc322f; -} -.asciinema-theme-solarized-dark .fg-2 { - color: #859900; -} -.asciinema-theme-solarized-dark .bg-2 { - background-color: #859900; -} -.asciinema-theme-solarized-dark .fg-3 { - color: #b58900; -} -.asciinema-theme-solarized-dark .bg-3 { - background-color: #b58900; -} -.asciinema-theme-solarized-dark .fg-4 { - color: #268bd2; -} -.asciinema-theme-solarized-dark .bg-4 { - background-color: #268bd2; -} -.asciinema-theme-solarized-dark .fg-5 { - color: #d33682; -} -.asciinema-theme-solarized-dark .bg-5 { - background-color: #d33682; -} -.asciinema-theme-solarized-dark .fg-6 { - color: #2aa198; -} -.asciinema-theme-solarized-dark .bg-6 { - background-color: #2aa198; -} -.asciinema-theme-solarized-dark .fg-7 { - color: #eee8d5; -} -.asciinema-theme-solarized-dark .bg-7 { - background-color: #eee8d5; -} -.asciinema-theme-solarized-dark .fg-8 { - color: #002b36; -} -.asciinema-theme-solarized-dark .bg-8 { - background-color: #002b36; -} -.asciinema-theme-solarized-dark .fg-9 { - color: #cb4b16; -} -.asciinema-theme-solarized-dark .bg-9 { - background-color: #cb4b16; -} -.asciinema-theme-solarized-dark .fg-10 { - color: #586e75; -} -.asciinema-theme-solarized-dark .bg-10 { - background-color: #586e75; -} -.asciinema-theme-solarized-dark .fg-11 { - color: #657b83; -} -.asciinema-theme-solarized-dark .bg-11 { - background-color: #657b83; -} -.asciinema-theme-solarized-dark .fg-12 { - color: #839496; -} -.asciinema-theme-solarized-dark .bg-12 { - background-color: #839496; -} -.asciinema-theme-solarized-dark .fg-13 { - color: #6c71c4; -} -.asciinema-theme-solarized-dark .bg-13 { - background-color: #6c71c4; -} -.asciinema-theme-solarized-dark .fg-14 { - color: #93a1a1; -} -.asciinema-theme-solarized-dark .bg-14 { - background-color: #93a1a1; -} -.asciinema-theme-solarized-dark .fg-15 { - color: #fdf6e3; -} -.asciinema-theme-solarized-dark .bg-15 { - background-color: #fdf6e3; -} -.asciinema-theme-solarized-light { - background-color: #fdf6e3; -} -.asciinema-theme-solarized-light .asciinema-terminal { - color: #657b83; - background-color: #fdf6e3; - border-color: #fdf6e3; -} -.asciinema-theme-solarized-light .fg-bg { - color: #fdf6e3; -} -.asciinema-theme-solarized-light .bg-fg { - background-color: #657b83; -} -.asciinema-theme-solarized-light .fg-0 { - color: #073642; -} -.asciinema-theme-solarized-light .bg-0 { - background-color: #073642; -} -.asciinema-theme-solarized-light .fg-1 { - color: #dc322f; -} -.asciinema-theme-solarized-light .bg-1 { - background-color: #dc322f; -} -.asciinema-theme-solarized-light .fg-2 { - color: #859900; -} -.asciinema-theme-solarized-light .bg-2 { - background-color: #859900; -} -.asciinema-theme-solarized-light .fg-3 { - color: #b58900; -} -.asciinema-theme-solarized-light .bg-3 { - background-color: #b58900; -} -.asciinema-theme-solarized-light .fg-4 { - color: #268bd2; -} -.asciinema-theme-solarized-light .bg-4 { - background-color: #268bd2; -} -.asciinema-theme-solarized-light .fg-5 { - color: #d33682; -} -.asciinema-theme-solarized-light .bg-5 { - background-color: #d33682; -} -.asciinema-theme-solarized-light .fg-6 { - color: #2aa198; -} -.asciinema-theme-solarized-light .bg-6 { - background-color: #2aa198; -} -.asciinema-theme-solarized-light .fg-7 { - color: #eee8d5; -} -.asciinema-theme-solarized-light .bg-7 { - background-color: #eee8d5; -} -.asciinema-theme-solarized-light .fg-8 { - color: #002b36; -} -.asciinema-theme-solarized-light .bg-8 { - background-color: #002b36; -} -.asciinema-theme-solarized-light .fg-9 { - color: #cb4b16; -} -.asciinema-theme-solarized-light .bg-9 { - background-color: #cb4b16; -} -.asciinema-theme-solarized-light .fg-10 { - color: #586e75; -} -.asciinema-theme-solarized-light .bg-10 { - background-color: #586e75; -} -.asciinema-theme-solarized-light .fg-11 { - color: #657c83; -} -.asciinema-theme-solarized-light .bg-11 { - background-color: #657c83; -} -.asciinema-theme-solarized-light .fg-12 { - color: #839496; -} -.asciinema-theme-solarized-light .bg-12 { - background-color: #839496; -} -.asciinema-theme-solarized-light .fg-13 { - color: #6c71c4; -} -.asciinema-theme-solarized-light .bg-13 { - background-color: #6c71c4; -} -.asciinema-theme-solarized-light .fg-14 { - color: #93a1a1; -} -.asciinema-theme-solarized-light .bg-14 { - background-color: #93a1a1; -} -.asciinema-theme-solarized-light .fg-15 { - color: #fdf6e3; -} -.asciinema-theme-solarized-light .bg-15 { - background-color: #fdf6e3; -} -.asciinema-theme-solarized-light .start-prompt .play-button svg .play-btn-fill { - fill: #dc322f; -} -.asciinema-theme-solarized-light .start-prompt .play-button svg .play-btn-stroke { - stroke: #dc322f; -} -.asciinema-theme-seti { - background-color: #111213; -} -.asciinema-theme-seti .asciinema-terminal { - color: #cacecd; - background-color: #111213; - border-color: #111213; -} -.asciinema-theme-seti .fg-bg { - color: #111213; -} -.asciinema-theme-seti .bg-fg { - background-color: #cacecd; -} -.asciinema-theme-seti .fg-0 { - color: #323232; -} -.asciinema-theme-seti .bg-0 { - background-color: #323232; -} -.asciinema-theme-seti .fg-1 { - color: #c22832; -} -.asciinema-theme-seti .bg-1 { - background-color: #c22832; -} -.asciinema-theme-seti .fg-2 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-2 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-3 { - color: #e0c64f; -} -.asciinema-theme-seti .bg-3 { - background-color: #e0c64f; -} -.asciinema-theme-seti .fg-4 { - color: #43a5d5; -} -.asciinema-theme-seti .bg-4 { - background-color: #43a5d5; -} -.asciinema-theme-seti .fg-5 { - color: #8b57b5; -} -.asciinema-theme-seti .bg-5 { - background-color: #8b57b5; -} -.asciinema-theme-seti .fg-6 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-6 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-7 { - color: #eeeeee; -} -.asciinema-theme-seti .bg-7 { - background-color: #eeeeee; -} -.asciinema-theme-seti .fg-8 { - color: #323232; -} -.asciinema-theme-seti .bg-8 { - background-color: #323232; -} -.asciinema-theme-seti .fg-9 { - color: #c22832; -} -.asciinema-theme-seti .bg-9 { - background-color: #c22832; -} -.asciinema-theme-seti .fg-10 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-10 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-11 { - color: #e0c64f; -} -.asciinema-theme-seti .bg-11 { - background-color: #e0c64f; -} -.asciinema-theme-seti .fg-12 { - color: #43a5d5; -} -.asciinema-theme-seti .bg-12 { - background-color: #43a5d5; -} -.asciinema-theme-seti .fg-13 { - color: #8b57b5; -} -.asciinema-theme-seti .bg-13 { - background-color: #8b57b5; -} -.asciinema-theme-seti .fg-14 { - color: #8ec43d; -} -.asciinema-theme-seti .bg-14 { - background-color: #8ec43d; -} -.asciinema-theme-seti .fg-15 { - color: #ffffff; -} -.asciinema-theme-seti .bg-15 { - background-color: #ffffff; -} -.asciinema-theme-seti .fg-8, -.asciinema-theme-seti .fg-9, -.asciinema-theme-seti .fg-10, -.asciinema-theme-seti .fg-11, -.asciinema-theme-seti .fg-12, -.asciinema-theme-seti .fg-13, -.asciinema-theme-seti .fg-14, -.asciinema-theme-seti .fg-15 { - font-weight: bold; -} -/* Based on Monokai from base16 collection - https://github.com/chriskempson/base16 */ -.asciinema-theme-monokai { - background-color: #272822; -} -.asciinema-theme-monokai .asciinema-terminal { - color: #f8f8f2; - background-color: #272822; - border-color: #272822; -} -.asciinema-theme-monokai .fg-bg { - color: #272822; -} -.asciinema-theme-monokai .bg-fg { - background-color: #f8f8f2; -} -.asciinema-theme-monokai .fg-0 { - color: #272822; -} -.asciinema-theme-monokai .bg-0 { - background-color: #272822; -} -.asciinema-theme-monokai .fg-1 { - color: #f92672; -} -.asciinema-theme-monokai .bg-1 { - background-color: #f92672; -} -.asciinema-theme-monokai .fg-2 { - color: #a6e22e; -} -.asciinema-theme-monokai .bg-2 { - background-color: #a6e22e; -} -.asciinema-theme-monokai .fg-3 { - color: #f4bf75; -} -.asciinema-theme-monokai .bg-3 { - background-color: #f4bf75; -} -.asciinema-theme-monokai .fg-4 { - color: #66d9ef; -} -.asciinema-theme-monokai .bg-4 { - background-color: #66d9ef; -} -.asciinema-theme-monokai .fg-5 { - color: #ae81ff; -} -.asciinema-theme-monokai .bg-5 { - background-color: #ae81ff; -} -.asciinema-theme-monokai .fg-6 { - color: #a1efe4; -} -.asciinema-theme-monokai .bg-6 { - background-color: #a1efe4; -} -.asciinema-theme-monokai .fg-7 { - color: #f8f8f2; -} -.asciinema-theme-monokai .bg-7 { - background-color: #f8f8f2; -} -.asciinema-theme-monokai .fg-8 { - color: #75715e; -} -.asciinema-theme-monokai .bg-8 { - background-color: #75715e; -} -.asciinema-theme-monokai .fg-9 { - color: #f92672; -} -.asciinema-theme-monokai .bg-9 { - background-color: #f92672; -} -.asciinema-theme-monokai .fg-10 { - color: #a6e22e; -} -.asciinema-theme-monokai .bg-10 { - background-color: #a6e22e; -} -.asciinema-theme-monokai .fg-11 { - color: #f4bf75; -} -.asciinema-theme-monokai .bg-11 { - background-color: #f4bf75; -} -.asciinema-theme-monokai .fg-12 { - color: #66d9ef; -} -.asciinema-theme-monokai .bg-12 { - background-color: #66d9ef; -} -.asciinema-theme-monokai .fg-13 { - color: #ae81ff; -} -.asciinema-theme-monokai .bg-13 { - background-color: #ae81ff; -} -.asciinema-theme-monokai .fg-14 { - color: #a1efe4; -} -.asciinema-theme-monokai .bg-14 { - background-color: #a1efe4; -} -.asciinema-theme-monokai .fg-15 { - color: #f9f8f5; -} -.asciinema-theme-monokai .bg-15 { - background-color: #f9f8f5; -} -.asciinema-theme-monokai .fg-8, -.asciinema-theme-monokai .fg-9, -.asciinema-theme-monokai .fg-10, -.asciinema-theme-monokai .fg-11, -.asciinema-theme-monokai .fg-12, -.asciinema-theme-monokai .fg-13, -.asciinema-theme-monokai .fg-14, -.asciinema-theme-monokai .fg-15 { - font-weight: bold; -} diff --git a/docs/usage.md b/docs/usage.md index 4c96da4..34d87a2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,30 +1,71 @@ # Usage -`Task.mk` will add access to a recipe `help` (also aliased to `h`). -In order to use `make help` to you will need to add some custom comments to your `Makefile`. +`Task.mk` can be included in any standard `GNUMakefile`. +If it's been properly sourced you will have access to the below features/recipes. -Deliberately, I don't get names from recipes themselves. -This not only greatly simplifies the parsing but add's some opportunity to customize the output. -Such as to document wildcard or redundant recipes. +See [examples](/task.mk/examples) for more info. -You can place these anywhere, but I recommend adding these notes directly above their relevant recipes. -The format is `## | ` +## Builtin Recipes + +### Help + +Invoked with either `make help` or `make h`. + +Adding goals to the builtin help recipe just requires documenting your `Makefile` with comments. +The format is `## |> ` or `: ## ` ```make -## build | build the project -.PHONY: build +## build |> build the project build: ... + +build: ## build the project ``` Now when you invoke `make help` it will parse these and generate your help output. +In addition you can add raw text to the help output using the format `### `. -In addition to a generic help output you can expose some configuration settings with `make vars`. +Both recipe documentation and raw messages can be modified with additional arguments delimited by `|>`. + +For example: + +```make +### build related recipes |> --align center --divider +build: ## build the project |> --msg-style bold + ... +package: ## package the project |> -gs b_cyan +``` + +`Task.mk` can also generate recipe specific help regardless of whether a goal is documented. +This can be invoked by appending the name of a recipe to help call: `make help build`. + +All recipes prefixed with and underscore will be hidden even if documented. +However, they can be viewed by invoking `make _help`. + +### Vars + +In addition to a generic help output you can expose some configuration settings with `make vars` or `make v`. To do so define the variables you'd like to print with `PRINT_VARS := VAR1 VAR2 VAR3`. -In addition to the `help` and `vars` recipes you can use a custom make function to format your text for fancier output. -For this there are two options depending on your needs `tprint` or `tprint-sh`. (`tprint-sh` is for use within a multiline sub-shell that has already been silenced, see the version-check rule of this project's `Makefile` for an example.) +## Builtin Functions +### Phonify + +Phonify is a new experimental feature of `task.mk` that solves one of the biggest gotchas of using `make` as a task runner! +It stands to reason the tasks you document are likely to all be phony recipes +Rather than write `.PHONY: ` repeatedly, simply enable `task.mk`'s phonifier. + +`Task.mk` will then parse your `Makefile` for documented tasks and +generate the necessary `.PHONY: ` line to ensure they are always executed. +To use this feature set the `PHONIFY` environment variable before including `.task.mk`. +To avoid adding a documented task/recipe to `.PHONY`, use `|> --not-phony` after the recipe message. + +### Tprint + +Besides the `help` and `vars` recipes you can use a custom make function to format your text for fancier output. +For this there are two options depending on your needs `tprint` or `tprint-verbose` +(`tprint-verbose` is for use within a multiline sub-shell that has already been silenced, +see the version-check rule of this project's `Makefile` for an example). To use `tprint` you call it with the builtin `make` call function. It accepts only one argument: an unquoted f-string literal. @@ -32,20 +73,17 @@ All strings passed to `tprint` have access to an object `ansi` or `a` for simpli This stores ANSI escape codes which can be used to style your text. ```make -## build | compile the source .PHONY: build -build: +build: ## compile the source $(call tprint,{a.cyan}Build Starting{a.end}) ... $(call tprint,{a.green}Build Finished{a.end}) ``` + See this projects `make info` for more examples of `tprint`. To see the available colors and formatting(bold,italic,etc.) use the hidden recipe `make _print-ansi`. -**Note**: Any help commands starting with an underscore will be ignored. -To view hidden `tasks` (or recipes in GNU Make land) you can use `make _help`. - In addition, you can use custom colors using the builtin `ansi.custom` or (`a.custom`) method. It has two optional arguments `fg` and `bg`. Which can be used to specify either an 8-bit color from the [256 colors](https://en.wikipedia.org/wiki/8-bit_color). Or a tuple/list to define an RBG 24-bit color, for instance `a.custom(fg=(5,10,255))`. @@ -54,7 +92,7 @@ See this project's `make info` for an example. ## Configuration You can quickly customize some of the default behavior of `task.mk` by overriding the below variables prior to the `-include .task.mk`. -These can also be included in a seperate file `.task.cfg.mk`. +These can also for instance included in a seperate file `.task.cfg.mk`. ```make # ---- [config] ---- # @@ -69,7 +107,8 @@ HELP_SEP ?= │ # python f-string literals EPILOG ?= USAGE ?={ansi.$(HEADER_STYLE)}usage{ansi.end}:\n make \n -INHERIT_SHELL ?= +TASKMK_SHELL ?= +PHONIFY ?= ``` To use a custom color for one of the predefined configuration variables specify only the custom method. @@ -80,7 +119,7 @@ HEADER_STYLE = custom(fg=171,bg=227) **NOTE**: `HELP_SEP` does not change the argument definitions syntax only the format of `make help`. -## Advanced Usage: Embedded Python Scripts +## Advanced Usage: Embedded Scripts You can take advantage of the builtin python script runner and write multi-line python scripts of your own. This is a simple example but a few lines of python in your `Makefile` diff --git a/mkdocs.yml b/mkdocs.yml index 54f01d4..c35fa0d 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,18 +3,15 @@ site_url: https://gh.dayl.in/task.mk repo_url: https://github.com/daylinmorgan/task.mk edit_uri: edit/main/docs/ repo_name: daylinmorgan/task.mk + theme: name: material - custom_dir: docs/overrides features: - navigation.indexes palette: - scheme: default extra_css: - stylesheets/extra.css - - stylesheets/asciinema-player.css -extra_javascript: - - javascripts/asciinema-player.min.js plugins: - search - git-revision-date-localized: diff --git a/src/config.mk b/src/config.mk index 7485ae8..997256f 100644 --- a/src/config.mk +++ b/src/config.mk @@ -11,4 +11,4 @@ WRAP ?= 100 # python f-string literals EPILOG ?= USAGE ?={ansi.header}usage{ansi.end}:\n make \n -INHERIT_SHELL ?= +PHONIFY ?= diff --git a/task.mk b/task.mk index 2c339ee..bb3574b 100644 --- a/task.mk +++ b/task.mk @@ -1,7 +1,7 @@ # }> [github.com/daylinmorgan/task.mk] <{ # # Copyright (c) 2022 Daylin Morgan # MIT License -TASKMK_VERSION ?= v23.1.1-12-gb0f7493-dev +TASKMK_VERSION ?= v23.1.1-18-g1b8bdaa-dev # task.mk should be included at the bottom of your Makefile with `-include .task.mk` # See below for the standard configuration options that should be set prior to including this file. # You can update your .task.mk with `make _update-task.mk` @@ -19,10 +19,12 @@ WRAP ?= 100 # python f-string literals EPILOG ?= USAGE ?={ansi.header}usage{ansi.end}:\n make \n -INHERIT_SHELL ?= +TASKMK_SHELL ?= +PHONIFY ?= # ---- [python scripts] ---- # define help_py from collections import namedtuple +from pathlib import Path import subprocess from textwrap import wrap $(utils_py) @@ -46,10 +48,14 @@ def recipe_help_header(goal): ) else: return f" {ansi.style(goal,'goal')}" +def get_makefile_list(): + pattern = re.compile(r'^\.?task.*?\.mk$$') + makefiles = os.getenv("MAKEFILE_LIST", "").split() + return (f for f in makefiles if not pattern.match(Path(f).name)) def get_goal_deps(goal="task.mk"): make = os.getenv("MAKE", "make") cmd = [make, "-p", "-n", "-i"] - for file in os.getenv("TASK_MAKEFILE_LIST", "").split(): + for file in get_makefile_list(): cmd.extend(["-f", file]) database = subprocess.check_output(cmd, universal_newlines=True) dep_pattern = re.compile(r"^" + goal + ":(.*)?") @@ -450,8 +456,7 @@ tprint = $(call py,print_py,$(1)) tprint-verbose= $(call py-verbose,print_py,$(1)) tconfirm = $(call py,confirm_py,$(1)) .PHONY: h help _help _print-ansi _update-task.mk -TASK_MAKEFILE_LIST := $(filter-out .task.cfg.mk .task.mk,$(MAKEFILE_LIST)) -export MAKEFILE_LIST MAKE TASK_MAKEFILE_LIST +export MAKEFILE_LIST MAKE ifdef PHONIFY $(shell MAKEFILE_LIST='$(MAKEFILE_LIST)' $(call py-verbose,phonify_py)) endif