From 45df362fc5a17f88fbf01d98dbe5929b141205dc Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Fri, 31 Jan 2025 17:06:15 -0500 Subject: [PATCH 01/15] =?UTF-8?q?fix(Dockerfile):=20r=C3=A9pertoire=20?= =?UTF-8?q?=C3=A0=20go=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a6e8870..62e0344 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ ADD cmd/ cmd/ ADD pkg/ pkg/ ADD ui/ ui/ -RUN CGO_ENABLED=0 go build -a -o babillard . +RUN CGO_ENABLED=0 go build -a ./cmd/babillard/ # Alpine From b265d7ad81fbad3bfb87f4bb534f2c57b15d8c18 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Fri, 31 Jan 2025 17:59:44 -0500 Subject: [PATCH 02/15] fix(compose): Utiliser babillard.yaml au lieu de .babillard.yaml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour config utilisée par docker-compose --- compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose.yaml b/compose.yaml index 2171265..fbe4ae7 100644 --- a/compose.yaml +++ b/compose.yaml @@ -8,7 +8,7 @@ services: volumes: - 'config:/app/config' - 'contenu:/app/contenu' - command: ['babillard', '--config', '/app/config/.babillard.yaml', 'server'] + command: ['babillard', '--config', '/app/config/babillard.yaml', 'server'] volumes: config: From 61046f4690f4cdc0b0507e91d1894240bb09220a Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 4 Feb 2025 17:33:02 -0500 Subject: [PATCH 03/15] kubernetes: ajouter deployment.yaml et service.yaml NodePort 30001 --- kubernetes/deployment.yaml | 21 +++++++++++++++++++++ kubernetes/service.yaml | 13 +++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 kubernetes/deployment.yaml create mode 100644 kubernetes/service.yaml diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml new file mode 100644 index 0000000..56d8b6a --- /dev/null +++ b/kubernetes/deployment.yaml @@ -0,0 +1,21 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: babillard-deployment + labels: + app: babillard +spec: + replicas: 1 + selector: + matchLabels: + app: babillard + template: + metadata: + labels: + app: babillard + spec: + containers: + - name: babillard + image: git.agecem.com/agecem/babillard:latest + ports: + - containerPort: 8080 diff --git a/kubernetes/service.yaml b/kubernetes/service.yaml new file mode 100644 index 0000000..fe1ece0 --- /dev/null +++ b/kubernetes/service.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: Service +metadata: + name: babillard-service +spec: + type: NodePort + selector: + app: babillard + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 + nodePort: 30001 From 97c5bf5791a6a6acdb2a1bd6c44e8f4d9879af65 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 4 Feb 2025 18:14:46 -0500 Subject: [PATCH 04/15] =?UTF-8?q?kubernetes:=20bump=20babillard=20=C3=A0?= =?UTF-8?q?=207.0.3=20et=20WIP=20nfs=20volume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kubernetes/deployment.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml index 56d8b6a..571466e 100644 --- a/kubernetes/deployment.yaml +++ b/kubernetes/deployment.yaml @@ -16,6 +16,15 @@ spec: spec: containers: - name: babillard - image: git.agecem.com/agecem/babillard:latest + image: git.agecem.com/agecem/babillard:7.0.3 ports: - containerPort: 8080 + volumeMounts: + - name: babillard-nfs + mountPath: "/app/contenu" + volumes: + - name: babillard-nfs + nfs: + server: fs.agecem.com + path: /mnt/Pool1/babillard + readOnly: true From 87ea8e6068bda10dd83d13f0e982091668e0446c Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 4 Feb 2025 19:13:03 -0500 Subject: [PATCH 05/15] =?UTF-8?q?kubernetes:=20remettre=20tag=20:latest=20?= =?UTF-8?q?=C3=A0=20image=20d'app=20de=20babillard?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kubernetes/deployment.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml index 571466e..deefa23 100644 --- a/kubernetes/deployment.yaml +++ b/kubernetes/deployment.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: babillard - image: git.agecem.com/agecem/babillard:7.0.3 + image: git.agecem.com/agecem/babillard:latest ports: - containerPort: 8080 volumeMounts: From f07deec71a7068d11b3e3690a283783c62423707 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 10 Feb 2025 17:50:27 -0500 Subject: [PATCH 06/15] feature(ui): randomize timer slider 10 secs -> rand(15000,20000) --- ui/js/slider.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/js/slider.js b/ui/js/slider.js index e30a9c6..dbe227e 100644 --- a/ui/js/slider.js +++ b/ui/js/slider.js @@ -41,5 +41,5 @@ function obtenirContenu(){ $(function(){ obtenirContenu(); - var executionInterval = setInterval(executionLoop, 10000); + var executionInterval = setInterval(executionLoop, (Math.floor(Math.random() * 6)+15)*1000); }); From bd455da46a87a32b002f781dd8b89f719760d2c6 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 10 Feb 2025 18:17:50 -0500 Subject: [PATCH 07/15] kubernetes: toujours pull image latest --- kubernetes/deployment.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/kubernetes/deployment.yaml b/kubernetes/deployment.yaml index deefa23..83c8c0f 100644 --- a/kubernetes/deployment.yaml +++ b/kubernetes/deployment.yaml @@ -17,6 +17,7 @@ spec: containers: - name: babillard image: git.agecem.com/agecem/babillard:latest + imagePullPolicy: Always ports: - containerPort: 8080 volumeMounts: From 52dd5693fb882c9f4f85d57f4047ef49a2ab0a16 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 11 Feb 2025 21:24:42 -0500 Subject: [PATCH 08/15] wip: APIv2, UI rework, js cleanup Retirer jquery etc. --- pkg/babillard/cmd.go | 2 +- pkg/babillard/contenu.go | 23 ++++++++++++++ pkg/babillard/data.go | 44 ++++++++++++++++++-------- pkg/babillard/handlers.go | 18 ++++++++--- pkg/babillard/response.go | 20 ++++++++++++ ui/css/style.css | 57 ---------------------------------- ui/embed.go | 6 ++-- ui/html/index.html | 32 ++----------------- ui/js/carousel.js | 32 +++++++++++++++++++ ui/js/slider.js | 45 --------------------------- ui/js/text.js | 65 --------------------------------------- 11 files changed, 126 insertions(+), 218 deletions(-) create mode 100644 pkg/babillard/response.go create mode 100644 ui/js/carousel.js delete mode 100644 ui/js/slider.js delete mode 100644 ui/js/text.js diff --git a/pkg/babillard/cmd.go b/pkg/babillard/cmd.go index aa745ff..17d1726 100644 --- a/pkg/babillard/cmd.go +++ b/pkg/babillard/cmd.go @@ -32,7 +32,7 @@ const ( ) func ServerCmdExecuter() error { - RunServer(app.Config.ServerContenuDir, app.Config.ServerPort) + RunServer(app.Config) return nil } diff --git a/pkg/babillard/contenu.go b/pkg/babillard/contenu.go index e75d78d..4d54e8d 100644 --- a/pkg/babillard/contenu.go +++ b/pkg/babillard/contenu.go @@ -9,6 +9,8 @@ import ( "github.com/labstack/echo/v4" ) +// pre-v2 + type ContenuHandler struct { ContenuDir string } @@ -43,3 +45,24 @@ func (h ContenuHandler) HandleAPIContenuFile(c echo.Context) error { return c.File(fmt.Sprintf("%s/%s", contenu_dir, filename)) } + +// v2 + +func APIv2ListContenu(cfg Config) echo.HandlerFunc { + return func(c echo.Context) error { + files, err := ListContenu(cfg.ServerContenuDir) + if err != nil { + return c.JSON(http.StatusInternalServerError, ErrorResponse{Error: err.Error()}) + } + + return c.JSON(http.StatusOK, NewContenuResponse(files)) + } +} + +// ui + +func UIContenuFichier(cfg Config) echo.HandlerFunc { + return func(c echo.Context) error { + return c.File(fmt.Sprintf("%s/%s", cfg.ServerContenuDir, c.Param("fichier"))) + } +} diff --git a/pkg/babillard/data.go b/pkg/babillard/data.go index e126748..0f19e16 100644 --- a/pkg/babillard/data.go +++ b/pkg/babillard/data.go @@ -1,24 +1,42 @@ package babillard -import "os" +import ( + "fmt" + "os" +) -func ListContenu(path string) ([]string, error) { - var files []string - f, err_open := os.Open(path) - defer f.Close() +var forbiddenFiles = []string{".gitkeep", "messages.txt", "Thumbs.db"} - if err_open != nil { - return nil, err_open +func ListContenu(path string) (files []string, err error) { + file, err := os.Open(path) + if err != nil { + return nil, err } - fileInfo, err_read := f.Readdir(-1) - if err_read != nil { - return nil, err_read + defer file.Close() + + stats, err := file.Stat() + if err != nil { + return nil, err } - for _, file := range fileInfo { - if file.Name() != ".gitkeep" && file.Name() != "messages.txt" { - files = append(files, file.Name()) + if !stats.IsDir() { + return nil, fmt.Errorf("contenu '%s' n'est pas un répertoire", path) + } + + fileInfos, err := file.Readdir(-1) + if err != nil { + return nil, err + } + +fileLoop: + for _, fileInfo := range fileInfos { + for _, forbiddenFile := range forbiddenFiles { + if fileInfo.Name() == forbiddenFile { + continue fileLoop + } } + files = append(files, fileInfo.Name()) } + return files, nil } diff --git a/pkg/babillard/handlers.go b/pkg/babillard/handlers.go index fc636c8..73bd856 100644 --- a/pkg/babillard/handlers.go +++ b/pkg/babillard/handlers.go @@ -18,12 +18,16 @@ API Specifications '/api' | GET | Affiche les spécifications API '/api/contenu' | GET | Affiche le nom des fichiers dans 'contenu/' '/api/contenu/{filename}' | GET | Affiche le fichier 'contenu/{filename}' ------` +----- +v2 +-- +'/api/v2/contenu' | GET | Affiche les noms des fichiers dans 'contenu/' +` return c.String(http.StatusOK, apispec) } -func RunServer(contenuDir string, serverPort int) { +func RunServer(cfg Config) { log.Print("[I] Starting webserver") e := echo.New() @@ -45,11 +49,17 @@ func RunServer(contenuDir string, serverPort int) { groupAPI := e.Group("/api") - contenuHandler := NewContenuHandler(contenuDir) + contenuHandler := NewContenuHandler(cfg.ServerContenuDir) groupAPI.GET("/", HandleAPIShow) groupAPI.GET("/contenu/", contenuHandler.HandleAPIContenuList) groupAPI.GET("/contenu/:filename/", contenuHandler.HandleAPIContenuFile) - e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", serverPort))) + groupAPI.GET("/v2/contenu/", APIv2ListContenu(cfg)) + + groupUI := e.Group("/ui") + + groupUI.GET("/contenu/:fichier/", UIContenuFichier(cfg)) + + e.Logger.Fatal(e.Start(fmt.Sprintf(":%d", cfg.ServerPort))) } diff --git a/pkg/babillard/response.go b/pkg/babillard/response.go new file mode 100644 index 0000000..01b2638 --- /dev/null +++ b/pkg/babillard/response.go @@ -0,0 +1,20 @@ +package babillard + +type ErrorResponse struct { + Error string +} + +type MessageResponse struct { + Message string +} + +type ContenuResponse struct { + Data struct { + Contenu []string + } +} + +func NewContenuResponse(fichiers []string) (response ContenuResponse) { + response.Data.Contenu = fichiers + return +} diff --git a/ui/css/style.css b/ui/css/style.css index 8c8549e..36cc922 100644 --- a/ui/css/style.css +++ b/ui/css/style.css @@ -20,60 +20,3 @@ embed { flex: 1; min-height: 0; } - -#bar { - width: 100%; - background-image: linear-gradient(to right, #033ead, #3093d1); - color: white; - font-family: 'Roboto', sans-serif; - font-weight: bold; - display: flex; - align-items: center; - min-height: 75px; -} - -img#bar-bg { - position: absolute; - width: 100%; - height: 100%; - z-index: -1; -} - -#time { - font-size: 300%; - height: 53px; -} - -#text-content { - white-space: nowrap; - z-index: 1; - display: block; - height: 100%; - padding-top: 55px; - position: relative; -} - -#text-container { - height: 100%; - background-image: linear-gradient(to right, #033ead, #3093d1); - display: flex; - align-items: center; - font-size: 20px; - flex-grow: 1; -} - -#text-content div { - display: block; - position: fixed; - height: 100%; -} - -#date-time { - display: flex; - flex-flow: column; - align-items: center; - height: 100%; - background-color: #033ead; - z-index: 1; - width: 225px; -} \ No newline at end of file diff --git a/ui/embed.go b/ui/embed.go index 3b63250..f67189c 100644 --- a/ui/embed.go +++ b/ui/embed.go @@ -2,17 +2,17 @@ package ui import "embed" -//go:embed html/* +//go:embed html/*.html var htmlFS embed.FS func HTMLFS() embed.FS { return htmlFS } -//go:embed css/* +//go:embed css/*.css var cssFS embed.FS func CSSFS() embed.FS { return cssFS } -//go:embed js/* +//go:embed js/*.js var jsFS embed.FS func JSFS() embed.FS { return jsFS } diff --git a/ui/html/index.html b/ui/html/index.html index d9b81a5..baa09fa 100644 --- a/ui/html/index.html +++ b/ui/html/index.html @@ -1,43 +1,15 @@ - AGECEM | slider - - - - - - - + AGECEM | babillard + -

