Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
129 commits
Select commit Hold shift + click to select a range
8255c8e
Go Module and Directory Layout
itspriddle Mar 14, 2026
7baad4b
Version Package with ldflags Injection
itspriddle Mar 14, 2026
2fa01f4
Root Command with Global Flags
itspriddle Mar 14, 2026
6b702e3
Makefile with Build Targets
itspriddle Mar 14, 2026
e42099f
Linter Configuration
itspriddle Mar 14, 2026
1bbbf0e
GitHub Actions CI Workflow
itspriddle Mar 14, 2026
7da962f
GoReleaser Configuration
itspriddle Mar 14, 2026
fd3ce44
Unit Tests for Scaffold
itspriddle Mar 14, 2026
fdc23e0
Update .gitignore for Go
itspriddle Mar 14, 2026
afe53d0
Config Directory Resolution
itspriddle Mar 14, 2026
56862d1
Config Loading and Saving
itspriddle Mar 14, 2026
5309175
Credentials Loading and Saving
itspriddle Mar 14, 2026
5088c8e
API Error Types
itspriddle Mar 14, 2026
b61b96d
HTTP API Client
itspriddle Mar 14, 2026
cfff707
Output Format Detection
itspriddle Mar 14, 2026
d42412f
Output Helpers
itspriddle Mar 14, 2026
d6c5e6c
App Context and PersistentPreRunE
itspriddle Mar 14, 2026
d2d72d7
Auth Login Command
itspriddle Mar 14, 2026
b37f962
Auth Logout Command
itspriddle Mar 14, 2026
b6afff0
Auth Status Command
itspriddle Mar 14, 2026
0b9d75b
Command Helpers
itspriddle Mar 14, 2026
abfff07
Site Commands
itspriddle Mar 14, 2026
4662aec
Environment Commands
itspriddle Mar 14, 2026
e44a995
Deploy Commands
itspriddle Mar 14, 2026
d402e4d
SSL Commands
itspriddle Mar 14, 2026
9462207
PHP Versions Command
itspriddle Mar 14, 2026
62bbc92
Event List Command
itspriddle Mar 14, 2026
fc4bd07
Account Show Command
itspriddle Mar 14, 2026
41bfff9
Account SSH Key Commands
itspriddle Mar 14, 2026
aca40e8
Account API Key Commands
itspriddle Mar 14, 2026
dde1064
Account Global Secret Commands
itspriddle Mar 14, 2026
4641df2
Webhook Commands
itspriddle Mar 14, 2026
2a77def
Backup List, Show, and Create Commands
itspriddle Mar 14, 2026
1667957
Backup Download Commands
itspriddle Mar 14, 2026
8c14ad7
Restore Commands
itspriddle Mar 14, 2026
04ebae5
WAF Rate Limit Commands
itspriddle Mar 14, 2026
9adbc51
WAF IP and Referrer List Commands
itspriddle Mar 14, 2026
ebfbe13
Database Import Session Commands
itspriddle Mar 14, 2026
7d9f589
Database Export Commands
itspriddle Mar 14, 2026
272a288
Archive Import Command
itspriddle Mar 14, 2026
f8f458f
MCP Setup Command
itspriddle Mar 14, 2026
1bb3d73
M3 Integration Tests
itspriddle Mar 14, 2026
c96ae5c
E2E Test Infrastructure Setup
itspriddle Mar 14, 2026
b2481ed
Auth E2E Tests
itspriddle Mar 14, 2026
cf92344
Site E2E Tests
itspriddle Mar 14, 2026
00c0b15
Environment E2E Tests
itspriddle Mar 14, 2026
9234437
Deploy E2E Tests
itspriddle Mar 14, 2026
8e6e367
WAF E2E Tests
itspriddle Mar 14, 2026
aa760fc
Account E2E Tests
itspriddle Mar 14, 2026
86e08db
Remaining Resource E2E Tests
itspriddle Mar 14, 2026
29d1ace
Output and Global Flag E2E Tests
itspriddle Mar 14, 2026
1a96fc3
Makefile and CI Integration
itspriddle Mar 14, 2026
d972bb4
Remove rust code
itspriddle Mar 14, 2026
e212b9e
Fixup CI
itspriddle Mar 14, 2026
710ca6d
Update README/man page
itspriddle Mar 14, 2026
0a39492
Add gojq Dependency
itspriddle Mar 15, 2026
bd1ea31
Create output.Writer Struct
itspriddle Mar 15, 2026
d07a419
Wire Up --jq Flag and Add Output to App
itspriddle Mar 15, 2026
9eb3d3d
Migrate event.go to app.Output
itspriddle Mar 15, 2026
b479b56
Migrate php_version.go to app.Output
itspriddle Mar 15, 2026
d20c44d
Migrate account.go to app.Output
itspriddle Mar 15, 2026
dfae35e
Migrate archive.go to app.Output
itspriddle Mar 15, 2026
fdfaa22
Migrate site.go to app.Output
itspriddle Mar 15, 2026
628f6d5
Migrate env.go to app.Output
itspriddle Mar 15, 2026
88fb81e
Migrate deploy.go to app.Output
itspriddle Mar 15, 2026
7b1dcd2
Migrate backup.go to app.Output
itspriddle Mar 15, 2026
c087944
Migrate restore.go to app.Output
itspriddle Mar 15, 2026
51c58b6
Migrate webhook.go to app.Output
itspriddle Mar 15, 2026
467a88d
Migrate account_api_key.go to app.Output
itspriddle Mar 15, 2026
89e9fe8
Migrate account_secret.go to app.Output
itspriddle Mar 15, 2026
891c3da
Migrate account_ssh_key.go to app.Output
itspriddle Mar 15, 2026
1f436f4
Migrate env_secret.go to app.Output
itspriddle Mar 15, 2026
53f12c0
Migrate env_db.go to app.Output
itspriddle Mar 15, 2026
63f9dbd
Migrate site_ssh_key.go to app.Output
itspriddle Mar 15, 2026
16bb04a
Migrate waf_rate_limit.go to app.Output
itspriddle Mar 15, 2026
0dee520
Migrate waf_blocked_ip.go to app.Output
itspriddle Mar 15, 2026
cc51c88
Migrate waf_blocked_referrer.go to app.Output
itspriddle Mar 15, 2026
02b46a9
Migrate waf_allowed_referrer.go to app.Output
itspriddle Mar 15, 2026
cc5856c
Migrate ssl.go to app.Output
itspriddle Mar 15, 2026
fe4a1dd
Migrate db_export.go to app.Output
itspriddle Mar 15, 2026
76eff17
Migrate db_import_session.go to app.Output
itspriddle Mar 15, 2026
56d93f2
Migrate backup_download.go to app.Output
itspriddle Mar 15, 2026
a24adb5
Migrate auth.go to app.Output
itspriddle Mar 15, 2026
4193c72
Remove app.Format Field
itspriddle Mar 15, 2026
5ca0c53
Update Documentation
itspriddle Mar 15, 2026
ada6046
Improve auth, fix api spec issues
itspriddle Mar 15, 2026
f2e5510
Download openapi spec if needed
itspriddle Mar 15, 2026
a703175
Add go-keyring Dependency
itspriddle Mar 15, 2026
c057f9a
Replace Credential Storage with Keyring
itspriddle Mar 15, 2026
faa78f7
Update Login Command
itspriddle Mar 15, 2026
b1882b8
Update Logout Command
itspriddle Mar 15, 2026
a82c4f0
Update Token Resolution in Root Command
itspriddle Mar 15, 2026
9779804
Clean Up Old Credential File References
itspriddle Mar 15, 2026
51bcd24
Fixup keyring in tests
itspriddle Mar 15, 2026
a6f6342
Update cmd help, add manpage test
itspriddle Mar 15, 2026
635f036
Add completion notes
itspriddle Mar 15, 2026
fe0450d
Update goreleaser
itspriddle Mar 15, 2026
3f42a89
Add AI helpers
itspriddle Mar 15, 2026
d9e1682
Surface snapshot generator
itspriddle Mar 15, 2026
d31ef4c
Surface snapshot test and committed `.surface` file
itspriddle Mar 15, 2026
903af1d
SKILL.md agent reference document
itspriddle Mar 15, 2026
f51fe00
`vector skill` command — print skill
itspriddle Mar 15, 2026
adcc0dc
`vector skill install` command
itspriddle Mar 15, 2026
6668c89
`vector skill uninstall` command
itspriddle Mar 15, 2026
d3a8488
Auto-refresh skill on version change
itspriddle Mar 15, 2026
5a9a86f
Register skill command and regenerate surface
itspriddle Mar 15, 2026
1e4c1c6
Skill drift detection script
itspriddle Mar 15, 2026
0ab1677
Documentation updates
itspriddle Mar 16, 2026
defe85b
Shared Wait Infrastructure
itspriddle Mar 16, 2026
6d882a4
Alternate Screen TTY Display
itspriddle Mar 16, 2026
6aaf3aa
Deploy Trigger --wait
itspriddle Mar 16, 2026
d77fbfd
Deploy Rollback --wait
itspriddle Mar 16, 2026
66a7477
Restore Create --wait
itspriddle Mar 16, 2026
154b75c
Site Create --wait
itspriddle Mar 16, 2026
470555d
Wait Infrastructure Tests
itspriddle Mar 16, 2026
a2fcfaa
Command-Specific Wait Tests
itspriddle Mar 16, 2026
7840b72
Surface, Skill, and Manpage Updates
itspriddle Mar 16, 2026
baf229b
Add Brewfile
itspriddle Mar 17, 2026
b1b7856
Update release workflow
itspriddle Mar 17, 2026
d02adab
Appease linter
itspriddle Mar 17, 2026
21c1fed
Update Makefile, AGENTS.md
itspriddle Mar 17, 2026
9af37a2
Run go fmt
itspriddle Mar 17, 2026
207207c
Run go tidy
itspriddle Mar 17, 2026
a51d13f
Download openapi spec from GitHub
itspriddle Mar 17, 2026
aaec828
Set GH_TOKEN for CI checks
itspriddle Mar 17, 2026
3de8bbc
Update CI workflow
itspriddle Mar 17, 2026
8eaae0c
Split quality CI tasks out
itspriddle Mar 17, 2026
ae9e0ba
Update CI workflow
itspriddle Mar 18, 2026
ce6a7a9
Update CI workflow
itspriddle Mar 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .claude/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@../AGENTS.md
4 changes: 2 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
version: 2
updates:
- package-ecosystem: "cargo"
- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "11:00"
timezone: "America/New_York"
groups:
cargo:
go-modules:
patterns:
- "*"

