Skip to content

Instantly share code, notes, and snippets.

@toruuetani
Last active September 4, 2022 15:10
Show Gist options
  • Save toruuetani/ee687937f3f7ec066a892f79db4348dd to your computer and use it in GitHub Desktop.
Save toruuetani/ee687937f3f7ec066a892f79db4348dd to your computer and use it in GitHub Desktop.
tasks:
default:
vars:
LINE:
sh: task -l ^| peco
COLON:
sh: tmp="{{.LINE}}"; list=(${tmp/,/ }); echo ${list[1]}
TASK:
sh: tmp="{{.LINE}}"; list=(${tmp/,/ }); echo ${list[1]:0:-1}
DUMMY:
sh: cmd /c "echo {{.TASK}}; cls"
cmds:
- task {{.TASK}}
preconditions:
- sh: '[[ "{{.COLON}}" == "{{.TASK}}:" ]]'
msg: タスクを選択してください
@toruuetani
Copy link
Author

  default:
    vars:
      COLON:
        sh: >-
          tmp=$(task -l ^| peco);
          if [ "${tmp:0:2}" = "* " ]; then
            tmp=${tmp:2} # `*` が `echo *` とパースされるのを防ぐ
            list=(${tmp/,/ });
            echo ${list[0]}
          else
            echo
          fi
      TASKNAME:
        sh: tmp={{.COLON}}; echo "${tmp:0:-1}"
    cmds:
      - cmd /c "cls" # peco の残像が残る場合の対策
      - >-
        name={{.TASKNAME}};
        read -p "[$name] is selected. Do you proceed? [y/N]: " str;
        yn=${str:0:-1};
        if [ $yn != y ] && [ $yn != Y ]; then
          echo canceled.;
          exit 1
        fi;
        if [[ $name =~ $prod:.+ ]]; then
          read -p "[$name] requires MFA. Input: " str;
          code=${str:0:-1};
          if [[ $code =~ ^[0-9]{6}$ ]]; then
            args=" -- $code";
          else
            echo Invalid mfa code.;
            exit 1;
          fi;
        elif [[ $name =~ ^version:bumpup.*$ ]]; then
          read -p "[$name] requires version. Input: " str;
          ver=${str:0:-1};
          args=" -- $ver";
        fi;
        task {{.TASKNAME}}$args;
    preconditions:
      - sh: '[[ "{{.COLON}}" == "{{.TASKNAME}}:" ]]'
        msg: "タスクを選択してください"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment