From a975cff0d70400ff6dbe09e38fe59c6ec7cfa007 Mon Sep 17 00:00:00 2001 From: maddalax Date: Sun, 22 Sep 2024 21:33:22 -0500 Subject: [PATCH] cleanup / move files --- .github/workflows/release-todo-example.yml | 46 +++++++++++++++++++ .../starter-template}/.gitignore | 0 .../starter-template}/Taskfile.yml | 0 .../starter-template}/ent/generate.go | 0 .../starter-template}/ent/schema/user.go | 0 .../starter-template}/go.mod | 0 .../starter-template}/main.go | 0 .../starter-template}/pages/base/root.go | 0 .../starter-template}/pages/generated.go | 0 .../starter-template}/pages/index.go | 0 .../starter-template}/partials/index.go | 0 .../partials/load/generated.go | 0 examples/todo-list/.dockerignore | 10 ++++ examples/todo-list/Dockerfile | 41 +++++++++++++++++ .../todo-list}/Taskfile.yml | 0 .../todo-list}/__htmgo/pages-generated.go | 0 .../todo-list}/__htmgo/partials-generated.go | 0 .../todo-list}/__htmgo/setup-generated.go | 0 .../todo-list}/assets/css/input.css | 0 .../todo-list}/assets/css/tailwind.config.js | 0 .../todo-list}/ent/client.go | 0 {todo-list => examples/todo-list}/ent/ent.go | 0 .../todo-list}/ent/enttest/enttest.go | 0 .../todo-list}/ent/generate.go | 0 .../todo-list}/ent/hook/hook.go | 0 .../todo-list}/ent/migrate/migrate.go | 0 .../todo-list}/ent/migrate/schema.go | 0 .../todo-list}/ent/mutation.go | 10 ++-- .../todo-list}/ent/predicate/predicate.go | 0 .../todo-list}/ent/runtime.go | 0 .../todo-list}/ent/runtime/runtime.go | 0 .../todo-list}/ent/schema/task.go | 0 {todo-list => examples/todo-list}/ent/task.go | 0 .../todo-list}/ent/task/task.go | 0 .../todo-list}/ent/task/where.go | 0 .../todo-list}/ent/task_create.go | 0 .../todo-list}/ent/task_delete.go | 0 .../todo-list}/ent/task_query.go | 0 .../todo-list}/ent/task_update.go | 0 {todo-list => examples/todo-list}/ent/tx.go | 0 {todo-list => examples/todo-list}/go.mod | 0 {todo-list => examples/todo-list}/go.sum | 0 .../todo-list}/infrastructure/db/db.go | 0 .../todo-list}/internal/tasks/service.go | 0 {todo-list => examples/todo-list}/main.go | 0 .../todo-list}/pages/base/root.go | 0 .../todo-list}/pages/index.go | 0 .../todo-list}/partials/index.go | 0 .../todo-list}/partials/task/task.go | 0 framework/h/attribute.go | 2 +- framework/h/renderer.go | 2 +- framework/h/xhr.go | 4 +- 52 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/release-todo-example.yml rename {starter-template => examples/starter-template}/.gitignore (100%) rename {starter-template => examples/starter-template}/Taskfile.yml (100%) rename {starter-template => examples/starter-template}/ent/generate.go (100%) rename {starter-template => examples/starter-template}/ent/schema/user.go (100%) rename {starter-template => examples/starter-template}/go.mod (100%) rename {starter-template => examples/starter-template}/main.go (100%) rename {starter-template => examples/starter-template}/pages/base/root.go (100%) rename {starter-template => examples/starter-template}/pages/generated.go (100%) rename {starter-template => examples/starter-template}/pages/index.go (100%) rename {starter-template => examples/starter-template}/partials/index.go (100%) rename {starter-template => examples/starter-template}/partials/load/generated.go (100%) create mode 100644 examples/todo-list/.dockerignore create mode 100644 examples/todo-list/Dockerfile rename {todo-list => examples/todo-list}/Taskfile.yml (100%) rename {todo-list => examples/todo-list}/__htmgo/pages-generated.go (100%) rename {todo-list => examples/todo-list}/__htmgo/partials-generated.go (100%) rename {todo-list => examples/todo-list}/__htmgo/setup-generated.go (100%) rename {todo-list => examples/todo-list}/assets/css/input.css (100%) rename {todo-list => examples/todo-list}/assets/css/tailwind.config.js (100%) rename {todo-list => examples/todo-list}/ent/client.go (100%) rename {todo-list => examples/todo-list}/ent/ent.go (100%) rename {todo-list => examples/todo-list}/ent/enttest/enttest.go (100%) rename {todo-list => examples/todo-list}/ent/generate.go (100%) rename {todo-list => examples/todo-list}/ent/hook/hook.go (100%) rename {todo-list => examples/todo-list}/ent/migrate/migrate.go (100%) rename {todo-list => examples/todo-list}/ent/migrate/schema.go (100%) rename {todo-list => examples/todo-list}/ent/mutation.go (99%) rename {todo-list => examples/todo-list}/ent/predicate/predicate.go (100%) rename {todo-list => examples/todo-list}/ent/runtime.go (100%) rename {todo-list => examples/todo-list}/ent/runtime/runtime.go (100%) rename {todo-list => examples/todo-list}/ent/schema/task.go (100%) rename {todo-list => examples/todo-list}/ent/task.go (100%) rename {todo-list => examples/todo-list}/ent/task/task.go (100%) rename {todo-list => examples/todo-list}/ent/task/where.go (100%) rename {todo-list => examples/todo-list}/ent/task_create.go (100%) rename {todo-list => examples/todo-list}/ent/task_delete.go (100%) rename {todo-list => examples/todo-list}/ent/task_query.go (100%) rename {todo-list => examples/todo-list}/ent/task_update.go (100%) rename {todo-list => examples/todo-list}/ent/tx.go (100%) rename {todo-list => examples/todo-list}/go.mod (100%) rename {todo-list => examples/todo-list}/go.sum (100%) rename {todo-list => examples/todo-list}/infrastructure/db/db.go (100%) rename {todo-list => examples/todo-list}/internal/tasks/service.go (100%) rename {todo-list => examples/todo-list}/main.go (100%) rename {todo-list => examples/todo-list}/pages/base/root.go (100%) rename {todo-list => examples/todo-list}/pages/index.go (100%) rename {todo-list => examples/todo-list}/partials/index.go (100%) rename {todo-list => examples/todo-list}/partials/task/task.go (100%) diff --git a/.github/workflows/release-todo-example.yml b/.github/workflows/release-todo-example.yml new file mode 100644 index 0000000..4fce8fb --- /dev/null +++ b/.github/workflows/release-todo-example.yml @@ -0,0 +1,46 @@ +name: Build and Deploy htmgo.dev todo example + +on: + workflow_dispatch: # Trigger on manual workflow_dispatch + push: + branches: + - master # Trigger on pushes to master + paths: + - 'examples/todo-list/**' # Trigger only if files in this directory change + +jobs: + build-and-push: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get short commit hash + id: vars + run: echo "::set-output name=short_sha::$(echo $GITHUB_SHA | cut -c1-7)" + + - name: Build Docker image + run: | + cd ./examples/todo-list && docker build -t ghcr.io/${{ github.repository_owner }}/htmgo-todo-example:${{ steps.vars.outputs.short_sha }} . + + - name: Tag as latest Docker image + run: | + docker tag ghcr.io/${{ github.repository_owner }}/htmgo-todo-example:${{ steps.vars.outputs.short_sha }} ghcr.io/${{ github.repository_owner }}/htmgo-todo-example:latest + + - name: Log in to GitHub Container Registry + run: echo "${{ secrets.CR_PAT }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin + + - name: Push Docker image + run: | + docker push ghcr.io/${{ github.repository_owner }}/htmgo-todo-example:latest \ No newline at end of file diff --git a/starter-template/.gitignore b/examples/starter-template/.gitignore similarity index 100% rename from starter-template/.gitignore rename to examples/starter-template/.gitignore diff --git a/starter-template/Taskfile.yml b/examples/starter-template/Taskfile.yml similarity index 100% rename from starter-template/Taskfile.yml rename to examples/starter-template/Taskfile.yml diff --git a/starter-template/ent/generate.go b/examples/starter-template/ent/generate.go similarity index 100% rename from starter-template/ent/generate.go rename to examples/starter-template/ent/generate.go diff --git a/starter-template/ent/schema/user.go b/examples/starter-template/ent/schema/user.go similarity index 100% rename from starter-template/ent/schema/user.go rename to examples/starter-template/ent/schema/user.go diff --git a/starter-template/go.mod b/examples/starter-template/go.mod similarity index 100% rename from starter-template/go.mod rename to examples/starter-template/go.mod diff --git a/starter-template/main.go b/examples/starter-template/main.go similarity index 100% rename from starter-template/main.go rename to examples/starter-template/main.go diff --git a/starter-template/pages/base/root.go b/examples/starter-template/pages/base/root.go similarity index 100% rename from starter-template/pages/base/root.go rename to examples/starter-template/pages/base/root.go diff --git a/starter-template/pages/generated.go b/examples/starter-template/pages/generated.go similarity index 100% rename from starter-template/pages/generated.go rename to examples/starter-template/pages/generated.go diff --git a/starter-template/pages/index.go b/examples/starter-template/pages/index.go similarity index 100% rename from starter-template/pages/index.go rename to examples/starter-template/pages/index.go diff --git a/starter-template/partials/index.go b/examples/starter-template/partials/index.go similarity index 100% rename from starter-template/partials/index.go rename to examples/starter-template/partials/index.go diff --git a/starter-template/partials/load/generated.go b/examples/starter-template/partials/load/generated.go similarity index 100% rename from starter-template/partials/load/generated.go rename to examples/starter-template/partials/load/generated.go diff --git a/examples/todo-list/.dockerignore b/examples/todo-list/.dockerignore new file mode 100644 index 0000000..b66eed5 --- /dev/null +++ b/examples/todo-list/.dockerignore @@ -0,0 +1,10 @@ +# Project exclude paths +/tmp/ +node_modules/ +dist/ +js/dist +js/node_modules +go.work +go.work.sum +.idea +!framework/assets/dist \ No newline at end of file diff --git a/examples/todo-list/Dockerfile b/examples/todo-list/Dockerfile new file mode 100644 index 0000000..dd27055 --- /dev/null +++ b/examples/todo-list/Dockerfile @@ -0,0 +1,41 @@ +# Stage 1: Build the Go binary +FROM golang:1.23-alpine AS builder + +RUN apk update +RUN apk add git +RUN apk add curl + +# Set the working directory inside the container +WORKDIR /app + +# Copy go.mod and go.sum files +COPY go.mod go.sum ./ + +# Download and cache the Go modules +RUN go mod download + +# Always download the latest version of the framework +RUN go get github.com/maddalax/htmgo/framework@latest + +# Copy the source code into the container +COPY . . + +# Build the Go binary for Linux +RUN GOPRIVATE=github.com/maddalax LOG_LEVEL=debug go run github.com/maddalax/htmgo/cli/htmgo@latest build + + +# Stage 2: Create the smallest possible image +FROM gcr.io/distroless/base-debian11 + +# Set the working directory inside the container +WORKDIR /app + +# Copy the Go binary from the builder stage +COPY --from=builder /app/dist . + +# Expose the necessary port (replace with your server port) +EXPOSE 3000 + + +# Command to run the binary +CMD ["./todolist"] \ No newline at end of file diff --git a/todo-list/Taskfile.yml b/examples/todo-list/Taskfile.yml similarity index 100% rename from todo-list/Taskfile.yml rename to examples/todo-list/Taskfile.yml diff --git a/todo-list/__htmgo/pages-generated.go b/examples/todo-list/__htmgo/pages-generated.go similarity index 100% rename from todo-list/__htmgo/pages-generated.go rename to examples/todo-list/__htmgo/pages-generated.go diff --git a/todo-list/__htmgo/partials-generated.go b/examples/todo-list/__htmgo/partials-generated.go similarity index 100% rename from todo-list/__htmgo/partials-generated.go rename to examples/todo-list/__htmgo/partials-generated.go diff --git a/todo-list/__htmgo/setup-generated.go b/examples/todo-list/__htmgo/setup-generated.go similarity index 100% rename from todo-list/__htmgo/setup-generated.go rename to examples/todo-list/__htmgo/setup-generated.go diff --git a/todo-list/assets/css/input.css b/examples/todo-list/assets/css/input.css similarity index 100% rename from todo-list/assets/css/input.css rename to examples/todo-list/assets/css/input.css diff --git a/todo-list/assets/css/tailwind.config.js b/examples/todo-list/assets/css/tailwind.config.js similarity index 100% rename from todo-list/assets/css/tailwind.config.js rename to examples/todo-list/assets/css/tailwind.config.js diff --git a/todo-list/ent/client.go b/examples/todo-list/ent/client.go similarity index 100% rename from todo-list/ent/client.go rename to examples/todo-list/ent/client.go diff --git a/todo-list/ent/ent.go b/examples/todo-list/ent/ent.go similarity index 100% rename from todo-list/ent/ent.go rename to examples/todo-list/ent/ent.go diff --git a/todo-list/ent/enttest/enttest.go b/examples/todo-list/ent/enttest/enttest.go similarity index 100% rename from todo-list/ent/enttest/enttest.go rename to examples/todo-list/ent/enttest/enttest.go diff --git a/todo-list/ent/generate.go b/examples/todo-list/ent/generate.go similarity index 100% rename from todo-list/ent/generate.go rename to examples/todo-list/ent/generate.go diff --git a/todo-list/ent/hook/hook.go b/examples/todo-list/ent/hook/hook.go similarity index 100% rename from todo-list/ent/hook/hook.go rename to examples/todo-list/ent/hook/hook.go diff --git a/todo-list/ent/migrate/migrate.go b/examples/todo-list/ent/migrate/migrate.go similarity index 100% rename from todo-list/ent/migrate/migrate.go rename to examples/todo-list/ent/migrate/migrate.go diff --git a/todo-list/ent/migrate/schema.go b/examples/todo-list/ent/migrate/schema.go similarity index 100% rename from todo-list/ent/migrate/schema.go rename to examples/todo-list/ent/migrate/schema.go diff --git a/todo-list/ent/mutation.go b/examples/todo-list/ent/mutation.go similarity index 99% rename from todo-list/ent/mutation.go rename to examples/todo-list/ent/mutation.go index f6d54f0..bc87648 100644 --- a/todo-list/ent/mutation.go +++ b/examples/todo-list/ent/mutation.go @@ -31,8 +31,8 @@ const ( // TaskMutation represents an operation that mutates the Task nodes in the graph. type TaskMutation struct { config - op Op - typ string + op Op + typ string id *uuid.UUID name *string created_at *time.Time @@ -41,9 +41,9 @@ type TaskMutation struct { tags *[]string appendtags []string clearedFields map[string]struct{} - done bool - oldValue func(context.Context) (*Task, error) - predicates []predicate.Task + done bool + oldValue func(context.Context) (*Task, error) + predicates []predicate.Task } var _ ent.Mutation = (*TaskMutation)(nil) diff --git a/todo-list/ent/predicate/predicate.go b/examples/todo-list/ent/predicate/predicate.go similarity index 100% rename from todo-list/ent/predicate/predicate.go rename to examples/todo-list/ent/predicate/predicate.go diff --git a/todo-list/ent/runtime.go b/examples/todo-list/ent/runtime.go similarity index 100% rename from todo-list/ent/runtime.go rename to examples/todo-list/ent/runtime.go diff --git a/todo-list/ent/runtime/runtime.go b/examples/todo-list/ent/runtime/runtime.go similarity index 100% rename from todo-list/ent/runtime/runtime.go rename to examples/todo-list/ent/runtime/runtime.go diff --git a/todo-list/ent/schema/task.go b/examples/todo-list/ent/schema/task.go similarity index 100% rename from todo-list/ent/schema/task.go rename to examples/todo-list/ent/schema/task.go diff --git a/todo-list/ent/task.go b/examples/todo-list/ent/task.go similarity index 100% rename from todo-list/ent/task.go rename to examples/todo-list/ent/task.go diff --git a/todo-list/ent/task/task.go b/examples/todo-list/ent/task/task.go similarity index 100% rename from todo-list/ent/task/task.go rename to examples/todo-list/ent/task/task.go diff --git a/todo-list/ent/task/where.go b/examples/todo-list/ent/task/where.go similarity index 100% rename from todo-list/ent/task/where.go rename to examples/todo-list/ent/task/where.go diff --git a/todo-list/ent/task_create.go b/examples/todo-list/ent/task_create.go similarity index 100% rename from todo-list/ent/task_create.go rename to examples/todo-list/ent/task_create.go diff --git a/todo-list/ent/task_delete.go b/examples/todo-list/ent/task_delete.go similarity index 100% rename from todo-list/ent/task_delete.go rename to examples/todo-list/ent/task_delete.go diff --git a/todo-list/ent/task_query.go b/examples/todo-list/ent/task_query.go similarity index 100% rename from todo-list/ent/task_query.go rename to examples/todo-list/ent/task_query.go diff --git a/todo-list/ent/task_update.go b/examples/todo-list/ent/task_update.go similarity index 100% rename from todo-list/ent/task_update.go rename to examples/todo-list/ent/task_update.go diff --git a/todo-list/ent/tx.go b/examples/todo-list/ent/tx.go similarity index 100% rename from todo-list/ent/tx.go rename to examples/todo-list/ent/tx.go diff --git a/todo-list/go.mod b/examples/todo-list/go.mod similarity index 100% rename from todo-list/go.mod rename to examples/todo-list/go.mod diff --git a/todo-list/go.sum b/examples/todo-list/go.sum similarity index 100% rename from todo-list/go.sum rename to examples/todo-list/go.sum diff --git a/todo-list/infrastructure/db/db.go b/examples/todo-list/infrastructure/db/db.go similarity index 100% rename from todo-list/infrastructure/db/db.go rename to examples/todo-list/infrastructure/db/db.go diff --git a/todo-list/internal/tasks/service.go b/examples/todo-list/internal/tasks/service.go similarity index 100% rename from todo-list/internal/tasks/service.go rename to examples/todo-list/internal/tasks/service.go diff --git a/todo-list/main.go b/examples/todo-list/main.go similarity index 100% rename from todo-list/main.go rename to examples/todo-list/main.go diff --git a/todo-list/pages/base/root.go b/examples/todo-list/pages/base/root.go similarity index 100% rename from todo-list/pages/base/root.go rename to examples/todo-list/pages/base/root.go diff --git a/todo-list/pages/index.go b/examples/todo-list/pages/index.go similarity index 100% rename from todo-list/pages/index.go rename to examples/todo-list/pages/index.go diff --git a/todo-list/partials/index.go b/examples/todo-list/partials/index.go similarity index 100% rename from todo-list/partials/index.go rename to examples/todo-list/partials/index.go diff --git a/todo-list/partials/task/task.go b/examples/todo-list/partials/task/task.go similarity index 100% rename from todo-list/partials/task/task.go rename to examples/todo-list/partials/task/task.go diff --git a/framework/h/attribute.go b/framework/h/attribute.go index 507f66f..309aca5 100644 --- a/framework/h/attribute.go +++ b/framework/h/attribute.go @@ -96,7 +96,7 @@ func TriggerChildren() Ren { return HxExtension("trigger-children") } -func TriggerString(triggers ...string) *AttributeMap { +func HxTriggerString(triggers ...string) *AttributeMap { trigger := hx.NewStringTrigger(strings.Join(triggers, ", ")) return Attribute(hx.TriggerAttr, trigger.ToString()) } diff --git a/framework/h/renderer.go b/framework/h/renderer.go index 926e66c..45a3abd 100644 --- a/framework/h/renderer.go +++ b/framework/h/renderer.go @@ -128,7 +128,7 @@ func (m *AttributeMap) Render(context *RenderContext) { func (l *LifeCycle) fromAttributeMap(event string, key string, value string, context *RenderContext) { if key == hx.GetAttr || key == hx.PatchAttr || key == hx.PostAttr { - TriggerString(hx.ToHtmxTriggerName(event)).Render(context) + HxTriggerString(hx.ToHtmxTriggerName(event)).Render(context) } Attribute(key, value).Render(context) diff --git a/framework/h/xhr.go b/framework/h/xhr.go index f732d6c..0636f38 100644 --- a/framework/h/xhr.go +++ b/framework/h/xhr.go @@ -3,7 +3,7 @@ package h import "github.com/maddalax/htmgo/framework/hx" func Get(path string, trigger ...string) *AttributeMap { - return AttributeList(Attribute(hx.GetAttr, path), TriggerString(trigger...)) + return AttributeList(Attribute(hx.GetAttr, path), HxTriggerString(trigger...)) } func GetPartial(partial PartialFunc, trigger ...string) *AttributeMap { @@ -27,7 +27,7 @@ func PostPartialWithQs(partial PartialFunc, qs *Qs, trigger ...string) *Attribut } func Post(url string, trigger ...string) *AttributeMap { - return AttributeList(Attribute(hx.PostAttr, url), TriggerString(trigger...)) + return AttributeList(Attribute(hx.PostAttr, url), HxTriggerString(trigger...)) } func PostWithQs(url string, qs *Qs, trigger string) *AttributeMap {