নির্বাহী সারসংক্ষেপ / মূল বিষয়াবলি
- 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 warningsenforce করে,rustfmtcheck করে এবং 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-এর।
তথ্যসূত্র
- Rousseau, S. LibMake — repetitive task কমিয়ে high-quality Rust library তৈরি করার code generator. 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 — 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.
