.class="img-fluid clearfix"
LibMake ⧉ adalah CLI dan pustaka Rust sumber terbuka yang menghasilkan scaffold proyek pustaka lengkap dari satu pemanggilan. Alat ini mengisi celah antara cargo new --lib, yang hanya membuat Cargo.toml dan src/lib.rs minimal, dan setup pustaka siap produksi, yang biasanya membutuhkan penambahan manual berupa komentar dokumentasi, CI, harness pengujian, struktur benchmark, CONTRIBUTING.md, dan file lisensi.
Artikel ini menjelaskan apa yang dihasilkan LibMake, bagaimana mode file konfigurasi dan CLI bekerja, struktur CI yang dihasilkan, serta sistem templating-nya.
Instalasi dan Penggunaan Dasar
LibMake diterbitkan di crates.io dan dipasang melalui Cargo:
cargo install libmake
Pemanggilan CLI minimal menghasilkan pustaka bernama di direktori saat ini:
libmake \
--author "Jane Smith" \
--email "jane@example.com" \
--name "my_library" \
--description "A Rust library for doing useful things" \
--version "0.1.0" \
--licence "MIT OR Apache-2.0" \
--repository "https://github.com/example/my_library" \
--rustversion "1.70.0" \
--edition "2021" \
--output "my_library"
Flag opsional tambahan mencakup --categories, --keywords, --homepage, --documentation, --readme, dan --build.
Mode File Konfigurasi
Untuk penggunaan tim, semua flag CLI dapat dinyatakan dalam file konfigurasi TOML:
# libmake.toml
author = "Jane Smith"
email = "jane@example.com"
name = "my_library"
description = "A Rust library for doing useful things"
version = "0.1.0"
licence = "MIT OR Apache-2.0"
repository = "https://github.com/example/my_library"
rustversion = "1.70.0"
edition = "2021"
output = "my_library"
categories = ["algorithms", "data-structures"]
keywords = ["rust", "library"]
Dijalankan sebagai:
libmake --config libmake.toml
LibMake juga menerima format konfigurasi JSON, YAML, dan CSV melalui flag --config-json, --config-yaml, dan --config-csv. Menyimpan libmake.toml di root repositori memberi setiap kontributor baseline scaffold yang dapat direproduksi, dan perubahan pada konfigurasi template terlihat jelas dalam diff Git.
Struktur Proyek yang Dihasilkan
Satu pemanggilan LibMake membuat layout berikut:
my_library/
├── .github/
│ └── workflows/
│ └── release.yml # full CI matrix
├── benches/
│ └── lib_benchmarks.rs # Criterion benchmark stub
├── src/
│ └── lib.rs # doc-commented, deny(missing_docs)
├── tests/
│ └── lib_tests.rs # integration test stub
├── CONTRIBUTING.md
├── Cargo.toml # complete metadata
├── LICENSE-APACHE
├── LICENSE-MIT
└── README.md
File src/lib.rs yang dihasilkan mencakup komentar dokumentasi tingkat crate, #![deny(missing_docs)], #![doc = include_str!("../README.md")] untuk menarik README ke rustdoc, serta tipe publik stub dengan komentar dokumentasi terkait. Pilihan ini mengikuti Rust API Guidelines yang mewajibkan semua item publik memiliki dokumentasi.
File benches/lib_benchmarks.rs yang dihasilkan menggunakan Criterion.rs dan membutuhkan criterion sebagai dev-dependency, yang otomatis dimasukkan LibMake ke Cargo.toml.
Workflow CI GitHub Actions
File .github/workflows/release.yml yang dihasilkan menjalankan lima job pada setiap push dan pull request:
| Job | Toolchain | Yang diperiksa |
|---|---|---|
test |
stable, beta, nightly (matrix) | cargo test --all-features |
clippy |
stable | cargo clippy -- -D warnings |
fmt |
stable | cargo fmt --check |
audit |
stable | cargo audit (cargo-audit dipasang di job) |
doc |
stable | cargo doc --no-deps (gagal jika dokumentasi hilang) |
Job nightly memiliki continue-on-error: true, sehingga regresi nightly tidak memblokir merge, tetapi tetap terlihat di workflow run.
Templating dengan Tera
LibMake menggunakan engine template Tera - sintaks mirip Jinja2 untuk Rust - untuk merender semua file yang dihasilkan. Setiap template menerima struct konfigurasi penuh sebagai konteks:
{{ name }} → my_library
{{ author }} → Jane Smith
{{ edition }} → 2021
{{ description }} → A Rust library for doing useful things
Direktori template khusus didukung melalui flag --template:
libmake --config libmake.toml --template ./my_templates/
Direktori khusus harus mencerminkan struktur template default dengan nama file yang sama. Setiap file yang ada di direktori khusus menggantikan template bawaan terkait; file yang tidak ada akan memakai versi bawaan. Ini memungkinkan override parsial, misalnya hanya mengganti template workflow CI sambil tetap memakai template default untuk src/lib.rs dan Cargo.toml.
Pertanyaan yang Sering Diajukan
Apa perbedaan LibMake dengan cargo new --lib?
cargo new --lib membuat proyek minimal hanya dengan Cargo.toml dan src/lib.rs yang berisi satu blok #[cfg(test)]. LibMake menghasilkan struktur penuh: integration tests, benchmarks, CI, CONTRIBUTING.md, file dual-licence, dan src/lib.rs yang terdokumentasi dengan benar, dikonfigurasi menggunakan metadata proyek yang sebenarnya, bukan placeholder.
Bisakah LibMake digunakan dengan workspace Cargo yang sudah ada?
LibMake menghasilkan direktori crate standalone. Untuk menambahkan crate yang dihasilkan ke workspace yang sudah ada, tambahkan path output ke array members di root Cargo.toml workspace. LibMake tidak memodifikasi file workspace yang sudah ada.
Bisakah saya memperbarui template scaffold setelah generasi awal?
LibMake menghasilkan file satu kali; alat ini tidak melacak atau memperbarui proyek yang pernah dihasilkan sebelumnya. Untuk mengadopsi template baru, pendekatan yang disarankan adalah menjalankan ulang LibMake ke direktori sementara, lalu membandingkan hasilnya dengan crate yang sudah ada dan menerapkan perubahan yang diinginkan secara selektif.
Edisi Rust dan nilai MSRV apa yang didukung LibMake?
LibMake menerima string apa pun untuk --edition dan --rustversion, lalu menulis nilainya langsung ke Cargo.toml. Alat ini tidak memvalidasi apakah edisi atau MSRV yang diberikan adalah versi Rust yang nyata, sehingga pemanggil bertanggung jawab memberikan nilai yang benar.
Referensi
- Rousseau, S. LibMake - A code generator to reduce repetitive tasks and build high-quality Rust libraries. GitHub, 2023. https://github.com/sebastienrousseau/libmake
- The Rust Programming Language. Rust API Guidelines. GitHub, 2023. https://rust-lang.github.io/api-guidelines/
- The Cargo Book. Package Layout. The Rust Programming Language, 2023. https://doc.rust-lang.org/cargo/guide/project-layout.html
- Keats, V. et al. Tera - A template engine inspired by Jinja2 and Django templates. GitHub, 2023. https://keats.github.io/tera/
Terakhir ditinjau .
Terbitkan ulang artikel ini
Salin format untuk Medium
# LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau > Originally published at [https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/](https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/) LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi. Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/
Salin format untuk Mastodon
LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi. https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/
Salin format untuk LinkedIn
LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi. Berikut adalah poin strategis utama: - Instalasi dan Penggunaan Dasar. LibMake diterbitkan di crates.io dan dipasang melalui Cargo:. - Mode File Konfigurasi. Untuk penggunaan tim, semua flag CLI dapat dinyatakan dalam file konfigurasi TOML:. - Struktur Proyek yang Dihasilkan. Satu pemanggilan LibMake membuat layout berikut:. - Workflow CI GitHub Actions. File .github/workflows/release.yml yang dihasilkan menjalankan lima job pada setiap push dan pull request:. Bagaimana pendekatan organisasi Anda terhadap tantangan yang diuraikan dalam artikel ini? → https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/ #Libmake #GeneratorKodeRust #ScaffoldCargo #TemplatePustakaRust #TemplatingTera Sebastien Rousseau | CC-BY-4.0
Kutip artikel ini
LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau
LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi.
BibTeX
@online{rousseau2023libmake,
author = {Rousseau, Sebastien},
title = {{LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau}},
year = {2023},
url = {https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/},
urldate = {2023}
}RIS
TY - GEN AU - Rousseau, Sebastien TI - LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau PY - 2023 UR - https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/ ER -
Vancouver
Rousseau S. LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau. sebastienrousseau.com. 2023 Oct 26. Available from: https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/
Chicago
Rousseau, Sebastien. "LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau." sebastienrousseau.com. October 26, 2023. https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/.
APA
Rousseau, S. (2023, October 26). LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/
Terbitkan ulang artikel ini
LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau
LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi.
Artikel ini berlisensi Creative Commons Attribution 4.0 International. Penerbitan ulang memerlukan atribusi ke URL kanonis.
LibMake: Generator Scaffold Pustaka Rust — Sebastien Rousseau LibMake adalah alat CLI Rust yang menghasilkan scaffold pustaka lengkap - Cargo.toml, src/lib.rs dengan template dokumentasi, harness pengujian dan benchmark, serta CI GitHub Actions - dari satu perintah atau file konfigurasi TOML/YAML berversi. Originally published at https://sebastienrousseau.com/id/2023-10-26-libmake-generator-kode-untuk-pustaka-rust/ by Sebastien Rousseau. Licensed under CC-BY-4.0.