forked from CodeCrafter-Guy/PyLex
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall.sh
More file actions
executable file
·149 lines (126 loc) · 4.85 KB
/
install.sh
File metadata and controls
executable file
·149 lines (126 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/usr/bin/env bash
set -euo pipefail
REPO="dweng0/BAADD"
RAW_BASE="https://raw.githubusercontent.com/${REPO}"
API_BASE="https://api.github.com/repos/${REPO}"
MANIFEST_FILE=".baadd"
# ── Argument parsing ──────────────────────────────────────────────────────────
VERSION=""
FORCE_UPDATE=false
while [[ $# -gt 0 ]]; do
case $1 in
--update) FORCE_UPDATE=true; shift ;;
--version) VERSION="$2"; shift 2 ;;
-h|--help)
echo "Usage: install.sh [--update] [--version vX.Y.Z]"
echo ""
echo " (no args) Init a new BAADD project in the current directory"
echo " --update Update framework files in an existing BAADD project"
echo " --version vX.Y.Z Pin to a specific BAADD version (default: latest)"
exit 0 ;;
*) echo "Unknown option: $1"; exit 1 ;;
esac
done
# Auto-detect update mode if manifest already exists
if [[ -f "$MANIFEST_FILE" && "$FORCE_UPDATE" == false ]]; then
FORCE_UPDATE=true
fi
# ── Resolve version ───────────────────────────────────────────────────────────
if [[ -z "$VERSION" ]]; then
echo "Fetching latest BAADD version..."
VERSION=$(curl -fsSL "${API_BASE}/releases/latest" \
-H "Accept: application/vnd.github+json" \
| python3 -c "import sys,json; print(json.load(sys.stdin)['tag_name'])")
echo "Latest: $VERSION"
fi
RAW="${RAW_BASE}/${VERSION}"
# ── Helpers ───────────────────────────────────────────────────────────────────
download() {
local file="$1"
mkdir -p "$(dirname "$file")"
curl -fsSL "${RAW}/${file}" -o "$file"
echo " $file"
}
read_manifest_files() {
python3 -c "import json; [print(f) for f in json.load(open('${MANIFEST_FILE}'))['files']]"
}
stamp_version() {
python3 - <<EOF
import json
with open("${MANIFEST_FILE}") as f:
m = json.load(f)
m["version"] = "${VERSION}"
with open("${MANIFEST_FILE}", "w") as f:
json.dump(m, f, indent=2)
f.write("\n")
EOF
}
# ── Update mode ───────────────────────────────────────────────────────────────
if [[ "$FORCE_UPDATE" == true ]]; then
CURRENT=$(python3 -c "import json; print(json.load(open('${MANIFEST_FILE}'))['version'])" 2>/dev/null || echo "unknown")
if [[ "$CURRENT" == "$VERSION" ]]; then
echo "Already on BAADD ${VERSION}. Nothing to do."
exit 0
fi
echo "Updating BAADD: ${CURRENT} → ${VERSION}"
echo ""
# Archive existing journals before overwriting
if [[ -f "JOURNAL.md" ]]; then
cp JOURNAL.md "JOURNAL_archive_v${CURRENT}.md"
echo " Archived JOURNAL.md → JOURNAL_archive_v${CURRENT}.md"
fi
if [[ -f "JOURNAL_INDEX.md" ]]; then
cp JOURNAL_INDEX.md "JOURNAL_INDEX_archive_v${CURRENT}.md"
echo " Archived JOURNAL_INDEX.md → JOURNAL_INDEX_archive_v${CURRENT}.md"
fi
echo ""
while IFS= read -r file; do
download "$file"
done < <(read_manifest_files)
stamp_version
chmod +x scripts/*.sh
echo ""
echo "BAADD updated to ${VERSION}."
echo "Previous journals archived as:"
if [[ -f "JOURNAL_archive_v${CURRENT}.md" ]]; then
echo " - JOURNAL_archive_v${CURRENT}.md"
fi
if [[ -f "JOURNAL_INDEX_archive_v${CURRENT}.md" ]]; then
echo " - JOURNAL_INDEX_archive_v${CURRENT}.md"
fi
# ── Init mode ─────────────────────────────────────────────────────────────────
else
echo "Initializing BAADD ${VERSION}..."
echo ""
# Download manifest first — it defines what else to get
download "$MANIFEST_FILE"
stamp_version
# Download all framework files
while IFS= read -r file; do
download "$file"
done < <(read_manifest_files)
# Create BDD.md from template if not already present
if [[ ! -f "BDD.md" ]]; then
cp BDD.example.md BDD.md
echo " BDD.md (created from template)"
else
echo " BDD.md already exists — skipped"
fi
# Init git repo if needed
if [[ ! -d ".git" ]]; then
git init -q
echo " .git (initialized)"
fi
chmod +x scripts/*.sh
echo ""
echo "BAADD ${VERSION} ready."
echo ""
echo "Next steps:"
echo " 1. Edit BDD.md — describe your project's features and scenarios"
echo " 2. Add your API key to GitHub repo secrets (ANTHROPIC_API_KEY, etc.)"
echo " 3. Push to GitHub — the agent runs automatically every 8 hours"
echo ""
echo "Or run locally:"
echo " pip install anthropic"
echo " ANTHROPIC_API_KEY=sk-... ./scripts/evolve.sh"
fi