Sebastien Rousseau

LIBMAKE

LibMake: Rust Kütüphane İskeleti Üreticisi

LibMake: en iyi uygulamaları ilk günden zorunlu kılan bir Rust kod üreticisi

4 dk okuma
Banner for: LibMake: Rust Kütüphane İskeleti Üreticisi

Devasa beyaz sütunlar.class="img-fluid clearfix"


TL;DR. LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır: doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI.

Önemli Çıkarımlar

  • Kurulum ve Temel Kullanım. LibMake, crates.io üzerinde yayımlanır ve Cargo ile kurulur.
  • Yapılandırma Dosyası Modu. Ekip kullanımı için tüm CLI bayrakları bir TOML yapılandırma dosyasında ifade edilebilir.
  • Üretilen Proje Yapısı. Bir LibMake çağrısı belirli bir dizin düzeni oluşturur.
  • GitHub Actions CI İş Akışı. Üretilen .github/workflows/release.yml, her push ve pull request'te beş iş çalıştırır.

LibMake ⧉, tek bir çağrıyla eksiksiz bir kütüphane projesi iskeleti üreten açık kaynaklı bir Rust CLI aracı ve kütüphanesidir. Yalnızca asgari bir Cargo.toml ve src/lib.rs oluşturan cargo new --lib ile üretime hazır bir kütüphane kurulumu arasındaki boşluğu hedefler; bu kurulum, doküman yorumlarının, CI'nin, test koşumlarının, benchmark yapısının, CONTRIBUTING.md ve lisans dosyalarının elle eklenmesini gerektirir.

Bu makale, LibMake'in neler ürettiğini, yapılandırma dosyası ve CLI modlarının nasıl çalıştığını, üretilen CI yapısını ve şablonlama sistemini açıklar.

Kurulum ve Temel Kullanım

LibMake, crates.io üzerinde yayımlanır ve Cargo ile kurulur:

cargo install libmake

Asgari CLI çağrısı, geçerli dizinde adlandırılmış bir kütüphane üretir:

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"

Ek isteğe bağlı bayraklar arasında --categories, --keywords, --homepage, --documentation, --readme ve --build bulunur.

Yapılandırma Dosyası Modu

Ekip kullanımı için tüm CLI bayrakları bir TOML yapılandırma dosyasında ifade edilebilir:

# 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"]

Şu şekilde çağrılır:

libmake --config libmake.toml

LibMake ayrıca --config-json, --config-yaml ve --config-csv bayrakları aracılığıyla sırasıyla JSON, YAML ve CSV yapılandırma biçimlerini de kabul eder. libmake.toml dosyasını depo köküne işlemek, her katkıda bulunana yeniden üretilebilir bir iskelet temeli sağlar ve şablon yapılandırmasındaki değişiklikler Git farklarında görünür.

Üretilen Proje Yapısı

Bir LibMake çağrısı şu düzeni oluşturur:

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

Üretilen src/lib.rs, sandık düzeyinde bir doküman yorumu, #![deny(missing_docs)], README'yi rustdoc'a çekmek için #![doc = include_str!("../README.md")] ve ilişkili bir doküman yorumuna sahip bir taslak genel tür içerir. Bu seçimler, tüm genel öğelerin belgelenmesi gerektiğini belirten Rust API Kılavuzu gereksinimini izler.

Üretilen benches/lib_benchmarks.rs, Criterion.rs kullanır ve criterion öğesinin bir geliştirme bağımlılığı olarak eklenmesini gerektirir; LibMake bunu Cargo.toml dosyasına otomatik olarak ekler.

GitHub Actions CI İş Akışı

Üretilen .github/workflows/release.yml, her push ve pull request'te beş iş çalıştırır:

İş Araç Zinciri Neyi denetler
test stable, beta, nightly (matris) cargo test --all-features
clippy stable cargo clippy -- -D warnings
fmt stable cargo fmt --check
audit stable cargo audit (cargo-audit işte kurulur)
doc stable cargo doc --no-deps (eksik dokümanlarda başarısız olur)

nightly işinde continue-on-error: true ayarı bulunur; böylece bir nightly regresyonu birleştirmeleri engellemez, ancak yine de hatayı iş akışı çalışmasında görünür kılar.

Tera ile Şablonlama

LibMake, tüm üretilen dosyaları oluşturmak için Tera şablon motorunu kullanır; bu, Rust için Jinja2 benzeri bir söz dizimidir. Her şablon, bağlam olarak tam yapılandırma yapısını alır:

{{ name }}            → my_library
{{ author }}          → Jane Smith
{{ edition }}         → 2021
{{ description }}     → A Rust library for doing useful things

Özel şablon dizinleri --template bayrağı aracılığıyla desteklenir:

libmake --config libmake.toml --template ./my_templates/

Özel dizin, varsayılan şablon yapısını (aynı dosya adları) yansıtmalıdır. Özel dizinde bulunan herhangi bir dosya, karşılık gelen yerleşik şablonu geçersiz kılar; özel dizinde bulunmayan dosyalar yerleşik sürüme geri döner. Bu, kısmi geçersiz kılmalara olanak tanır; örneğin, varsayılan src/lib.rs ve Cargo.toml şablonlarını korurken yalnızca CI iş akışı şablonunu değiştirmek gibi.

