summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-05-02 17:47:49 +0300
committerPaul Buetow <paul@buetow.org>2026-05-02 17:47:49 +0300
commit80436aa8a109beaace6dd164d91229b1b6ba41b9 (patch)
treec7a4e1fd6726927d3344dace8d38cda7efef706d
parent625b53cd352aa5e13d30902c318114a3effe347b (diff)
Revert "Add Darwin goprecords upload client for task i"
This reverts commit 59fc6374d16c22408f50478d82fba19feab14665.
-rw-r--r--docs/upload-client.md97
-rw-r--r--internal/cli/upload_client_darwin_script_test.go101
2 files changed, 1 insertions, 197 deletions
diff --git a/docs/upload-client.md b/docs/upload-client.md
index dff3abf..943d09d 100644
--- a/docs/upload-client.md
+++ b/docs/upload-client.md
@@ -4,12 +4,7 @@
uptimed record files to a running `goprecords` daemon. It works on FreeBSD,
Linux, and OpenBSD, and runs as root or as a regular user.
-`scripts/goprecords-upload-client-darwin.fish` is a fish-shell variant for
-macOS (Darwin). It handles both Intel (`/usr/local/var/uptimed`) and Apple
-Silicon (`/opt/homebrew/var/uptimed`) Homebrew prefixes and uses macOS-native
-commands (`sw_vers`, `sysctl`) for OS and CPU identification.
-
-A copy of the POSIX script is also kept in `contrib/` for backward compatibility.
+A copy is also kept in `contrib/` for backward compatibility.
## Prerequisites
@@ -21,8 +16,6 @@ running before setting up uploads.
| FreeBSD | `pkg install curl uptimed` |
| Rocky Linux / Fedora | `sudo dnf install curl uptimed` |
| OpenBSD | `pkg_add curl uptimed` |
-| macOS (Intel) | `brew install curl uptimed` |
-| macOS (Apple Silicon) | `brew install curl uptimed` |
## Token path
@@ -88,21 +81,6 @@ install -m 700 scripts/goprecords-upload-client.sh \
~/.local/bin/goprecords-upload-client.sh
```
-**macOS (user session)**
-
-The Darwin variant is a fish script and runs as a regular user (no root needed
-for Homebrew-installed `uptimed`):
-
-```sh
-install -m 700 scripts/goprecords-upload-client-darwin.fish \
- ~/.local/bin/goprecords-upload-client-darwin.fish
-```
-
-Ensure `fish` is on `PATH` (it is when installed via Homebrew). The script
-requires `curl`, `uptimed`, and `uprecords` — all provided by `brew install uptimed`.
-Set `GOPRECORDS_RECORDS_FILE` only when your `uptimed` records file is outside
-the standard Homebrew paths.
-
## Step 3 — Store the token
**FreeBSD / Linux (root)**
@@ -135,17 +113,6 @@ umask 077
echo 'TOKEN' > ~/.config/goprecords-upload-earth/token
```
-**macOS (user session)**
-
-Replace `mymac` with the `GOPRECORDS_HOST` value you chose:
-
-```sh
-mkdir -p ~/.config/goprecords-upload-mymac
-chmod 700 ~/.config/goprecords-upload-mymac
-echo 'TOKEN' > ~/.config/goprecords-upload-mymac/token
-chmod 600 ~/.config/goprecords-upload-mymac/token
-```
-
## Step 4 — Automate
### FreeBSD — hourly cron
@@ -254,62 +221,6 @@ GOPRECORDS_HOST=blowfish /usr/local/bin/goprecords-upload-client.sh
Adjust `GOPRECORDS_HOST` for each OpenBSD host (`fishfinger`, etc.).
-### macOS — hourly LaunchAgent
-
-Create `~/Library/LaunchAgents/org.buetow.goprecords-upload.plist`.
-Replace `mymac` with your `GOPRECORDS_HOST` value and adjust the path to
-`fish` if your Homebrew prefix differs:
-
-```xml
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
- "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>Label</key>
- <string>org.buetow.goprecords-upload</string>
- <key>ProgramArguments</key>
- <array>
- <string>/opt/homebrew/bin/fish</string>
- <string>/Users/paul/.local/bin/goprecords-upload-client-darwin.fish</string>
- </array>
- <key>EnvironmentVariables</key>
- <dict>
- <key>GOPRECORDS_HOST</key>
- <string>mymac</string>
- <key>PATH</key>
- <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
- </dict>
- <key>StartInterval</key>
- <integer>3600</integer>
- <key>StandardOutPath</key>
- <string>/tmp/goprecords-upload.log</string>
- <key>StandardErrorPath</key>
- <string>/tmp/goprecords-upload.err</string>
- <key>RunAtLoad</key>
- <true/>
-</dict>
-</plist>
-```
-
-Load it with:
-
-```sh
-launchctl load ~/Library/LaunchAgents/org.buetow.goprecords-upload.plist
-```
-
-For Intel Macs, replace `/opt/homebrew/bin/fish` with `/usr/local/bin/fish`.
-
-### macOS — fish shell supersync integration
-
-If you use the `supersync` fish function from the dotfiles, you can call the
-upload script directly from your shell session by adding a call to your
-`supersync` function or running it manually:
-
-```fish
-GOPRECORDS_HOST=mymac fish ~/.local/bin/goprecords-upload-client-darwin.fish
-```
-
## Step 5 — Test one run
**FreeBSD**
@@ -335,9 +246,3 @@ doas env GOPRECORDS_HOST=blowfish /usr/local/bin/goprecords-upload-client.sh
```sh
GOPRECORDS_HOST=earth ~/.local/bin/goprecords-upload-client.sh
```
-
-**macOS (user session)**
-
-```sh
-GOPRECORDS_HOST=mymac fish ~/.local/bin/goprecords-upload-client-darwin.fish
-```
diff --git a/internal/cli/upload_client_darwin_script_test.go b/internal/cli/upload_client_darwin_script_test.go
deleted file mode 100644
index 6505b23..0000000
--- a/internal/cli/upload_client_darwin_script_test.go
+++ /dev/null
@@ -1,101 +0,0 @@
-package cli
-
-import (
- "os"
- "os/exec"
- "path/filepath"
- "strings"
- "testing"
-)
-
-func TestDarwinFishUploadClient(t *testing.T) {
- fish, err := exec.LookPath("fish")
- if err != nil {
- t.Skip("fish not installed")
- }
-
- dir := t.TempDir()
- binDir := filepath.Join(dir, "bin")
- bodyDir := filepath.Join(dir, "bodies")
- configDir := filepath.Join(dir, "config")
- tokenDir := filepath.Join(configDir, "goprecords-upload-mymac")
- for _, path := range []string{binDir, bodyDir, tokenDir} {
- if err := os.MkdirAll(path, 0o755); err != nil {
- t.Fatal(err)
- }
- }
-
- recordsPath := filepath.Join(dir, "records")
- if err := os.WriteFile(recordsPath, []byte("records-body\n"), 0o644); err != nil {
- t.Fatal(err)
- }
- if err := os.WriteFile(filepath.Join(tokenDir, "token"), []byte("secret-token\n"), 0o600); err != nil {
- t.Fatal(err)
- }
-
- writeExecutable(t, filepath.Join(binDir, "curl"), `#!/bin/sh
-for arg do
- if [ "$prev" = "--data-binary" ]; then data=${arg#@}; fi
- prev=$arg
- url=$arg
-done
-kind=${url##*/}
-printf '%s\n' "$*" >> "$GOPRECORDS_TEST_LOG"
-cp "$data" "$GOPRECORDS_TEST_BODY_DIR/$kind"
-`)
- writeExecutable(t, filepath.Join(binDir, "uprecords"), `#!/bin/sh
-if [ "$1" = "-a" ] && [ "$2" = "-m" ]; then
- printf 'all records\n'
-else
- printf '%s\n' '-> current boot'
-fi
-`)
- writeExecutable(t, filepath.Join(binDir, "sw_vers"), `#!/bin/sh
-printf 'ProductName: macOS\nProductVersion: 14.0\n'
-`)
- writeExecutable(t, filepath.Join(binDir, "sysctl"), `#!/bin/sh
-printf 'hw.model: MacBookPro\nhw.ncpu: 8\nhw.machine: arm64\n'
-`)
-
- logPath := filepath.Join(dir, "curl.log")
- cmd := exec.Command(fish, "goprecords-upload-client-darwin.fish")
- cmd.Dir = filepath.Join("..", "..", "scripts")
- cmd.Env = append(os.Environ(),
- "PATH="+binDir+string(os.PathListSeparator)+os.Getenv("PATH"),
- "HOME="+dir,
- "XDG_CONFIG_HOME="+configDir,
- "GOPRECORDS_HOST=mymac",
- "GOPRECORDS_BASE_URL=https://example.test",
- "GOPRECORDS_RECORDS_FILE="+recordsPath,
- "GOPRECORDS_TEST_LOG="+logPath,
- "GOPRECORDS_TEST_BODY_DIR="+bodyDir,
- )
- out, err := cmd.CombinedOutput()
- if err != nil {
- t.Fatalf("fish client failed: %v\n%s", err, out)
- }
-
- logData, err := os.ReadFile(logPath)
- if err != nil {
- t.Fatal(err)
- }
- logText := string(logData)
- if got := strings.Count(logText, "Authorization: Bearer secret-token"); got != 5 {
- t.Fatalf("Authorization header count = %d, want 5\n%s", got, logText)
- }
- for _, kind := range []string{"records", "txt", "cur.txt", "os.txt", "cpuinfo.txt"} {
- if !strings.Contains(logText, "https://example.test/upload/mymac/"+kind) {
- t.Fatalf("missing upload for %s\n%s", kind, logText)
- }
- if _, err := os.Stat(filepath.Join(bodyDir, kind)); err != nil {
- t.Fatalf("missing body for %s: %v", kind, err)
- }
- }
-}
-
-func writeExecutable(t *testing.T, path, content string) {
- t.Helper()
- if err := os.WriteFile(path, []byte(content), 0o755); err != nil {
- t.Fatal(err)
- }
-}