{ ... }: { text = '' # Switch bottle. # Usage: bt function bt() { export SHELL_NAME="''${*}" } # Create new bottle. # Usage: btc [ENV] [EXTRA] function btc() { local env="''${1}" [[ "''${env}" = "" ]] && env="gaming" bottles-cli new --bottle-name "''${SHELL_NAME}" --environment "''${env}" "''${@:2}" 2> /dev/null } # Run a file inside a bottle. # Usage: btre [EXTRA] function btre() { bottles-cli run -b "''${SHELL_NAME}" -e "''${@}" } # Run a program inside a bottle. # Usage: btr [EXTRA] function btr() { bottles-cli run -b "''${SHELL_NAME}" -p "''${@}" } # List bottles. function btl() { bottles-cli list bottles 2> /dev/null } # List programs in a bottle. function btlp() { bottles-cli programs -b "''${SHELL_NAME}" 2> /dev/null } # Add a program to bottle. # Usage: bta [EXTRA] function bta() { local name="''${1}" local exe=$(realpath "''${2}") if [[ "''${exe}" = "" ]]; then help bta return 2 fi bottles-cli add -b "''${SHELL_NAME}" -n "''${name}" -p "''${exe}" "''${@:3}" 2> /dev/null } # Set bottle env var. # Usage: bte function bte() { local env="''${1}" if [[ "''${env}" = "" ]]; then help bte return 2 fi bottles-cli edit -b "''${SHELL_NAME}" --env-var "''${@}" 2> /dev/null } # Play bottle. # Usage: btp function btp() { local bottle="''${1##*/}" if [[ "''${bottle}" = "" ]]; then help btp return 2 fi local program=$(bottles-cli programs -b "''${bottle}" 2> /dev/null | sed -n -e "s/^- //; 2p") bottles-cli run -b "''${bottle}" -p "''${program}" } function _comp_bottles_list() { _autocomplete $(bottles-cli list bottles 2> /dev/null | sed -e "1d; s/^- //") } function _comp_programs_list() { local IFS=$'\n' _autocomplete $(bottles-cli programs -b "''${SHELL_NAME}" 2> /dev/null | sed -e "1d; s/^- //") } complete -F _comp_bottles_list bt btp complete -F _comp_programs_list btr ''; }