skeleton
About
独自のスケルトンコードを生成します。
goのtext/template
を使用して、ファイルを生成します。
yamlファイルで変数を宣言し、text/template
で使用し自由にカスタマイズ出来ます。
Installation
go
go install -v github.com/jyury11/skeleton/cmd/skeleton@latest
linux
curl -sfL https://raw.githubusercontent.com/Jyury11/skeleton/main/install.sh | sudo sh -s -- -b /usr/local/bin
gihub releases
Usage
skeleton create --service user --src ./template --dst ./dst --values values.yaml
Example
example
Description
スケルトンの生成は、以下のルールに従います。
text/template
に準拠したテンプレートファイルが使用出来る。
- テンプレートはファイルの中身だけでなく、ディレクトリ名・ファイル名にも使用出来る。
- 拡張子が
.tmpl
で終わるファイルは、最後からひとつ前の拡張子に変更される。
user.go.tmpl
-> user.go
docker-compose.yaml
-> docker-compose.yaml
- yamlで宣言された変数ファイルを作成し、--values引数で指定しテンプレートで使用出来る。
- 生成先にファイルが既にある場合、基本的には上書きをしない。ただし以下の場合、ファイルの上書きがされる。
- テンプレート・生成先ファイルの最初が、正規表現
^// Code generated .*; DO NOT EDIT.\n
にマッチするファイルは再生成される。
- --forceオプションを使用している場合、全てのファイルが再生成される。
text/template
では次の追加の関数が使用出来る。
Echo
: fmt.Println
CamelToSnake
: キャメルケースをスネークケースに変換
CamelToUpperSnake
: キャメルケースをアッパースネークケースに変換
SnakeToCamel
: スネークケースをキャメルケースに変換
ToUpper
: strings.ToUpper
ToLower
: strings.ToLower
ToTitle
: strings.ToTitle
Title
: cases.Title(language.Und, cases.NoLower).String
Options
$ skeleton help create
create skeleton by template
Usage:
skeleton create [flags]
Flags:
--dst string destination path (required)
-f, --force always overwrite files
-h, --help help for create
-s, --service string service name (required)
--src string source path (required)
-v, --values string values yaml path
Advanced
ライブラリとして組み込んで使用する事も可能です。
その場合はcmd/lib/main_test.go
を参考にしてください。
package lib_test
import (
"os"
"path/filepath"
"testing"
"github.com/jyury11/skeleton/cmd/lib"
)
func TestMain(t *testing.T) {
t.Run("main_lib", func(t *testing.T) {
p, _ := os.Getwd()
root := filepath.Join(p, "..", "..")
src := filepath.Join(root, "example", "template")
dst := filepath.Join(root, "example", "dst")
val := filepath.Join(root, "example", "values.yaml")
args := lib.CreateArgs{
ServiceName: "user",
Src: src,
Dst: dst,
Values: val,
}
if err := lib.Create(args); err != nil {
panic(err)
}
})
}
License
MIT
Author
jyury11