Shemul CLI v2.0.0 এসে গেছে 🎉 Shemul CLI হলো PIP-র জন্য JSON কনফিগারেশনভিত্তিক টাস্ক অটোমেশনের একটি উন্নত, প্রজেক্ট-সচেতন টুল। এটি বারবার লাগা ডেভেলপমেন্ট কমান্ডগুলো shemul.json-এ গুছিয়ে রাখে, প্রজেক্ট-লোকাল ও ইউজার-গ্লোবাল দুই ধরনের স্কোপ সমর্থন করে, এবং সবকিছু চালায় বিল্ট-ইন সেফটি নিয়ন্ত্রণসহ। v2.0.0 ফিচারের সংখ্যা মোটামুটি দ্বিগুণ করেছে — আর তবুও পুরোপুরি ব্যাকওয়ার্ড কম্প্যাটিবল থেকেছে।

📌 সারকথা

  • Shemul CLI v2.0.0 Python-এর জন্য একটি ক্রস-প্ল্যাটফর্ম টাস্ক অটোমেশন টুল — pip install shemul, কমান্ড একবার shemul.json-এ লিখুন, যেকোনো জায়গায় চালান shemul <command> দিয়ে।
  • নতুন কী: ক্রস-ওএস কমান্ড, ইন্টারপ্রেটার ম্যাপ ও ম্যাজিক ভেরিয়েবল, টাস্ক পাইপলাইন (needs/pre/post/parallel), নিরাপদ নির্বাহ, আপডেট নোটিফায়ার, s অ্যালিয়াস, প্লাগইন এবং requires ভার্সন গেটিং।
  • মাইগ্রেশন: পুরোপুরি ব্যাকওয়ার্ড কম্প্যাটিবল — প্রায় সবার জন্যই শুধু pip install --upgrade shemul চালানোই যথেষ্ট। মাত্র দুটি বিষয় গুরুত্বপূর্ণ: কমান্ড-ডিসপ্যাচের অগ্রাধিকার আর নতুন questionary ডিপেন্ডেন্সি।
  • কেন গুরুত্বপূর্ণ: একটিই কনফিগ, যা Windows, macOS ও Linux-এ একইভাবে চলে — open . বনাম start . বনাম xdg-open . আর নয়।

☕ চেনা এক সোমবারের সকাল

সোমবার, ৯টা ১৪। আপনার কফি এখনো এত গরম যে মুখে দেওয়া যাচ্ছে না। তিন সপ্তাহ ছুঁয়ে দেখেননি এমন একটি প্রজেক্ট খুললেন, আর কার্সরটা এমনভাবে জ্বলছে-নিভছে যেন এমন একটি পাসওয়ার্ডের অপেক্ষায় আছে, যা আপনি স্পষ্টতই ভুলে গেছেন।

এটা আবার চালু করি কীভাবে?

আপনি শেল হিস্ট্রি ঘাঁটেন। README খোলেন — অর্ধেক কমান্ডই পুরোনো। একটি scripts/ ফোল্ডার পান, তাতে চারটি ফাইল, কোনটি এখনো কাজের তার কোনো হদিস নেই। দশ মিনিট পর মনে পড়ে এটি ছিল docker compose up --build — কিন্তু এই প্রজেক্টে কাস্টম কম্পোজ ফাইল ব্যবহার হয়েছিল, তাই আসলে সেটিও নয়।

এবার এটিকে গুণ করুন আপনার প্রতিটি রিপোজিটরি দিয়ে। প্রতিটি সহকর্মী দিয়ে, যিনি একটু আলাদা ওএসে একটু আলাদা কমান্ড চালান। প্রতিটি নতুন সদস্য দিয়ে, যিনি জিজ্ঞেস করেন, "এটা লোকালি চালাই কীভাবে?"

এর কোনোটিই কঠিন কাজ নয়। আর সমস্যাটা ঠিক সেখানেই — এটি কাজের ছদ্মবেশে ঘর্ষণ। এক লাইন কোড লেখার আগেই এটি নিঃশব্দে আপনার মনোযোগের ওপর কর বসায়।

