Go 애플리케이션을 템플릿에서 자동 생성하는 CLI 도구
만든 것
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를 [[]]
로 변경하고 있습니다.기본적으로 템플릿에서 사용할 수 있는 매개 변수는
사용할 수 있습니다.
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 /
Reference
이 문제에 관하여(Go 애플리케이션을 템플릿에서 자동 생성하는 CLI 도구), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ryoma0413/items/a05cd91e2d9c936018ef텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)