@@ -22,7 +22,13 @@ NC='\033[0m' # No Color / Reset
2222# Export colors for child scripts
2323export YELLOW GREEN GREEN_LIGHT GREEN_DARK BLUE BLACK WHITE RED GRAY GRAY_LIGHT BOLD NC
2424
25- clear
25+ NONINTERACTIVE=" ${CODEPLAIN_INSTALL_NONINTERACTIVE:- 0} "
26+
27+ if [ " $NONINTERACTIVE " = " 1" ]; then
28+ echo " running in non-interactive mode (CODEPLAIN_INSTALL_NONINTERACTIVE=1)"
29+ else
30+ clear
31+ fi
2632echo -e " started ${YELLOW}${BOLD} *codeplain CLI${NC} installation..."
2733
2834# Install uv if not present
6167 echo -e " installing codeplain...${NC} "
6268 echo -e " "
6369 uv tool install codeplain
64- clear
70+ if [ " $NONINTERACTIVE " != " 1" ]; then
71+ clear
72+ fi
6573 echo -e " ${GREEN} ✓ codeplain installed successfully!${NC} "
6674fi
6775
6876# Check if API key already exists
6977SKIP_API_KEY_SETUP=false
7078if [ -n " ${CODEPLAIN_API_KEY:- } " ]; then
71- echo -e " you already have an API key configured."
72- echo " "
73- echo -e " would you like to log in and get a new one?"
74- echo " "
75- read -r -p " [y/N]: " GET_NEW_KEY < /dev/tty
76- echo " "
77-
78- if [[ ! " $GET_NEW_KEY " =~ ^[Yy]$ ]]; then
79- echo -e " ${GREEN} ✓${NC} using existing API key."
79+ if [ " $NONINTERACTIVE " = " 1" ]; then
80+ echo -e " ${GREEN} ✓${NC} using existing CODEPLAIN_API_KEY (non-interactive mode)."
8081 SKIP_API_KEY_SETUP=true
82+ else
83+ echo -e " you already have an API key configured."
84+ echo " "
85+ echo -e " would you like to log in and get a new one?"
86+ echo " "
87+ read -r -p " [y/N]: " GET_NEW_KEY < /dev/tty
88+ echo " "
89+
90+ if [[ ! " $GET_NEW_KEY " =~ ^[Yy]$ ]]; then
91+ echo -e " ${GREEN} ✓${NC} using existing API key."
92+ SKIP_API_KEY_SETUP=true
93+ fi
8194 fi
8295fi
8396
8497if [ " $SKIP_API_KEY_SETUP " = false ]; then
85- echo -e " go to ${YELLOW} https://platform.codeplain.ai${NC} and sign up to get your API key."
86- echo " "
87- read -r -p " paste your API key here: " API_KEY < /dev/tty
88- echo " "
98+ if [ " $NONINTERACTIVE " = " 1" ]; then
99+ echo -e " ${GRAY} no CODEPLAIN_API_KEY set; skipping key setup (non-interactive mode).${NC} "
100+ else
101+ echo -e " go to ${YELLOW} https://platform.codeplain.ai${NC} and sign up to get your API key."
102+ echo " "
103+ read -r -p " paste your API key here: " API_KEY < /dev/tty
104+ echo " "
105+ fi
89106fi
90107
91108if [ " $SKIP_API_KEY_SETUP " = true ]; then
130147fi
131148
132149# ASCII Art Welcome
133- clear
150+ if [ " $NONINTERACTIVE " != " 1" ]; then
151+ clear
152+ fi
134153echo " "
135154echo -e " ${NC} "
136155echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
@@ -153,10 +172,14 @@ echo ""
153172echo " "
154173echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
155174echo " "
156- echo -e " would you like to get a quick intro to ***plain specification language?"
157- echo " "
158- read -r -p " [Y/n]: " WALKTHROUGH_CHOICE < /dev/tty
159- echo " "
175+ if [ " $NONINTERACTIVE " = " 1" ]; then
176+ WALKTHROUGH_CHOICE=" n"
177+ else
178+ echo -e " would you like to get a quick intro to ***plain specification language?"
179+ echo " "
180+ read -r -p " [Y/n]: " WALKTHROUGH_CHOICE < /dev/tty
181+ echo " "
182+ fi
160183
161184# Determine script directory for local execution
162185SCRIPT_DIR=" "
@@ -193,27 +216,33 @@ if [[ ! "$WALKTHROUGH_CHOICE" =~ ^[Nn]$ ]]; then
193216fi
194217
195218# Download examples step
196- clear
197- echo " "
198- echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
199- echo -e " ${YELLOW}${BOLD} Example Projects${NC} "
200- echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
201- echo " "
202- echo -e " we've prepared some example Plain projects for you"
203- echo -e " to explore and experiment with."
204- echo " "
205- echo -e " would you like to download them?"
206- echo " "
207- read -r -p " [Y/n]: " DOWNLOAD_EXAMPLES < /dev/tty
208- echo " "
219+ if [ " $NONINTERACTIVE " = " 1" ]; then
220+ DOWNLOAD_EXAMPLES=" n"
221+ else
222+ clear
223+ echo " "
224+ echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
225+ echo -e " ${YELLOW}${BOLD} Example Projects${NC} "
226+ echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
227+ echo " "
228+ echo -e " we've prepared some example Plain projects for you"
229+ echo -e " to explore and experiment with."
230+ echo " "
231+ echo -e " would you like to download them?"
232+ echo " "
233+ read -r -p " [Y/n]: " DOWNLOAD_EXAMPLES < /dev/tty
234+ echo " "
235+ fi
209236
210237# Run examples download if user agrees
211238if [[ ! " ${DOWNLOAD_EXAMPLES:- } " =~ ^[Nn]$ ]]; then
212239 run_script " examples.sh"
213240fi
214241
215242# Final message
216- clear
243+ if [ " $NONINTERACTIVE " != " 1" ]; then
244+ clear
245+ fi
217246echo " "
218247echo -e " ${GRAY} ────────────────────────────────────────────${NC} "
219248echo -e " ${YELLOW}${BOLD} You're all set!${NC} "
@@ -230,6 +259,8 @@ echo ""
230259echo -e " ${GREEN} happy development!${NC} 🚀"
231260echo " "
232261
233- # Replace this subshell with a fresh shell that has the new environment
234- # Reconnect stdin to terminal (needed when running via curl | bash)
235- exec " $SHELL " < /dev/tty
262+ if [ " $NONINTERACTIVE " != " 1" ]; then
263+ # Replace this subshell with a fresh shell that has the new environment
264+ # Reconnect stdin to terminal (needed when running via curl | bash)
265+ exec " $SHELL " < /dev/tty
266+ fi
0 commit comments