diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-02 17:47:49 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-02 17:47:49 +0300 |
| commit | 80436aa8a109beaace6dd164d91229b1b6ba41b9 (patch) | |
| tree | c7a4e1fd6726927d3344dace8d38cda7efef706d | |
| parent | 625b53cd352aa5e13d30902c318114a3effe347b (diff) | |
Revert "Add Darwin goprecords upload client for task i"
This reverts commit 59fc6374d16c22408f50478d82fba19feab14665.
| -rw-r--r-- | docs/upload-client.md | 97 | ||||
| -rw-r--r-- | internal/cli/upload_client_darwin_script_test.go | 101 |
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) - } -} |
