Skip to content

imtaqin/Bahlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bahlib

@@@@@@@@@@@@@@@@@@@0GGGGGGCCCCG0@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@8LCG00088888GC0C0@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@8tG@@@@@@@@@@@C0@L8@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@8tC@@@@@@@@@@@@8L8@L@@@@@@@@@@@@@@@
@@@@@@@@@@@@8@GC18@@@@@@@8CLLL88L8Lf0@@@@@@@@@@@@@
@@@@@@@@@@8C1tC@LG@GCC8@@8L1tC8@8fLLt@@@@@@@@@@@@@
@@@@@@@@@GCL080GLtGft10G@@8GG@@@@@Cff@@@@@@@@@@@@@
@@@@@@@GfLG8@@@@CiG@GC88@@@0@@@@@@GCG@@@@@@@@@@@@@
@@@@@Gff0@@@@@0L0@f8@@088008@00@@@tC@8@@@@@@@@@@@@
@@@0ff0@@@@@@GC8@@@f88G0CCLtitG8@@@t1fG@@@@@@@@@@@
@@GtC@@@8880C0@@@@@8C00G1ii1f8@@@GGC0@LG@@@@@@@@@@
8Ct0@@8008CL8@@@@@@@8LL8@888@@8ffL8@@@CCGG8@@@@@@@
C08@@880GCtL0CfGGGGGG8@Cf808GLiC@@@@0L0@@0GCG08@@@
0@@80GCCtG@GC@80@C@@@@@t.tL1C00C0@@GL@@@@@@@80GCG0
CGGL08@@@@@@00@@8C@@@@@C,Gf0@@@8CGCC@@@@@@@@@@@@80
@80GGG8@@@@@@@@@0C@@@@@@80G@@@@@@00@@@@@@@@@@@@@@@

Package manager yang stoknya selalu aman (katanya)

bahlib adalah package manager untuk Node.js yang terinspirasi dari gaya komunikasi pejabat Indonesia yang selalu punya excuse untuk segala situasi. Ketika npm bilang "network error", bahlib bilang "kapal belum tiba". Ketika yarn bilang "package not found", bahlib bilang "stok aman, cuma lagi di-reorganisasi".

Dibangun dengan Rust karena kita butuh performa yang cepat - tidak seperti penanganan krisis BBM yang butuh berbulan-bulan.

Latar Belakang

Di Indonesia, ada seorang pejabat yang terkenal dengan kemampuan luar biasanya dalam memberikan excuse. Ketika SPBU swasta kehabisan BBM berbulan-bulan, beliau bilang "kapal belum tiba". Ketika listrik Aceh padam pasca bencana, beliau lapor ke Presiden "93% sudah nyala" padahal realitanya cuma 35-40%. Ketika dikritik, beliau bilang "itu laporan dari PLN, bukan salah kami".

Package manager ini adalah tribute untuk kreativitas tersebut. Karena kalau pejabat bisa punya excuse untuk segala hal, kenapa package manager tidak?

Instalasi

cargo install --path .

Atau build dari source (stok Rust aman, tidak perlu impor):

cargo build --release
./target/release/bahlib --help

Penggunaan

Inisialisasi Project Baru

$ bahlib init
Inisialisasi project baru...
package name (my-project):
version (1.0.0):
package.json sudah dibuat!
Jalankan `bahlib add <package>` untuk menambah dependencies

# Atau dengan default values (mode tidak mau ribet)
$ bahlib init -y

Install Dependencies

$ bahlib install
Barang sedang masuk...
Sukses! 420 packages dalam 6.9s
Tidak ada yang langka hari ini

# Offline mode (dari cache, alias mode subsidi)
$ bahlib install --offline
Mode subsidi aktif (offline)...
Semua barang dari pangkalan lokal!

# Frozen lockfile (lockfile tidak boleh berubah, seperti harga BBM subsidi)
$ bahlib install --frozen

Tambah Package