-
- - - diff --git a/ui/js/carousel.js b/ui/js/carousel.js new file mode 100644 index 0000000..ed61f17 --- /dev/null +++ b/ui/js/carousel.js @@ -0,0 +1,32 @@ +// 2025-02 Victor Lacasse-Beaudoin, AGECEM +// +// Carousel d'images à afficher sur https://babillard.agecem.com/ ainsi que +// sur la télévision du Centre-Multi Services de l'AGECEM. +// +// WIP +async function getContenu() { + const url = "/api/v2/contenu/"; + try { + const response = await fetch(url); + if (!response.ok) { + //TODO start interval then refresh page to try again + throw new Error(`Response status: ${response.status}`); + } + json = await response.json(); + console.log("[i] got contenu"); + console.log(json); + + //startCarousel(json); + } + catch (error) { + console.error(error.message); + } +} + +function run(){ + console.log("[i] run"); + + getContenu(); +} + +run(); diff --git a/ui/js/slider.js b/ui/js/slider.js deleted file mode 100644 index dbe227e..0000000 --- a/ui/js/slider.js +++ /dev/null @@ -1,45 +0,0 @@ -var images = []; -var indexImages = 0; - -function afficherIndex() { - $('#debug').text(indexImages); -} - -function afficherImage() { - $('#image').attr('src', "/api/contenu/"+images[indexImages]); -} - -function augmenterIndex() { - if (indexImages >= images.length - 1) { - indexImages = 0; - } else { - indexImages ++; - } -} - -function executionLoop(){ - //afficherIndex(); - afficherImage(); - augmenterIndex(); -} - -function obtenirContenu(){ - var response = ''; - $.ajax({ - type: "GET", - url: window.location.origin + "/api/contenu", - async: false, - success: function(text) { - response = text; - } - }); - - console.log(response); - images = response.split(';'); - console.log(images); -} - -$(function(){ - obtenirContenu(); - var executionInterval = setInterval(executionLoop, (Math.floor(Math.random() * 6)+15)*1000); -}); diff --git a/ui/js/text.js b/ui/js/text.js deleted file mode 100644 index 88675c8..0000000 --- a/ui/js/text.js +++ /dev/null @@ -1,65 +0,0 @@ -// VARS -// Vitesses -var vitesseTexte = 4000; // En millisecondes - -// Coordonnées -var pointInitial = '100%'; -var pointDestination = '-=2000px'; - -// Messages -var messageDiv = '#text-content div' -var messages = []; -var indexMessages = 0; - -var fontSize; -var fontSizeLength; - -// FUNCS -function animerTexte(){ - // Diriger le texte vers la droite jusqu'à `pointDestination'. - // Récursivement reset la position du texte. - $(messageDiv).animate({left: pointDestination}, vitesseTexte, 'linear', resetTexte); -} - -function resetTexte(){ - // Remettre le texte au point initial - $(messageDiv).css('left', pointInitial); - - // Récursivement animer le texte - animerTexte(); -} - -function updateTexte(){ - var message = messages[indexMessages]; - - $(messageDiv).text(message); - - augmenterIndex(); -} - -function augmenterIndex() { - if (indexMessages >= messages.length - 1) { - indexMessages = 0; - } else { - indexMessages ++; - } -} - -function initialiserMessages(){ - fontSize = $(messageDiv).css('fontSize'); - fontSizeLength = fontSize.length; - - // TODO Importer messages - messages = ['hello, world!']; - - - // TODO pointDestination = -1 * longueurMessage - //pointDestination = messages[0].width * fontSize.substring(fontSize.length-2); - pointDestination = messages[indexMessages].width; -} - -// EXEC -$(function(){ - //initialiserMessages(); - resetTexte(); -}); From 5a21a5154bc87a755430f43562e500625aa1a1dc Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Wed, 12 Feb 2025 17:18:18 -0500 Subject: [PATCH 09/15] ui: rajouter jquery et slider, comment out carousel --- ui/html/index.html | 4 +++- ui/js/slider.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 ui/js/slider.js diff --git a/ui/html/index.html b/ui/html/index.html index baa09fa..b564060 100644 --- a/ui/html/index.html +++ b/ui/html/index.html @@ -2,8 +2,10 @@ AGECEM | babillard + - + + diff --git a/ui/js/slider.js b/ui/js/slider.js new file mode 100644 index 0000000..dbe227e --- /dev/null +++ b/ui/js/slider.js @@ -0,0 +1,45 @@ +var images = []; +var indexImages = 0; + +function afficherIndex() { + $('#debug').text(indexImages); +} + +function afficherImage() { + $('#image').attr('src', "/api/contenu/"+images[indexImages]); +} + +function augmenterIndex() { + if (indexImages >= images.length - 1) { + indexImages = 0; + } else { + indexImages ++; + } +} + +function executionLoop(){ + //afficherIndex(); + afficherImage(); + augmenterIndex(); +} + +function obtenirContenu(){ + var response = ''; + $.ajax({ + type: "GET", + url: window.location.origin + "/api/contenu", + async: false, + success: function(text) { + response = text; + } + }); + + console.log(response); + images = response.split(';'); + console.log(images); +} + +$(function(){ + obtenirContenu(); + var executionInterval = setInterval(executionLoop, (Math.floor(Math.random() * 6)+15)*1000); +}); From b7c4b1a4be644701f22aff7209602eab766d18a2 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 17 Feb 2025 17:54:15 -0500 Subject: [PATCH 10/15] chores: Uniformiser case pour statements dans Dockerfile --- Dockerfile | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/Dockerfile b/Dockerfile index 62e0344..fe1894a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,30 +1,30 @@ -FROM golang:1.23 as build +from golang:1.23 as build -LABEL author="Victor Lacasse-Beaudoin " -LABEL license="MIT" -LABEL licensee="AGECEM" -LABEL repo="https://git.agecem.com/agecem/babillard" +label author="Victor Lacasse-Beaudoin " +label license="MIT" +label licensee="AGECEM" +label repo="https://git.agecem.com/agecem/babillard" -WORKDIR /go/src/app +workdir /go/src/app -COPY go.mod go.sum ./ +copy go.mod go.sum ./ -ADD cmd/ cmd/ -ADD pkg/ pkg/ -ADD ui/ ui/ +add cmd/ cmd/ +add pkg/ pkg/ +add ui/ ui/ -RUN CGO_ENABLED=0 go build -a ./cmd/babillard/ +run CGO_ENABLED=0 go build -a ./cmd/babillard/ # Alpine -FROM alpine:3.21 +from alpine:3.21 -RUN apk update && apk upgrade --no-cache +run apk update && apk upgrade --no-cache -WORKDIR /app +workdir /app -ADD contenu/ contenu/ +add contenu/ contenu/ -COPY --from=build /go/src/app/babillard /usr/bin/babillard +copy --from=build /go/src/app/babillard /usr/bin/babillard -CMD ["babillard", "server"] +cmd ["babillard", "server"] From 0f3660cb91be6cb8828df38a55b9de54eb02b646 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 17 Feb 2025 17:56:58 -0500 Subject: [PATCH 11/15] =?UTF-8?q?fix(ui):=20=C3=89viter=20un=20=C3=A9cran?= =?UTF-8?q?=20noir=20comme=20premi=C3=A8re=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit executionLoop() exécuté une fois avant que l'interval commence pour éviter de rester sur un écran noir --- ui/js/slider.js | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/js/slider.js b/ui/js/slider.js index dbe227e..d078327 100644 --- a/ui/js/slider.js +++ b/ui/js/slider.js @@ -41,5 +41,6 @@ function obtenirContenu(){ $(function(){ obtenirContenu(); + executionLoop(); var executionInterval = setInterval(executionLoop, (Math.floor(Math.random() * 6)+15)*1000); }); From bfddebed0eef18be2975a23da275ef0710602478 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Mon, 17 Feb 2025 18:10:56 -0500 Subject: [PATCH 12/15] =?UTF-8?q?feature(ui):=20Reload=20contenu=20apr?= =?UTF-8?q?=C3=A8s=20derni=C3=A8re=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/js/slider.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ui/js/slider.js b/ui/js/slider.js index d078327..827aa6d 100644 --- a/ui/js/slider.js +++ b/ui/js/slider.js @@ -10,15 +10,14 @@ function afficherImage() { } function augmenterIndex() { - if (indexImages >= images.length - 1) { - indexImages = 0; - } else { indexImages ++; - } } function executionLoop(){ - //afficherIndex(); + if (indexImages >= images.length) { + location.reload(); + } + afficherImage(); augmenterIndex(); } From 217b17d43696f3516e1a2bd3bf8d0ebe9b35b606 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Thu, 27 Mar 2025 17:32:04 -0400 Subject: [PATCH 13/15] =?UTF-8?q?refactor!:=20renommer=20module=20et=20r?= =?UTF-8?q?=C3=A9organiser=20fichiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING: Rapporter fichiers `pkg/*.go` à la racine BREAKING: Bump version du module à `git.agecem.com/agecem/babillard/v8` et ajuster les références --- pkg/babillard/cmd.go => cmd.go | 0 cmd/babillard/main.go | 2 +- pkg/babillard/config.go => config.go | 0 pkg/babillard/contenu.go => contenu.go | 0 pkg/babillard/data.go => data.go | 0 go.mod | 2 +- pkg/babillard/handlers.go => handlers.go | 2 +- {kubernetes => k8s}/deployment.yaml | 0 {kubernetes => k8s}/service.yaml | 0 pkg/babillard/response.go => response.go | 0 10 files changed, 3 insertions(+), 3 deletions(-) rename pkg/babillard/cmd.go => cmd.go (100%) rename pkg/babillard/config.go => config.go (100%) rename pkg/babillard/contenu.go => contenu.go (100%) rename pkg/babillard/data.go => data.go (100%) rename pkg/babillard/handlers.go => handlers.go (97%) rename {kubernetes => k8s}/deployment.yaml (100%) rename {kubernetes => k8s}/service.yaml (100%) rename pkg/babillard/response.go => response.go (100%) diff --git a/pkg/babillard/cmd.go b/cmd.go similarity index 100% rename from pkg/babillard/cmd.go rename to cmd.go diff --git a/cmd/babillard/main.go b/cmd/babillard/main.go index a8195a2..879050d 100644 --- a/cmd/babillard/main.go +++ b/cmd/babillard/main.go @@ -24,7 +24,7 @@ package main import ( "log" - "git.agecem.com/agecem/babillard/v7/pkg/babillard" + "git.agecem.com/agecem/babillard/v8" ) func main() { diff --git a/pkg/babillard/config.go b/config.go similarity index 100% rename from pkg/babillard/config.go rename to config.go diff --git a/pkg/babillard/contenu.go b/contenu.go similarity index 100% rename from pkg/babillard/contenu.go rename to contenu.go diff --git a/pkg/babillard/data.go b/data.go similarity index 100% rename from pkg/babillard/data.go rename to data.go diff --git a/go.mod b/go.mod index 1af488a..7ce7acc 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module git.agecem.com/agecem/babillard/v7 +module git.agecem.com/agecem/babillard/v8 go 1.23 diff --git a/pkg/babillard/handlers.go b/handlers.go similarity index 97% rename from pkg/babillard/handlers.go rename to handlers.go index 73bd856..f15bf78 100644 --- a/pkg/babillard/handlers.go +++ b/handlers.go @@ -5,7 +5,7 @@ import ( "log" "net/http" - "git.agecem.com/agecem/babillard/v7/ui" + "git.agecem.com/agecem/babillard/v8/ui" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" ) diff --git a/kubernetes/deployment.yaml b/k8s/deployment.yaml similarity index 100% rename from kubernetes/deployment.yaml rename to k8s/deployment.yaml diff --git a/kubernetes/service.yaml b/k8s/service.yaml similarity index 100% rename from kubernetes/service.yaml rename to k8s/service.yaml diff --git a/pkg/babillard/response.go b/response.go similarity index 100% rename from pkg/babillard/response.go rename to response.go From b4669a9551a472270783eaca245480ce0d9fed6e Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Thu, 27 Mar 2025 17:46:24 -0400 Subject: [PATCH 14/15] fix: dockerfile ne copie pas les go source files de la racine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajouter *.go à build step copy Ajouter LICENSE à build step copy Retirer pkg/ de build step add Retirer apk upgrade de run step - plus prévisible si on utilise direct ce que les image distributors ont packagés --- Dockerfile | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index fe1894a..a93f3cd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,10 +7,9 @@ label repo="https://git.agecem.com/agecem/babillard" workdir /go/src/app -copy go.mod go.sum ./ +copy go.mod go.sum LICENSE cmd.go config.go contenu.go data.go handlers.go response.go ./ add cmd/ cmd/ -add pkg/ pkg/ add ui/ ui/ run CGO_ENABLED=0 go build -a ./cmd/babillard/ @@ -19,8 +18,6 @@ run CGO_ENABLED=0 go build -a ./cmd/babillard/ from alpine:3.21 -run apk update && apk upgrade --no-cache - workdir /app add contenu/ contenu/ From b5589c2fee13040fea5e441413eaf1532e5f7f19 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Thu, 27 Mar 2025 18:19:00 -0400 Subject: [PATCH 15/15] chores: bump couleuvre -> v0.13.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajuster code pour considérer upgrade de dependency Fix ordre de [App.Parse] et [App.AddCommands] dans cmd/ Exécuter `go get -u` pour mettre à jour les autres modules --- cmd.go | 29 +++++++++++------------------ go.mod | 21 ++++++++++----------- go.sum | 38 ++++++++++++++------------------------ 3 files changed, 35 insertions(+), 53 deletions(-) diff --git a/cmd.go b/cmd.go index 17d1726..ef86da6 100644 --- a/cmd.go +++ b/cmd.go @@ -2,7 +2,6 @@ package babillard import ( "flag" - "os" "codeberg.org/vlbeaudoin/couleuvre" ) @@ -10,7 +9,7 @@ import ( var app couleuvre.App[Config] func init() { - app = couleuvre.NewApp[Config]("BABILLARD_", ".", "_") + app = couleuvre.App[Config]{EnvPrefix: "babillard"} flag.StringVar(&app.Config.ServerContenuDir, ServerContenuDirName, ServerContenuDirDefault, ServerContenuDirDescription) flag.IntVar(&app.Config.ServerPort, ServerPortName, ServerPortDefault, ServerPortDescription) @@ -31,31 +30,25 @@ const ( ServerCmdDesc = "Démarrer le serveur web" ) -func ServerCmdExecuter() error { +func ServerCmdExecuter(args ...string) error { RunServer(app.Config) return nil } func Execute() error { + if err := app.AddCommands(couleuvre.Command{ + Name: ServerCmdName, + Description: ServerCmdDesc, + Executer: couleuvre.ExecuterFunc(ServerCmdExecuter), + }); err != nil { + return err + } + if err := app.Parse(); err != nil { return err } - if err := app.NewCommand(ServerCmdName, ServerCmdDesc, ServerCmdExecuter); err != nil { - return err - } - - var commandName string - if len(os.Args) > 1 { - commandName = flag.Arg(0) - } - - cmd, err := app.ParseCommand(commandName) - if err != nil { - return err - } - - if err := cmd.Execute(); err != nil { + if err := app.Execute(flag.Args()...); err != nil { return err } diff --git a/go.mod b/go.mod index 7ce7acc..8a2c3f6 100644 --- a/go.mod +++ b/go.mod @@ -1,27 +1,26 @@ module git.agecem.com/agecem/babillard/v8 -go 1.23 +go 1.23.0 + +toolchain go1.23.6 require ( - codeberg.org/vlbeaudoin/couleuvre v0.10.0 + codeberg.org/vlbeaudoin/couleuvre v0.13.0 github.com/labstack/echo/v4 v4.13.3 ) require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/kr/text v0.2.0 // indirect + github.com/goccy/go-yaml v1.16.0 // 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.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 + golang.org/x/crypto v0.36.0 // indirect + golang.org/x/net v0.38.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + golang.org/x/time v0.11.0 // indirect ) diff --git a/go.sum b/go.sum index 95cf8b9..2c1cb61 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,9 @@ -codeberg.org/vlbeaudoin/couleuvre v0.10.0 h1:Uk6795M7ziZPu1Fv8KgGNEbRjc1u4NPdPU4Tip0IpHU= -codeberg.org/vlbeaudoin/couleuvre v0.10.0/go.mod h1:+M8nPA/3LknsY72RP0ZHCZycQ1SPxxRoXpnyHeSNE7U= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +codeberg.org/vlbeaudoin/couleuvre v0.13.0 h1:N2gAzpItFthQ0aPzMQjntRsrqrEXwuo0u6VHSGA/V6o= +codeberg.org/vlbeaudoin/couleuvre v0.13.0/go.mod h1:0RvzStph7J4/M+mZb903hn4GSYrTBjXYVJv72Pwpa90= 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/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/goccy/go-yaml v1.16.0 h1:d7m1G7A0t+logajVtklHfDYJs2Et9g3gHwdBNNFou0w= +github.com/goccy/go-yaml v1.16.0/go.mod h1:XBurs7gK8ATbW4ZPGKgcbrY1Br56PdM69F7LkFRi1kA= 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= @@ -15,31 +12,24 @@ github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHP 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= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= 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.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.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/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= +golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -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= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=