Skip to content

Commit 3913873

Browse files
committed
docs: promote universal one-liner installer as primary setup method in README\n\n- Add conductor-init.sh one-liner as Option 1 in 60-Second Setup\n- Clarify prerequisites and security best practices\n- Retain and renumber existing setup options\n- Mention universal installer in How It Works section\n- Improve onboarding for existing repos without cloning\n\nCloses #init-oneliner-docs
1 parent 2135aaf commit 3913873

File tree

2 files changed

+207
-8
lines changed

2 files changed

+207
-8
lines changed

README.md

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,20 @@
2121

2222
**One command. Instant AI coordination.**
2323

24-
### Option 1: Poetry (Recommended)
24+
**Prerequisites for all options:** Git, Python 3.9+, curl (for one-liner), and tar. Run from the root of an existing Git repository.
25+
26+
### Option 1: Universal One-Liner (Recommended - No Cloning Required)
27+
Run this in your existing project's root directory to download and install Conductor-Score directly:
28+
29+
```bash
30+
bash <(curl -fsSL https://raw.githubusercontent.com/ryanmac/conductor-score/main/conductor-init.sh)
31+
```
32+
33+
- This method avoids cloning the full Conductor-Score repo and is ideal for integrating into existing projects without repository pollution.
34+
- The script will prompt before overwriting any existing installation.
35+
- **Security best practice:** Review the script at the raw URL before running.
36+
37+
### Option 2: Poetry (Manual Clone)
2538
```bash
2639
# Clone the repository
2740
git clone https://github.com/ryanmac/conductor-score.git
@@ -32,7 +45,7 @@ poetry install
3245
poetry run python setup.py
3346
```
3447

35-
### Option 2: Pip + Virtual Environment
48+
### Option 3: Pip + Virtual Environment
3649
```bash
3750
# Clone the repository
3851
git clone https://github.com/ryanmac/conductor-score.git
@@ -49,7 +62,7 @@ pip install -r requirements.txt
4962
python setup.py
5063
```
5164