Expand Down
141 changes: 103 additions & 38 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,51 +10,116 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always
permissions:
contents: read

jobs:
lint:
name: Lint
quality:
name: Code Quality
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
cache: true

- name: Install golangci-lint
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9.2.0
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- run: cargo fmt --all -- --check
- run: cargo clippy -- -D warnings
version: v2.11.3
args: --help

- name: Quality - formatting
run: make fmt-check

- name: Quality - go vet
run: make vet

- name: Quality - linting
run: make lint

- name: Quality - go tidy
run: make tidy-check

test:
name: Test
- name: Regressions - CLI surface changes
run: make check-surface

- name: Regressions - AI skill drift
run: make check-skill-drift

unit-tests:
name: Unit Tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo test

build:
name: Build / ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
artifact: vector
- os: macos-latest
artifact: vector
- os: windows-latest
artifact: vector.exe
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
cache: true

- name: Tests - go unit tests
run: make test

integration-tests:
name: Integration Tests
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --release
- uses: actions/upload-artifact@v7
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: go.mod
cache: true

- name: Set up Node.js
uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
with:
name: vector-${{ matrix.os }}
path: target/release/${{ matrix.artifact }}
retention-days: 3
node-version: '24'

- name: Install Prism
run: npm install -g @stoplight/prism-cli

