serve static assets from embeded filesystem. add build files for lazyos

This commit is contained in:
Robin Olsen
2026-02-26 10:33:46 +01:00
parent d83422104b
commit c769c901cf
7 changed files with 56 additions and 5 deletions

2
.gitignore vendored
View File

@@ -10,5 +10,7 @@ node_modules/
package-lock.json
package.json
build/survey
# Added by goreleaser init:
dist/

View File

@@ -33,6 +33,10 @@ docker-run:
docker-push:
@docker push telikz/lazypm:latest
build-os: build
@cp ./bin/survey ./build/survey
@docker build -t lazyos ./build
start:
@go run ./cmd/survey start

7
build/Dockerfile Normal file
View File

@@ -0,0 +1,7 @@
FROM lscr.io/linuxserver/webtop:arch-kde
COPY survey /usr/local/bin/survey
RUN chmod +x /usr/local/bin/survey
COPY setup-desktop.sh /custom-cont-init.d/01-setup-desktop.sh
RUN chmod +x /custom-cont-init.d/01-setup-desktop.sh

1
build/README.md Normal file
View File

@@ -0,0 +1 @@
# This describes the build process for lazyos

23
build/setup-desktop.sh Normal file
View File

@@ -0,0 +1,23 @@
#!/bin/bash
# This script runs as root when the container starts
echo "**** Setting up custom desktop shortcuts ****"
# Ensure the Desktop folder exists for the default 'abc' user
mkdir -p /config/Desktop
cat <<EOF > /config/Desktop/MyGoApp.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=PM Survey
Comment=Launch my custom Go binary
Exec=/usr/local/bin/survey start
Icon=utilities-terminal
Terminal=true
Categories=Utility;
EOF
chmod +x /config/Desktop/MyGoApp.desktop
chown abc:abc /config/Desktop/MyGoApp.desktop
echo "**** Desktop setup complete ****"

View File

@@ -6,8 +6,8 @@ import (
)
var ListTasksCmd = &cobra.Command{
Use: "list-tasks",
Aliases: []string{"ls-t"},
Use: "tasks",
Aliases: []string{"t"},
Short: "List available tasks",
RunE: func(cmd *cobra.Command, args []string) error {
for i, name := range task.ListTasks() {
@@ -18,8 +18,8 @@ var ListTasksCmd = &cobra.Command{
}
var ListInterfacesCmd = &cobra.Command{
Use: "list-interfaces",
Aliases: []string{"ls-i"},
Use: "interfaces",
Aliases: []string{"i"},
Short: "List available interfaces",
RunE: func(cmd *cobra.Command, args []string) error {
for i, name := range task.ListInterfaces() {

View File

@@ -2,7 +2,10 @@ package server
import (
"embed"
"io/fs"
"log"
"net/http"
"os"
"strings"
"time"
@@ -53,7 +56,18 @@ func (s *Server) RegisterRoutes(assets embed.FS) http.Handler {
}
func (s *Server) handleAssets(r chi.Router, assets embed.FS) {
fileServer := http.FileServer(http.Dir("pkg/web/assets"))
var fileServer http.Handler
if os.Getenv("DEV") == "True" {
log.Println("Running in development mode: serving assets from disk")
fileServer = http.FileServer(http.Dir("pkg/web/assets"))
} else {
subFS, err := fs.Sub(assets, "assets")
if err != nil {
log.Fatalf("failed to create sub filesystem: %v", err)
}
fileServer = http.FileServer(http.FS(subFS))
}
r.Handle("/assets/*",
http.StripPrefix("/assets/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {