skeleton

module
v1.0.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 30, 2022 License: MIT

README

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

スケルトンの生成は、以下のルールに従います。

  1. text/templateに準拠したテンプレートファイルが使用出来る。
    • テンプレートはファイルの中身だけでなく、ディレクトリ名・ファイル名にも使用出来る。
  2. 拡張子が .tmplで終わるファイルは、最後からひとつ前の拡張子に変更される。
    • user.go.tmpl -> user.go
    • docker-compose.yaml -> docker-compose.yaml
  3. yamlで宣言された変数ファイルを作成し、--values引数で指定しテンプレートで使用出来る。
  4. 生成先にファイルが既にある場合、基本的には上書きをしない。ただし以下の場合、ファイルの上書きがされる。
    1. テンプレート・生成先ファイルの最初が、正規表現^// Code generated .*; DO NOT EDIT.\nにマッチするファイルは再生成される。
    2. --forceオプションを使用している場合、全てのファイルが再生成される。
  5. text/templateでは次の追加の関数が使用出来る。
    1. Echo : fmt.Println
    2. CamelToSnake : キャメルケースをスネークケースに変換
    3. CamelToUpperSnake: キャメルケースをアッパースネークケースに変換
    4. SnakeToCamel : スネークケースをキャメルケースに変換
    5. ToUpper : strings.ToUpper
    6. ToLower : strings.ToLower
    7. ToTitle : strings.ToTitle
    8. 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

Directories

Path Synopsis
cmd
lib
example
dst Module
internal
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL