Latihan 1 dari materi Defensive Scripting & trap di Terminal — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
"Harden" sebuah script dengan menganalisis preamble dan simulasi trap cleanup.
1. analyzePreamble(line)
Terima string baris preamble seperti "set -euo pipefail" dan kembalikan array flag yang aktif — pilih dari "exit-on-error", "undefined-fails", "pipefail", "xtrace" sesuai e, u, o pipefail, x. Abaikan opsi lain.
Contoh:
"set -eu" → ["exit-on-error","undefined-fails"]"set -euo pipefail" → ["exit-on-error","undefined-fails","pipefail"]"set -x" → ["xtrace"]"echo hello" → [] (bukan preamble)2. defaultValue(expr, env)
Implementasi parameter expansion ${VAR:-default}. Input: string expr seperti "${HOST:-localhost}" dan object env. Return string.
env[VAR] terset & non-empty → return env[VAR].default.3. createScriptRunner()
Return object { onExit, run }:
onExit(fn) — registrasi cleanup handler (bisa banyak).run(task) — jalankan function task. Setelah selesai (sukses atau throw), panggil SEMUA handler yang diregistrasi dalam urutan LIFO (terakhir di-register, pertama dipanggil). Return "ok" jika sukses, "error" jika task throw — tapi cleanup tetap jalan.