- name: Cache BATS
id: cache-bats
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: /usr/local/libexec/bats-core
key: bats-1.13.0

- name: Install BATS
if: steps.cache-bats.outputs.cache-hit != 'true'
run: |
git clone --depth 1 --branch v1.13.0 https://github.com/bats-core/bats-core.git /tmp/bats-core
sudo /tmp/bats-core/install.sh /usr/local

- name: Tests - BATS e2e tests
env:
GH_TOKEN: ${{ github.token }}
run: make test-e2e

security:
name: Security
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

- name: Set up Go
uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
with:
go-version-file: 'go.mod'

- name: Run govulncheck
# @latest intentional — pinning delays scanning improvements and
# new Go version support for no meaningful reproducibility gain.
run: |
go install golang.org/x/vuln/cmd/govulncheck@latest
govulncheck -tags dev ./...
95 changes: 13 additions & 82 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,102 +6,33 @@ on:
- 'v*'

permissions:
actions: write
contents: write

env:
CARGO_TERM_COLOR: always

jobs:
build:
name: Build / ${{ matrix.target }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
archive: tar.gz
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
archive: tar.gz
- target: x86_64-apple-darwin
os: macos-latest
archive: tar.gz
- target: aarch64-apple-darwin
os: macos-latest
archive: tar.gz
- target: x86_64-pc-windows-msvc
os: windows-latest
archive: zip

steps:
- uses: actions/checkout@v6

- name: Install Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

- name: Install cross-compilation tools
if: matrix.target == 'aarch64-unknown-linux-gnu'
run: |
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu

- name: Build
run: cargo build --release --target ${{ matrix.target }}
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc

- name: Package (Unix)
if: matrix.os != 'windows-latest'
run: |
staging="vector-${{ matrix.target }}"
mkdir -p "$staging/man/man1"
cp target/${{ matrix.target }}/release/vector "$staging/"
cp man/man1/vector.1 "$staging/man/man1/"
tar czvf "$staging.tar.gz" -C "$staging" .
rm -rf "$staging"

- name: Package (Windows)
if: matrix.os == 'windows-latest'
run: |
cd target/${{ matrix.target }}/release
7z a ../../../vector-${{ matrix.target }}.zip vector.exe
cd ../../..

- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: vector-${{ matrix.target }}
path: vector-${{ matrix.target }}.${{ matrix.archive }}

release:
name: Release
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0

- name: Download artifacts
uses: actions/download-artifact@v8
- uses: actions/setup-go@v5
with:
path: artifacts
merge-multiple: true
go-version-file: go.mod

- name: Create release
uses: softprops/action-gh-release@v2
- uses: goreleaser/goreleaser-action@v6
with:
files: artifacts/*
generate_release_notes: true
args: release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Update homebrew tap
- name: Update Homebrew formula
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
run: |
gh workflow run bump-formula.yml \
-f version="${GITHUB_REF_NAME}" \
-f formula=vector \
-f version=${GITHUB_REF##refs/tags/} \
-f type=go \
-R built-fast/homebrew-devtools
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
19 changes: 18 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
/target
# Go build artifacts
bin/
dist/

# Go binary artifacts
*.exe
*.exe~
*.dll
*.so
*.dylib

# Downloaded specs
e2e/openapi.yaml

# OS / Editor
.DS_Store
.envrc
/.idea
/.vscode

# AI
/.claude/settings.local.json
20 changes: 20 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: "2"

run:
timeout: 3m
go: "1.26.1"

linters:
# These are enabled by default in v2, listed explicitly for clarity.
# Note: gosimple is merged into staticcheck in golangci-lint v2.
enable:
- govet
- errcheck
- staticcheck
- unused
- ineffassign
exclusions:
rules:
- path: _test\.go
linters:
- errcheck
47 changes: 47 additions & 0 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: 2

project_name: vector

builds:
- main: ./cmd/vector
binary: vector
env:
- CGO_ENABLED=0
ldflags:
- -s -w
- -X github.com/built-fast/vector-cli/internal/version.Version={{.Version}}
- -X github.com/built-fast/vector-cli/internal/version.Commit={{.Commit}}
- -X github.com/built-fast/vector-cli/internal/version.Date={{.Date}}
goos:
- darwin
- linux
- windows
goarch:
- amd64
- arm64
ignore:
- goos: windows
goarch: arm64

archives:
- formats:
- tar.gz
format_overrides:
- goos: windows
formats:
- zip
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
files:
- src: man/man1/vector.1
dst: man/man1/

checksum:
name_template: "checksums.txt"
algorithm: sha256
changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
Loading