agentvibes 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.bmad-core/agent-teams/team-all.yaml +15 -0
- package/.bmad-core/agent-teams/team-fullstack.yaml +19 -0
- package/.bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
- package/.bmad-core/agent-teams/team-no-ui.yaml +14 -0
- package/.bmad-core/agents/analyst.md +84 -0
- package/.bmad-core/agents/architect.md +85 -0
- package/.bmad-core/agents/bmad-master.md +110 -0
- package/.bmad-core/agents/bmad-orchestrator.md +147 -0
- package/.bmad-core/agents/dev.md +81 -0
- package/.bmad-core/agents/pm.md +84 -0
- package/.bmad-core/agents/po.md +79 -0
- package/.bmad-core/agents/qa.md +87 -0
- package/.bmad-core/agents/sm.md +65 -0
- package/.bmad-core/agents/ux-expert.md +69 -0
- package/.bmad-core/checklists/architect-checklist.md +440 -0
- package/.bmad-core/checklists/change-checklist.md +184 -0
- package/.bmad-core/checklists/pm-checklist.md +372 -0
- package/.bmad-core/checklists/po-master-checklist.md +434 -0
- package/.bmad-core/checklists/story-dod-checklist.md +96 -0
- package/.bmad-core/checklists/story-draft-checklist.md +155 -0
- package/.bmad-core/core-config.yaml +22 -0
- package/.bmad-core/data/bmad-kb.md +809 -0
- package/.bmad-core/data/brainstorming-techniques.md +38 -0
- package/.bmad-core/data/elicitation-methods.md +156 -0
- package/.bmad-core/data/technical-preferences.md +5 -0
- package/.bmad-core/data/test-levels-framework.md +148 -0
- package/.bmad-core/data/test-priorities-matrix.md +174 -0
- package/.bmad-core/enhanced-ide-development-workflow.md +248 -0
- package/.bmad-core/install-manifest.yaml +230 -0
- package/.bmad-core/tasks/advanced-elicitation.md +119 -0
- package/.bmad-core/tasks/apply-qa-fixes.md +150 -0
- package/.bmad-core/tasks/brownfield-create-epic.md +162 -0
- package/.bmad-core/tasks/brownfield-create-story.md +149 -0
- package/.bmad-core/tasks/correct-course.md +72 -0
- package/.bmad-core/tasks/create-brownfield-story.md +314 -0
- package/.bmad-core/tasks/create-deep-research-prompt.md +280 -0
- package/.bmad-core/tasks/create-doc.md +103 -0
- package/.bmad-core/tasks/create-next-story.md +114 -0
- package/.bmad-core/tasks/document-project.md +345 -0
- package/.bmad-core/tasks/execute-checklist.md +88 -0
- package/.bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
- package/.bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
- package/.bmad-core/tasks/index-docs.md +175 -0
- package/.bmad-core/tasks/kb-mode-interaction.md +77 -0
- package/.bmad-core/tasks/nfr-assess.md +345 -0
- package/.bmad-core/tasks/qa-gate.md +163 -0
- package/.bmad-core/tasks/review-story.md +316 -0
- package/.bmad-core/tasks/risk-profile.md +355 -0
- package/.bmad-core/tasks/shard-doc.md +187 -0
- package/.bmad-core/tasks/test-design.md +176 -0
- package/.bmad-core/tasks/trace-requirements.md +266 -0
- package/.bmad-core/tasks/validate-next-story.md +136 -0
- package/.bmad-core/templates/architecture-tmpl.yaml +651 -0
- package/.bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
- package/.bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
- package/.bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
- package/.bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
- package/.bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
- package/.bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
- package/.bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
- package/.bmad-core/templates/market-research-tmpl.yaml +253 -0
- package/.bmad-core/templates/prd-tmpl.yaml +203 -0
- package/.bmad-core/templates/project-brief-tmpl.yaml +222 -0
- package/.bmad-core/templates/qa-gate-tmpl.yaml +103 -0
- package/.bmad-core/templates/story-tmpl.yaml +138 -0
- package/.bmad-core/user-guide.md +577 -0
- package/.bmad-core/utils/bmad-doc-template.md +327 -0
- package/.bmad-core/utils/workflow-management.md +71 -0
- package/.bmad-core/workflows/brownfield-fullstack.yaml +298 -0
- package/.bmad-core/workflows/brownfield-service.yaml +188 -0
- package/.bmad-core/workflows/brownfield-ui.yaml +198 -0
- package/.bmad-core/workflows/greenfield-fullstack.yaml +241 -0
- package/.bmad-core/workflows/greenfield-service.yaml +207 -0
- package/.bmad-core/workflows/greenfield-ui.yaml +236 -0
- package/.bmad-core/working-in-the-brownfield.md +606 -0
- package/.claude/commands/BMad/analyst.md +88 -0
- package/.claude/commands/BMad/architect.md +89 -0
- package/.claude/commands/BMad/bmad-master.md +114 -0
- package/.claude/commands/BMad/bmad-orchestrator.md +151 -0
- package/.claude/commands/BMad/dev.md +85 -0
- package/.claude/commands/BMad/pm.md +88 -0
- package/.claude/commands/BMad/po.md +83 -0
- package/.claude/commands/BMad/qa.md +91 -0
- package/.claude/commands/BMad/sm.md +69 -0
- package/.claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
- package/.claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
- package/.claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
- package/.claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
- package/.claude/commands/BMad/tasks/correct-course.md +76 -0
- package/.claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
- package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
- package/.claude/commands/BMad/tasks/create-doc.md +107 -0
- package/.claude/commands/BMad/tasks/create-next-story.md +118 -0
- package/.claude/commands/BMad/tasks/document-project.md +349 -0
- package/.claude/commands/BMad/tasks/execute-checklist.md +92 -0
- package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
- package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
- package/.claude/commands/BMad/tasks/index-docs.md +179 -0
- package/.claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
- package/.claude/commands/BMad/tasks/nfr-assess.md +349 -0
- package/.claude/commands/BMad/tasks/qa-gate.md +167 -0
- package/.claude/commands/BMad/tasks/review-story.md +320 -0
- package/.claude/commands/BMad/tasks/risk-profile.md +359 -0
- package/.claude/commands/BMad/tasks/shard-doc.md +191 -0
- package/.claude/commands/BMad/tasks/test-design.md +180 -0
- package/.claude/commands/BMad/tasks/trace-requirements.md +270 -0
- package/.claude/commands/BMad/tasks/validate-next-story.md +140 -0
- package/.claude/commands/BMad/ux-expert.md +73 -0
- package/.mcp-minimal.json +27 -0
- package/linkedin/vibe-coding-and-pulseaudio.md +121 -0
- package/mcp-server/agentvibes.db +0 -0
- package/package.json +1 -1
- package/scripts/audio-tunnel.config +17 -0
- package/sonar +141 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Vibe Coding: How PulseAudio Can Give Your Remote SSH Session a Voice!
|
|
2
|
+
|
|
3
|
+
My mornings and late evenings are when I'm at my creative peak. I like to use this time for things that are fun—or at least that I think are fun. Since I recently created AgentVibes (a way to make my computer speak back to me), I wanted to solve a limitation I was experiencing while working on a remote server. That curiosity led me down the PulseAudio rabbit hole, and what I discovered fundamentally changed how I code with AI.
|
|
4
|
+
|
|
5
|
+
## What is "Vibe Coding"?
|
|
6
|
+
|
|
7
|
+
According to Gene Kim, a researcher and author featured in the DORA report, **"vibe coding"** is defined as any form of coding where you don't type out code by hand. Instead of manual typing, the code emerges from an **iterative conversation with an AI**.
|
|
8
|
+
|
|
9
|
+
This is the future of software development. Not replacing developers, but amplifying our capabilities through natural dialogue.
|
|
10
|
+
|
|
11
|
+
## If We're Going to Have a Conversation, Let's Use Voice
|
|
12
|
+
|
|
13
|
+
When I discovered whisper typing several months ago, it fundamentally changed the way I use my computer. Rather than typing everything to my AI assistant, I now **talk** using whisper typing. The speed, the naturalness, the flow—it was transformative.
|
|
14
|
+
|
|
15
|
+
But then a thought struck me: **If I can talk to my computer, why can't it talk back?**
|
|
16
|
+
|
|
17
|
+
That question led me to create [**AgentVibes**](https://github.com/paulpreibisch/AgentVibes)—a plugin for Claude Code that brings professional text-to-speech narration to your AI coding sessions. Your AI assistant can now acknowledge your requests, confirm task completion, and provide feedback through voice.
|
|
18
|
+
|
|
19
|
+
Imagine this workflow:
|
|
20
|
+
- You speak your coding request using whisper typing
|
|
21
|
+
- Your AI assistant acknowledges with voice: "I'll refactor that authentication module for you"
|
|
22
|
+
- You continue working while hearing real-time progress updates
|
|
23
|
+
- The AI confirms: "Refactoring complete, all tests passing"
|
|
24
|
+
|
|
25
|
+
This is vibe coding at its finest—a natural, conversational flow between human and AI.
|
|
26
|
+
|
|
27
|
+
## The Remote Server Problem
|
|
28
|
+
|
|
29
|
+
But I discovered a limitation. Since text-to-speech typically executes on the computer you're programming on, **what happens when you're programming on a remote machine via SSH?**
|
|
30
|
+
|
|
31
|
+
This is the reality for many developers:
|
|
32
|
+
- Cloud development environments
|
|
33
|
+
- Powerful remote servers
|
|
34
|
+
- Team shared infrastructure
|
|
35
|
+
- Corporate VDI setups
|
|
36
|
+
|
|
37
|
+
The audio plays on the remote server—where you can't hear it. The conversational flow breaks down. The vibe is lost.
|
|
38
|
+
|
|
39
|
+
## Enter PulseAudio: The Hidden Hero
|
|
40
|
+
|
|
41
|
+
I went to task trying to figure out if there was a way to somehow play audio from a remote machine onto my local machine. That's when I was introduced to the true capabilities of **PulseAudio**.
|
|
42
|
+
|
|
43
|
+
Now, I've been a Linux user for many years and have used PulseAudio forever. But little did I know that **PulseAudio can actually stream audio over a network**, allowing a client to play audio from a remote server.
|
|
44
|
+
|
|
45
|
+
This completely blew my mind. 🤯
|
|
46
|
+
|
|
47
|
+
Here's what makes this powerful:
|
|
48
|
+
|
|
49
|
+
### The Architecture
|
|
50
|
+
```
|
|
51
|
+
Remote Linux Server (PulseAudio)
|
|
52
|
+
↓ SSH Reverse Tunnel
|
|
53
|
+
Windows Client (WSL/RDP Audio)
|
|
54
|
+
↓
|
|
55
|
+
Local Speakers 🔊
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### What This Enables
|
|
59
|
+
- Run AgentVibes on your remote server
|
|
60
|
+
- Hear TTS announcements on your local speakers
|
|
61
|
+
- Maintain the conversational flow of vibe coding
|
|
62
|
+
- Work from anywhere with full audio feedback
|
|
63
|
+
|
|
64
|
+
I'll tell you, I was **floored** that this was even possible.
|
|
65
|
+
|
|
66
|
+
## The Game-Changing Impact
|
|
67
|
+
|
|
68
|
+
The ability to have your AI assistant **acknowledge what you've typed and provide vocal confirmation** really does change the game when vibe coding.
|
|
69
|
+
|
|
70
|
+
Here's why it matters:
|
|
71
|
+
|
|
72
|
+
**1. Cognitive Offloading**
|
|
73
|
+
You don't need to constantly check the terminal to see if your AI understood. Voice acknowledgment lets you focus on problem-solving.
|
|
74
|
+
|
|
75
|
+
**2. Natural Flow State**
|
|
76
|
+
Conversations have rhythm. When both parties speak and listen, you stay in flow. Text-only breaks that rhythm.
|
|
77
|
+
|
|
78
|
+
**3. Active Guidance with Voice Feedback**
|
|
79
|
+
Vibe coding doesn't mean you stop paying attention—quite the opposite. You're actively guiding the AI through the implementation, reviewing its decisions, and course-correcting in real-time. Voice acknowledgment keeps you in the loop while your hands stay free to sketch architecture, review documentation, or reference other code. The conversation is continuous, and if you're an experienced developer, the depth and precision of that conversation becomes truly transformative.
|
|
80
|
+
|
|
81
|
+
**4. Reduced Context Switching**
|
|
82
|
+
No need to constantly alt-tab between terminal and code. Your ears keep you updated.
|
|
83
|
+
|
|
84
|
+
## Try It Yourself
|
|
85
|
+
|
|
86
|
+
Want to experience vibe coding with remote audio? I've documented the entire setup process.
|
|
87
|
+
|
|
88
|
+
**Check out AgentVibes:**
|
|
89
|
+
📦 GitHub: [github.com/paulpreibisch/AgentVibes](https://github.com/paulpreibisch/AgentVibes)
|
|
90
|
+
|
|
91
|
+
**Remote Audio Setup Guide:**
|
|
92
|
+
📚 Complete documentation: [Remote Audio Setup](https://github.com/paulpreibisch/AgentVibes/blob/master/docs/remote-audio-setup.md)
|
|
93
|
+
|
|
94
|
+
The setup includes:
|
|
95
|
+
- Automated scripts for Linux and Windows
|
|
96
|
+
- PulseAudio network configuration
|
|
97
|
+
- SSH tunnel setup
|
|
98
|
+
- Troubleshooting guides
|
|
99
|
+
- VS Code Remote-SSH integration
|
|
100
|
+
|
|
101
|
+
It took me a morning to figure out, but now you can set it up in 10 minutes.
|
|
102
|
+
|
|
103
|
+
## The Bigger Picture
|
|
104
|
+
|
|
105
|
+
This journey taught me something important: **The best developer tools emerge from solving real problems in your own workflow.**
|
|
106
|
+
|
|
107
|
+
I didn't set out to become a PulseAudio expert. I just wanted my AI assistant to talk back when I'm working on remote servers. The solution required diving deep into audio streaming, SSH tunneling, and network protocols—but the result is worth it.
|
|
108
|
+
|
|
109
|
+
Vibe coding isn't just about AI generating code. It's about creating an **environment where human and AI collaborate naturally**—through conversation, through voice, through continuous feedback loops.
|
|
110
|
+
|
|
111
|
+
And sometimes, that requires discovering that the tools you've been using for years have hidden superpowers you never knew existed.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
**What's your experience with AI-assisted development? Have you tried vibe coding? Let's discuss in the comments!**
|
|
116
|
+
|
|
117
|
+
#VibeCoding #AI #DeveloperTools #SoftwareEngineering #PulseAudio #RemoteDevelopment #DevOps #AIAssisted #ClaudeCode #OpenSource
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
*P.S. - If you found this interesting, check out the AgentVibes project on GitHub. It's open source, supports multiple TTS providers (including free Piper TTS), and has 30+ professional AI voices. Star the repo if you find it useful!* ⭐
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "agentvibes",
|
|
4
|
-
"version": "2.2.
|
|
4
|
+
"version": "2.2.2",
|
|
5
5
|
"description": "Now your AI Agents can finally talk back! Professional TTS voice for Claude Code and Claude Desktop (via MCP) with multi-provider support.",
|
|
6
6
|
"homepage": "https://agentvibes.org",
|
|
7
7
|
"keywords": [
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# AgentVibes Audio Tunnel Configuration
|
|
2
|
+
# Personal configuration - DO NOT COMMIT
|
|
3
|
+
|
|
4
|
+
# Remote server hostname (from your ~/.ssh/config)
|
|
5
|
+
REMOTE_HOST="ubuntu-rdp"
|
|
6
|
+
|
|
7
|
+
# Tunnel port (default: 14713)
|
|
8
|
+
TUNNEL_PORT="14713"
|
|
9
|
+
|
|
10
|
+
# PulseAudio socket path (WSL default)
|
|
11
|
+
PULSE_SOCKET="/mnt/wslg/PulseServer"
|
|
12
|
+
|
|
13
|
+
# Log file for automatic fixes
|
|
14
|
+
AUTO_FIX_LOG="/tmp/audio-tunnel-autofix.log"
|
|
15
|
+
|
|
16
|
+
# Healthcheck interval in minutes (for cron setup)
|
|
17
|
+
CHECK_INTERVAL="5"
|
package/sonar
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# SonarQube Analysis Wrapper Script
|
|
4
|
+
# Run SonarCloud analysis on the AgentVibes project
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
# Colors for output
|
|
10
|
+
RED='\033[0;31m'
|
|
11
|
+
GREEN='\033[0;32m'
|
|
12
|
+
YELLOW='\033[1;33m'
|
|
13
|
+
CYAN='\033[0;36m'
|
|
14
|
+
NC='\033[0m' # No Color
|
|
15
|
+
|
|
16
|
+
# Configuration
|
|
17
|
+
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
+
STORAGE_DIR="$PROJECT_DIR/.sonarqube-storage"
|
|
19
|
+
CONTAINER_NAME="sonarqube-mcp-server-agentvibes"
|
|
20
|
+
IMAGE_NAME="mcp/sonarqube"
|
|
21
|
+
|
|
22
|
+
# Check required environment variables
|
|
23
|
+
check_env_vars() {
|
|
24
|
+
local missing=0
|
|
25
|
+
|
|
26
|
+
# Use AgentVibes-prefixed environment variables
|
|
27
|
+
if [[ -z "${AGENTVIBES_SONARQUBE_TOKEN:-}" ]]; then
|
|
28
|
+
echo -e "${RED}❌ AGENTVIBES_SONARQUBE_TOKEN is not set${NC}"
|
|
29
|
+
missing=1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
if [[ -z "${AGENTVIBES_SONARQUBE_ORG:-}" ]]; then
|
|
33
|
+
echo -e "${RED}❌ AGENTVIBES_SONARQUBE_ORG is not set${NC}"
|
|
34
|
+
missing=1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
if [[ -z "${AGENTVIBES_SONARQUBE_PROJECT:-}" ]]; then
|
|
38
|
+
echo -e "${RED}❌ AGENTVIBES_SONARQUBE_PROJECT is not set${NC}"
|
|
39
|
+
missing=1
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
if [[ $missing -eq 1 ]]; then
|
|
43
|
+
echo -e "\n${YELLOW}💡 Set these environment variables in ~/.zshrc:${NC}"
|
|
44
|
+
echo " export AGENTVIBES_SONARQUBE_TOKEN='your-token'"
|
|
45
|
+
echo " export AGENTVIBES_SONARQUBE_ORG='paulpreibisch'"
|
|
46
|
+
echo " export AGENTVIBES_SONARQUBE_PROJECT='AgentVibes'"
|
|
47
|
+
echo -e "\n${YELLOW}Then reload: source ~/.zshrc${NC}"
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
|
|
51
|
+
# Set standard variable names for Docker container
|
|
52
|
+
export SONARQUBE_TOKEN="${AGENTVIBES_SONARQUBE_TOKEN}"
|
|
53
|
+
export SONARQUBE_ORG="${AGENTVIBES_SONARQUBE_ORG}"
|
|
54
|
+
export SONARQUBE_PROJECT="${AGENTVIBES_SONARQUBE_PROJECT}"
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
# Check if Docker is available
|
|
58
|
+
check_docker() {
|
|
59
|
+
if ! command -v docker &> /dev/null; then
|
|
60
|
+
echo -e "${RED}❌ Docker is not available${NC}"
|
|
61
|
+
echo -e "${YELLOW}💡 Please start Docker Desktop or enable Docker in WSL2${NC}"
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
if ! docker info &> /dev/null; then
|
|
66
|
+
echo -e "${RED}❌ Docker daemon is not running${NC}"
|
|
67
|
+
echo -e "${YELLOW}💡 Please start Docker Desktop${NC}"
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
# Create storage directory if it doesn't exist
|
|
73
|
+
setup_storage() {
|
|
74
|
+
if [[ ! -d "$STORAGE_DIR" ]]; then
|
|
75
|
+
echo -e "${CYAN}📁 Creating storage directory...${NC}"
|
|
76
|
+
mkdir -p "$STORAGE_DIR"
|
|
77
|
+
fi
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# Pull the latest image if needed
|
|
81
|
+
pull_image() {
|
|
82
|
+
if ! docker images | grep -q "mcp/sonarqube"; then
|
|
83
|
+
echo -e "${CYAN}📦 Pulling SonarQube MCP image...${NC}"
|
|
84
|
+
docker pull "$IMAGE_NAME" || {
|
|
85
|
+
echo -e "${RED}❌ Failed to pull image${NC}"
|
|
86
|
+
echo -e "${YELLOW}💡 Make sure you have access to the mcp/sonarqube image${NC}"
|
|
87
|
+
exit 1
|
|
88
|
+
}
|
|
89
|
+
fi
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# Stop any existing container
|
|
93
|
+
cleanup() {
|
|
94
|
+
if docker ps -a | grep -q "$CONTAINER_NAME"; then
|
|
95
|
+
echo -e "${CYAN}🧹 Cleaning up existing container...${NC}"
|
|
96
|
+
docker rm -f "$CONTAINER_NAME" &> /dev/null || true
|
|
97
|
+
fi
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Run the analysis
|
|
101
|
+
run_analysis() {
|
|
102
|
+
echo -e "${GREEN}🚀 Starting SonarCloud analysis...${NC}"
|
|
103
|
+
echo -e "${CYAN} Organization: ${SONARQUBE_ORG}${NC}"
|
|
104
|
+
echo -e "${CYAN} Project: ${SONARQUBE_PROJECT}${NC}"
|
|
105
|
+
echo -e "${CYAN} URL: https://sonarcloud.io${NC}"
|
|
106
|
+
echo ""
|
|
107
|
+
|
|
108
|
+
docker run -i \
|
|
109
|
+
--name "$CONTAINER_NAME" \
|
|
110
|
+
--rm \
|
|
111
|
+
-e "SONARQUBE_TOKEN=${SONARQUBE_TOKEN}" \
|
|
112
|
+
-e "SONARQUBE_URL=https://sonarcloud.io" \
|
|
113
|
+
-e "SONARQUBE_ORG=${SONARQUBE_ORG}" \
|
|
114
|
+
-e "SONARQUBE_PROJECT=${SONARQUBE_PROJECT}" \
|
|
115
|
+
-v "${STORAGE_DIR}:/storage" \
|
|
116
|
+
"$IMAGE_NAME" "$@"
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
# Main execution
|
|
120
|
+
main() {
|
|
121
|
+
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
|
|
122
|
+
echo -e "${CYAN} SonarQube Analysis - AgentVibes${NC}"
|
|
123
|
+
echo -e "${CYAN}═══════════════════════════════════════════${NC}"
|
|
124
|
+
echo ""
|
|
125
|
+
|
|
126
|
+
check_env_vars
|
|
127
|
+
check_docker
|
|
128
|
+
setup_storage
|
|
129
|
+
pull_image
|
|
130
|
+
cleanup
|
|
131
|
+
run_analysis "$@"
|
|
132
|
+
|
|
133
|
+
echo ""
|
|
134
|
+
echo -e "${GREEN}✅ Analysis complete!${NC}"
|
|
135
|
+
echo -e "${CYAN}🔗 View results: https://sonarcloud.io/project/overview?id=${SONARQUBE_PROJECT}${NC}"
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
# Handle Ctrl+C gracefully
|
|
139
|
+
trap cleanup EXIT
|
|
140
|
+
|
|
141
|
+
main "$@"
|