52-
### Option 3: One-Command Install Script
65+
### Option 4: One-Command Install Script (from cloned repo)
5366
```bash
5467
# From the repository directory:
5568
./install.sh
@@ -62,7 +75,7 @@ python setup.py
6275

6376
## How It Works
6477

65-
1. **Setup Phase**: The interactive setup script detects your project type and configures roles
78+
1. **Setup Phase**: Use the universal installer (Option 1) or other setup methods to configure your project. The setup script detects your project type and configures roles.
6679
2. **Task Creation**: Create tasks via GitHub Issues or directly in the state file
6780
3. **Agent Initialization**: Agents use the universal bootstrap to claim work
6881
4. **Isolated Development**: Each agent works in a git worktree to prevent conflicts
@@ -390,10 +403,6 @@ MIT - See LICENSE file
390403
- 🐛 [Issue Tracker](https://github.com/ryanmac/conductor-score/issues)
391404
- 💬 [Discussions](https://github.com/ryanmac/conductor-score/discussions)
392405

393-
---
394-
395-
---
396-
397406
## 💬 **Join the Community**
398407

399408
- 🐛 **Found a bug?** [Report it](https://github.com/ryanmac/conductor-score/issues)

conductor-init.sh

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
#!/bin/bash
2+
3+
# conductor-init.sh - Universal Installer for Conductor-Score
4+
# Usage: bash <(curl -fsSL https://raw.githubusercontent.com/ryanmac/conductor-score/main/conductor-init.sh)
5+
# Installs Conductor-Score into the current Git repository without full cloning.
6+
7+
set -e
8+
9+
# Color codes for output
10+
RED='\033[0;31m'
11+
GREEN='\033[0;32m'
12+
YELLOW='\033[1;33m'
13+
NC='\033[0m' # No Color
14+
15+
echo -e "${GREEN}🚀 Conductor-Score Universal Installer${NC}"
16+
echo "=========================================="
17+
echo "This script will install Conductor-Score into your current Git repository."
18+
echo "It will download necessary files and run the setup automatically."
19+
echo ""
20+
21+
# Step 1: Prerequisite Checks
22+
echo -e "${YELLOW}🔍 Checking prerequisites...${NC}"
23+
24+
# Check if in a Git repository
25+
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
26+
echo -e "${RED}❌ Error: Not in a Git repository. Please run this from the root of a Git repo.${NC}"
27+
exit 1
28+
fi
29+
30+
# Check for Git
31+
if ! command -v git >/dev/null 2>&1; then
32+
echo -e "${RED}❌ Error: Git is not installed. Please install Git and try again.${NC}"
33+
exit 1
34+
fi
35+
36+
# Check for Python 3.9+
37+
if ! command -v python3 >/dev/null 2>&1 || ! python3 -c "import sys; exit(0 if sys.version_info >= (3,9) else 1)"; then
38+
echo -e "${RED}❌ Error: Python 3.9+ is required. Please install Python 3.9 or higher.${NC}"
39+
exit 1
40+
fi
41+
42+
# Check for curl
43+
if ! command -v curl >/dev/null 2>&1; then
44+
echo -e "${RED}❌ Error: curl is not installed. Please install curl and try again.${NC}"
45+
exit 1
46+
fi
47+
48+
# Check for tar (needed for extraction)
49+
if ! command -v tar >/dev/null 2>&1; then
50+
echo -e "${RED}❌ Error: tar is not installed. Please install tar and try again.${NC}"
51+
exit 1
52+
fi
53+
54+
# Check for existing installation
55+
if [ -d ".conductor" ]; then
56+
echo -e "${YELLOW}⚠️ Existing .conductor directory found.${NC}"
57+
read -p "Do you want to overwrite and reinstall? [y/N]: " -n 1 -r
58+
echo ""
59+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
60+
echo -e "${RED}❌ Installation cancelled.${NC}"
61+
exit 0
62+
fi
63+
rm -rf .conductor
64+
fi
65+
66+
echo -e "${GREEN}✅ All prerequisites met.${NC}"
67+
echo ""
68+
69+
# Step 2: Download and Extract Essential Files from Tarball
70+
echo -e "${YELLOW}📥 Downloading and extracting from GitHub tarball...${NC}"
71+
REPO_TARBALL_URL="https://github.com/ryanmac/conductor-score/archive/refs/heads/main.tar.gz"
72+
TEMP_DIR="/tmp/conductor-score-init"
73+
74+
# Create temp dir
75+
mkdir -p "$TEMP_DIR"
76+
77+
# Download and extract tarball to temp dir
78+
curl -fsSL "$REPO_TARBALL_URL" | tar -xz -C "$TEMP_DIR" --strip-components=1 || {
79+
echo -e "${RED}❌ Failed to download or extract tarball. Check your network or URL.${NC}"
80+
rm -rf "$TEMP_DIR"
81+
exit 1
82+
}
83+
84+
# Copy essential files and directories
85+
cp -r "$TEMP_DIR/.conductor" . || {
86+
echo -e "${RED}❌ Failed to copy .conductor directory.${NC}"
87+
rm -rf "$TEMP_DIR"
88+
exit 1
89+
}
90+
cp "$TEMP_DIR/setup.py" . || {
91+
echo -e "${RED}❌ Failed to copy setup.py.${NC}"
92+
rm -rf "$TEMP_DIR"
93+
exit 1
94+
}
95+
cp "$TEMP_DIR/requirements.txt" . || {
96+
echo -e "${RED}❌ Failed to copy requirements.txt.${NC}"
97+
rm -rf "$TEMP_DIR"
98+
exit 1
99+
}
100+
cp "$TEMP_DIR/pyproject.toml" . || {
101+
echo -e "${RED}❌ Failed to copy pyproject.toml.${NC}"
102+
rm -rf "$TEMP_DIR"
103+
exit 1
104+
}
105+
cp "$TEMP_DIR/VERSION" . || {
106+
echo -e "${RED}❌ Failed to copy VERSION.${NC}"
107+
rm -rf "$TEMP_DIR"
108+
exit 1
109+
}
110+
111+
# Optionally copy examples (prompt user)
112+
read -p "Do you want to copy example configurations (recommended for new users)? [Y/n]: " -n 1 -r
113+
echo ""
114+
if [[ $REPLY =~ ^[Yy]$ ]] || [[ -z $REPLY ]]; then
115+
cp -r "$TEMP_DIR/examples" . || {
116+
echo -e "${YELLOW}⚠️ Failed to copy examples directory (continuing anyway).${NC}"
117+
}
118+
echo -e "${GREEN}✅ Examples copied.${NC}"
119+
fi
120+
121+
# Clean up temp dir
122+
rm -rf "$TEMP_DIR"
123+
124+
echo -e "${GREEN}✅ Files extracted: .conductor/, setup.py, requirements.txt, pyproject.toml, VERSION${NC}"
125+
echo ""
126+
127+
# Step 3: Install Dependencies
128+
echo -e "${YELLOW}📦 Installing dependencies...${NC}"
129+
130+
# Prefer Poetry if available, otherwise use pip + venv
131+
if command -v poetry >/dev/null 2>&1; then
132+
echo "🎵 Poetry detected. Using Poetry for installation."
133+
poetry install || {
134+
echo -e "${RED}❌ Poetry install failed.${NC}"
135+
exit 1
136+
}
137+
else
138+
echo "📦 Poetry not found. Using pip and virtual environment."
139+
python3 -m venv .venv || {
140+
echo -e "${RED}❌ Failed to create virtual environment.${NC}"
141+
exit 1
142+
}
143+
source .venv/bin/activate
144+
pip install --upgrade pip || {
145+
echo -e "${RED}❌ Failed to upgrade pip.${NC}"
146+
exit 1
147+
}
148+
pip install -r requirements.txt || {
149+
echo -e "${RED}❌ Pip install failed.${NC}"
150+
exit 1
151+
}
152+
fi
153+
154+
echo -e "${GREEN}✅ Dependencies installed.${NC}"
155+
echo ""
156+
157+
# Step 4: Run Setup
158+
echo -e "${YELLOW}🔧 Running automatic setup...${NC}"
159+
160+
# Run setup.py with --auto flag
161+
if command -v poetry >/dev/null 2>&1; then
162+
poetry run python setup.py --auto || {
163+
echo -e "${RED}❌ Setup failed.${NC}"
164+
exit 1
165+
}
166+
else
167+
python setup.py --auto || {
168+
echo -e "${RED}❌ Setup failed.${NC}"
169+
exit 1
170+
}
171+
fi
172+
173+
echo -e "${GREEN}✅ Setup complete.${NC}"
174+
echo ""
175+
176+
# Note: No cleanup of setup.py, requirements.txt, etc. - leaving them in place for user reference and future use.
177+
178+
# Step 5: Next Steps
179+
echo -e "${GREEN}🎉 Installation Successful!${NC}"
180+
echo "=========================================="
181+
echo "Conductor-Score is now installed in your repository."
182+
echo ""
183+
echo "Next steps:"
184+
echo "1. Review .conductor/config.yaml and customize if needed."
185+
echo "2. Create a task: Use GitHub Issues with 'conductor:task' label."
186+
echo "3. Launch an agent: bash .conductor/scripts/bootstrap.sh dev"
187+
echo "4. For full documentation, see the original repo: https://github.com/ryanmac/conductor-score"
188+
echo ""
189+
echo "If you encounter issues, check the troubleshooting guide in the repo."
190+
echo -e "${GREEN}Happy orchestrating! 🎼${NC}"

0 commit comments

Comments
 (0)