Shell: Develop in local

Mainan lokal serasa netlify, dengan git kita clone, pull, dan fetch.
Apa yang aku lakukan di malam hari? Istirahat! Mau cerita bagaimana persiapan mengerjakan tugas kantor. Jadi, sudah seminggu ini mainan server linux yang dibuatkan sysadmin di kantor. Server itu untuk monitoring proyek yang sedang aku kerjakan, yaitu bikin styleguide. Ya sudah, langsung saja:

Pertama ambil souce code dari repository dengan perintah git clone lalu install dependencies dengan perintah npm i. Setelah itu bikin ini di parent folder:

#!/usr/bin/env bash
app="/usr/local/bin/node yarn gulp watch"
app_pid=`ps -ef | grep "$app" | awk '{print $2}'`
folder=`ls -d */ | awk '{print $1}'`

if `ps -p $app_pid > /dev/null`; then
    echo "An instance of gulp watch is appear to be running."
    echo "Not starting another instance."
    exit 5
else
    cd "$folder" && nohup yarn gulp watch &> /dev/null &
fi

Ada sedikit script automation agar tanpa perlu di remote pakai vpn (meskipun bisa juga minta dibuatkan) atau ssh seperti waktu part time dulu. Meski begitu, sudah merasa aman untuk ditinggal berakhir pekan. Masih di parent folder, buat satu file untuk eksekusi, begini bentuk kodenya:

#!/usr/bin/env bash
ls -d */ | while read folder; do
    if [ -d "$folder/.git" ]; then
        cd "$folder"
        git fetch --all
        cd ..
    fi
done

Setelah itu jadwalkan agar berulang kali dieksekusi oleh sistem. Pakai crontab -e atau masuk sebagai super user dan editlah file /etc/crontab dibumbui sedikit hackity hack di file .gitconfig. Begini kodenya .gitconfig yang aku copy & paste dari stack overflow untuk memudahkan cek waktu terakhir update dengan mengetik git when dan git which untuk melacak kapan dan dari mana mereka diambil.

[alias]
        when = !stat -c %y .git/FETCH_HEAD
        which = log --all --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'\n--abbrev-commit --date=relative

Secara command line sudah seperti pakai netlify atau now di environment sendiri. Begitu saja, hari ini senyum-senyum di rumah menikmati malam yang tenang. Besok akan ada pekerjaan lagi. Wait, ada file yang sudah diedit di server. Sebelum ada konflik, ketik ini dulu deh:

git stash
git checkout develop-branch
git stash pop

I can go home, now. Terima kasih sudah membaca ini. Tautan untuk stack overflow aku lupa dan dicari di history browser ga ketemu. Terpujilah orang yang sudah membagi pengetahuan mereka. Sampaikan terima kasihku untuk mereka juga.

PS: Dotfiles sementara waktu memang tidak dapat dibahas semua berhubung pekerjaan masih menumpuk. Sedangkan untuk proyek ini, aku pakai gulp untuk build dan watch source code agar compile otomatis berjalan jika ada perubahan dari stream. Mungkin kalian biasa menggunakan grunt atau task runner lain, silakan disesuaikan.