Sebastien Rousseau

LIBMAKE

LibMake: Generator Scaffold Pustaka Rust

LibMake: pembuat kode Rust yang menerapkan praktik terbaik sejak hari pertama.

4 min read
Banner for: LibMake: Generator Scaffold Pustaka Rust

Pilar-pilar putih raksasa.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

  1. Rousseau, S. LibMake - A code generator to reduce repetitive tasks and build high-quality Rust libraries. GitHub, 2023. https://github.com/sebastienrousseau/libmake
  2. The Rust Programming Language. Rust API Guidelines. GitHub, 2023. https://rust-lang.github.io/api-guidelines/
  3. The Cargo Book. Package Layout. The Rust Programming Language, 2023. https://doc.rust-lang.org/cargo/guide/project-layout.html
  4. 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.