Skip to content

Commit 1ff7665

Browse files
committed
docs: refresh README and add installers
1 parent 10d3620 commit 1ff7665

10 files changed

Lines changed: 401 additions & 82 deletions

File tree

.goreleaser.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ universal_binaries:
2121
archives:
2222
- formats: [tar.gz]
2323
name_template: "money_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
24+
format_overrides:
25+
- goos: windows
26+
formats: [zip]
2427

2528
checksum:
2629
name_template: "checksums.txt"
@@ -66,10 +69,9 @@ release:
6669
header: |
6770
## Installation
6871
69-
**Homebrew (macOS):**
72+
**Homebrew Cask (macOS/Linux):**
7073
```
71-
brew tap thedavidweng/tap
72-
brew install money
74+
brew install --cask thedavidweng/tap/money
7375
```
7476
7577
**Go:**

README.md

Lines changed: 41 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,40 @@ Existing personal finance tools either lock data behind a paid SaaS, embed opini
3434

3535
## Getting Started
3636

37-
👉 **New to money?** Read the full [Getting Started guide](docs/GETTING_STARTED.md) for step-by-step installation, setup, and pricing details.
37+
New to `money`? Read the full [Getting Started guide](docs/GETTING_STARTED.md) for step-by-step setup and pricing details.
3838

3939
### Quick Start
4040

4141
```bash
42-
# Install via Homebrew Cask (macOS/Linux)
43-
brew install --cask thedavidweng/tap/money
44-
45-
# Or install via Go (macOS/Linux/cross-platform)
46-
go install github.com/thedavidweng/money/cmd/money@latest
42+
# macOS/Linux
43+
curl -fsSL https://raw.githubusercontent.com/thedavidweng/money/main/install.sh | sh
4744

48-
# Initialize configuration and encrypted database (interactive)
4945
money setup
50-
51-
# Link your bank and sync data
5246
money link
5347
money sync
54-
55-
# Query your local data
5648
money accounts list --json
5749
money transactions search "Costco" --json
5850
```
5951

52+
The installer detects Homebrew automatically and uses the cask when available. Otherwise it downloads the release binary to `~/.local/bin`.
53+
54+
<details>
55+
<summary>Other installation methods</summary>
56+
57+
**Windows PowerShell:**
58+
59+
```powershell
60+
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/thedavidweng/money/main/install.ps1 | iex"
61+
```
62+
63+
The latest release must include a Windows archive for this installer to complete. If it does not, the script fails explicitly and points you to `go install`.
64+
65+
**Homebrew Cask (macOS/Linux):**
66+
67+
```bash
68+
brew install --cask thedavidweng/tap/money
69+
```
70+
6071
If you installed an older Homebrew formula release, migrate to the cask:
6172

6273
```bash
@@ -66,7 +77,15 @@ brew install --cask thedavidweng/tap/money
6677
money version
6778
```
6879

