-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.sh
132 lines (115 loc) · 4.84 KB
/
main.sh
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
#!/bin/bash
# ASCII art with rainbow colors
ASCII_ART="
_______
| __|.--.--.---.-.-----.---.-.
|__ || | | _ |-- __| _ |
|_______||___ |___._|_____|___._|
|_____|
"
# Rainbow colors
RAINBOW_COLORS=(
"\033[31m" # Red
"\033[32m" # Green
"\033[33m" # Yellow
"\033[34m" # Blue
"\033[35m" # Magenta
"\033[36m" # Cyan
)
# Function to print ASCII art with rainbow colors
print_ascii_art_with_rainbow() {
local art="$1"
local colors=("${!2}")
local lines=()
# Split the ASCII art into lines
while IFS= read -r line; do
lines+=("$line")
done <<< "$art"
# Print each line with a different color from the rainbow
local color_index=0
for line in "${lines[@]}"; do
echo -e "${colors[$color_index]}$line"
color_index=$(( (color_index + 1) % ${#colors[@]} ))
done
}
# Call the function to print ASCII art with rainbow colors
print_ascii_art_with_rainbow "$ASCII_ART" RAINBOW_COLORS[@]
# Direktori root di mana semua sub-folder berada
DIR="../automation-scripts"
LOG_FILE="$DIR/run_log.txt"
# Jika file log belum ada, buat file log kosong
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE"
fi
# Fungsi untuk memeriksa apakah folder sudah diproses sebelumnya
is_folder_processed() {
local folder_name="$1"
grep -q "^$folder_name$" "$LOG_FILE"
}
# Fungsi untuk menandai folder telah diproses
mark_folder_as_processed() {
local folder_name="$1"
echo "$folder_name" >> "$LOG_FILE"
}
# Cari semua folder di level pertama dalam $DIR
for folder in "$DIR"/*/; do
if [ -d "$folder" ]; then
folder_name=$(basename "$folder")
echo "Memproses folder: $folder_name"
# Cek apakah folder ini sudah diproses sebelumnya (berada dalam file log)
if is_folder_processed "$folder_name"; then
echo "Folder $folder_name sudah diproses, melewatinya..."
continue
fi
# Cek apakah ada file main.js atau index.js untuk proyek JavaScript
js_file=$(find "$folder" -maxdepth 1 -type f \( -name "main.js" -o -name "index.js" \) | head -n 1)
# Cek apakah ada file main.py untuk proyek Python
python_file=$(find "$folder" -maxdepth 1 -type f -name "main.py" | head -n 1)
# Jika ditemukan file JavaScript (main.js atau index.js)
if [ -n "$js_file" ]; then
echo "Menjalankan: $js_file di direktori $(dirname "$js_file")"
(
cd "$(dirname "$js_file")" || exit
echo "Pindah ke direktori $(pwd)"
# Set judul terminal ke nama folder
echo -ne "\033]0;$folder_name\007"
# Menjalankan file JavaScript menggunakan node
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; node $(basename "$js_file"); exec bash" &
)
# Menandai folder ini telah diproses dengan menambahkan ke log
mark_folder_as_processed "$folder_name"
sleep 7
# Jika ditemukan file Python (main.py) dan ada virtual environment
elif [ -n "$python_file" ]; then
venv_path="$folder/venv"
echo "Menjalankan: $python_file di direktori $(dirname "$python_file")"
(
cd "$(dirname "$python_file")" || exit
echo "Pindah ke direktori $(pwd)"
# Set judul terminal ke nama folder
echo -ne "\033]0;$folder_name\007"
if [ -d "$venv_path" ] && [ -f "$venv_path/bin/activate" ]; then
# Jika ada virtual environment, aktifkan venv dan jalankan main.py dengan --action 1
echo "Virtual environment ditemukan, mencoba mengaktifkan venv..."
source "$venv_path/bin/activate" || {
echo "Gagal mengaktifkan virtual environment di $venv_path"
exit 1
}
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; python3 $(basename "$python_file") --action 1; exec bash" &
else
# Jika tidak ada venv, jalankan main.py dengan python3.10
echo "Virtual environment tidak ditemukan, menjalankan main.py dengan python3.10"
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; python3.10 $(basename "$python_file"); exec bash" &
fi
)
# Menandai folder ini telah diproses dengan menambahkan ke log
mark_folder_as_processed "$folder_name"
sleep 3
# Jika tidak ada file Python atau JavaScript yang ditemukan
else
echo "Tidak ada file main.js, index.js, atau main.py yang cocok di folder: $folder"
fi
fi
done
# Tunggu semua proses selesai sebelum skrip berakhir
wait