Shemul CLI তৈরিই হয়েছে সেই সোমবার সকালের জন্য। ভাবনাটা প্রায় বিব্রতকর রকম সরল: কমান্ডটা একবার লিখে রাখুন এমন জায়গায়, যা পুরো দল খুঁজে পায় — আর কখনো খোঁজাখুঁজি করতে হবে না।

😵‍💫 চেনা সেই সমস্যা

আপনি একটি প্রজেক্ট খুললেন, আর মাথা সঙ্গে সঙ্গে চলে গেল কমান্ড মনে করার মোডে:

  • docker compose up --build
  • python manage.py migrate
  • uvicorn main:app --reload
  • আর সেই এলোমেলো স্ক্রিপ্টগুলো, যেগুলো আছে বলে আপনি জানেন

কিছু আছে শেল হিস্ট্রিতে। কিছু README-তে। আর কিছু… নেই-ই।

আর আপনার দল যখন একই সময়ে Windows, macOS ও Linux-এ কাজ করে, তখন ব্যাপারটা আরও খারাপ হয়। open . বনাম start . বনাম xdg-open .python বনাম python3। একই কাজ, তিন রকম মন্ত্র।

💡 Shemul CLI কীভাবে এর সমাধান করে

আপনি কমান্ডগুলো একবার লিখে রাখেন একটি পরিচ্ছন্ন JSON ফাইলে — shemul.json — তারপর চালান এভাবে:

bash
shemul up

ব্যস। খোঁজাখুঁজি নেই। লম্বা কমান্ড মনে রাখা নেই। প্রেক্ষাপট বদলানো নেই। Python ওয়ার্কফ্লোর জন্য এটি বিশেষভাবে কার্যকর, যেখানে pip install shemul আপনাকে দেয় একটি হালকা CLI, যা আপনার বিদ্যমান সেটআপে স্বাভাবিকভাবেই মানিয়ে যায় 🐍

🧠 আপনি আসলে যেভাবে কাজ করেন, সেটিকে ঘিরেই তৈরি

  • ডিফল্টেই প্রজেক্ট-সচেতনshemul.json থাকলেই Shemul CLI আপনার প্রজেক্ট তৎক্ষণাৎ বুঝে নেয়।
  • 🌍 দ্বৈত স্কোপ ব্যবস্থা — প্রজেক্ট-পর্যায়ের কমান্ড ও গ্লোবাল ইউজার কমান্ড।
  • 🎯 বুদ্ধিদীপ্ত অগ্রাধিকার — প্রজেক্টের কমান্ড সবসময় গ্লোবালকে ছাপিয়ে যায়। কোনো চমক নেই।
  • 🛡️ নিরাপত্তা প্রথমে — কনফার্ম প্রম্পট, ডেঞ্জার ওয়ার্নিং, ড্রাই রান ও ট্রেস মোড।

🚀 v2.0.0-এ নতুন কী

এবারেরটাই বড়। v2.0.0 Shemul CLI-কে "একটি গোছানো কমান্ড তালিকা" থেকে নিয়ে গেছে সত্যিকারের পাইপলাইনসহ একটি পোর্টেবল, ক্রস-ওএস টাস্ক রানারে

🌐 ক্রস-ওএস কমান্ড (os)

একটি কমান্ড, ওএস-ভেদে ভিন্ন রূপ। খোঁজার ক্রম: বর্তমান ওএস → default → মূল run

json
{ "open": { "run": "xdg-open .", "os": { "windows": "start .", "macos": "open ." } } }

🧰 ইন্টারপ্রেটার ম্যাপ (bin) ও ম্যাজিক ভেরিয়েবল

প্রতি ওএসের জন্য একটি টুল একবার সংজ্ঞায়িত করুন, সর্বত্র {{py}} হিসেবে ব্যবহার করুন। সঙ্গে আপনাআপনি যুক্ত হওয়া ভেরিয়েবল — {{os}}, {{arch}}, {{python}}, {{shell}}, {{sep}}, {{home}} — কোনো কনফিগ ছাড়াই।

json
{ "bin": { "py": { "windows": "python", "default": "python3" } } }

🔗 টাস্ক পাইপলাইন (needs, pre, post, parallel)

কমান্ডগুলোকে নির্ভরতার শিকলে সাজান। অভিন্ন নির্ভরতা একবারই চলে, চক্র শনাক্ত হয়, আর parallel: true দিলে সেগুলো একসঙ্গে চলে।