69-
Your local `~/.money` config, secrets, and database are not removed by uninstalling the old formula.
80+
**Go:**
81+
82+
```bash
83+
go install github.com/thedavidweng/money/cmd/money@latest
84+
```
85+
86+
**Manual download:** grab the archive for your platform from the [latest GitHub Release](https://github.com/thedavidweng/money/releases/latest), extract it, and place the `money` binary on your `PATH`.
87+
88+
</details>
7089

7190
Try it without real credentials:
7291

@@ -75,70 +94,20 @@ money demo accounts list --json
7594
money demo transactions search "coffee" --json
7695
```
7796

78-
## Commands
97+
### Uninstall
7998

80-
```text
81-
# Getting Started
82-
money setup Initialize configuration and encrypted database
83-
money doctor Check configuration and system health (--fix, --dry-run)
84-
money demo <command> Run against non-persistent sample data
85-
86-
# Data Queries
87-
money accounts list List financial accounts
88-
money accounts create-manual Create a local manual account
89-
money transactions list List transactions with filters
90-
money transactions search Search transactions by text
91-
money tx Alias for transactions
92-
money categories list List transaction categories
93-
money tags list List transaction tags
94-
money recurring list List recurring transactions
95-
money investments holdings List investment holdings
96-
money investments securities List investment securities
97-
money liabilities list List liabilities
98-
money items list List linked provider items
99-
money items get <id> Get a linked provider item
100-
money items rename <id> <name> Rename a provider item alias
101-
money items remove <id> Remove a linked provider item with cascade delete
102-
money import <source> <file> Import data from external sources (source: monarch, csv)
103-
money cashflow Show cashflow summary by period
104-
money net-worth Show net worth breakdown
105-
106-
# Budgets & Rules
107-
money budgets list List budgets
108-
money budgets create Create a budget
109-
money budgets get <id> Get budget details with categories
110-
money budgets delete <id> Delete a budget
111-
money budgets categories create Add a category to a budget
112-
money budgets categories delete Remove a category from a budget
113-
money rules list List transaction rules
114-
money rules create Create a transaction rule
115-
money rules delete <id> Delete a transaction rule
116-
money rules apply Apply rules to transactions
117-
118-
# Provider Management
119-
money link Link a financial institution
120-
money providers configure <provider> Configure provider credentials
121-
money plaid login Sign in to Plaid Dashboard and fetch API keys
122-
money plaid logout Remove Plaid Dashboard auth; keep API keys
123-
money plaid sandbox link Create and store a Plaid Sandbox Provider Item
124-
money providers plaid link Link a Plaid Provider Item
125-
money providers bridge link Link a Bridge Provider Item
126-
money sync Sync linked provider data (supports --start-date/--end-date)
127-
128-
# Utilities
129-
money feedback Open the project GitHub issues page
130-
money version Print version
131-
```
99+
```bash
100+
# Homebrew Cask
101+
brew uninstall --cask thedavidweng/tap/money
132102

133-
### Global Flags
103+
# install.sh
104+
curl -fsSL https://raw.githubusercontent.com/thedavidweng/money/main/install.sh | sh -s uninstall
134105

135-
```text
136-
--config string config file path
137-
--profile string configuration profile (default "default")
138-
-j, --json write a JSON envelope to stdout
106+
# Go
107+
rm "$(go env GOPATH)/bin/money"
139108
```
140109

141-
Read commands and provisional sync diagnostics support `--json` for machine-readable output. Manual write operations require `--dry-run` or `--confirm`.
110+
Your local `~/.money` config, secrets, and database are not removed by uninstalling.
142111

143112
## Architecture
144113

@@ -173,6 +142,7 @@ Read commands use local data only. Sync is the explicit boundary where outbound
173142
| Document | Purpose |
174143
|----------|---------|
175144
| [`docs/GETTING_STARTED.md`](docs/GETTING_STARTED.md) | Install, setup, and pricing guide |
145+
| [`docs/COMMANDS.md`](docs/COMMANDS.md) | Command inventory and global flags |
176146
| [`docs/PRD.md`](docs/PRD.md) | Product requirements |
177147
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | Module boundaries and data flow |
178148
| [`docs/CONTRACTS.md`](docs/CONTRACTS.md) | Current CLI JSON contracts |

docs/COMMANDS.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Commands
2+
3+
## Getting Started
4+
5+
```text
6+
money setup Initialize configuration and encrypted database
7+
money doctor Check configuration and system health (--fix, --dry-run)
8+
money demo <command> Run against non-persistent sample data
9+
```
10+
11+
## Data Queries
12+
13+
```text
14+
money accounts list List financial accounts
15+
money accounts create-manual Create a local manual account
16+
money transactions list List transactions with filters
17+
money transactions search Search transactions by text
18+
money tx Alias for transactions
19+
money categories list List transaction categories
20+
money tags list List transaction tags
21+
money recurring list List recurring transactions
22+
money investments holdings List investment holdings
23+
money investments securities List investment securities
24+
money liabilities list List liabilities
25+
money items list List linked provider items
26+
money items get <id> Get a linked provider item
27+
money items rename <id> <name> Rename a provider item alias
28+
money items remove <id> Remove a linked provider item with cascade delete
29+
money import <source> <file> Import data from external sources (source: monarch, csv)
30+
money cashflow Show cashflow summary by period
31+
money net-worth Show net worth breakdown
32+
```
33+
34+
## Budgets and Rules
35+
36+
```text
37+
money budgets list List budgets
38+
money budgets create Create a budget
39+
money budgets get <id> Get budget details with categories
40+
money budgets delete <id> Delete a budget
41+
money budgets categories create Add a category to a budget
42+
money budgets categories delete Remove a category from a budget
43+
money rules list List transaction rules
44+
money rules create Create a transaction rule
45+
money rules delete <id> Delete a transaction rule
46+
money rules apply Apply rules to transactions
47+
```
48+
49+
## Provider Management
50+
51+
```text
52+
money link Link a financial institution
53+
money providers configure <provider> Configure provider credentials
54+
money plaid login Sign in to Plaid Dashboard and fetch API keys
55+
money plaid logout Remove Plaid Dashboard auth; keep API keys
56+
money plaid sandbox link Create and store a Plaid Sandbox Provider Item
57+
money providers plaid link Link a Plaid Provider Item
58+
money providers bridge link Link a Bridge Provider Item
59+
money sync Sync linked provider data (supports --start-date/--end-date)
60+
```
61+
62+
## Utilities
63+
64+
```text
65+
money feedback Open the project GitHub issues page
66+
money version Print version
67+
money completion Generate shell completions
68+
```
69+
70+
## Global Flags
71+
72+
```text
73+
--config string config file path
74+
--profile string configuration profile (default "default")
75+
-j, --json write a JSON envelope to stdout
76+
```
77+
78+
Read commands and provisional sync diagnostics support `--json` for machine-readable output. Manual write operations require `--dry-run` or `--confirm`.

docs/GETTING_STARTED.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,22 @@
22

33
## Install
44

5+
### macOS / Linux (install script)
6+
7+
```bash
8+
curl -fsSL https://raw.githubusercontent.com/thedavidweng/money/main/install.sh | sh
9+
```
10+
11+
The installer detects Homebrew automatically and uses the cask when available. Otherwise it downloads the release binary to `~/.local/bin`.
12+
13+
### Windows PowerShell
14+
15+
```powershell
16+
powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/thedavidweng/money/main/install.ps1 | iex"
17+
```
18+
19+
The latest release must include a Windows archive for this installer to complete. If it does not, the script fails explicitly and points you to `go install`.
20+
521
### macOS / Linux (Homebrew Cask)
622

723
```bash
@@ -31,7 +47,7 @@ Make sure `$GOPATH/bin` (usually `$HOME/go/bin`) is in your `PATH`.
3147

3248
### Pre-built binaries
3349

34-
Download the latest release for your platform from [GitHub Releases](https://github.com/thedavidweng/money/releases), unzip the archive, and move the `money` binary to a directory in your `PATH`.
50+
Download the latest release for your platform from [GitHub Releases](https://github.com/thedavidweng/money/releases), extract the archive, and move the `money` binary to a directory in your `PATH`.
3551

3652
---
3753

install.ps1

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# money installer for Windows
2+
# Usage: powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/thedavidweng/money/main/install.ps1 | iex"
3+
4+
$ErrorActionPreference = "Stop"
5+
$Repo = "thedavidweng/money"
6+
$Binary = "money"
7+
8+
function Step($msg) { Write-Host "==> $msg" }
9+
function Die($msg) { Write-Error "ERROR: $msg"; exit 1 }
10+
11+
$arch = if ([Environment]::Is64BitOperatingSystem) {
12+
if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
13+
} else {
14+
Die "32-bit Windows is not supported."
15+
}
16+
17+
$platformLabel = "windows/$arch"
18+
19+
function Resolve-Version {
20+
$resp = Invoke-RestMethod -Uri "https://api.github.com/repos/$Repo/releases/latest"
21+
return $resp.tag_name
22+
}
23+
24+
function Install-Money {
25+
Step "Installing money ($platformLabel)"
26+
27+
$version = Resolve-Version
28+
Step "Latest version: $version"
29+
30+
$assetVersion = $version -replace "^v", ""
31+
$asset = "${Binary}_${assetVersion}_windows_${arch}.zip"
32+
$url = "https://github.com/$Repo/releases/download/$version/$asset"
33+
34+
$installDir = if ($env:MONEY_INSTALL_DIR) { $env:MONEY_INSTALL_DIR } else {
35+
Join-Path $env:LOCALAPPDATA "money\bin"
36+
}
37+
38+
$tmpDir = Join-Path $env:TEMP "money-install-$([guid]::NewGuid().ToString('N').Substring(0,8))"
39+
New-Item -ItemType Directory -Path $tmpDir -Force | Out-Null
40+
New-Item -ItemType Directory -Path $installDir -Force | Out-Null
41+
42+
try {
43+
Step "Downloading $asset"
44+
$archivePath = Join-Path $tmpDir $asset
45+
try {
46+
Invoke-WebRequest -Uri $url -OutFile $archivePath -UseBasicParsing
47+
} catch {
48+
Die "The latest release does not provide $asset. Publish a Windows archive or install with Go: go install github.com/thedavidweng/money/cmd/money@latest"
49+
}
50+
51+
Step "Installing to $installDir"
52+
Expand-Archive -Path $archivePath -DestinationPath $tmpDir -Force
53+
$exe = Join-Path $tmpDir "${Binary}.exe"
54+
if (-not (Test-Path $exe)) {
55+
Die "Could not find $Binary.exe in archive."
56+
}
57+
Copy-Item $exe (Join-Path $installDir "${Binary}.exe") -Force
58+
59+
$userPath = [Environment]::GetEnvironmentVariable("Path", "User")
60+
if ($userPath -notlike "*$installDir*") {
61+
[Environment]::SetEnvironmentVariable("Path", "$installDir;$userPath", "User")
62+
$env:Path = "$installDir;$env:Path"
63+
Step "Added $installDir to user PATH"
64+
}
65+
66+
$versionOutput = & (Join-Path $installDir "${Binary}.exe") version 2>$null
67+
Step "Installed $versionOutput"
68+
} finally {
69+
Remove-Item -Path $tmpDir -Recurse -Force -ErrorAction SilentlyContinue
70+
}
71+
}
72+
73+
function Uninstall-Money {
74+
$installDir = if ($env:MONEY_INSTALL_DIR) { $env:MONEY_INSTALL_DIR } else {
75+
Join-Path $env:LOCALAPPDATA "money\bin"
76+
}
77+
$exe = Join-Path $installDir "${Binary}.exe"
78+
if (Test-Path $exe) {
79+
Step "Removing $exe"
80+
Remove-Item $exe -Force
81+
}
82+
Step "Uninstalled. Local config, secrets, and database remain in $env:USERPROFILE\.money\"
83+
}
84+
85+
if ($args.Count -gt 0 -and $args[0] -eq "uninstall") {
86+
Uninstall-Money
87+
} else {
88+
Install-Money
89+
Write-Host ""
90+
Step "Run 'money setup' to get started."
91+
Step "Run 'money --help' to see available commands."
92+
}

0 commit comments

Comments
 (0)