
أثينا أو إس هي توزيعة تعتمد على أرش/نيكس وتركز على الأمن السيبراني. تعلم، تدرب واستمتع مع أي أداة اختراق!
يتم الحفاظ على الحزم في هذا المستودع محدثة تلقائيًا عبر سير عمل GitHub Actions يوميًا مدعوم من nvchecker.
تعمل الأتمتة كل يوم (ويمكن أيضًا تشغيلها يدويًا) وتتبع الخطوات التالية:
توليد التكوين — .nvchecker/generate-nvchecker-config.py يقوم بمسح كل PKGBUILD تحت src/ ويقوم تلقائيًا بإنشاء .nvchecker/nvchecker.toml. يتم تصنيف كل حزمة كواحدة من:
pkgver= ثابت وعنوان URL مصدر عن بعد. يتم تتبعها بواسطة أحدث علامة/إصدار على المنصة المستضافة.pkgver() ومصدر git+https://. يتم تتبعها بواسطة أحدث commit من المصدر الأصلي.فحص الإصدار — يقوم nvchecker بالاستعلام عن المصدر الأصلي لكل حزمة متتبعة ويكتب النتائج إلى .nvchecker/newver.json. يتم مقارنة هذا مع .nvchecker/oldver.json (المُلتزم به في المستودع) للعثور على الحزم التي يتوفر لها إصدار جديد.
تحديث PKGBUILD وسحب التغييرات — لكل حزمة قديمة يقوم سير العمل بما يلي:
auto-update/<pkgname>-<newver>.pkgver ويعيد تعيين pkgrel إلى 1 في ملف PKGBUILD.updpkgsums.pkgver() محليًا لحساب سلسلة الإصدار الفعلية بنمط Arch (مثل 131.940a5d3)، ويبقي sha512sums=('SKIP') كما هو.auto-update للمراجعة البشرية قبل أن يصل أي شيء إلى main.حفظ الحالة — يتم تحديث .nvchecker/oldver.json بالإصدارات التي تم رؤيتها في هذا التشغيل ويتم الالتزام به مرة أخرى إلى main، بحيث يقوم التشغيل التالي بفتح PRs فقط للتغييرات الجديدة حقًا.
| المنصة | الكشف |
|---|---|
| GitHub | github.com/<user>/<repo> |
| GitLab (gitlab.com + مستضاف ذاتيًا) | gitlab.*/<user>/<repo> |
| Codeberg | codeberg.org/<user>/<repo> |
| Gitea (مستضاف ذاتيًا) | 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 التي تعتمد عليها بلطف مع ملاحظة معلوماتية — لا يتم رفع أي خطأ، ويمكن دائمًا تحديثها يدويًا.
| الصياغة غير المدعومة | مثال | السبب |
|---|---|---|
## greedy prefix strip | ${var##*/} | يتم تنفيذ # غير الجشعة فقط |
%% greedy suffix strip | ${var%%.*} | يتم تنفيذ % غير الجشعة فقط |
| Substring extraction | ${var:0:3} | عامل مختلف، نادر في PKGBUILDs |
| Pattern substitution | ${var//foo/bar} | عامل مختلف، نادر في PKGBUILDs |
| Arithmetic expansion | $((pkgver + 1)) | خارج نطاق تتبع الإصدارات |
| Nested expansions | ${${var}#prefix} | غير صالح في POSIX؛ لا يُستخدم عمليًا |
إذا كان PKGBUILD الخاص بك يستخدم أيًا مما سبق وتخطته الأتمتة، يمكنك إما إعادة كتابة التعيين كسطر var=value بسيط أو فتح PR لتحديث الإصدار يدويًا.