Skip to content

Commit 3632a6c

Browse files
authored
Create main.sh
1 parent afad8ad commit 3632a6c

File tree

1 file changed

+95
-0
lines changed

1 file changed

+95
-0
lines changed

main.sh

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#!/bin/bash
2+
3+
# Direktori root di mana semua sub-folder berada
4+
DIR="../automation-scripts"
5+
LOG_FILE="$DIR/run_log.txt"
6+
7+
# Jika file log belum ada, buat file log kosong
8+
if [ ! -f "$LOG_FILE" ]; then
9+
touch "$LOG_FILE"
10+
fi
11+
12+
# Fungsi untuk memeriksa apakah folder sudah diproses sebelumnya
13+
is_folder_processed() {
14+
local folder_name="$1"
15+
grep -q "^$folder_name$" "$LOG_FILE"
16+
}
17+
18+
# Fungsi untuk menandai folder telah diproses
19+
mark_folder_as_processed() {
20+
local folder_name="$1"
21+
echo "$folder_name" >> "$LOG_FILE"
22+
}
23+
24+
# Cari semua folder di level pertama dalam $DIR
25+
for folder in "$DIR"/*/; do
26+
if [ -d "$folder" ]; then
27+
folder_name=$(basename "$folder")
28+
echo "Memproses folder: $folder_name"
29+
30+
# Cek apakah folder ini sudah diproses sebelumnya (berada dalam file log)
31+
if is_folder_processed "$folder_name"; then
32+
echo "Folder $folder_name sudah diproses, melewatinya..."
33+
continue
34+
fi
35+
36+
# Cek apakah ada file main.js atau index.js untuk proyek JavaScript
37+
js_file=$(find "$folder" -maxdepth 1 -type f \( -name "main.js" -o -name "index.js" \) | head -n 1)
38+
39+
# Cek apakah ada file main.py untuk proyek Python
40+
python_file=$(find "$folder" -maxdepth 1 -type f -name "main.py" | head -n 1)
41+
42+
# Jika ditemukan file JavaScript (main.js atau index.js)
43+
if [ -n "$js_file" ]; then
44+
echo "Menjalankan: $js_file di direktori $(dirname "$js_file")"
45+
(
46+
cd "$(dirname "$js_file")" || exit
47+
echo "Pindah ke direktori $(pwd)"
48+
49+
# Set judul terminal ke nama folder
50+
echo -ne "\033]0;$folder_name\007"
51+
52+
# Menjalankan file JavaScript menggunakan node
53+
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; node $(basename "$js_file"); exec bash" &
54+
)
55+
# Menandai folder ini telah diproses dengan menambahkan ke log
56+
mark_folder_as_processed "$folder_name"
57+
sleep 7
58+
# Jika ditemukan file Python (main.py) dan ada virtual environment
59+
elif [ -n "$python_file" ]; then
60+
venv_path="$folder/venv"
61+
echo "Menjalankan: $python_file di direktori $(dirname "$python_file")"
62+
63+
(
64+
cd "$(dirname "$python_file")" || exit
65+
echo "Pindah ke direktori $(pwd)"
66+
67+
# Set judul terminal ke nama folder
68+
echo -ne "\033]0;$folder_name\007"
69+
70+
if [ -d "$venv_path" ] && [ -f "$venv_path/bin/activate" ]; then
71+
# Jika ada virtual environment, aktifkan venv dan jalankan main.py dengan --action 1
72+
echo "Virtual environment ditemukan, mencoba mengaktifkan venv..."
73+
source "$venv_path/bin/activate" || {
74+
echo "Gagal mengaktifkan virtual environment di $venv_path"
75+
exit 1
76+
}
77+
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; python3 $(basename "$python_file") --action 1; exec bash" &
78+
else
79+
# Jika tidak ada venv, jalankan main.py tanpa --action 1
80+
echo "Virtual environment tidak ditemukan, menjalankan main.py tanpa --action 1"
81+
gnome-terminal --title="$folder_name" -- bash -c "echo -ne '\033]0;$folder_name\007'; python3 $(basename "$python_file"); exec bash" &
82+
fi
83+
)
84+
# Menandai folder ini telah diproses dengan menambahkan ke log
85+
mark_folder_as_processed "$folder_name"
86+
sleep 3
87+
# Jika tidak ada file Python atau JavaScript yang ditemukan
88+
else
89+
echo "Tidak ada file main.js, index.js, atau main.py yang cocok di folder: $folder"
90+
fi
91+
fi
92+
done
93+
94+
# Tunggu semua proses selesai sebelum skrip berakhir
95+
wait

0 commit comments

Comments
 (0)