自作のLinuxコマンドのヘルプを充実させよう

自作のLinuxコマンドでオプションを追加しよう2までで作成しましたsayコマンドのヘルプの内容を充実させます。


/home/pi/say.go

package main

import (
        "flag"
        "fmt"
)

func main() {
	flag.CommandLine.Usage = func() {
		o := flag.CommandLine.Output()
		fmt.Fprintf(o, "Usage: say\n")
		fmt.Fprintf(o, "Description: Command description etc.\nOptions:\n")
		flag.PrintDefaults()
		fmt.Fprintf(o, "Copyright 2024 saitodev.co.\n")
	}

	var msg string
	var isAdd = flag.Bool("a", false, "Add exclamation mark(!)")
	var repeat = flag.Int("r", 0, "Set the number of repetitions of the output string.")

	flag.Parse()
	args := flag.Args()
	if len(args) == 1 {
		msg = args[0]
	}

	if *repeat > 0 {
		var tmp string
		for i := 0; i < *repeat; i++ {
			tmp += msg
		}
		msg = tmp
	}

	if *isAdd {
		msg += "!"
	}

	fmt.Println(msg)
}

前に作成したコードに

flag.CommandLine.Usage = func() { }

を加えることで説明文を充実させることができます。


flag.PrintDefaults()

Options:
  -a    Add exclamation mark(!)
  -r int
        Set the number of repetitions of the output string.

の出力になりまして、この上下に

fmt.Fprintf(o, "文字列")

で内容を追加します。


$ go build say.go
$ sudo mv say /usr/local/bin/
$ say --help

で内容を確認してみましょう。


Usage: say
Description: Command description etc.
Options:
  -a    Add exclamation mark(!)
  -r int
        Set the number of repetitions of the output string.
Copyright 2024 saitodev.co.

になりました。

マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。