প্রকল্প সম্পর্কে

RepositoryScanner হলো একটি GitHub অ্যাকাউন্ট অ্যানালাইজার যা পাবলিক এবং প্রাইভেট রিপোজিটরি থেকে ল্যাঙ্গুয়েজ স্ট্যাটিস্টিকস পড়ার জন্য GitHub API ব্যবহার করে এবং শীর্ষ ভাষাগুলোর একটি SVG কার্ড এক্সপোর্ট করে। README অনুযায়ী, GitHub-এর ল্যাঙ্গুয়েজ API প্রতি ভাষার জন্য কোডের বাইট রিটার্ন করে এবং কার্ডের শতাংশগুলো লাইনের সংখ্যার পরিবর্তে এই বাইট-ভিত্তিক সাইজের ওপর ভিত্তি করে নির্ধারিত হয়। জেনারেট করা কার্ডটিতে মোট কোড সাইজ অনুযায়ী শীর্ষ ছয়টি ভাষা এবং কন্ট্রিবিউশন স্ট্যাটিস্টিকস যেমন: মোট কন্ট্রিবিউশন, বর্তমান স্ট্রিক এবং দীর্ঘতম স্ট্রিক প্রদর্শিত হয়। এটি একটি Kanagawa paper-ink-অনুপ্রাণিত থিম ব্যবহার করে এবং GitHub Actions-এর মাধ্যমে প্রতি সপ্তাহে স্বয়ংক্রিয়ভাবে আপডেট হওয়ার জন্য ডিজাইন করা হয়েছে। সুপারিশকৃত সেটআপ হলো রিপোজিটরিটিকে ফর্ক করা, repo এবং read:user স্কোপসহ (অথবা শুধুমাত্র পাবলিক রিপোজিটরির জন্য public_repo) একটি GitHub পার্সোনাল অ্যাক্সেস টোকেন তৈরি করা, GH_TOKEN, GITHUB_USERNAME এবং ঐচ্ছিকভাবে EXCLUDED_LANGS-এর জন্য রিপোজিটরি সিক্রেট যোগ করা, এবং তারপর একবার ম্যানুয়ালি Update Language Stats ওয়ার্কফ্লো চালানো। ওয়ার্কফ্লো ফাইলটি .github/workflows/update-chart.yaml-এ অবস্থিত এবং এটি প্রতি রবিবার 00:00 UTC-তে সাপ্তাহিক রান করার জন্য কনফিগার করা হয়েছে, যা আপডেট করা assets/languages.svg-টিকে main ব্রাঞ্চে কমিট করে এবং অন-ডিমান্ড রান সমর্থন করে। ওই ওয়ার্কফ্লো ফাইলের cron লাইনটি এডিট করে শিডিউল পরিবর্তন করা সম্ভব। resulting SVG-টিকে raw.githubusercontent.com URL ব্যবহার করে প্রোফাইল README-তে এমবেড করা যেতে পারে, যেখানে ব্রাউজার ক্যাশিং এড়াতে ?v=1 এর মতো ঐচ্ছিক কুয়েরি প্যারামিটার ব্যবহার করা যায়। লোকাল ডেভেলপমেন্টের জন্য, README-তে Python 3.10+ (পছন্দনীয় 3.11) ব্যবহারের সুপারিশ করা হয়েছে। এর মূল ডিপেন্ডেন্সিগুলো হলো requests এবং python-dotenv। কনফিগারেশন একটি .env ফাইল বা শেল এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে প্রদান করা যেতে পারে। রিপোজিটরি রুট থেকে python scripts/fetch_languages.py চালালে assets/languages.svg জেনারেট হয়। Kanagawa কালার প্যালেট এবং ভাষা-ভিত্তিক রঙগুলো scripts/colors.py-তে সংজ্ঞায়িত করা হয়েছে, আর SVG লেআউটের বিস্তারিত বিষয়গুলো scripts/fetch_languages.py-এর ভেতরে হ্যান্ডেল করা হয়। README-তে আরও উল্লেখ করা হয়েছে যে GITHUB_USERNAME হলো প্রধান ভেরিয়েবল, তবে ব্যাকওয়ার্ড কম্প্যাটিবিলিটির জন্য USERNAME-ও সমর্থিত। যদি GH_TOKEN সেট করা না থাকে, তবে শুধুমাত্র পাবলিক রিপোজিটরিগুলো বিশ্লেষণ করা হবে এবং GitHub-এর আনঅথেন্টিকেটেড রেট লিমিট প্রযোজ্য হবে। নিরাপত্তা এবং গোপনীয়তা নোটে বলা হয়েছে যে, এই টুলটি রিপোজিটরি তালিকা এবং প্রতি রিপোজিটরির ল্যাঙ্গুয়েজ স্ট্যাটিস্টিকস পড়ার জন্য GitHub API ব্যবহার করে, তবে এটি প্রকৃত কোড কন্টেন্ট পড়ে না। টোকেনগুলো লোকাল ডেভেলপমেন্টের জন্য লোকাল .env বা এনভায়রনমেন্ট ভেরিয়েবল থেকে এবং Actions-এর জন্য GitHub Secrets থেকে পড়া হয় এবং এগুলো কখনোই কমিট করা উচিত নয়। ট্রাবলশুটিং সেকশনে 401 Unauthorized এবং API এরর, ফিল্টার করা ফর্কের কারণে ল্যাঙ্গুয়েজ ডেটার অভাব, এক্সক্লুডেড ল্যাঙ্গুয়েজ, টোকেন অ্যাক্সেস বা রেট লিমিট এবং Actions ডিজেবল থাকা, ভুল ওয়ার্কফ্লো পাথ, ইনভ্যালিড YAML বা প্রত্যাশিত ব্রাঞ্চে পরিবর্তন না থাকার কারণে ওয়ার্কফ্লো না চলার বিষয়গুলো কভার করা হয়েছে। এই প্রজেক্টটি MIT লাইসেন্সপ্রাপ্ত এবং এটি anuraghazra/github-readme-stats দ্বারা অনুপ্রাণিত, আর Kanagawa কালার থিমটি rebelot/kanagawa-paper.nvim দ্বারা প্রভাবিত।