Sebastien Rousseau

LIBMAKE

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর

৬০ সেকেন্ডের কম সময়ে CI, test ও documentation-সহ production-ready Rust library scaffold তৈরি

4 min read
Banner for: LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর

নির্বাহী সারসংক্ষেপ / মূল বিষয়াবলি

  • LibMake ⧉ cargo install libmake দিয়ে install করা একটি open-source Rust CLI tool, যা CLI flag বা config file (TOML, YAML, JSON বা CSV) থেকে এক invocation-এ Cargo.toml, source, tests, benchmarks, documentation ও CI-সহ complete library scaffold তৈরি করে।
  • Generated project Rust API Guidelines অনুসরণ করে: src/lib.rs-এ module-level ও item-level doc comment, crate root-এ #![deny(missing_docs)], এবং #![doc = include_str!("../README.md")] দিয়ে crate documentation-এর সঙ্গে README যুক্ত থাকে।
  • Config-file mode (--config libmake.toml) team-কে author, licence, categories, Rust edition, MSRV, repository URL সহ library template সম্পূর্ণভাবে নির্দিষ্ট করা single file commit করতে দেয়, ফলে scaffold generation Git-এ repeatable ও diffable হয়।
  • LibMake-generated GitHub Actions workflow stable, beta ও nightly Rust toolchain-এ test চালায়, clippy -D warnings enforce করে, rustfmt check করে এবং dependency tree-তে known CVE-এর জন্য cargo-audit চালায়।
  • Tera templates code generation চালায়: LibMake default template set নিয়ে আসে, কিন্তু --template দিয়ে custom template directory গ্রহণ করে, তাই tool fork না করেই non-standard project layout ও অতিরিক্ত generated file support করা যায়।

LibMake ⧉ একটি open-source Rust CLI ও library যা single invocation থেকে complete library project scaffold তৈরি করে। এটি cargo new --lib (যা শুধু minimal Cargo.toml ও src/lib.rs তৈরি করে) এবং production-ready library setup-এর (যেখানে doc comment, CI, test harness, benchmark structure, CONTRIBUTING.md ও licence file manually যোগ করতে হয়) মাঝের gap পূরণ করে।

এই প্রবন্ধে LibMake কী তৈরি করে, config-file ও CLI mode কীভাবে কাজ করে, generated CI structure এবং templating system ব্যাখ্যা করা হয়েছে।

Installation এবং basic usage

LibMake crates.io-তে publish করা হয়েছে এবং Cargo দিয়ে install করা যায়:

cargo install libmake

ন্যূনতম CLI invocation current directory-তে একটি named library তৈরি করে:

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"

অতিরিক্ত optional flag-এর মধ্যে --categories, --keywords, --homepage, --documentation, --readme এবং --build আছে।

Config-file mode

team use-এর জন্য সব CLI flag TOML config file-এ প্রকাশ করা যায়:

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

চালানো হয় এভাবে:

libmake --config libmake.toml

LibMake যথাক্রমে --config-json, --config-yaml এবং --config-csv flag-এর মাধ্যমে JSON, YAML এবং CSV config format-ও গ্রহণ করে। repository root-এ libmake.toml commit করলে প্রত্যেক contributor reproducible scaffold baseline পায়, এবং template configuration-এর পরিবর্তন Git diff-এ দেখা যায়।

Generated project structure

একটি LibMake invocation নিচের layout তৈরি করে:

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

generated src/lib.rs-এ crate-level doc comment, #![deny(missing_docs)], README-কে rustdoc-এ টানার জন্য #![doc = include_str!("../README.md")], এবং associated doc comment-সহ একটি stub public type থাকে। এই সিদ্ধান্তগুলো Rust API Guidelines-এর requirement অনুসরণ করে, যেখানে সব public item-এর documentation থাকতে হয়।

generated benches/lib_benchmarks.rs Criterion.rs ব্যবহার করে এবং criterion-কে dev-dependency হিসেবে যোগ করা প্রয়োজন; LibMake এটি স্বয়ংক্রিয়ভাবে Cargo.toml-এ insert করে।

GitHub Actions CI workflow

generated .github/workflows/release.yml প্রতিটি push ও pull request-এ পাঁচটি job চালায়:

Job Toolchain কী check করে
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 installed in job)
doc stable cargo doc --no-deps (fails on missing docs)

nightly job-এ continue-on-error: true থাকে, তাই nightly regression merge block করে না, কিন্তু workflow run-এ failure দৃশ্যমান থাকে।

Tera দিয়ে templating

LibMake সব generated file render করতে Tera template engine ব্যবহার করে — Rust-এর জন্য Jinja2-like syntax। প্রতিটি template context হিসেবে পুরো config struct পায়:

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

--template flag দিয়ে custom template directory support করা হয়:

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

custom directory-কে default template structure mirror করতে হবে (একই filename)। custom directory-তে থাকা যেকোনো file সংশ্লিষ্ট built-in template override করে; custom directory-তে না থাকা file built-in version-এ fallback করে। এতে partial override সম্ভব — যেমন default src/lib.rs ও Cargo.toml template রেখে শুধু CI workflow template বদলানো।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

