Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 31 additions & 7 deletions .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
name: Benchmark

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_call:

permissions:
contents: write
pull-requests: write
pages: write
id-token: write

jobs:
benchmark:
name: Run Benchmarks
runs-on: ubuntu-latest
outputs:
has_benchmarks: ${{ steps.check_results.outputs.has_benchmarks }}
steps:
- name: Checkout
uses: actions/checkout@v6
Expand All @@ -25,8 +26,6 @@ jobs:

- name: Run benchmarks
run: |
# Ensure we only run benchmarks and output in the format the action expects
# If no benchmarks exist yet, this will create an empty file or fail
go test -bench=. -benchmem -run=^$ ./... | tee benchmark.txt || true

- name: Check if benchmark results exist
Expand All @@ -53,7 +52,7 @@ jobs:

- name: Store benchmark result
uses: benchmark-action/github-action-benchmark@v1.20.7
if: steps.check_results.outputs.has_benchmarks == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main'
if: steps.check_results.outputs.has_benchmarks == 'true' && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_call')
with:
name: Go Benchmark
tool: 'go'
Expand All @@ -71,3 +70,28 @@ jobs:
github-token: ${{ secrets.GITHUB_TOKEN }}
auto-push: false
comment-always: true

- name: Checkout gh-pages branch
if: steps.check_results.outputs.has_benchmarks == 'true' && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_call')
uses: actions/checkout@v6
with:
ref: gh-pages
path: ./gh-pages

- name: Upload artifact
if: steps.check_results.outputs.has_benchmarks == 'true' && ((github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_call')
uses: actions/upload-pages-artifact@v3
with:
path: ./gh-pages

deploy:
needs: benchmark
if: needs.benchmark.outputs.has_benchmarks == 'true' && (github.event_name == 'workflow_call' || (github.event_name == 'push' && github.ref == 'refs/heads/main'))
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
28 changes: 28 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_call:

permissions:
Expand Down Expand Up @@ -44,6 +46,26 @@ jobs:
go-version: '1.24'

- name: Run Tests
run: |
CORE_PKGS="./internal/... ./pkg/store/... ./pkg/log/... ./pkg/ui/themes/... ./pkg/ui/animations/... ./pkg/ui/components/... ./pkg/ui/layout/... ./pkg/ui/markdown/... ./pkg/ui/styles/..."
CLI_PKGS="./pkg/cli/..."

go test -v -race $CORE_PKGS
go test -v -p 1 $CLI_PKGS

test-coverage:
name: Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version: '1.24'

- name: Run Tests with Coverage
run: |
CORE_PKGS="./internal/... ./pkg/store/... ./pkg/log/... ./pkg/ui/themes/... ./pkg/ui/animations/... ./pkg/ui/components/... ./pkg/ui/layout/... ./pkg/ui/markdown/... ./pkg/ui/styles/..."
CLI_PKGS="./pkg/cli/..."
Expand Down Expand Up @@ -75,3 +97,9 @@ jobs:

- name: Build
run: go build -v ./cmd/arc

benchmark:
name: Benchmark
needs: [test, test-coverage]
uses: ./.github/workflows/benchmark.yml
secrets: inherit
77 changes: 51 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,53 @@ arc completion powershell # Generate PowerShell completion
arc completion --interactive # Interactive setup wizard
```

### Environment Initialization
### Workspace Management

A.R.C. workspaces let you declare your desired infrastructure state in `arc.yaml` and generate complete Docker Compose configurations automatically.

```bash
# Initialize a new workspace
arc workspace init

# Generate configs and launch the platform
arc workspace run

# View workspace status
arc workspace info

# View operation history
arc workspace history
```

**Quick Start:**
```bash
# 1. Create a new workspace
arc workspace init ./my-project
cd my-project

# 2. Edit arc.yaml to enable features
# features:
# voice: true
# security: true
# observability: true

# 3. Generate and run
arc workspace run --detached
```

**Workspace Commands:**

| Command | Description |
|---------|-------------|
| `arc workspace init [path]` | Initialize a new workspace |
| `arc workspace run` | Generate configs and launch platform |
| `arc workspace run --generate-only` | Generate configs without launching |
| `arc workspace info` | Show workspace state and configuration |
| `arc workspace history` | Show operation history |

See [Workspace Quickstart](docs/WORKSPACE_QUICKSTART.md) for detailed documentation.

### Environment Initialization (Legacy)

The `arc init` command provides an interactive wizard to set up your A.R.C. development environment:

Expand All @@ -178,32 +224,11 @@ arc init
```

**Features:**
- 🎮 **Interactive TUI** - Beautiful terminal interface with keyboard navigation
- 🐉 **Dragon Ball Super Tiers** - Choose from three power levels:
- **Super Saiyan**: Standard developer stack (Traefik, Kratos, Postgres, LiveKit)
- **Super Saiyan Blue**: Advanced custom orchestration *(Coming Soon)*
- **Ultra Instinct**: God-mode with full observability *(Coming Soon)*
- ⌨️ **Keyboard Navigation** - Use arrow keys (←/→) or vim keys (h/l) to navigate
- 📁 **Custom Installation Path** - Specify where to initialize your environment
- ⚡ **Quick Setup** - Complete environment configuration in seconds

**Example Session:**
```bash
$ arc init

# Interactive wizard appears:
# 1. Navigate between tier cards using ← → or h l keys
# 2. Press Enter to select a tier
# 3. Enter your desired installation path (default: ./)
# 4. Watch the animated setup progress
# 5. Done! Your environment is ready

✓ Setup Complete!
Stack: Super Saiyan
Location: ./my-arc-project
```
- Interactive TUI with keyboard navigation
- Multiple tier options for different use cases
- Quick environment setup

**Note**: The init wizard currently handles the interactive setup flow. Actual file generation and Docker configuration will be available in a future release.
**Note**: For workspace-based development, use `arc workspace init` instead.

**Available Themes:**
- `cyan-purple` (default) - Modern & Professional gradient
Expand Down
Binary file modified arc
Binary file not shown.
Loading
Loading