いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Task (go-task) メモ-35 (v3.38で追加された特殊変数)(CLI_SILENT, CLI_VERBOSE)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

これまでの Task に関する記事は上の関連記事をご参照ください。

v3.38.0 にて、以下の特殊変数が追加されました。

  • CLI_SILENT
    • 実行時に --silent が付与されていればtrueとなる
  • CLI_VERBOSE
    • 実行時に --verbose が付与されていればtrueとなる

実行するアプリケーションに -verbose オプションや -silent オプションのようなものが存在する場合は、今回追加された特殊変数の値によって切り替えて実行したり出来ますね。

サンプル

以下のようなタスクファイルを用意します。

# https://taskfile.dev

version: '3'

tasks:
  default:
    cmds:
      - go build -o app .
      - ./app {{- if .CLI_SILENT}} -s {{end -}}{{- if .CLI_VERBOSE}} -v {{end -}}

サンプルアプリとして、以下のGoファイルを用意。

package main

import (
    "flag"
    "fmt"
    "io"
    "os"
)

func main() {
    var (
        silent  bool
        verbose bool
    )

    flag.BoolVar(&silent, "s", false, "silent mode")
    flag.BoolVar(&verbose, "v", false, "verbose mode")
    flag.Parse()

    var (
        appW   io.Writer = os.Stdout
        dbgW   io.Writer = os.Stdout
        withLf           = func(s string) string {
            return fmt.Sprintf("%s\n", s)
        }
    )

    if silent {
        dbgW = io.Discard
    }

    if verbose {
        io.WriteString(appW, withLf("zero"))
    }

    io.WriteString(appW, withLf("first"))
    io.WriteString(dbgW, withLf("second"))

    if verbose {
        io.WriteString(appW, withLf("fourth"))
    }
}

実行すると以下のように、特殊変数の値によってパラメータが切り換わっているのが分かります。

$ task 
task: [default] go build -o app .
task: [default] ./app
first
second

$ task --silent
first

$ task --verbose
task: [/workspace/try-gotask/31.v338-special-variable] Not found - Using alternative (Taskfile.yml)
task: "default" started
task: [default] go build -o app .
task: [default] ./app -v 
zero
first
second
fourth
task: "default" finished

$ task --silent --verbose
task: [/workspace/try-gotask/31.v338-special-variable] Not found - Using alternative (Taskfile.yml)
task: "default" started
task: [default] go build -o app .
task: [default] ./app -s  -v 
zero
first
fourth
task: "default" finished

try-gotask/31.v338-cli_silent-cli_verbose at main · devlights/try-gotask · GitHub

参考情報

taskfile.dev

github.com

engineer.retty.me

zenn.dev

zenn.dev


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。