1- name : Perbarui README.md dengan Daftar Folder
1+ name : Perbarui README.md dengan Folder
22
3- # Menjalankan workflow setiap kali ada perubahan di repositori
43on :
54 push :
65 paths :
@@ -11,60 +10,66 @@ jobs:
1110 runs-on : ubuntu-latest
1211
1312 steps :
14- # 1. Checkout repositori
1513 - name : Checkout repositori
1614 uses : actions/checkout@v2
1715
18- # 2. Ambil daftar folder yang ada di repositori
1916 - name : Ambil semua folder
2017 id : get_folders
2118 run : |
2219 # Mendapatkan semua folder kecuali .github dan node_modules
2320 FOLDERS=$(ls -d */ | grep -v '\.github\|node_modules' | sed 's/\/$//')
2421 echo "folders=$(echo "$FOLDERS" | tr '\n' ' ')" >> $GITHUB_ENV
2522
26- # 3. Perbarui README.md dengan daftar folder yang ditemukan
27- - name : Perbarui README.md
23+ - name : Cek folder saat ini di README.md
24+ id : read_readme
2825 run : |
29- # Jika tidak ada folder dalam repositori, keluar dari proses
26+ # Ambil semua folder yang sudah ada di README.md secara case-insensitive
27+ if grep -q '\[.*\]\(.*\)' README.md; then
28+ CURRENT_FOLDERS=$(grep -oP '\[(.*?)\]\(\K.*?(?=\)' README.md | tr '[:upper:]' '[:lower:]' | sort -u)
29+ else
30+ CURRENT_FOLDERS=""
31+ fi
32+ echo "current_folders=$(echo "$CURRENT_FOLDERS" | tr '\n' ' ')" >> $GITHUB_ENV
33+
34+ - name : Reset dan sinkronkan folder di README.md
35+ run : |
36+ # Jika tidak ada folder dalam repositori, keluar
3037 if [ -z "${{ env.folders }}" ]; then
3138 echo "Tidak ada folder yang ditemukan di repositori."
3239 exit 0
3340 fi
3441
35- # Baca template dari file template.md
42+ # Baca template dari template.md
3643 TEMPLATE_FILE="template.md"
37- README_FILE ="README.md"
44+ OUTPUT_FILE ="README.md"
3845
39- # Hapus isi file README.md lama
40- > $README_FILE
46+ # Hapus isi file README.md
47+ > $OUTPUT_FILE
4148
4249 # Salin konten template ke file README.md
43- cp $TEMPLATE_FILE $README_FILE
50+ cp $TEMPLATE_FILE $OUTPUT_FILE
4451
45- # Generate daftar folder untuk ditampilkan dalam format tabel dengan icon
52+ # Generate daftar folder untuk Markdown
4653 UPDATED_FOLDER_LIST=""
47- ICON="📁" # Icon untuk folder
48- for folder in ${{ env.folders }}; do
49- # Escape karakter spesial di folder name sebelum memasukkan ke sed
50- folder_escaped=$(echo "$folder" | sed 's/[\/&]/\\&/g')
5154
52- # Menambahkan folder ke daftar dalam format tabel dengan icon
53- UPDATED_FOLDER_LIST="$UPDATED_FOLDER_LIST| $ICON | [$folder]($folder_escaped/) |\n"
55+ # Tambahkan folder yang ada ke list
56+ for folder in ${{ env.folders }}; do
57+ folder_clean=$(echo "$folder" | tr '[:upper:]' '[:lower:]' | sed 's/^[ \t]*//;s/[ \t]*$//') # Normalisasi nama folder
58+ UPDATED_FOLDER_LIST="$UPDATED_FOLDER_LIST- [$folder](./$folder)\n"
5459 done
5560
56- # Gunakan `sed` untuk menggantikan placeholder dengan daftar folder yang diperbarui di README.md
57- sed -i.bak "s|<!-- FOLDER_LIST_PLACEHOLDER -->|$UPDATED_FOLDER_LIST|" $README_FILE
61+ # Gantikan placeholder dengan daftar folder yang diperbarui di README.md
62+ sed -i.bak "s|<!-- FOLDER_LIST_PLACEHOLDER -->|$UPDATED_FOLDER_LIST|" $OUTPUT_FILE
5863
5964 # Cek jika tidak ada perubahan pada README.md
6065 if git diff --quiet; then
6166 echo "Tidak ada perubahan pada README.md. Melewatkan commit."
6267 exit 0
6368 fi
6469
65- # Jika ada perubahan, commit dan push ke repositori
70+ # Commit dan push perubahan
6671 git config --global user.name "github-actions"
6772 git config --global user.email "github-actions@github.com"
68- git add $README_FILE
69- git commit -m "Perbarui README.md dengan daftar folder terbaru "
73+ git add $OUTPUT_FILE
74+ git commit -m "Reset dan sinkronkan folder di README.md dengan repositori "
7075 git push
0 commit comments