From d322c1daf22ed876cf0320103dc09b35075089b2 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Wed, 5 Mar 2025 16:05:55 +1100 Subject: scheme: fix random --- scheme/main.fish | 47 ++++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/scheme/main.fish b/scheme/main.fish index 7b0dc8f..8c11a09 100755 --- a/scheme/main.fish +++ b/scheme/main.fish @@ -25,52 +25,57 @@ set -l schemes $src/data/schemes . $src/util.fish +set -l scheme $argv[1] +set -l flavour $argv[2] +set -l mode $argv[3] + set -l valid_schemes (basename -a $schemes/*) -test -z "$argv" && set -l argv[1] (random choice $valid_schemes) +test -z "$scheme" && set -l scheme (random choice $valid_schemes) -if contains -- "$argv[1]" $valid_schemes - set -l flavours (basename -a (find $schemes/$argv[1]/ -mindepth 1 -maxdepth 1 -type d) 2> /dev/null) - set -l modes (basename -s .txt (find $schemes/$argv[1]/ -mindepth 1 -maxdepth 1 -type f) 2> /dev/null) +if contains -- "$scheme" $valid_schemes + set -l flavours (basename -a (find $schemes/$scheme/ -mindepth 1 -maxdepth 1 -type d) 2> /dev/null) + set -l modes (basename -s .txt (find $schemes/$scheme/ -mindepth 1 -maxdepth 1 -type f) 2> /dev/null) if test -n "$modes" # Scheme only has one flavour, so second arg is mode - if test -z "$argv[2]" + set -l mode $flavour + if test -z "$mode" # Try to use current mode if not provided and current mode exists for flavour, otherwise random mode - set argv[2] (cat $C_STATE/scheme/current-mode.txt 2> /dev/null) - contains -- "$argv[2]" $modes || set argv[2] (random choice $modes) + set $mode (cat $C_STATE/scheme/current-mode.txt 2> /dev/null) + contains -- "$mode" $modes || set mode (random choice $modes) end - if contains -- "$argv[2]" $modes + if contains -- "$mode" $modes # Provided valid mode - set-scheme $schemes/$argv[1]/$argv[2].txt $argv[1] $argv[2] + set-scheme $schemes/$scheme/$mode.txt $scheme $mode else - error "Invalid mode for $argv[1]: $argv[2]" + error "Invalid mode for $scheme: $mode" end else # Scheme has multiple flavours, so second arg is flavour - test -z "$argv[2]" && set -l argv[2] (random choice $flavours) + test -z "$flavour" && set -l flavour (random choice $flavours) - if contains -- "$argv[2]" $flavours + if contains -- "$flavour" $flavours # Provided valid flavour - set -l modes (basename -s .txt $schemes/$argv[1]/$argv[2]/*.txt) - if test -z "$argv[3]" + set -l modes (basename -s .txt $schemes/$scheme/$flavour/*.txt) + if test -z "$mode" # Try to use current mode if not provided and current mode exists for flavour, otherwise random mode - set argv[3] (cat $C_STATE/scheme/current-mode.txt 2> /dev/null) - contains -- "$argv[3]" $modes || set argv[3] (random choice $modes) + set mode (cat $C_STATE/scheme/current-mode.txt 2> /dev/null) + contains -- "$mode" $modes || set mode (random choice $modes) end - if contains -- "$argv[3]" $modes + if contains -- "$mode" $modes # Provided valid mode - set-scheme $schemes/$argv[1]/$argv[2]/$argv[3].txt $argv[1]-$argv[2] $argv[3] + set-scheme $schemes/$scheme/$flavour/$mode.txt $scheme-$flavour $mode else - error "Invalid mode for $argv[1] $argv[2]: $argv[3]" + error "Invalid mode for $scheme $flavour: $mode" end else # Invalid flavour - error "Invalid flavour for $argv[1]: $argv[2]" + error "Invalid flavour for $scheme: $flavour" end end else - error "Invalid scheme: $argv[1]" + error "Invalid scheme: $scheme" end -- cgit v1.2.3-freya