Paket Manajer Nimble

Nim punya paket manajer bernama Nimble, paket manager membantu kita untuk membuat pustaka sendiri dan mengatur projek berisi kode yang kita tulis (disebut codebase). Bagian ini akan membahas bagaimana membuat proyek kode dengan Nimble.

Pustaka (Library) adalah kumpulan kode yang dibuat untuk digunakan oleh program atau proyek lain, sedangkan Proyek adalah kumpulan kode kita yang diatur ke dalam bentuk proyek untuk mudah menjalankan kumpulan kode sumber sekaligus.

Cara memakai Nimble

Nimble tersedia langsung saat kita menginstall Nim, untuk mengecek nimbel dapat mengetikan nimble di terminal (kalau di Windows, Command Prompt). Nimble punya banyak perintah dan flags untuk pemakaianya, maka tabel berikut berisi cheetsheet untuk mengenali penggunaan nimble :

PerintahContohKeterangan
initnimble initMembuat pustaka dan proyek dengan Nimble akan muncul dialog teks interaktif untuk prosesnya
buildnimble buildMemgompile proyek Nimble
runnimble runMenjalan entrypoint proyek yang dibuat dengan Nimble
installnimbel install <nama pustaka>, nimble install jesterMemasang pustaka global, jadi pustaka ini bisa dipakai oleh program tunggal, proyek dan pustaka
uninstallnimble uninstall <nama pustaka>,nimble uninstall jesterMenghapus pustaka yang terinstall di lokal installasi Nim
searchnimble search <nama pustaka>,nimble search jesterMencari pustaka didalam installasi Nim

Peringatan : perintah run dan build hanya bisa dijalan di dalam folder proyek Nimble. Caranya masukan terminal ke folder proyek nimble dan jalankan perintah ini.

Membuat Proyek/Pustaka dengan Nimble

Buat folder nim bebas dimana (boleh di drive D: atau /home/user/) untuk praktik kali ini kemudian buka terminal dan masuk ke folder nim. Berikut langkah untuk membuat projek/pustaka sederhana dengan Nimble:

  • Buat folder dengan nama projek/pustaka yang kamu inginkan, lalu masuk kedalamnya (contoh april). Karena nimble akan mengunakan nama folder itu sebagai nama projek/pustaka yang akan kita buat.

  • Jalankan perintah nimble init maka akan muncul berbagai pertanyaan

    • Akan terdapat opsi library (pustaka), binary atau hybrid. Pilih binary (untuk membuat proyek) dengan memencet Tab di keyboard dan tekan enter untuk lanjut.
    • Nimble akan menanyakan versi (ini untuk memantau perkembangan proyek/pustaka kamu), sementara ini masukan 0.0.1.
    • Setelah ini nimble menanyakan deskripsi proyek, langsung tekan enter saja kalau belum ada.
    • Kemudian keterangan lisensi proyek/pustaka, bagian ini enter saja (kecuali kamu sudah paham lisensi yang mau dipakai)
    • Terakhir, versi nim terendah untuk proyek/pustaka yang dibuat, untuk ini enter saja.

Setelah membuat proyek dengan Nimble, sekarang didalam folder kita ada ada berkas dengan nama <nama proyek>.nimble yang berisi kurang lebih seperti ini:

# Package

version       = "0.0.1"
author        = "Y"
description   = "A new awesome nimble package"
license       = "MIT"
srcDir        = "src"
bin           = @["april"]


# Dependencies

requires "nim >= 1.6.2"

Berkas .nimble diatas adalah deskripsi dari proyek atau pusatka yang kita buat. Fungsi requires dalam .nimble berguna untuk mendefinisikan kalau proyek/pustaka kita perlu pustaka ini (contoh nim >= 1.6.2, perlu pustaka nim dengan versi sama atau lebih tinggi dari 1.6.2).

Kode dari pustaka yang didefiniskan lewat .nimble bisa digunakan didalam proyek/pustaka kita, karena tidak semua kode yang kita tulis murni dari kita sendiri, akan ada saatnya membutuhan pustaka orang lain untuk memenuhi kebutuhan kita tanpa harus kita yang menulisnya sendiri.

Pada bagian Pemrograman Modular akan membahas penggunaan kode dari file lain dan pustaka orang lain.

Mengenali struktur proyek

Contoh ini kita menggunakan proyek dari template binary, template ini diperuntuhkan membuat proyek kecil (karena kita tidak perlu testing sejauh ini). Setelah membuat projek selain .nimble kita juga punya folder bernama src.

Seperti ini bentuknya bila kita lihat dari file eksplorer:

+-[src]
|-- april.nim
+- april.nimble

Nama proyek yang saya gunakan : april, maka akan menghasilkan april.nimble dan src/april.nim yang menjadi entrypoint dari proyek. Entrypoint adalah bagian proyek yang akan dijalankan ketika nimble run, ditentukan didalam april.nimble pada bagian bin = @["april"] (definisi entrypoint).

Berikut isi dari src/april.nim:

# This is just an example to get you started. A typical binary package
# uses this file as the main entry point of the application.

when isMainModule:
  echo("Hello, World!")

Kode didalam baris when isMainModule akan menamplikan Hello World, ini yang akan terjadi jika kita menjalankan nimble run. Sekarang jalankan nimble run.

Pro-tip: Untuk membuat proyek yang membutuhkan testing, saat pembuatan proyek gunakan template hybrid ketimbang binary, karena sebagian kode kita akan berperan sebagai pelengkap entrypoint yakni menjadi pustaka yang perlu pengujian terpisah.