json
{ "ci": { "run": "echo green", "needs": ["lint", "types", "test"], "parallel": true } }

যেকোনো কমান্ডের চলার ক্রম: needspre → কমান্ড → post

🛡️ নিরাপদ নির্বাহ (shell / exec)

অবিশ্বস্ত ইনপুট সামলানো কমান্ডের জন্য আর্গুমেন্ট-ভেক্টর নির্বাহ বেছে নিন — কোনো শেল পার্সিং নেই।

json
{ "safe": { "exec": ["python3", "tool.py", "--name", "value"] } }

আরও

  • ⚙️ runtime দিয়ে ডিফল্ট শেল — পুরো কনফিগের জন্য ডিফল্ট শেল (bash, pwsh, zsh, …) বেছে নিন।
  • 🔔 আপডেট নোটিফায়ার ও ঐচ্ছিক অটো-আপডেট — নতুন রিলিজ থাকলে একটি নন-ব্লকিং PyPI চেক (দিনে সর্বোচ্চ একবার) এক লাইনের নোটিশ দেখায়। shemul settings auto-update on দিলে Shemul CLI নিজেই হালনাগাদ হয়। ডিফল্টে বন্ধ; আপনার কমান্ড কখনো আটকায় না।
  • ⌨️ s অ্যালিয়াসshemul build-এর বদলে লিখুন s build। ইনস্টলার বিদ্যমান কোনো s-কে মুছে ফেলতে অস্বীকার করে।
  • 🧩 প্লাগইন (runner) — তৃতীয় পক্ষের প্যাকেজ shemul.plugins এন্ট্রি পয়েন্টে কাস্টম রানার নিবন্ধন করতে পারে। রানার না থাকলে বা ব্যর্থ হলে স্বাভাবিক নির্বাহে ফিরে যায় — ক্র্যাশ করে না।
  • 📌 requires ও ভার্সন কোড"requires": ">=2.0.0" লিখে রাখুন, তাতে পুরোনো ইনস্টলে দুর্বোধ্য এররের বদলে পরিষ্কার আপগ্রেড ইঙ্গিত দেখাবে। প্রতিটি রিলিজে একটি ক্রমবর্ধমান ভার্সন কোডও থাকে (shemul version --code2.0.0 (code 3))।
  • ইন্টার‌্যাক্টিভ অ্যারো-কি প্রম্পট — প্রকৃত টার্মিনালে confirm/danger, init-এর টেমপ্লেট নির্বাচক ও shemul settings অ্যারো কি ব্যবহার করে। সিআই বা পাইপে এটি আপনাআপনি সাধারণ টাইপ-করা প্রম্পটে ফিরে যায়।

🥊 Make, Just, Task ও npm scripts-এর সঙ্গে তুলনা

চিহ্ন: ✅ নেটিভ · 🟡 আংশিক / বিকল্প উপায়ে · ❌ নেই

সক্ষমতা

Shemul CLI

GNU Make

Just

Task (go-task)

npm scripts

Invoke

🏆 এগিয়ে

কনফিগ ফরম্যাট

JSON

Makefile DSL

Justfile DSL

YAML

JSON

Python

Shemul CLI

DSL-বিহীন (ডেটা, কোড নয়)

সমান

প্রজেক্ট ও গ্লোবাল স্কোপ

🟡

🟡

Shemul CLI

ওএস-ভেদে কমান্ড

🟡

Shemul CLI

পোর্টেবল ইন্টারপ্রেটার / ম্যাজিক ভার

🟡

🟡

Shemul CLI

কনফার্ম / ডেঞ্জার সেফটি গেট

Shemul CLI

ড্রাই-রান প্রিভিউ

সমান

টাস্ক নির্ভরতা (DAG)

🟡

সমান

প্রি / পোস্ট হুক

🟡

🟡

Shemul CLI

সমান্তরাল নির্বাহ

🟡

🟡

সমান

আপডেট নোটিফায়ার

Shemul CLI

ব্যাকগ্রাউন্ড অটো-আপডেট

🟡

Shemul CLI

সংক্ষিপ্ত অ্যালিয়াস (s)

🟡

🟡

Shemul CLI

ইন্টার‌্যাক্টিভ প্রম্পট / পিকার

