|
| 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