diff --git a/README.md b/README.md index f8a7387..3fbe17b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ -# go-fiber-sql +# cookiecutter-go-web-app -A project template for a web application based on the Fiber web framework. This incorporates: +A project template for a web application written in Go based on the [Fiber](https://github.com/gofiber/fiber) web framework. This incorporates: * Error handling with `github.com/rs/zerlog` and `github.com/pkg/errors` -* Database migrations (requires Go v1.18 or newer) +* Database migrations * Tools to load YAML-based configurations -## To use this template: +To use this template, you must have [Cookiecutter](https://github.com/cookiecutter/cookiecutter) installed. -* Add a `LICENSE` -* Update the package name in `go.mod` and in the imports within the application -* Rename the `application` directory to your application's name -* Define your database DSN and driver -* Write some code and make an app, I guess? \ No newline at end of file +``` +python3 -m pip install --user --upgrade cookiecutter + +cookiecutter https://github.com/codemicro/cookiecutter-go-web-app.git +``` \ No newline at end of file diff --git a/cookiecutter.json b/cookiecutter.json new file mode 100644 index 0000000..171fb47 --- /dev/null +++ b/cookiecutter.json @@ -0,0 +1,12 @@ +{ + "projectName": "Hello World", + "projectDescription": "This is a web application that says hello world.", + + "projectSlug": "helloWorld", + "mainPackageName": "{{ cookiecutter.projectSlug }}", + "modulePath": "github.com/codemicro/{{ cookiecutter.projectSlug }}", + + "minimumGoVersion": "1.19", + + "__mainPackagePath": "{{ cookiecutter.modulePath }}/{{ cookiecutter.mainPackageName }}" +} \ No newline at end of file diff --git a/hooks/post_gen_project.sh b/hooks/post_gen_project.sh new file mode 100644 index 0000000..84247b8 --- /dev/null +++ b/hooks/post_gen_project.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +go fmt ./... > /dev/null \ No newline at end of file diff --git a/{{cookiecutter.projectSlug}}/README.md b/{{cookiecutter.projectSlug}}/README.md new file mode 100644 index 0000000..5849b25 --- /dev/null +++ b/{{cookiecutter.projectSlug}}/README.md @@ -0,0 +1,5 @@ +# {{ cookiecutter.projectName }} + +*{{ cookiecutter.projectDescription }}* + +--- diff --git a/go.mod b/{{cookiecutter.projectSlug}}/go.mod similarity index 93% rename from go.mod rename to {{cookiecutter.projectSlug}}/go.mod index 2fbafa0..29d0ad8 100644 --- a/go.mod +++ b/{{cookiecutter.projectSlug}}/go.mod @@ -1,6 +1,6 @@ -module github.com/codemicro/go-fiber-sql +module {{ cookiecutter.modulePath }} -go 1.18 +go {{ cookiecutter.minimumGoVersion }} require ( github.com/gofiber/fiber/v2 v2.35.0 diff --git a/go.sum b/{{cookiecutter.projectSlug}}/go.sum similarity index 100% rename from go.sum rename to {{cookiecutter.projectSlug}}/go.sum diff --git a/application/config/config.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/config/config.go similarity index 100% rename from application/config/config.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/config/config.go diff --git a/application/config/file.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/config/file.go similarity index 100% rename from application/config/file.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/config/file.go diff --git a/application/db/db.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/db.go similarity index 94% rename from application/db/db.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/db.go index 0bf0bd8..6916bd3 100644 --- a/application/db/db.go +++ b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/db.go @@ -3,7 +3,6 @@ package db import ( "context" "database/sql" - "github.com/codemicro/go-fiber-sql/application/config" _ "github.com/mattn/go-sqlite3" "github.com/pkg/errors" "github.com/rs/zerolog/log" @@ -11,6 +10,7 @@ import ( "github.com/uptrace/bun/dialect/sqlitedialect" "github.com/uptrace/bun/extra/bundebug" "time" + "{{cookiecutter.__mainPackagePath}}/config" ) type DB struct { diff --git a/application/db/migration.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migration.go similarity index 91% rename from application/db/migration.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migration.go index 68a9a43..14c35de 100644 --- a/application/db/migration.go +++ b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migration.go @@ -3,11 +3,11 @@ package db import ( "context" _ "embed" - "github.com/codemicro/go-fiber-sql/application/db/migrations" "github.com/pkg/errors" "github.com/rs/zerolog/log" "github.com/uptrace/bun/migrate" "time" + "{{cookiecutter.__mainPackagePath}}/db/migrations" ) func (db *DB) Migrate() error { diff --git a/application/db/migrations/20221002195230_initialise.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migrations/20221002195230_initialise.go similarity index 91% rename from application/db/migrations/20221002195230_initialise.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migrations/20221002195230_initialise.go index 59f4986..8fcc7cb 100644 --- a/application/db/migrations/20221002195230_initialise.go +++ b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migrations/20221002195230_initialise.go @@ -2,9 +2,9 @@ package migrations import ( "context" - "github.com/codemicro/go-fiber-sql/application/db/models" "github.com/pkg/errors" "github.com/uptrace/bun" + "{{cookiecutter.__mainPackagePath}}/db/models" ) func init() { diff --git a/application/db/migrations/migrations.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migrations/migrations.go similarity index 100% rename from application/db/migrations/migrations.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/migrations/migrations.go diff --git a/application/db/models/models.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/models/models.go similarity index 100% rename from application/db/models/models.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/db/models/models.go diff --git a/application/endpoints/endpoints.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/endpoints/endpoints.go similarity index 68% rename from application/endpoints/endpoints.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/endpoints/endpoints.go index 7ccd521..639c37a 100644 --- a/application/endpoints/endpoints.go +++ b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/endpoints/endpoints.go @@ -1,12 +1,12 @@ package endpoints import ( - "github.com/codemicro/go-fiber-sql/application/config" - "github.com/codemicro/go-fiber-sql/application/db" - "github.com/codemicro/go-fiber-sql/application/paths" - "github.com/codemicro/go-fiber-sql/application/util" "github.com/gofiber/fiber/v2" "time" + "{{cookiecutter.__mainPackagePath}}/config" + "{{cookiecutter.__mainPackagePath}}/db" + "{{cookiecutter.__mainPackagePath}}/paths" + "{{cookiecutter.__mainPackagePath}}/util" ) type Endpoints struct { diff --git a/application/endpoints/index.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/endpoints/index.go similarity index 100% rename from application/endpoints/index.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/endpoints/index.go diff --git a/application/main.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/main.go similarity index 86% rename from application/main.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/main.go index 9e11463..e3d94e6 100644 --- a/application/main.go +++ b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/main.go @@ -2,15 +2,15 @@ package main import ( "fmt" - "github.com/codemicro/go-fiber-sql/application/config" - "github.com/codemicro/go-fiber-sql/application/db" - "github.com/codemicro/go-fiber-sql/application/endpoints" "github.com/pkg/errors" "github.com/rs/zerolog/log" "os" "os/signal" "strconv" "syscall" + "{{cookiecutter.__mainPackagePath}}/config" + "{{cookiecutter.__mainPackagePath}}/db" + "{{cookiecutter.__mainPackagePath}}/endpoints" ) func run() error { diff --git a/application/paths/paths.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/paths/paths.go similarity index 100% rename from application/paths/paths.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/paths/paths.go diff --git a/application/util/richError.go b/{{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/util/richError.go similarity index 100% rename from application/util/richError.go rename to {{cookiecutter.projectSlug}}/{{cookiecutter.mainPackageName}}/util/richError.go