Shemul CLI

প্লাগইন / এক্সটেনশন এপিআই

🟡

🟡

Shemul CLI

স্কিমা যাচাই

🟡

🟡

Shemul CLI

ইনস্টল আকার

pip

সিস্টেম

বাইনারি

বাইনারি

node

pip

Shemul CLI

সংক্ষেপে: ওএস-ভেদে কমান্ড, নির্ভরতা গ্রাফ, সমান্তরাল নির্বাহ ও কমপ্লিশনে Shemul CLI আধুনিক টাস্ক রানারগুলোর সমকক্ষ — আর যে সমন্বয়টি প্রতিদিন আসলেই কাজে লাগে, সেখানে একা: সেফটি গেটিং, প্রজেক্ট ও গ্লোবাল দ্বৈত স্কোপ, ইন্টার‌্যাক্টিভ প্রম্পট, ব্যাকগ্রাউন্ড অটো-আপডেট, আর JSON-প্রথম, স্কিমা-যাচাইকৃত কনফিগ যা pip দিয়ে সেকেন্ডে ইনস্টল হয়। নতুন কোনো DSL শেখা নেই, .PHONY-র ফাঁদ নেই, "আমার মেশিনে তো চলে" নেই।

এটি কী নয়, সে বিষয়েও সৎ: Shemul CLI একটি টাস্ক রানার, বিল্ড সিস্টেম নয় (কনটেন্ট-হ্যাশভিত্তিক ইনক্রিমেন্টাল রিবিল্ড নেই) এবং ভাষা-সংস্করণ ব্যবস্থাপকও নয় — এটি mise/asdf-এর মতো টুলের সঙ্গে প্রতিদ্বন্দ্বিতা না করে বরং পাশাপাশি কাজ করে।

🔁 মাইগ্রেশন গাইড: v1.0.1 → v2.0.0

সংক্ষেপে — প্রায় সবার জন্যই কিছুই করার নেই। shemul.json ফরম্যাট পুরোপুরি ব্যাকওয়ার্ড কম্প্যাটিবল; প্রতিটি নতুন সক্ষমতাই একটি ঐচ্ছিক কি। আপনার বিদ্যমান কনফিগ হুবহু আগের মতোই লোড হবে ও চলবে।

bash
pip install --upgrade shemul
shemul /version --code      # 2.0.0 (code 3)
ভার্সন-কোড প্রসঙ্গে: ভার্সন কোড রিলিজ গোনে (1.0.0 = 1, 1.0.1 = 2, 2.0.0 = 3)। কোনো 1.1.0 নেই — এই কাজটিই 2.0.0 হিসেবে প্রকাশ পেয়েছে।

এটি মেজর রিলিজ কেবল দুটি কারণে:

১. কমান্ড ডিসপ্যাচের অগ্রাধিকার বদলেছে। 1.0.1-এ বিল্ট-ইনের নাম খালি লিখলে সবসময় বিল্ট-ইনই চলত। 2.0.0-তে খালি নাম আগে আপনার প্রজেক্ট/গ্লোবাল কমান্ড খোঁজে, না পেলে বিল্ট-ইনে ফেরে। এটি আপনাকে তখনই ছোঁবে, যদি আপনার কনফিগে বিল্ট-ইনের নামে কোনো কমান্ড থাকে — init, ls, info, help, doctor বা schema (আগে এগুলোতে পৌঁছানোই যেত না)। বিল্ট-ইন চালাতে চাইলে সামনে একটি স্ল্যাশ দিন:

bash
shemul /init        # always the built-in initializer
shemul /doctor      # always the built-in diagnostics

নতুন সাবকমান্ড update, alias, version, settingsabout-এর ক্ষেত্রেও একই নিয়ম। Windows-এ Git Bash / MSYS2-তে দুটি স্ল্যাশ দিন: //init

২. নতুন ডিপেন্ডেন্সি: questionary ইন্টার‌্যাক্টিভ অ্যারো-কি প্রম্পটের জন্য যুক্ত হয়েছে। pip install -U shemul এটি আপনাআপনি নিয়ে আসে। আপনি যদি ডিপেন্ডেন্সি ভেন্ডর করেন বা লকড পরিবেশে চালান, তবে questionary>=2.0.0 যোগ করুন।