$ bahlib add react
Memasukkan react@18.2.0...
   |-- react-dom@18.2.0
   |-- scheduler@0.23.0
   +-- loose-envify@1.4.0
Barang sudah masuk!

# Sebagai devDependency
$ bahlib add -D typescript

# Versi exact (tidak pakai range, langsung exact seperti janji kampanye)
$ bahlib add -E lodash@4.17.21

Hapus Package

$ bahlib remove lodash
Mengeluarkan lodash...
Sudah keluar!

Update Packages

$ bahlib update
Sedang revisi...
3 packages perlu revisi
   +-- axios: 1.4.0 -> 1.6.0
Revisi selesai!

Jalankan Script

$ bahlib run dev
Menjalankan "dev"...

# Silent fail jika script tidak ada (seperti janji yang tidak ditepati)
$ bahlib run test --if-present

Cek Kenapa Package Terinstall

$ bahlib why loose-envify
Alasan loose-envify@1.4.0 terinstall:
   +-- react@18.2.0 -> loose-envify@^1.1.0

Audit Dependencies

$ bahlib audit
Mengecek plagiat dependencies...
2 vulnerabilities ditemukan
   |-- lodash (high) - Prototype pollution
   +-- minimist (moderate) - Prototype pollution
Jalankan `bahlib audit fix` untuk revisi

Cache Management

$ bahlib cache
Pangkalan Status:
   |-- Lokasi: ~/.bahlib/cache
   |-- Ukuran: 1.2 GB
   +-- Packages: 3,847

$ bahlib cache clean
Membersihkan pangkalan...
Pangkalan sudah bersih!

Flags Global

Flag Deskripsi
--silent Tanpa output lucu-lucuan (mode serius)
-h, --help Tampilkan bantuan
-V, --version Tampilkan versi

Flags per Command

bahlib install

Flag Deskripsi
--frozen Lockfile tidak boleh berubah
--offline Mode subsidi (from cache only)
--sabar Retry dengan delay lebih lama
--kilat No cache, always fresh

bahlib add

Flag Deskripsi
-D, --dev Add as devDependency
-E, --exact Save exact version
-g, --global Install globally

bahlib run

Flag Deskripsi
--if-present Silent fail if script doesn't exist

File yang Dihasilkan

File Fungsi
bahlib.lock Lockfile (seperti yarn.lock, tapi lebih Indonesia)
node_modules/ Folder dependencies

Konfigurasi

Buat file .bahlibrc di home directory untuk konfigurasi global:

registry = "https://registry.npmjs.org"
cache_dir = "~/.bahlib/cache"
silent = false
offline = false
strict_ssl = true

Error Messages yang Jujur (Tidak)

bahlib hadir dengan pesan error yang terinspirasi dari komunikasi krisis ala pejabat:

$ bahlib add some-broken-package
Gagal!
Alasan: Registry sedang ditata kelolanya
Kapal belum tiba
Mohon maaf atas ketidaknyamanannya
Coba: bahlib add some-broken-package --sabar

Koleksi Excuse

Ketika Network Error:

  • "Kapal belum tiba"
  • "Kapal masih di perjalanan"
  • "Pengiriman tertunda cuaca buruk"
  • "Armada lagi di-maintain"

Ketika Registry Down:

  • "Mungkin bisa jualan kopi dulu sambil nunggu"
  • "Coba beli ke registry Pertamina"
  • "Sambil nunggu, buka warung kopi aja"
  • "Kopi 1 liter Rp60.000, mau?"
  • "Pegawai registry lagi jualan di pinggir jalan"

Ketika Ada Bug:

  • "Itu laporan dari PLN, bukan salah kami"
  • "Upstream dependency yang kasih data salah"
  • "Kami hanya meneruskan laporan dari sumber"
  • "Tanya aja ke maintainer aslinya"
  • "Bukan ranah kami, itu urusan upstream"

Progress Bar yang Jujur:

  • "93% selesai (data dari lapangan berbeda)"
  • "Hampir done... trust me bro"
  • "Malam ini selesai semua, Pak"
  • "Progress lancar, tidak ada masalah"
  • "Semua on track (menurut laporan)"

