
Athena OS एक Arch/Nix-आधारित डिस्ट्रो है जो साइबर सुरक्षा पर केंद्रित है। किसी भी हैकिंग टूल के साथ सीखें, अभ्यास करें और आनंद लें!

इस रिपॉज़िटरी के पैकेज nvchecker द्वारा संचालित दैनिक GitHub Actions वर्कफ़्लो के माध्यम से स्वचालित रूप से अद्यतित रखे जाते हैं।
यह ऑटोमेशन प्रतिदिन चलता है (और इसे मैन्युअल रूप से भी ट्रिगर किया जा सकता है) और निम्नलिखित चरणों से गुज़रता है:
कॉन्फ़िग जनरेशन - .nvchecker/generate-nvchecker-config.py src/ के अंतर्गत प्रत्येक PKGBUILD को स्कैन करता है और स्वतः .nvchecker/nvchecker.toml उत्पन्न करता है। प्रत्येक पैकेज को निम्नलिखित में से एक के रूप में वर्गीकृत किया जाता है:
pkgver= और एक रिमोट सोर्स URL होता है। होस्टिंग प्लेटफ़ॉर्म पर नवीनतम टैग/रिलीज़ द्वारा ट्रैक किया जाता है।pkgver() फ़ंक्शन और एक git+https:// सोर्स होता है। नवीनतम अपस्ट्रीम कमिट द्वारा ट्रैक किया जाता है।संस्करण जाँच - nvchecker प्रत्येक ट्रैक किए गए पैकेज के अपस्ट्रीम को क्वेरी करता है और परिणामों को .nvchecker/newver.json में लिखता है। इसे .nvchecker/oldver.json (रिपॉज़िटरी में कमिट किया गया) के साथ तुलना की जाती है ताकि उन पैकेजों का पता लगाया जा सके जिनके लिए एक नया संस्करण उपलब्ध है।
PKGBUILD अपडेट और PR - प्रत्येक पुराने पैकेज के लिए वर्कफ़्लो:
auto-update/<pkgname>-<newver> बनाता है।PKGBUILD में pkgver को अपडेट करता है और pkgrel को 1 पर रीसेट करता है।updpkgsums के साथ चेकसम फिर से जनरेट करता है।131.940a5d3) की गणना करने के लिए स्थानीय रूप से pkgver() फ़ंक्शन चलाता है, और sha512sums=('SKIP') को जैसा है वैसा ही रखता है।main पर कुछ भी लैंड होने से पहले मानवीय समीक्षा के लिए auto-update लेबल वाला पुल रिक्वेस्ट खोलता है।स्टेट सेव - .nvchecker/oldver.json को इस रन में देखे गए वर्ज़न के साथ अपडेट किया जाता है और वापस main पर कमिट किया जाता है, ताकि अगला रन केवल वास्तव में नए बदलावों के लिए PR खोले।
| प्लेटफ़ॉर्म | पहचान |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + self-hosted) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (self-hosted) | gitea.*/<user>/<repo> |
| Sourcehut | git.sr.ht/~<user>/<repo> |
कॉन्फ़िग जनरेटर और CI वर्कफ़्लो दोनों source= लाइनों में शेल वेरिएबल संदर्भों को हल करते हैं ताकि निम्नलिखित जैसे अप्रत्यक्ष URL सही ढंग से संभाले जा सकें:
_pkgname=${pkgname#athena-}
source=("git+https://github.com/Athena-OS/$_pkgname.git")
निम्नलिखित bash पैरामीटर विस्तार रूप समर्थित हैं:
| सिंटैक्स | अर्थ | उदाहरण |
|---|---|---|
$var / ${var} | सरल प्रतिस्थापन | $pkgname → athena-settings |
${var#prefix} | सबसे छोटा मेल खाता उपसर्ग हटाएँ | ${pkgname#athena-} → settings |
${var%suffix} | सबसे छोटा मेल खाता प्रत्यय हटाएँ | ${pkgname%-git} → athena-settings |
निम्नलिखित bash संरचनाएँ ऑटोमेशन द्वारा हल नहीं की जाती हैं। जो PKGBUILDs इन पर निर्भर करते हैं, उन्हें एक सूचनात्मक टिप्पणी के साथ सहजता से छोड़ दिया जाएगा - कोई त्रुटि नहीं उठाई जाती, और उन्हें हमेशा मैन्युअल रूप से अपडेट किया जा सकता है।
| असमर्थित सिंटैक्स | उदाहरण | कारण |
|---|---|---|
## लालची उपसर्ग हटाना | ${var##*/} | केवल गैर-लालची # लागू किया गया है |
%% लालची प्रत्यय हटाना | ${var%%.*} | केवल गैर-लालची % लागू किया गया है |
| सबस्ट्रिंग निष्कर्षण | ${var:0:3} | भिन्न ऑपरेटर, PKGBUILDs में दुर्लभ |
| पैटर्न प्रतिस्थापन | ${var//foo/bar} | भिन्न ऑपरेटर, PKGBUILDs में दुर्लभ |
| अंकगणितीय विस्तार | $((pkgver + 1)) | संस्करण ट्रैकिंग के दायरे से बाहर |
| नेस्टेड विस्तार | ${${var}#prefix} | वैध POSIX नहीं; व्यवहार में उपयोग नहीं होता |
यदि आपका PKGBUILD उपरोक्त में से किसी का उपयोग करता है और ऑटोमेशन इसे छोड़ देता है, तो आप या तो असाइनमेंट को एक सादे var=value पंक्ति के रूप में फिर से लिख सकते हैं या संस्करण को मैन्युअल रूप से अपडेट करते हुए एक PR खोल सकते हैं।
LOL Omuamua