@@ -8,9 +8,10 @@ SYSTEM_PROMPT="You are ChatGPT, a large language model trained by OpenAI. Answer
8
8
9
9
COMMAND_GENERATION_PROMPT=" You are a Command Line Interface expert and your task is to provide functioning shell commands. Return a CLI command and nothing else - do not send it in a code block, quotes, or anything else, just the pure text CONTAINING ONLY THE COMMAND. If possible, return a one-line bash command or chain many commands together. Return ONLY the command ready to run in the terminal. The command should do the following:"
10
10
11
- CHATGPT_CYAN_LABEL=" \n\033[36mchatgpt \033[0m"
11
+ CHATGPT_CYAN_LABEL=" \033[36mchatgpt \033[0m"
12
+ PROCESSING_LABEL=" \n\033[90mProcessing... \033[0m\033[0K\r"
13
+ OVERWRITE_PROCESSING_LINE=" \033[0K\r"
12
14
13
- PROCESSING_LABEL=" \n\033[90mProcessing... \033[0m"
14
15
15
16
if [[ -z " $OPENAI_KEY " ]]; then
16
17
echo " You need to set your OPENAI_KEY to use this script"
@@ -281,7 +282,7 @@ while $running; do
281
282
echo -e " \nEnter a prompt:"
282
283
read -e prompt
283
284
if [ " $prompt " != " exit" ] && [ " $prompt " != " q" ]; then
284
- echo -e $PROCESSING_LABEL
285
+ echo -ne $PROCESSING_LABEL
285
286
fi
286
287
else
287
288
# set vars for pipe mode
@@ -296,6 +297,7 @@ while $running; do
296
297
request_to_image " $prompt "
297
298
handle_error " $image_response "
298
299
image_url=$( echo $image_response | jq -r ' .data[0].url' )
300
+ echo -e " $OVERWRITE_PROCESSING_LINE "
299
301
echo -e " ${CHATGPT_CYAN_LABEL} Your image was created. \n\nLink: ${image_url} \n"
300
302
301
303
if [[ " $TERM_PROGRAM " == " iTerm.app" ]]; then
@@ -321,13 +323,15 @@ while $running; do
321
323
-H " Authorization: Bearer $OPENAI_KEY " )
322
324
handle_error " $models_response "
323
325
models_data=$( echo $models_response | jq -r -C ' .data[] | {id, owned_by, created}' )
326
+ echo -e " $OVERWRITE_PROCESSING_LINE "
324
327
echo -e " ${CHATGPT_CYAN_LABEL} This is a list of models currently available at OpenAI API:\n ${models_data} "
325
328
elif [[ " $prompt " =~ ^model: ]]; then
326
329
models_response=$( curl https://api.openai.com/v1/models \
327
330
-sS \
328
331
-H " Authorization: Bearer $OPENAI_KEY " )
329
332
handle_error " $models_response "
330
333
model_data=$( echo $models_response | jq -r -C ' .data[] | select(.id=="' " ${prompt#* model: } " ' ")' )
334
+ echo -e " $OVERWRITE_PROCESSING_LINE "
331
335
echo -e " ${CHATGPT_CYAN_LABEL} Complete details for model: ${prompt#* model: } \n ${model_data} "
332
336
elif [[ " $prompt " =~ ^command: ]]; then
333
337
# escape quotation marks
@@ -343,6 +347,7 @@ while $running; do
343
347
response_data=$( echo $response | jq -r ' .choices[].message.content' )
344
348
345
349
if [[ " $prompt " =~ ^command: ]]; then
350
+ echo -e " $OVERWRITE_PROCESSING_LINE "
346
351
echo -e " ${CHATGPT_CYAN_LABEL} ${response_data} " | fold -s -w $COLUMNS
347
352
dangerous_commands=(" rm" " >" " mv" " mkfs" " :(){:|:&};" " dd" " chmod" " wget" " curl" )
348
353
@@ -375,11 +380,12 @@ while $running; do
375
380
handle_error " $response "
376
381
response_data=$( echo " $response " | jq -r ' .choices[].message.content' )
377
382
383
+ echo -e " $OVERWRITE_PROCESSING_LINE "
378
384
# if glow installed, print parsed markdown
379
385
if command -v glow & > /dev/null; then
380
- formatted_text=$( echo " ${response_data} " | glow)
381
386
echo -e " ${CHATGPT_CYAN_LABEL} "
382
- echo -e " ${formatted_text} "
387
+ echo " ${response_data} " | glow -
388
+ # echo -e "${formatted_text}"
383
389
else
384
390
echo -e " ${CHATGPT_CYAN_LABEL}${response_data} " | fold -s -w $COLUMNS
385
391
fi
@@ -402,11 +408,11 @@ while $running; do
402
408
handle_error " $response "
403
409
response_data=$( echo " $response " | jq -r ' .choices[].text' )
404
410
411
+ echo -e " $OVERWRITE_PROCESSING_LINE "
405
412
# if glow installed, print parsed markdown
406
413
if command -v glow & > /dev/null; then
407
- formatted_text=$( echo " ${response_data} " | glow)
408
414
echo -e " ${CHATGPT_CYAN_LABEL} "
409
- echo -e " ${formatted_text } "
415
+ echo " ${response_data } " | glow -
410
416
else
411
417
# else remove empty lines and print
412
418
formatted_text=$( echo " ${response_data} " | sed ' 1,2d; s/^A://g' )
0 commit comments