Go 애플리케이션을 템플릿에서 자동 생성하는 CLI 도구

7350 단어 5자동화cliOSS

만든 것




gogener는 템플릿에서 Go 프로젝트를 자동 생성하는 CLI 도구입니다!
Chef의 template처럼 사용할 수 있다고 생각하고 만들었습니다.

동작





동기 부여



새 웹 API를 만들 때,
처음부터 쓰면 시간이 걸리고 귀찮아서,
템플릿만 만들고 언제든지 프로젝트를 사용할 수 있도록 노력했습니다.

어떤 템플릿이 있나요?



템플릿을 얻으려면 gogener 자신이 가진 템플릿과 외부에 설치된 템플릿이 있습니다.

지금,
local
- ryomak-app(ddd + clean architecture構成のWebAPI)
reomte
- ryomak/go-deep-util-example (GoでDeepLearningするexample)
- ryomak/grpc-vue-go-example (I/Fがgrpcで作成したGoとvueのWebサイト)
- ryomak/go-p2pchat (P2P型のgoのチャットCLIツール)

있습니다.

ryomak-app





깨끗한 아키텍처로 만들고 있습니다. WebAPI를 만들 때 이 패키지를 재사용합니다.

ryomak/go-deep-util-example




go-deep 라는 딥 러닝하는 라이브러리를 이용하여 이미지 분류하는 프로그램입니다.
빨리 Go로 딥 러닝 해보고 싶은 사람에게 추천합니다.

ryomak/grpc-vue-go-example






grpc를 사용하고 싶고, go(clean architecture)의 구성으로 Vue.js의 웹 사이트를 만들었습니다. grpc example에서 사용할 수 있습니다.

GPS를 받고
참여한 사용자의 위치 정보를 레이더처럼 표시합니다.
레이더의 실장으로 힘 다해 버려, 외형이 아직인 것과, 방의 관리가 아직 능숙하지 않기 때문에, 이쪽 수정도 별도해 가려고 생각합니다.

ryomak/go-p2pchat



htps : // 기주 b. 코 m / 료마 k / go p2p t


이것은 P2P 유형의 채팅 CLI입니다.
일단 하나의 노드에 연결하면 블록체인처럼 다른 연결 노드로 전파됩니다.

gogener 사용법


$ go get github.com/ryomak/gogener/cmd/gogener 
$ gogener create -app (アプリ名) -mod (module名) ryomak-app 

마지막으로



이번에는 처음으로 갓쯔리 CLI를 만들어 보았습니다.
Go 언어는 CLI가 만들기 쉽고 좋네요.
각 템플릿의 기초가 된 프로젝트의 수정 등이 있으면 풀릭 부탁드립니다 mm

여담



템플릿은 GithubPages에서 게시하면 CLI 도구에서 사용할 수 있습니다. 꼭 만들어서 풀릭 던져 주었으면 합니다.

방법은 htps : // 료마 k. 기주 b. 이오 / 미안해 r /
에 정리하고 있습니다만, 예로 설명합니다.

프로젝트 만들기



기본적으로 생성하는 앱과 동일한 디렉토리 구성으로 템플릿을 배치합니다. 배치할 템플릿은 yaml 파일로 작성합니다. 이 파일을 gogener에 등록하면이 yaml에 따라 프로젝트를 만들 수 있습니다.

app_template.yaml
name: "ryomak/go-p2pchat"
bg-file-path: "bg.txt"
templates:
  - "go.mod"
  - "util/userInput.go"
  - "util/util.go"
  - "Makefile"
  - "peer/util.go"
  - "peer/peer.go"
  - "README.md"
  - "chat.go"
  - "control/control.go"
  - "app_template.yaml"


템플릿 생성



main.go를 예로 들어 보겠습니다.

main.go
package main
import (
    "fmt"
)

func main() {
    fmt.Println("hello [[.AppName]]")
}

Vue나 Angular를 포함한 프로젝트의 템플릿이라면, {{}} 로, 써 버리므로, Delims를 [[]] 로 변경하고 있습니다.
기본적으로 템플릿에서 사용할 수 있는 매개 변수는
  • AppName
  • ModName
  • ToCamel
  • ToLowerCamel
    사용할 수 있습니다.


  • gogener에 템플릿 추가



    gogener에게 풀릭을 던집니다. 수정은 한 줄뿐입니다.

    gogener/interal/recipe/remote/templates.go
    var remoteMap = map[string]string{
        "go-deep-util-example": "https://ryomak.github.io/templates-for-gogener/go-deep-util/app_template.yaml",
        "grpc-vue-go-example":  "https://ryomak.github.io/templates-for-gogener/grpc-vue-example/app_template.yaml",
      + "exapp": "{github pages url}/app_template.yaml"
    }
    

    이것 이상입니다.



    마지막으로



    이번에 처음으로 제대로 된 CLI를 만들어 보았습니다.
    즉시 APP를 만들고 싶을 때는 사용할 수 있다고 생각합니다.

    개인적인 배우기로는, CLI 작성에 있어서, Github Action으로, CLI의 릴리스까지 실시했습니다. 평상시는 CircleCI를 이용하고 있었습니다만, GithubAction가 편리하고, 환승해 가려고 생각했습니다.
    CLI 릴리스에는 gorelaser가 쉬웠습니다! 아래의 기사를 보면 바로 할 수 있습니다!
    htps : // 튕겨. Tokyo / Po St / 2020/02/04 / Ree Ase-Go-c-l / l /

    좋은 웹페이지 즐겨찾기