Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
0591aed
Go Module and Directory Layout
itspriddle Mar 14, 2026
5a5bf6d
Version Package with ldflags Injection
itspriddle Mar 14, 2026
4712dfc
Root Command with Global Flags
itspriddle Mar 14, 2026
121b260
Makefile with Build Targets
itspriddle Mar 14, 2026
abd0fb5
Linter Configuration
itspriddle Mar 14, 2026
25c3cd7
GitHub Actions CI Workflow
itspriddle Mar 14, 2026
3fdfd1d
GoReleaser Configuration
itspriddle Mar 14, 2026
019ddc3
Unit Tests for Scaffold
itspriddle Mar 14, 2026
47b5ede
Update .gitignore for Go
itspriddle Mar 14, 2026
ce76222
Config Directory Resolution
itspriddle Mar 14, 2026
eb7c9cf
Config Loading and Saving
itspriddle Mar 14, 2026
d738d03
Credentials Loading and Saving
itspriddle Mar 14, 2026
dee0db2
API Error Types
itspriddle Mar 14, 2026
2c9fb0f
HTTP API Client
itspriddle Mar 14, 2026
78a3e56
Output Format Detection
itspriddle Mar 14, 2026
18434ec
Output Helpers
itspriddle Mar 14, 2026
f94e557
App Context and PersistentPreRunE
itspriddle Mar 14, 2026
1a73e33
Auth Login Command
itspriddle Mar 14, 2026
499bf0d
Auth Logout Command
itspriddle Mar 14, 2026
0d0f1a4
Auth Status Command
itspriddle Mar 14, 2026
7937dc7
Command Helpers
itspriddle Mar 14, 2026
fc39d93
Site Commands
itspriddle Mar 14, 2026
1c61b6c
Environment Commands
itspriddle Mar 14, 2026
e57012f
Deploy Commands
itspriddle Mar 14, 2026
c7cf7b4
SSL Commands
itspriddle Mar 14, 2026
9d52904
PHP Versions Command
itspriddle Mar 14, 2026
ab25649
Event List Command
itspriddle Mar 14, 2026
638b90f
Account Show Command
itspriddle Mar 14, 2026
29ad735
Account SSH Key Commands
itspriddle Mar 14, 2026
9a8f471
Account API Key Commands
itspriddle Mar 14, 2026
53defe3
Account Global Secret Commands
itspriddle Mar 14, 2026
515d9c1
Webhook Commands
itspriddle Mar 14, 2026
0e587c3
Backup List, Show, and Create Commands
itspriddle Mar 14, 2026
0a7cdbb
Backup Download Commands
itspriddle Mar 14, 2026
c0e325f
Restore Commands
itspriddle Mar 14, 2026
de53da9
WAF Rate Limit Commands
itspriddle Mar 14, 2026
7320354
WAF IP and Referrer List Commands
itspriddle Mar 14, 2026
655d1f0
Database Import Session Commands
itspriddle Mar 14, 2026
765d82a
Database Export Commands
itspriddle Mar 14, 2026
7feb78d
Archive Import Command
itspriddle Mar 14, 2026
c8a9187
MCP Setup Command
itspriddle Mar 14, 2026
cd3fcc4
M3 Integration Tests
itspriddle Mar 14, 2026
d07dc90
E2E Test Infrastructure Setup
itspriddle Mar 14, 2026
4dce9e1
Auth E2E Tests
itspriddle Mar 14, 2026
4dfbfe1
Site E2E Tests
itspriddle Mar 14, 2026
590497e
Environment E2E Tests
itspriddle Mar 14, 2026
7cdbfae
Deploy E2E Tests
itspriddle Mar 14, 2026
c79837d
WAF E2E Tests
itspriddle Mar 14, 2026
6b64c37
Account E2E Tests
itspriddle Mar 14, 2026
fcc973a
Remaining Resource E2E Tests
itspriddle Mar 14, 2026
acc6903
Output and Global Flag E2E Tests
itspriddle Mar 14, 2026
eb7897c
Makefile and CI Integration
itspriddle Mar 14, 2026
d46ac9c
Remove rust code
itspriddle Mar 14, 2026
596079b
Fixup CI
itspriddle Mar 14, 2026
a917e14
Update README/man page
itspriddle Mar 14, 2026
985e096
Add gojq Dependency
itspriddle Mar 15, 2026
f648470
Create output.Writer Struct
itspriddle Mar 15, 2026
09c2975
Wire Up --jq Flag and Add Output to App
itspriddle Mar 15, 2026
2366b81
Migrate event.go to app.Output
itspriddle Mar 15, 2026
4dada9e
Migrate php_version.go to app.Output
itspriddle Mar 15, 2026
7884f01
Migrate account.go to app.Output
itspriddle Mar 15, 2026
c62ff10
Migrate archive.go to app.Output
itspriddle Mar 15, 2026
f2ea783
Migrate site.go to app.Output
itspriddle Mar 15, 2026
624ff70
Migrate env.go to app.Output
itspriddle Mar 15, 2026
9579141
Migrate deploy.go to app.Output
itspriddle Mar 15, 2026
cf79dbf
Migrate backup.go to app.Output
itspriddle Mar 15, 2026
f81b79b
Migrate restore.go to app.Output
itspriddle Mar 15, 2026
3186a2e
Migrate webhook.go to app.Output
itspriddle Mar 15, 2026
5c4c96e
Migrate account_api_key.go to app.Output
itspriddle Mar 15, 2026
167537f
Migrate account_secret.go to app.Output
itspriddle Mar 15, 2026
4404ad3
Migrate account_ssh_key.go to app.Output
itspriddle Mar 15, 2026
09eafa2
Migrate env_secret.go to app.Output
itspriddle Mar 15, 2026
21ef150
Migrate env_db.go to app.Output
itspriddle Mar 15, 2026
277fc60
Migrate site_ssh_key.go to app.Output
itspriddle Mar 15, 2026
c55f06f
Migrate waf_rate_limit.go to app.Output
itspriddle Mar 15, 2026
892b77b
Migrate waf_blocked_ip.go to app.Output
itspriddle Mar 15, 2026
900031d
Migrate waf_blocked_referrer.go to app.Output
itspriddle Mar 15, 2026
240074e
Migrate waf_allowed_referrer.go to app.Output
itspriddle Mar 15, 2026
b97f982
Migrate ssl.go to app.Output
itspriddle Mar 15, 2026
36af6cd
Migrate db_export.go to app.Output
itspriddle Mar 15, 2026
feef8f8
Migrate db_import_session.go to app.Output
itspriddle Mar 15, 2026
84d38e6
Migrate backup_download.go to app.Output
itspriddle Mar 15, 2026
275486d
Migrate auth.go to app.Output
itspriddle Mar 15, 2026
d725144
Remove app.Format Field
itspriddle Mar 15, 2026
d422ebd
Update Documentation
itspriddle Mar 15, 2026
7a56a56
Improve auth, fix api spec issues
itspriddle Mar 15, 2026
f0ea786
Download openapi spec if needed
itspriddle Mar 15, 2026
f9871d7
Add go-keyring Dependency
itspriddle Mar 15, 2026
dd0ec0e
Replace Credential Storage with Keyring
itspriddle Mar 15, 2026
99df173
Update Login Command
itspriddle Mar 15, 2026
c50f75b
Update Logout Command
itspriddle Mar 15, 2026
8395b3a
Update Token Resolution in Root Command
itspriddle Mar 15, 2026
b395d2b
Clean Up Old Credential File References
itspriddle Mar 15, 2026
167b64c
Fixup keyring in tests
itspriddle Mar 15, 2026
f7b0cb3
Update cmd help, add manpage test
itspriddle Mar 15, 2026
a07cb05
Add completion notes
itspriddle Mar 15, 2026
ca04528
Update goreleaser
itspriddle Mar 15, 2026
fd8d9fe
Add AI helpers
itspriddle Mar 15, 2026
989c2c3
Surface snapshot generator
itspriddle Mar 15, 2026
8732674
Surface snapshot test and committed `.surface` file
itspriddle Mar 15, 2026
771881a
SKILL.md agent reference document
itspriddle Mar 15, 2026
5b08694
`vector skill` command — print skill
itspriddle Mar 15, 2026
80a91ac
`vector skill install` command
itspriddle Mar 15, 2026
e2fca6a
`vector skill uninstall` command
itspriddle Mar 15, 2026
9c634f8
Auto-refresh skill on version change
itspriddle Mar 15, 2026
22e4ae3
Register skill command and regenerate surface
itspriddle Mar 15, 2026
f5ed037
Skill drift detection script
itspriddle Mar 15, 2026
f15d433
Documentation updates
itspriddle Mar 16, 2026
c1ac815
Shared Wait Infrastructure
itspriddle Mar 16, 2026
dea2fbb
Alternate Screen TTY Display
itspriddle Mar 16, 2026
2df4a18
Deploy Trigger --wait
itspriddle Mar 16, 2026
6923e54
Deploy Rollback --wait
itspriddle Mar 16, 2026
6bab82c
Restore Create --wait
itspriddle Mar 16, 2026
4508339
Site Create --wait
itspriddle Mar 16, 2026
ae6fcb2
Wait Infrastructure Tests
itspriddle Mar 16, 2026
a7cb390
Command-Specific Wait Tests
itspriddle Mar 16, 2026
8fd4494
Surface, Skill, and Manpage Updates
itspriddle Mar 16, 2026
4c84e68
Add Brewfile
itspriddle Mar 17, 2026
34a691a
Update release workflow
itspriddle Mar 17, 2026
db1518e
Appease linter
itspriddle Mar 17, 2026
fd009ab
Update Makefile, AGENTS.md
itspriddle Mar 17, 2026
f023919
Run go fmt
itspriddle Mar 17, 2026
47813a3
Run go tidy
itspriddle Mar 17, 2026
28069a4
Download openapi spec from GitHub
itspriddle Mar 17, 2026
53b8009
Set GH_TOKEN for CI checks
itspriddle Mar 17, 2026
7fe8c46
Update CI workflow
itspriddle Mar 17, 2026
4227330
Split quality CI tasks out
itspriddle Mar 17, 2026
1c640e6
Update CI workflow
itspriddle Mar 18, 2026
72e77af
Update CI workflow
itspriddle Mar 18, 2026
69967f4
Support multipart uploads > 5gb
itspriddle Mar 26, 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