সিআই ও স্ক্রিপ্টের জন্য জেনে রাখা ভালো (ব্রেকিং নয়):

bash
export SHEMUL_NO_UPDATE_CHECK=1     # silence the background PyPI check
export SHEMUL_NO_INTERACTIVE=1      # force plain typed prompts anywhere

অটো-আপডেট ডিফল্টে বন্ধ এবং এডিটেবল ইনস্টলে এড়িয়ে যাওয়া হয়। সিআই বা পাইপে confirm/danger এমনিতেই টাইপ-করা প্রম্পটে ফিরে যায়।

নতুন ফিচারগুলো ধাপে ধাপে নিন — কোনোটিই বাধ্যতামূলক নয়:

json
{ "requires": ">=2.0.0", "commands": { "run": { "run": "{{python}} app.py" } } }

📦 ইনস্টল ও আপগ্রেড

Shemul CLI-তে নতুন? pip install shemul। ইতিমধ্যেই ব্যবহার করছেন? pip install --upgrade shemul

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

Shemul CLI কী? Shemul CLI Python-এর জন্য একটি হালকা, প্রজেক্ট-সচেতন টাস্ক অটোমেশন টুল, যা pip install shemul দিয়ে ইনস্টল করা যায়। আপনি প্রজেক্টের কমান্ডগুলো একবার shemul.json ফাইলে লিখে রাখেন, তারপর Windows, macOS কিংবা Linux-এ shemul <command> দিয়ে চালান।

Makefile বা npm scripts থেকে Shemul CLI আলাদা কীভাবে? Shemul CLI নকশাগতভাবেই ক্রস-প্ল্যাটফর্ম (ওএস-ভেদে কমান্ড, ইন্টারপ্রেটার ম্যাপ এবং {{python}}{{os}}-এর মতো ম্যাজিক ভেরিয়েবল), pip দিয়ে ইনস্টল হয়, আর যোগ করে সেফটি নিয়ন্ত্রণ — কনফার্ম প্রম্পট, ডেঞ্জার ওয়ার্নিং, ড্রাই-রান ও ট্রেস — যা শেল স্ক্রিপ্ট এমনিতে দেয় না। এর জায়গা নিছক শেল কমান্ড আর ভারী অটোমেশন টুলের মাঝখানের ফাঁকে: হালকা, অথচ কাঠামোবদ্ধ।

v2.0.0 কি v1.0.1-এর সঙ্গে ব্যাকওয়ার্ড কম্প্যাটিবল? হ্যাঁ। বিদ্যমান প্রতিটি shemul.json অপরিবর্তিতভাবেই কাজ করে। 2.0.0-এর প্রতিটি নতুন সক্ষমতা একটি ঐচ্ছিক কনফিগ কি। একমাত্র আচরণগত বদল কমান্ড-ডিসপ্যাচের অগ্রাধিকার, যা আপনাকে তখনই ছোঁবে যদি বিল্ট-ইনের নামে (init, ls, doctor ইত্যাদি) কোনো কমান্ড সংজ্ঞায়িত করে থাকেন — বিল্ট-ইন চালাতে স্ল্যাশ রূপ (shemul /init) ব্যবহার করুন।

v2.0.0-তে আপগ্রেড করব কীভাবে? pip install --upgrade shemul চালান, তারপর shemul version --code দিয়ে যাচাই করুন (দেখাবে 2.0.0 (code 3))। নতুন questionary ডিপেন্ডেন্সি আপনাআপনি ইনস্টল হয়।

গ্লোবাল কনফিগ কোথায় থাকে? Windows: %APPDATA%\Shemul\shemul.json · macOS: ~/Library/Application Support/Shemul/shemul.json · Linux: $XDG_CONFIG_HOME/shemul/shemul.json (বিকল্প ~/.config/shemul/shemul.json)। প্রজেক্টের কমান্ড সবসময় গ্লোবালকে ছাপিয়ে যায়।

