diff --git a/.gitignore b/.gitignore index 6474f31..84e580a 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,7 @@ node_modules/ package-lock.json package.json +build/survey + # Added by goreleaser init: dist/ diff --git a/Makefile b/Makefile index 22a0c28..e18a7f0 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/build/Dockerfile b/build/Dockerfile new file mode 100644 index 0000000..bddcbcc --- /dev/null +++ b/build/Dockerfile @@ -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 \ No newline at end of file diff --git a/build/README.md b/build/README.md new file mode 100644 index 0000000..d5f981a --- /dev/null +++ b/build/README.md @@ -0,0 +1 @@ +# This describes the build process for lazyos \ No newline at end of file diff --git a/build/setup-desktop.sh b/build/setup-desktop.sh new file mode 100644 index 0000000..d62c919 --- /dev/null +++ b/build/setup-desktop.sh @@ -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 < /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 ****" diff --git a/internal/commands/survey/list.go b/internal/commands/survey/list.go index 80629a2..b0e6e0d 100644 --- a/internal/commands/survey/list.go +++ b/internal/commands/survey/list.go @@ -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() { diff --git a/pkg/web/server/routes.go b/pkg/web/server/routes.go index 5cc93c9..90b3fb7 100644 --- a/pkg/web/server/routes.go +++ b/pkg/web/server/routes.go @@ -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) {