LibMake কীভাবে cargo new --lib থেকে আলাদা? cargo new --lib শুধু Cargo.toml এবং src/lib.rs-সহ একটি minimal project তৈরি করে (যেখানে একটি #[cfg(test)] block থাকে)। LibMake full structure তৈরি করে — integration tests, benchmarks, CI, CONTRIBUTING.md, dual-licence files এবং properly documented src/lib.rs — placeholder নয়, project-এর actual metadata দিয়ে configured।

LibMake কি existing Cargo workspace-এর সঙ্গে ব্যবহার করা যায়? LibMake standalone crate directory তৈরি করে। generated crate-কে existing workspace-এ যোগ করতে root Cargo.toml-এর workspace members array-তে output path যোগ করুন। LibMake existing workspace file modify করে না।

initial generation-এর পরে scaffold template update করা যায়? LibMake একবার file generate করে; previously generated project track বা update করে না। updated template গ্রহণ করতে recommended approach হলো LibMake temporary directory-তে আবার চালানো, তারপর existing crate-এর সঙ্গে result diff করে দরকারি পরিবর্তন selectiveভাবে apply করা।

LibMake কোন Rust edition এবং MSRV value support করে? LibMake --edition--rustversion-এর জন্য যেকোনো string গ্রহণ করে এবং value সরাসরি Cargo.toml-এ লেখে। নির্দিষ্ট edition বা MSRV বাস্তব Rust version কিনা তা validate করে না, তাই সঠিক value দেওয়ার দায় caller-এর।

তথ্যসূত্র

  1. Rousseau, S. LibMake — repetitive task কমিয়ে high-quality Rust library তৈরি করার code generator. 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 — Jinja2 ও Django template দ্বারা অনুপ্রাণিত template engine. GitHub, 2023. https://keats.github.io/tera/

সর্বশেষ পর্যালোচনা

সর্বশেষ পর্যালোচনা .

এই নিবন্ধটি ক্রস-পোস্ট করুন

Medium-এর জন্য ফরম্যাট কপি করুন

# LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

> Originally published at [https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/](https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/)

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে — Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।

Read the full article on sebastienrousseau.com: https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/

Mastodon-এর জন্য ফরম্যাট কপি করুন

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে — Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।

https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/

LinkedIn-এর জন্য বিন্যাসিত কপি করুন

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে - Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।.

এখানে মূল কৌশলগত টেকওয়েগুলি রয়েছে:

- Installation এবং basic usage. LibMake crates.io-তে publish করা হয়েছে এবং Cargo দিয়ে install করা যায়:.
- Config-file mode. team use-এর জন্য সব CLI flag TOML config file-এ প্রকাশ করা যায়:.
- Generated project structure. একটি LibMake invocation নিচের layout তৈরি করে:.
- GitHub Actions CI workflow. generated .github/workflows/release.yml প্রতিটি push ও pull request-এ পাঁচটি job চালায়:.

এই নিবন্ধে উল্লিখিত চ্যালেঞ্জগুলির প্রতি আপনার প্রতিষ্ঠানের পদ্ধতি কী?

→ https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/

#Libmake #RustCodeGenerator #CargoScaffold #RustLibraryTemplate #TeraTemplating

Sebastien Rousseau | CC-BY-4.0
এই নিবন্ধটি উদ্ধৃত করুন

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে — Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।

BibTeX

@online{rousseau2023libmake,
  author  = {Rousseau, Sebastien},
  title   = {{LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau}},
  year    = {2023},
  url     = {https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/},
  urldate = {2023}
}

RIS

TY  - GEN
AU  - Rousseau, Sebastien
TI  - LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau
PY  - 2023
UR  - https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/
ER  -

Vancouver

Rousseau S. LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau. sebastienrousseau.com. 2023 Oct 26. Available from: https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/

Chicago

Rousseau, Sebastien. "LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau." sebastienrousseau.com. October 26, 2023. https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/.

APA

Rousseau, S. (2023, October 26). LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau. sebastienrousseau.com. https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/

এই নিবন্ধটি পুনঃপ্রকাশ করুন

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে — Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।

এই নিবন্ধটি লাইসেন্স করা হয়েছে Creative Commons Attribution 4.0 International. পুনঃপ্রকাশনার জন্য মূল URL-এর কৃতিত্ব আবশ্যক।

LibMake: Rust লাইব্রেরি স্ক্যাফোল্ড জেনারেটর — Sebastien Rousseau

LibMake একটি Rust CLI tool যা এক command বা versioned TOML/YAML config file থেকে সম্পূর্ণ library scaffold তৈরি করে — Cargo.toml, doc template-সহ src/lib.rs, test ও benchmark harness এবং GitHub Actions CI।

Originally published at https://sebastienrousseau.com/bn/2023-10-26-libmake-a-code-generator-to-reduce-repetitive-tasks-and-build-high-quality-rust-libraries/ by Sebastien Rousseau.
Licensed under CC-BY-4.0.