একই কমান্ড কি Windows, macOS ও Linux-এ চলবে? হ্যাঁ — এটিই v2.0.0-এর প্রধান ফিচার। ওএস-ভেদে ভিন্ন রূপের জন্য os কি, প্রতি প্ল্যাটফর্মে টুল একবার সংজ্ঞায়িত করতে bin ইন্টারপ্রেটার ম্যাপ, আর বাড়তি কনফিগ ছাড়াই পোর্টেবল কমান্ডের জন্য ম্যাজিক ভেরিয়েবল ({{os}}, {{arch}}, {{python}}, {{shell}}, {{sep}}, {{home}}) ব্যবহার করুন।

না চালিয়ে কমান্ড দেখে নেব কীভাবে? গ্লোবাল ফ্ল্যাগটি কমান্ডের আগে দিন: shemul --dry deploy কমান্ডটি না চালিয়ে তার চূড়ান্ত রূপ ছাপে, আর shemul --trace deploy তার এনভায়রনমেন্ট প্রেক্ষাপটও দেখায়।

Shemul CLI কি নিজে নিজে আপডেট হয়? না — যতক্ষণ না আপনি চান। আপডেট নোটিফায়ার কেবল এক লাইনের নোটিশ ছাপে (দিনে সর্বোচ্চ একবার, ব্যাকগ্রাউন্ডে)। অটো-আপডেট ডিফল্টে বন্ধ; চালু করুন shemul settings auto-update on দিয়ে। এডিটেবল (pip install -e) ইনস্টলে এটি এড়িয়ে যাওয়া হয়, আর SHEMUL_NO_UPDATE_CHECK=1 দিয়ে পুরোপুরি বন্ধ করা যায়।

টাস্ক পাইপলাইন বা চেইনড কমান্ড চালাব কীভাবে? নির্ভরতার জন্য needs (আগে চলে, ডুপ্লিকেট বাদ যায়, চক্র যাচাই হয়), হুকের জন্য pre/post, আর নির্ভরতাগুলো একসঙ্গে চালাতে parallel: true ব্যবহার করুন। চলার ক্রম সবসময় needspre → কমান্ড → post

অবিশ্বস্ত ইনপুট নেওয়া কমান্ডের জন্য এটি কি নিরাপদ? হ্যাঁ। ডিফল্টে কমান্ড শেলের মধ্য দিয়ে চলে (তাই &&, পাইপ ও গ্লব কাজ করে)। অবিশ্বস্ত ইনপুটের জন্য "shell": false কিংবা "exec": ["arg", "vector"] ব্যবহার করুন, যাতে শেল পার্সিং ছাড়াই সরাসরি argv চলে।

Makefile-এর বিকল্প হিসেবে এটি কি ভালো? হ্যাঁ — বিশেষ করে ক্রস-প্ল্যাটফর্ম ও Python দলের জন্য। Makefile ইউনিক্স-ধাঁচের শেল আর নিজস্ব DSL-এর (ট্যাব, .PHONY, রিকার্সিভ এক্সপ্যানশন) ওপর নির্ভর করে, যা Windows-এ ভেঙে পড়ে বা ভিন্নভাবে আচরণ করে। Shemul CLI সাধারণ JSON ব্যবহার করে, ওএস-ভেদে কমান্ড ও ম্যাজিক ভেরিয়েবলের মাধ্যমে তিন প্ল্যাটফর্মেই একইভাবে চলে, আর যোগ করে সেফটি গেট ও ড্রাই-রান, যা Make এমনিতে দেয় না।

Shemul CLI বনাম Just বনাম Task — কোনটি বেছে নেব? তিনটিই মজবুত আধুনিক টাস্ক রানার। Just ও Task নিজস্ব ফাইল ফরম্যাট (justfile DSL, YAML) ব্যবহার করে ও স্বতন্ত্র বাইনারি হিসেবে আসে; Shemul CLI স্কিমা-যাচাইকৃত JSON ব্যবহার করে ও pip install shemul দিয়ে ইনস্টল হয়, তাই Python প্রজেক্ট ও সিআই-তে স্বাভাবিকভাবেই মানিয়ে যায়। কনফার্ম/ডেঞ্জার সেফটি গেট, প্রজেক্ট ও গ্লোবাল দ্বৈত স্কোপ, ইন্টার‌্যাক্টিভ অ্যারো-কি প্রম্পট আর ব্যাকগ্রাউন্ড আপডেট নোটিফায়ার — এই সমন্বয়ে Shemul CLI অনন্য।