Pesan Sukses:

  • "Tidak ada yang langka hari ini"
  • "Stok aman 18-19 hari"
  • "Tidak ada kelangkaan"
  • "93% sudah nyala!"
  • "Cadangan nasional aman"

Permintaan Maaf Otomatis:

  • "Mohon maaf atas ketidaknyamanannya"
  • "Kami dapat memahami perasaan saudara-saudara"
  • "Kami minta maaf, ini di luar kendali"
  • "Permohonan maaf sebesar-besarnya"
  • "Saya yakin mereka juga punya hati yang baik"

Kenapa "bahlib"?

Nama ini terinspirasi dari seorang Menteri ESDM Indonesia yang punya track record luar biasa dalam hal:

  1. SPBU Swasta Kosong BBM (2025): Shell dan Vivo kehabisan BBM berbulan-bulan. Solusi dari beliau? "Beli aja ke Pertamina." Pegawai SPBU sampai viral jualan kopi di pinggir jalan.

  2. Drama Listrik Aceh (Desember 2025): Pasca bencana, beliau lapor ke Presiden "93% listrik sudah nyala" padahal realitanya cuma 35-40%. Media sampai menulis headline "Bahlil Prank Presiden".

  3. Blame Game Professional: Ketika dikritik, selalu ada yang disalahkan - PLN, Pertamina, cuaca, atau "hambatan teknis di lapangan".

Package manager ini mengabadikan semangat tersebut. Karena di dunia software development, kita juga butuh excuse yang kreatif.

Tech Stack

  • Rust - Performa dan keamanan (tidak seperti data yang dilaporkan)
  • Tokio - Async runtime (async seperti janji perbaikan)
  • Clap - CLI argument parsing
  • Reqwest - HTTP client (untuk fetch package, bukan fetch excuse)
  • Serde - Serialization

Struktur Project

bahlib/
|-- Cargo.toml
|-- README.md
|-- src/
|   |-- main.rs
|   |-- lib.rs
|   |-- cli/
|   |   |-- mod.rs
|   |   |-- install.rs
|   |   |-- add.rs
|   |   |-- remove.rs
|   |   |-- update.rs
|   |   |-- cache.rs
|   |   |-- audit.rs
|   |   |-- run.rs
|   |   |-- init.rs
|   |   +-- why.rs
|   |-- core/
|   |   |-- mod.rs
|   |   |-- resolver.rs
|   |   |-- fetcher.rs
|   |   |-- installer.rs
|   |   |-- lockfile.rs
|   |   +-- cache.rs
|   |-- registry/
|   |   |-- mod.rs
|   |   +-- npm.rs
|   |-- config/
|   |   |-- mod.rs
|   |   +-- bahlibrc.rs
|   +-- utils/
|       |-- mod.rs
|       |-- progress.rs
|       |-- logger.rs
|       +-- excuse.rs
+-- tests/

Contributing

Contributions welcome! Terutama untuk:

  • Menambah excuse-excuse baru yang lebih kreatif
  • Menambah referensi drama terbaru
  • Memperbaiki bug (tapi jangan lupa blame upstream)

FAQ

Q: Apakah ini package manager yang serius? A: Stok keseriusan aman.

Q: Kenapa pakai Rust? A: Karena kita butuh performa yang cepat, tidak seperti respon pemerintah terhadap krisis.

Q: Apakah ini legal? A: Kami hanya meneruskan informasi dari sumber. Bukan ranah kami.

Q: Ada bug! A: Itu laporan dari upstream, bukan salah kami.

License

MIT


Disclaimer: Ini adalah project satire. Tidak ada afiliasi dengan pihak manapun. Semua referensi ke kejadian nyata adalah untuk tujuan humor semata. Kami dapat memahami perasaan saudara-saudara yang merasa tersinggung. Mohon maaf atas ketidaknyamanannya. Stok disclaimer aman.

About

why bahlil... why

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published