diff --git a/README.md b/README.md index 0ae154a..d8d8b1b 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,79 @@ # just-go ## Descripción -Este proyecto tiene como objetivo crear un cookie cutter para proyectos desarrollados en Go, basado en la estructura recomendada de [Standard Go Layout ](https://github.com/golang-standards/project-layout). just-go proporciona una estructura base para proyectos Go, que incluye scripts de construcción y pruebas automatizadas, lo que permite a los desarrolladores comenzar a trabajar en su código rápidamente, sin preocuparse por la configuración de la estructura del proyecto. -Esta herramienta facilita el desarrollo de proyectos Go, ahorrando tiempo y esfuerzo en la creación de la estructura del proyecto. Además, el uso de una estructura de proyecto estándar también facilita la colaboración en equipo, ya que todos los miembros del equipo estan familiarizados con la estructura del proyecto. +Este proyecto expone la funcionalidad para crear herramientas CLI para generar proyectos personalizados. No necesariamente de Golang, puede implementarse para cualquier tipo de proyecto. -## Requisitos previos +## Uso +Instala `just-go` como biblioteca para tu generador. -## Instalación +```shell +$ go get github.com/gophers-mx/just-go +``` +Crea una estructura con los campos necesarios para tus archivos template. + +```golang +type Details struct { + Name string +} +``` + +Crea un directorio de assets con tus templates de proyecto para utilizarlo en tu proyecto. + +```golang +//go:embed assets/* +var assets embed.FS +``` + +Crea una estructura que implemente la interfaz `Generator` con el m'etodo `Run(cfg *config.Cfg)` y utiliza las funciones del paquete `files` para poder realizar las copias de archivos, directorios y generaci'on de templates. + +```golang +package cli + +import ( + "github.com/gophers-mx/just-go/config" + "github.com/gophers-mx/just-go/pkg/files" +) + +type CustomGenerator struct {} + +func (lg *CustomGenerator) Run(cfg *config.Cfg) { + files.GenFromTemplate("assets", "", "README.md") + files.CopyDirectory("assets/cmd", "cmd") + files.CopyFile("assets", "", "hello.md") +} +``` + +Crea una instancia de la estructura `Generathor` y ejecuta su m'etodo `Run()`. + +```golang +func main() { + generathor := &justgo.Generathor{ + Assets: assets, + ProjectName: "hello world", + Generator: cli.NewGeneratorCLI(), + TemplateDetails: Details{ + Name: "hello world", + }, + } + + generathor.Run() +} +``` + +Puedes encontrar un ejemplo completo [aqui](https://github.com/4k1k0/gen-cli). -## Uso -Para generar un nuevo proyecto, se ejecuta el comando ```just-go init --type cli --name nombre_proyecto``` ## Contribuir -Si quieres contribuir al proyecto, puedes enviar tu pull request. Las sugerencias tambi? son bienvenidas. + +Si quieres contribuir al proyecto, puedes enviar tu pull request. Las sugerencias son bienvenidas. ## Licencia -[![GPLv3](https://www.gnu.org/graphics/gplv3-127x51.png "Licencia GNU General Public License")](https://www.gnu.org/licenses/gpl-3.0.html) + +[![GPLv3](https://www.gnu.org/graphics/gplv3-127x51.png "Licencia GNU General Public License")](https://www.gnu.org/licenses/gpl-3.0.html) ## Contacto -[Gohpers MX en Telegram](https://t.me/golangmx) \ No newline at end of file + +[Gohpers MX en Telegram](https://t.me/golangmx)