নন-JavaScript প্রজেক্টে npm scripts-এর ক্রস-প্ল্যাটফর্ম বিকল্প আছে? হ্যাঁ। npm scripts সুবিধাজনক হলেও package.json ও নোডের সঙ্গে বাঁধা, আর এতে ওএস-ভেদে কমান্ড, নির্ভরতা গ্রাফ বা ড্রাই-রান নেই। Shemul CLI সেই "একবার লিখুন, নাম ধরে চালান" সুবিধাটি নিয়ে আসে যেকোনো স্ট্যাকে — Python, Docker, গো, রাস্ট, শেল থেকে চালানো যায় এমন যেকোনো কিছুতে — সঙ্গে পোর্টেবিলিটি ও নিরাপত্তা।

এটি কি Make বা Bazel-এর মতো বিল্ড সিস্টেমের বিকল্প? না, আর সেটি ইচ্ছাকৃত। Shemul CLI একটি টাস্ক রানার, বিল্ড সিস্টেম নয় — এটি কনটেন্ট-হ্যাশভিত্তিক ইনক্রিমেন্টাল রিবিল্ড বা আর্টিফ্যাক্ট নির্ভরতা গ্রাফ করে না। এর মনোযোগ আপনার প্রজেক্টের কমান্ডগুলো নির্ভরযোগ্য ও পোর্টেবলভাবে চালানোয়, আর দরকার হলে বিল্ড সিস্টেমের পাশাপাশি এটি ভালোভাবেই কাজ করে।

v2.0.0-এর পর রোডম্যাপে কী? পরবর্তী 2.x রিলিজগুলো যোগ-করা ধাঁচে আসার পরিকল্পনা (কোনো ব্রেকিং বদল নয়), সম্ভাব্য ফিচারের মধ্যে আছে ওয়াচ মোড, ম্যাট্রিক্স কমান্ড, রিট্রাই/টাইমআউট, কনফিগ ইনক্লুড ও প্রোফাইল, একটি TUI কমান্ড লঞ্চার এবং টাস্ক DAG-এর graph ভিউ। পরবর্তী মেজর (v3.0.0) তোলা আছে এমন একটিমাত্র বদলের জন্য, যা যোগ-করা ধাঁচে সম্ভব নয়: নির্বাহকে ডিফল্টেই নিরাপদ (আর্গ-ভেক্টর) করা, শেল সুবিধা চাইলে পাওয়া যাবে।

প্রতিটি ফিচার শিখব কোথায়? Usage & Examples গাইডটি প্যাকেজের সঙ্গেই আসে এবং প্রতিটি ফিচারের ১–৩টি উদাহরণ দেয়, সঙ্গে পূর্ণ মাইগ্রেশন গাইড ও চেঞ্জলগ। ইস্যু ও মতামত: github.com/STechBD/Shemul-CLI/issues

💬 শেষ কথা

v1.0.0 ভিত গড়েছিল। v1.0.1 সেটিকে আরও মজবুত করেছিল। v2.0.0 সেটিকে করল পোর্টেবল — একটিই কনফিগ, যা সব জায়গায় একইভাবে চলে, সত্যিকারের পাইপলাইন ও আরও নিরাপদ নির্বাহসহ।

Shemul CLI এখনো একটিই সরল ভাবনার কথা বলে: 👉 একটি কনফিগ, 👉 একটি CLI, 👉 আপনার ওয়ার্কফ্লোর জন্য একটিই জায়গা।

তাই সেই সোমবারের সকালটা আবার ভাবুন — একই প্রজেক্ট, একই অতিরিক্ত গরম কফি। শুধু এবার আপনি লিখলেন shemul up, সার্ভার প্রাণ পেল, আর কাপটা ঠান্ডা হওয়ার আগেই আপনি কোড লিখতে শুরু করলেন। খননকাজ নেই। README ঘাঁটা নেই। "এটা আবার চালাই কীভাবে?" নেই।

এটাই পুরো প্রতিশ্রুতি। আর সত্যি বলতে… বেশিরভাগ প্রজেক্টের এটুকুই দরকার।

চেষ্টা করে দেখুন: pip install shemul। ভবিষ্যতের আপনি — যিনি সামনের সোমবারের মুখোমুখি হবেন — কৃতজ্ঞ থাকবেন। ☕