Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42449b3322 |
@@ -16,12 +16,15 @@ RUN CGO_ENABLED=0 GOOS=linux go build \
|
||||
|
||||
FROM alpine:3.22
|
||||
|
||||
ARG APP_VERSION=dev
|
||||
|
||||
RUN apk add --no-cache ca-certificates ffmpeg wget
|
||||
|
||||
ENV WARPBOX_ADDR=:8080 \
|
||||
WARPBOX_DATA_DIR=/data \
|
||||
WARPBOX_STATIC_DIR=/app/static \
|
||||
WARPBOX_TEMPLATE_DIR=/app/templates
|
||||
WARPBOX_TEMPLATE_DIR=/app/templates \
|
||||
APP_VERSION=${APP_VERSION}
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
type Config struct {
|
||||
AppName string
|
||||
AppVersion string
|
||||
Environment string
|
||||
Addr string
|
||||
BaseURL string
|
||||
@@ -54,6 +55,7 @@ type SettingsDefaults struct {
|
||||
func Load() (Config, error) {
|
||||
cfg := Config{
|
||||
AppName: envString("WARPBOX_APP_NAME", "warpbox.dev"),
|
||||
AppVersion: envString("APP_VERSION", "dev"),
|
||||
Environment: envString("WARPBOX_ENV", "development"),
|
||||
Addr: envString("WARPBOX_ADDR", ":8080"),
|
||||
BaseURL: strings.TrimRight(envString("WARPBOX_BASE_URL", "http://localhost:8080"), "/"),
|
||||
|
||||
@@ -569,6 +569,9 @@ func TestHomeReflectsUploadPolicySettings(t *testing.T) {
|
||||
if !strings.Contains(body, "Max file size: 123 MB") || !strings.Contains(body, "456 MB") {
|
||||
t.Fatalf("home did not reflect policy settings: %s", body)
|
||||
}
|
||||
if !strings.Contains(body, "warpbox.dev · test ·") {
|
||||
t.Fatalf("home footer did not include app version: %s", body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAPIDocsHeaderReflectsLoggedInUser(t *testing.T) {
|
||||
|
||||
@@ -179,6 +179,7 @@ func newTestApp(t *testing.T) (*App, func()) {
|
||||
logger := slog.New(slog.NewTextHandler(io.Discard, nil))
|
||||
cfg := config.Config{
|
||||
AppName: "warpbox.dev",
|
||||
AppVersion: "test",
|
||||
BaseURL: "http://example.test",
|
||||
DataDir: filepath.Join(root, "data"),
|
||||
StaticDir: staticDir,
|
||||
@@ -197,7 +198,7 @@ func newTestApp(t *testing.T) (*App, func()) {
|
||||
if err != nil {
|
||||
t.Fatalf("NewUploadService returned error: %v", err)
|
||||
}
|
||||
renderer, err := web.NewRenderer(cfg.TemplateDir, cfg.AppName, cfg.BaseURL)
|
||||
renderer, err := web.NewRenderer(cfg.TemplateDir, cfg.AppName, cfg.AppVersion, cfg.BaseURL)
|
||||
if err != nil {
|
||||
service.Close()
|
||||
t.Fatalf("NewRenderer returned error: %v", err)
|
||||
|
||||
@@ -13,7 +13,7 @@ import (
|
||||
)
|
||||
|
||||
func New(cfg config.Config, logger *slog.Logger) (*http.Server, error) {
|
||||
renderer, err := web.NewRenderer(cfg.TemplateDir, cfg.AppName, cfg.BaseURL)
|
||||
renderer, err := web.NewRenderer(cfg.TemplateDir, cfg.AppName, cfg.AppVersion, cfg.BaseURL)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -8,13 +8,15 @@ import (
|
||||
)
|
||||
|
||||
type Renderer struct {
|
||||
templates map[string]*template.Template
|
||||
appName string
|
||||
baseURL string
|
||||
templates map[string]*template.Template
|
||||
appName string
|
||||
appVersion string
|
||||
baseURL string
|
||||
}
|
||||
|
||||
type PageData struct {
|
||||
AppName string
|
||||
AppVersion string
|
||||
BaseURL string
|
||||
Title string
|
||||
Description string
|
||||
@@ -25,7 +27,7 @@ type PageData struct {
|
||||
Data any
|
||||
}
|
||||
|
||||
func NewRenderer(templateDir, appName, baseURL string) (*Renderer, error) {
|
||||
func NewRenderer(templateDir, appName, appVersion, baseURL string) (*Renderer, error) {
|
||||
layouts, err := filepath.Glob(filepath.Join(templateDir, "layouts", "*.html"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -56,14 +58,16 @@ func NewRenderer(templateDir, appName, baseURL string) (*Renderer, error) {
|
||||
}
|
||||
|
||||
return &Renderer{
|
||||
templates: templates,
|
||||
appName: appName,
|
||||
baseURL: baseURL,
|
||||
templates: templates,
|
||||
appName: appName,
|
||||
appVersion: appVersion,
|
||||
baseURL: baseURL,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Renderer) Render(w http.ResponseWriter, status int, page string, data PageData) {
|
||||
data.AppName = r.appName
|
||||
data.AppVersion = r.appVersion
|
||||
data.BaseURL = r.baseURL
|
||||
data.CurrentYear = time.Now().Year()
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
</main>
|
||||
|
||||
<footer class="site-footer">
|
||||
<span>{{.AppName}} · {{.CurrentYear}} · self-hosted</span>
|
||||
<span>{{.AppName}} · {{.AppVersion}} · {{.CurrentYear}} · self-hosted</span>
|
||||
<label class="theme-picker">
|
||||
<span>Theme</span>
|
||||
<select data-theme-select aria-label="Site theme">
|
||||
|
||||
@@ -14,6 +14,11 @@ set -a
|
||||
source "${ENV_FILE}"
|
||||
set +a
|
||||
|
||||
if [[ -z "${APP_VERSION:-}" ]]; then
|
||||
APP_VERSION="$(git -C "${ROOT_DIR}" describe --tags --abbrev=0 2>/dev/null || printf 'dev')"
|
||||
export APP_VERSION
|
||||
fi
|
||||
|
||||
if [[ "${WARPBOX_DATA_DIR:-}" != /* ]]; then
|
||||
export WARPBOX_DATA_DIR="${ROOT_DIR}/${WARPBOX_DATA_DIR:-data}"
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user