From 80436aa8a109beaace6dd164d91229b1b6ba41b9 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 2 May 2026 17:47:49 +0300 Subject: Revert "Add Darwin goprecords upload client for task i" This reverts commit 59fc6374d16c22408f50478d82fba19feab14665. --- docs/upload-client.md | 97 +--------------------- internal/cli/upload_client_darwin_script_test.go | 101 ----------------------- 2 files changed, 1 insertion(+), 197 deletions(-) delete mode 100644 internal/cli/upload_client_darwin_script_test.go 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 - - - - - Label - org.buetow.goprecords-upload - ProgramArguments - - /opt/homebrew/bin/fish - /Users/paul/.local/bin/goprecords-upload-client-darwin.fish - - EnvironmentVariables - - GOPRECORDS_HOST - mymac - PATH - /opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin - - StartInterval - 3600 - StandardOutPath - /tmp/goprecords-upload.log - StandardErrorPath - /tmp/goprecords-upload.err - RunAtLoad - - - -``` - -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) - } -} -- cgit v1.2.3