Sıkça Sorulan Sorular

LibMake, cargo new --lib'den nasıl farklıdır? cargo new --lib, yalnızca Cargo.toml ve src/lib.rs (tek bir #[cfg(test)] bloğu içeren) ile asgari bir proje oluşturur. LibMake ise tam yapıyı üretir: entegrasyon testleri, benchmark'lar, CI, CONTRIBUTING.md, ikili lisans dosyaları ve düzgün belgelenmiş bir src/lib.rs; bunlar yer tutucular yerine projenin gerçek meta verileriyle yapılandırılır.

LibMake mevcut bir Cargo çalışma alanıyla kullanılabilir mi? LibMake bağımsız bir sandık dizini üretir. Üretilen sandığı mevcut bir çalışma alanına eklemek için, çıktı yolunu kök Cargo.toml dosyasındaki çalışma alanı members dizisine ekleyin. LibMake mevcut çalışma alanı dosyalarını değiştirmez.

İlk üretimden sonra iskelet şablonlarını güncelleyebilir miyim? LibMake dosyaları bir kez üretir; önceden üretilmiş projeleri izlemez veya güncellemez. Güncellenmiş şablonları benimsemek için önerilen yaklaşım, LibMake'i geçici bir dizine yeniden çalıştırmak ve sonucu mevcut sandıkla karşılaştırarak istenen değişiklikleri seçmeli olarak uygulamaktır.

LibMake hangi Rust sürümlerini ve MSRV değerlerini destekler? LibMake, --edition ve --rustversion için herhangi bir dizeyi kabul eder ve değerleri doğrudan Cargo.toml dosyasına yazar. Belirtilen sürümün veya MSRV'nin gerçek bir Rust sürümü olup olmadığını doğrulamaz; bu nedenle doğru değerlerin sağlanmasından çağıranlar sorumludur.

Kaynaklar

  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/

Son inceleme .

Bu makaleyi yeniden yayınla

Medium için biçimi kopyala

# LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

> Originally published at [https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/](https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/)

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır. Ürettikleri arasında doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI yer alır.

Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/

Mastodon için biçimi kopyala

LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır. Ürettikleri arasında doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI yer alır.

https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/

LinkedIn için biçimlendirilmiş kopyala

LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır.

İşte temel stratejik çıkarımlar:

- Kurulum ve Temel Kullanım. LibMake, crates.io üzerinde yayımlanır ve Cargo ile kurulur:.
- Yapılandırma Dosyası Modu. Ekip kullanımı için tüm CLI bayrakları bir TOML yapılandırma dosyasında ifade edilebilir:.
- Üretilen Proje Yapısı. Bir LibMake çağrısı şu düzeni oluşturur:.
- GitHub Actions CI İş Akışı. Üretilen .github/workflows/release.yml, her push ve pull request'te beş iş çalıştırır:.

Kuruluşunuzun bu yazıda belirtilen zorluklara yaklaşımı nedir?

→ https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/

#Libmake #RustKodÜretici #CargoIskeleti #RustKütüphaneŞablonu #TeraŞablonlama

Sebastien Rousseau | CC-BY-4.0
Bu makaleyi alıntıla

LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır. Ürettikleri arasında doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI yer alır.

BibTeX

@online{rousseau2023libmake,
  author  = {Rousseau, Sebastien},
  title   = {{LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau}},
  year    = {2023},
  url     = {https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/},
  urldate = {2023}
}

RIS

TY  - GEN
AU  - Rousseau, Sebastien
TI  - LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau
PY  - 2023
UR  - https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/
ER  -

Vancouver

Rousseau S. LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau. sebastienrousseau.com. 2023 Oct 26. Available from: https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/

Chicago

Rousseau, Sebastien. "LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau." sebastienrousseau.com. October 26, 2023. https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/.

APA

Rousseau, S. (2023, October 26). LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/

Bu makaleyi yeniden yayınla

LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır. Ürettikleri arasında doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI yer alır.

Bu makale şu lisans altında yayınlanmıştır Creative Commons Attribution 4.0 International. Yeniden yayın, kanonik URL'ye atıfta bulunulmasını gerektirir.

LibMake: Rust Kütüphane İskeleti Üreticisi — Sebastien Rousseau

LibMake, tek bir komuttan ya da sürümlenmiş bir TOML/YAML yapılandırma dosyasından eksiksiz bir kütüphane iskeleti üreten bir Rust CLI aracıdır. Ürettikleri arasında doküman şablonlu Cargo.toml ve src/lib.rs, test ve benchmark koşumları ile GitHub Actions CI yer alır.

Originally published at https://sebastienrousseau.com/tr/2023-10-26-libmake-rust-kutuphaneleri-icin-kod-uretici/ by Sebastien Rousseau.
Licensed under CC-BY-4.0.