From 7d473488de6744da13e9bfa36f71a5262836e1ae Mon Sep 17 00:00:00 2001
From: Philipp Heckel <pheckel@datto.com>
Date: Mon, 9 May 2022 11:03:40 -0400
Subject: [PATCH] Working Windows build

---
 .goreleaser.yml                              | 13 +++++++++++++
 cmd/{access.go => access_linux.go}           |  4 ++++
 cmd/{access_test.go => access_linux_test.go} |  0
 cmd/app.go                                   | 13 +++----------
 cmd/publish.go                               |  4 ++++
 cmd/{serve.go => serve_linux.go}             |  4 ++++
 cmd/{serve_test.go => serve_linux_test.go}   |  0
 cmd/subscribe.go                             |  4 ++++
 cmd/{user.go => user_linux.go}               |  5 +++++
 cmd/{user_test.go => user_linux_test.go}     |  0
 10 files changed, 37 insertions(+), 10 deletions(-)
 rename cmd/{access.go => access_linux.go} (99%)
 rename cmd/{access_test.go => access_linux_test.go} (100%)
 rename cmd/{serve.go => serve_linux.go} (99%)
 rename cmd/{serve_test.go => serve_linux_test.go} (100%)
 rename cmd/{user.go => user_linux.go} (99%)
 rename cmd/{user_test.go => user_linux_test.go} (100%)

diff --git a/.goreleaser.yml b/.goreleaser.yml
index e3c7504..d41eae7 100644
--- a/.goreleaser.yml
+++ b/.goreleaser.yml
@@ -57,6 +57,19 @@ builds:
     goarch: [arm64]
     # No "upx", since it causes random core dumps, see
     # https://github.com/binwiederhier/ntfy/issues/191#issuecomment-1083406546
+  -
+    id: ntfy_windows_amd64
+    binary: ntfy
+    env:
+      - CGO_ENABLED=0 # explicitly disable, since we don't need go-sqlite3
+    tags: []
+    ldflags:
+      - "-X main.version={{.Version}} -X main.commit={{.Commit}} -X main.date={{.Date}}"
+    goos: [windows]
+    goarch: [amd64]
+    hooks:
+      post:
+        - upx "{{ .Path }}" # apt install upx
 nfpms:
   -
     package_name: ntfy
diff --git a/cmd/access.go b/cmd/access_linux.go
similarity index 99%
rename from cmd/access.go
rename to cmd/access_linux.go
index b3cacfa..2334a04 100644
--- a/cmd/access.go
+++ b/cmd/access_linux.go
@@ -8,6 +8,10 @@ import (
 	"heckel.io/ntfy/util"
 )
 
+func init() {
+	commands = append(commands, cmdAccess)
+}
+
 const (
 	userEveryone = "everyone"
 )
diff --git a/cmd/access_test.go b/cmd/access_linux_test.go
similarity index 100%
rename from cmd/access_test.go
rename to cmd/access_linux_test.go
diff --git a/cmd/app.go b/cmd/app.go
index 85540ce..504bde5 100644
--- a/cmd/app.go
+++ b/cmd/app.go
@@ -19,6 +19,8 @@ const (
 	categoryServer = "Server commands"
 )
 
+var commands = make([]*cli.Command, 0)
+
 // New creates a new CLI application
 func New() *cli.App {
 	return &cli.App{
@@ -30,16 +32,7 @@ func New() *cli.App {
 		Reader:                 os.Stdin,
 		Writer:                 os.Stdout,
 		ErrWriter:              os.Stderr,
-		Commands: []*cli.Command{
-			// Server commands
-			cmdServe,
-			cmdUser,
-			cmdAccess,
-
-			// Client commands
-			cmdPublish,
-			cmdSubscribe,
-		},
+		Commands:               commands,
 	}
 }
 
diff --git a/cmd/publish.go b/cmd/publish.go
index e210308..34d7bf7 100644
--- a/cmd/publish.go
+++ b/cmd/publish.go
@@ -12,6 +12,10 @@ import (
 	"strings"
 )
 
+func init() {
+	commands = append(commands, cmdPublish)
+}
+
 var cmdPublish = &cli.Command{
 	Name:      "publish",
 	Aliases:   []string{"pub", "send", "trigger"},
diff --git a/cmd/serve.go b/cmd/serve_linux.go
similarity index 99%
rename from cmd/serve.go
rename to cmd/serve_linux.go
index 2fd878d..b56268b 100644
--- a/cmd/serve.go
+++ b/cmd/serve_linux.go
@@ -14,6 +14,10 @@ import (
 	"time"
 )
 
+func init() {
+	commands = append(commands, cmdServe)
+}
+
 var flagsServe = []cli.Flag{
 	&cli.StringFlag{Name: "config", Aliases: []string{"c"}, EnvVars: []string{"NTFY_CONFIG_FILE"}, Value: "/etc/ntfy/server.yml", DefaultText: "/etc/ntfy/server.yml", Usage: "config file"},
 	altsrc.NewStringFlag(&cli.StringFlag{Name: "base-url", Aliases: []string{"B"}, EnvVars: []string{"NTFY_BASE_URL"}, Usage: "externally visible base URL for this host (e.g. https://ntfy.sh)"}),
diff --git a/cmd/serve_test.go b/cmd/serve_linux_test.go
similarity index 100%
rename from cmd/serve_test.go
rename to cmd/serve_linux_test.go
diff --git a/cmd/subscribe.go b/cmd/subscribe.go
index 9000a16..95ad02a 100644
--- a/cmd/subscribe.go
+++ b/cmd/subscribe.go
@@ -13,6 +13,10 @@ import (
 	"strings"
 )
 
+func init() {
+	commands = append(commands, cmdSubscribe)
+}
+
 var cmdSubscribe = &cli.Command{
 	Name:      "subscribe",
 	Aliases:   []string{"sub"},
diff --git a/cmd/user.go b/cmd/user_linux.go
similarity index 99%
rename from cmd/user.go
rename to cmd/user_linux.go
index 1057ba4..3fc3a5b 100644
--- a/cmd/user.go
+++ b/cmd/user_linux.go
@@ -11,7 +11,12 @@ import (
 	"strings"
 )
 
+func init() {
+	commands = append(commands, cmdUser)
+}
+
 var flagsUser = userCommandFlags()
+
 var cmdUser = &cli.Command{
 	Name:      "user",
 	Usage:     "Manage/show users",
diff --git a/cmd/user_test.go b/cmd/user_linux_test.go
similarity index 100%
rename from cmd/user_test.go
rename to cmd/user_linux_test.go
-- 
GitLab