The pot command reference
beansc pot command কাজ করে project-এর dependency আর
beans.lock নিয়ে। এর পাঁচটা subcommand আছে।
beansc pot init <module-name>beansc pot add <dependency> [ref]beansc pot add --system <pkg-config-name>beansc pot tidybeansc pot remove <dependency>beansc pot remove --system <pkg-config-name>beansc pot update [dependency]beansc pot update --system <pkg-config-name>beansc pot init
“beansc pot init” সেকশনবর্তমান directory-তে নতুন beans.pot বানায়:
beansc pot init shopফাইলটা হবে:
module shopModule name ছোট হাতের অক্ষরে dot দিয়ে ভাগ করা হয়, যেমন shop বা
acme.http_client। আগে থেকে beans.pot থাকলে command সেটা overwrite করে না।
এটা শুধু manifest বানায়; main.b বা library source আলাদা করে যোগ করতে হবে।
beansc pot add
“beansc pot add” সেকশনbeans.pot-এ Git dependency যোগ করে, সেটা resolve করে, আর beans.lock লেখে।
beansc pot add acme/http v1.2owner/repo লিখলে সেটা github.com/owner/repo ধরা হয়। পুরো host path, HTTPS
URL, বা SSH URL-ও paste করা যায়। ref না দিলে HEAD ধরা হয়।
ref tag, branch, বা commit hash হতে পারে:
beansc pot add acme/http mainbeansc pot add acme/http feature/new-apibeansc pot add acme/http 4f82c9a7d13eএখানে কোনো package registry search হয় না। acme/http সবসময়
github.com/acme/http, আর Git https://github.com/acme/http.git fetch করে।
private repo-র জন্যও একই command। Beans credential save করে না; Git তার স্বাভাবিক credential helper ব্যবহার করে। GitHub-এ SSH ব্যবহার করতে চাইলে একবার এটা চালানো যায়:
git config --global url."git@github.com:".insteadOf "https://github.com/"beans.pot বা dependency argument-এ access token লিখবেন না।
System C library যোগ করা
“System C library যোগ করা” সেকশনআগে থেকে install করা C library-র pkg-config file থাকলে --system ব্যবহার করুন:
beansc pot add --system sqlite3Beans pkg-config থেকে library search path আর library name নিয়ে beans.pot-এ
চিহ্ন দেওয়া link block লেখে:
# beansc:system sqlite3 beginlink all library "sqlite3"# beansc:system sqlite3 endLibrary default linker path-এর বাইরে থাকলে search row-ও যোগ হয়। Library-টা
system package manager-এরই দায়িত্বে থাকে। Beans সেটা download করে না, আর
beans.lock-এও যোগ করে না।
beansc pot tidy
“beansc pot tidy” সেকশনকোড যে dependency গুলো সত্যিই ব্যবহার করে সেগুলো resolve করে, আর
beans.lock লেখে।
beansc pot tidyimport বদলানোর পর এটা চালান, যাতে lock-টা কোডের সাথে মিলে যায়।
beansc pot remove
“beansc pot remove” সেকশনbeans.pot থেকে Git dependency মুছে দেয়, তারপর beans.lock tidy করে।
beansc pot remove acme/httpআগে ওই dependency-র import মুছুন। import থেকে গেলে command fail করবে আর
beans.pot বদলাবে না।
generated system-library block মুছতে একই flag ব্যবহার করুন:
beansc pot remove --system sqlite3beansc pot update
“beansc pot update” সেকশনlocked dependency গুলোকে refresh করে তাদের ref যতটুকু অনুমতি দেয় ততটুকুর মধ্যে সবচেয়ে নতুন commit-এ নিয়ে যায়, আর lock আবার লেখে।
beansc pot updateশুধু একটা dependency update করতে চাইলে তার নাম বলে দিন:
beansc pot update github.com/acme/httpdependency-র নাম pot add-এর মতো short name, host path, বা Git URL হতে পারে।
system library-র generated block-টা বর্তমান pkg-config metadata দিয়ে refresh
করতে চালান:
beansc pot update --system sqlite3--locked আর --offline
“--locked আর --offline” সেকশনএই দুইটা flag কিন্তু pot-এর subcommand নয়। এগুলো খাটে check, run, আর
build-এ (আর এগুলোর নিচের loading path-এ), যেখানে এরা ঠিক করে lock আর network-কে
কতটা কড়াভাবে ধরা হবে:
--locked: হুবহুbeans.lockentry দরকার; lock না থাকলে, পুরানো হলে, বা বদলে গেলে সেটা বাতিল করে দেয়।--offline: dependency-র network access বন্ধ; শুধু একটা পরিষ্কার cached tree বোঝায়, যার hash locked hash-এর সাথে মেলে।
পুরো বিস্তারিত আছে Reproducible build-এ। সাথে দেখুন Dependencies আর lock file আর beansc command।