diff --git a/Dockerfile b/Dockerfile index 33f07b9..a6e8870 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.21.4 as build +FROM golang:1.23 as build LABEL author="Victor Lacasse-Beaudoin " LABEL license="MIT" @@ -7,23 +7,17 @@ LABEL repo="https://git.agecem.com/agecem/babillard" WORKDIR /go/src/app -COPY go.mod go.sum main.go ./ +COPY go.mod go.sum ./ ADD cmd/ cmd/ - -ADD config/ config/ - -ADD data/ data/ - -ADD handlers/ handlers/ - -ADD public/ public/ +ADD pkg/ pkg/ +ADD ui/ ui/ RUN CGO_ENABLED=0 go build -a -o babillard . # Alpine -FROM alpine:3.18.4 +FROM alpine:3.21 RUN apk update && apk upgrade --no-cache diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bb43f09 --- /dev/null +++ b/Makefile @@ -0,0 +1,20 @@ +## This Makefile uses the help target explained in the following blogpost: +## +## https://victoria.dev/blog/how-to-create-a-self-documenting-makefile/ + +.DEFAULT_GOAL := help + +.PHONY: help +help: ## Show this help + @egrep -h '\s##\s' $(MAKEFILE_LIST) | \ + sort | \ + awk \ + 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' + +.PHONY: install +install: ## Use `go install` to build and link the executable + go install -a ./cmd/babillard/ + +.PHONY: build +build: ## Use `docker build` to build the container image + docker build . -f Dockerfile -t git.agecem.com/agecem/babillard:latest diff --git a/README.md b/README.md index 7d71bb4..48afafc 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Application web pour 'digital signage'. +**CE DOCUMENT N'EST PLUS À JOUR** + Backend: Go avec `labstack/echo/v4` Frontend: html, css, jquery diff --git a/main.go b/cmd/babillard/main.go similarity index 89% rename from main.go rename to cmd/babillard/main.go index 3bf2a65..a8195a2 100644 --- a/main.go +++ b/cmd/babillard/main.go @@ -1,5 +1,5 @@ /* -Copyright © 2021 AGECEM +Copyright © 2021-2025 AGECEM Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -24,11 +24,11 @@ package main import ( "log" - "git.agecem.com/agecem/babillard/cmd" + "git.agecem.com/agecem/babillard/v7/pkg/babillard" ) func main() { - if err := cmd.Execute(); err != nil { + if err := babillard.Execute(); err != nil { log.Fatal(err) } } diff --git a/docker-compose.yaml b/compose.yaml similarity index 100% rename from docker-compose.yaml rename to compose.yaml diff --git a/go.mod b/go.mod index 8579358..1af488a 100644 --- a/go.mod +++ b/go.mod @@ -1,30 +1,27 @@ -module git.agecem.com/agecem/babillard +module git.agecem.com/agecem/babillard/v7 -go 1.21.3 - -toolchain go1.21.4 +go 1.23 require ( codeberg.org/vlbeaudoin/couleuvre v0.10.0 - github.com/labstack/echo/v4 v4.11.3 + github.com/labstack/echo/v4 v4.13.3 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/kr/text v0.2.0 // indirect - github.com/labstack/gommon v0.4.1 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/labstack/gommon v0.4.2 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect - golang.org/x/crypto v0.16.0 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.5.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.9.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index e6aedc2..95cf8b9 100644 --- a/go.sum +++ b/go.sum @@ -3,19 +3,16 @@ codeberg.org/vlbeaudoin/couleuvre v0.10.0/go.mod h1:+M8nPA/3LknsY72RP0ZHCZycQ1SP github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.11.3 h1:Upyu3olaqSHkCjs1EJJwQ3WId8b8b1hxbogyommKktM= -github.com/labstack/echo/v4 v4.11.3/go.mod h1:UcGuQ8V6ZNRmSweBIJkPvGfwCMIlFmiqrPqiEBfPYws= -github.com/labstack/gommon v0.4.1 h1:gqEff0p/hTENGMABzezPoPSRtIh1Cvw0ueMOe0/dfOk= -github.com/labstack/gommon v0.4.1/go.mod h1:TyTrpPqxR5KMk8LKVtLmfMjeQ5FEkBYdxLYPw/WfrOM= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY= +github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g= +github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= +github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -24,24 +21,23 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= -golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= -golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.9.0 h1:EsRrnYcQiGH+5FfbgvV4AP7qEZstoyrHB0DzarOQ4ZY= +golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/cmd/cmd.go b/pkg/babillard/cmd.go similarity index 81% rename from cmd/cmd.go rename to pkg/babillard/cmd.go index 6a84fff..aa745ff 100644 --- a/cmd/cmd.go +++ b/pkg/babillard/cmd.go @@ -1,18 +1,16 @@ -package cmd +package babillard import ( "flag" "os" "codeberg.org/vlbeaudoin/couleuvre" - "git.agecem.com/agecem/babillard/config" - "git.agecem.com/agecem/babillard/handlers" ) -var app couleuvre.App[config.Config] +var app couleuvre.App[Config] func init() { - app = couleuvre.NewApp[config.Config]("BABILLARD_", ".", "_") + app = couleuvre.NewApp[Config]("BABILLARD_", ".", "_") flag.StringVar(&app.Config.ServerContenuDir, ServerContenuDirName, ServerContenuDirDefault, ServerContenuDirDescription) flag.IntVar(&app.Config.ServerPort, ServerPortName, ServerPortDefault, ServerPortDescription) @@ -34,7 +32,7 @@ const ( ) func ServerCmdExecuter() error { - handlers.RunServer(app.Config.ServerContenuDir, app.Config.ServerPort) + RunServer(app.Config.ServerContenuDir, app.Config.ServerPort) return nil } diff --git a/config/config.go b/pkg/babillard/config.go similarity index 79% rename from config/config.go rename to pkg/babillard/config.go index dc45542..f02001a 100644 --- a/config/config.go +++ b/pkg/babillard/config.go @@ -1,4 +1,4 @@ -package config +package babillard type Config struct { ServerContenuDir string diff --git a/handlers/contenu.go b/pkg/babillard/contenu.go similarity index 89% rename from handlers/contenu.go rename to pkg/babillard/contenu.go index 0b8b553..e75d78d 100644 --- a/handlers/contenu.go +++ b/pkg/babillard/contenu.go @@ -1,4 +1,4 @@ -package handlers +package babillard import ( "fmt" @@ -6,7 +6,6 @@ import ( "net/http" "strings" - "git.agecem.com/agecem/babillard/data" "github.com/labstack/echo/v4" ) @@ -22,7 +21,7 @@ func NewContenuHandler(contenuDir string) (h ContenuHandler) { func (h ContenuHandler) HandleAPIContenuList(c echo.Context) error { contenu_dir := h.ContenuDir - files, err := data.ListContenu(contenu_dir) + files, err := ListContenu(contenu_dir) if err != nil { log.Println(err) return c.JSON(http.StatusInternalServerError, map[string]string{ diff --git a/data/data.go b/pkg/babillard/data.go similarity index 95% rename from data/data.go rename to pkg/babillard/data.go index 3fa8676..e126748 100644 --- a/data/data.go +++ b/pkg/babillard/data.go @@ -1,4 +1,4 @@ -package data +package babillard import "os" diff --git a/handlers/handlers.go b/pkg/babillard/handlers.go similarity index 88% rename from handlers/handlers.go rename to pkg/babillard/handlers.go index 16f8aeb..fc636c8 100644 --- a/handlers/handlers.go +++ b/pkg/babillard/handlers.go @@ -1,11 +1,11 @@ -package handlers +package babillard import ( "fmt" "log" "net/http" - "git.agecem.com/agecem/babillard/public" + "git.agecem.com/agecem/babillard/v7/ui" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) @@ -32,15 +32,15 @@ func RunServer(contenuDir string, serverPort int) { e.Group("").Use(middleware.StaticWithConfig(middleware.StaticConfig{ Root: "/html/", - Filesystem: http.FS(public.HTMLFS()), + Filesystem: http.FS(ui.HTMLFS()), })) e.Group("/public/css").Use(middleware.StaticWithConfig(middleware.StaticConfig{ Root: "/css/", - Filesystem: http.FS(public.CSSFS()), + Filesystem: http.FS(ui.CSSFS()), })) e.Group("/public/js").Use(middleware.StaticWithConfig(middleware.StaticConfig{ Root: "/js/", - Filesystem: http.FS(public.JSFS()), + Filesystem: http.FS(ui.JSFS()), })) groupAPI := e.Group("/api") diff --git a/public/css/style.css b/ui/css/style.css similarity index 100% rename from public/css/style.css rename to ui/css/style.css diff --git a/public/embed.go b/ui/embed.go similarity index 94% rename from public/embed.go rename to ui/embed.go index db7092c..3b63250 100644 --- a/public/embed.go +++ b/ui/embed.go @@ -1,4 +1,4 @@ -package public +package ui import "embed" diff --git a/public/html/index.html b/ui/html/index.html similarity index 100% rename from public/html/index.html rename to ui/html/index.html diff --git a/public/js/slider.js b/ui/js/slider.js similarity index 100% rename from public/js/slider.js rename to ui/js/slider.js diff --git a/public/js/text.js b/ui/js/text.js similarity index 100% rename from public/js/text.js rename to ui/js/text.js