Swiftly هي أداة CLI لتثبيت سلاسل أدوات Swift وإدارتها والتبديل بينها، وهي مكتوبة بلغة Swift. تم تصميم Swiftly ليكون سهل التثبيت والتشغيل للغاية، كما أن واجهة الأوامر الخاصة به تهدف إلى أن تكون مرنة مع سهولة الاستخدام أيضًا. التجربة الشاملة مستوحاة من صدأ مدير سلسلة أدوات Rust، ومن المفترض أن تذكرنا بذلك.
تتم الصيانة والإشراف المستمر لهذا المشروع من قبل SSWG.
لتنزيل Swift وتثبيته بسرعة، قم بتشغيل ما يلي في جهازك الطرفي، ثم اتبع التعليمات التي تظهر على الشاشة.
curl -L https://swiftlang.github.io/swiftly/swiftly-install.sh | bash
وبدلاً من ذلك، يمكنك تنزيل البرنامج الثنائي Swiftly ويمكنه تثبيت نفسه:
swiftly init
$ swiftly install latest
Fetching the latest stable Swift release...
Installing Swift 5.8.1
Downloaded 488.5 MiB of 488.5 MiB
Extracting toolchain...
Swift 5.8.1 installed successfully!
$ swift --version
Swift version 5.8.1 (swift-5.8.1-RELEASE)
Target: x86_64-unknown-linux-gnu
$PATH
)حاليًا، يعد Swiftly في المراحل الأولى من التطوير وهو مدعوم على Linux وmacOS. للحصول على معلومات أكثر تفصيلاً حول الميزات والتنفيذ المقصود لـ Swiftly، راجع مستند التصميم.
$ swiftly install latest
يمكن توفير إصدار محدد من Swift لأمر install
.
$ swiftly install 5.6.1
إذا لم يتم تحديد إصدار تصحيح، فسيتم البحث سريعًا عن أحدث إصدار تصحيح يتطابق مع الإصدار الثانوي المقدم وتثبيته:
$ swiftly install 5.6
$ swiftly install main-snapshot-2022-01-28
إذا لم يتم تحديد التاريخ، فسيتم البحث بسرعة عن أحدث لقطة متوفرة وتثبيتها:
$ swiftly install main-snapshot
$ swiftly install 5.7-snapshot-2022-08-30
إذا لم يتم تحديد التاريخ، فسيتم البحث بسرعة عن أحدث لقطة مرتبطة بفرع التطوير المقدم وتثبيتها:
$ swiftly install 5.7-snapshot
$ swiftly uninstall 5.6.3
لإلغاء تثبيت كافة سلاسل الأدوات المرتبطة بإصدار ثانوي معين، اترك إصدار التصحيح:
$ swiftly uninstall 5.6
$ swiftly uninstall main-snapshot-2022-08-30
$ swiftly uninstall 5.7-snapshot-2022-08-30
لإلغاء تثبيت جميع اللقطات المرتبطة بفرع معين (إما فرع رئيسي أو فرع إصدار)، احذف التاريخ:
$ swiftly uninstall main-snapshot
$ swiftly uninstall 5.7-snapshot
يقوم أمر list
بطباعة جميع سلاسل الأدوات المثبتة بسرعة:
$ swiftly list
يؤدي "استخدام" سلسلة الأدوات إلى تعيينها كسلسلة أدوات نشطة، مما يعني أنها ستكون تلك التي تم العثور عليها عبر $PATH وسيتم استدعاؤها عبر أوامر swift
يتم تنفيذها في الصدفة. يجب تثبيت سلسلة الأدوات قبل أن تتمكن من استخدامها.
يمكنك توفير محددات الإصدار نفسها التي استخدمتها مع swiftly install
لاستخدام سلسلة أدوات، بما في ذلك إصدارات الإصدارات الدقيقة "major.minor.patch" واللقطات.
$ swiftly use latest
$ swiftly use 5.3.1
$ swiftly use 5.3
$ swiftly use 5.3-snapshot
$ swiftly use 5.3-snapshot-2022-08-16
$ swiftly use main-snapshot
$ swiftly use main-snapshot-2024-06-18
بعد استخدام سلسلة الأدوات، سيتم تشغيل أوامرك في الصدفة باستخدام سلسلة الأدوات هذه:
$ swiftly use x.y.z
$ swift build # Build my package with toolchain version x.y.z
$ clang -c foo.c -o foo.o # Compile this C file using the clang compiler in toolchain version x.y.z
$ lldb # Open the debugger from toolchain version x.y.z
إذا كنت تريد تشغيل أمر واحد فقط باستخدام سلسلة أدوات معينة دون الحاجة إلى الرجوع إلى الأمر الذي استخدمته مسبقًا، فيمكنك استخدام أمر swiftly run
مع الإصدار. يقوم هذا الأمر بإنشاء الحزمة الحالية الخاصة بك باستخدام أحدث سلسلة أدوات لقطة للإصدار الحالي:
$ swiftly run swift build +main-snapshot
تشير المعلمة ذات العلامة "+" إلى أن هذا هو محدد إصدار سلسلة الأدوات المطلوب استخدامه ويدعم النطاق الكامل للمحددات الموضحة أعلاه ومع أمر swiftly install
. يجب تثبيت سلسلة الأدوات لتشغيل أمر باستخدام سلسلة الأدوات تلك.
يستبدل التحديث سلسلة أدوات معينة بإصدار أحدث من سلسلة الأدوات هذه. للحصول على إصدار مستقر، هذا يعني التحديث إلى إصدار لاحق أو إصدار ثانوي أو رئيسي. بالنسبة للقطات، يعني هذا التحديث إلى أحدث لقطة متوفرة.
إذا لم يتم توفير إصدار، فسيقوم التحديث بتحديث سلسلة الأدوات المحددة حاليًا إلى أحدث إصدار تصحيح إذا كانت سلسلة أدوات إصدار أو أحدث لقطة متوفرة إذا كانت لقطة. سيتم تحديد الإصدار المثبت حديثًا.
$ swiftly update
لتحديث أحدث إصدار مثبت إلى أحدث إصدار متوفر، يمكن توفير الإصدار "الأحدث". لاحظ أن هذا قد يؤدي إلى تحديث سلسلة الأدوات إلى الإصدار الثانوي أو حتى الرئيسي التالي.
swiftly update latest
إذا تم تحديد إصدار رئيسي فقط، فسيتم تحديث أحدث سلسلة أدوات مثبتة مع هذا الإصدار الرئيسي إلى أحدث إصدار متاح من هذا الإصدار الرئيسي:
swiftly update 5
إذا تم تحديد الإصدار الرئيسي والثانوي، فسيتم تحديث أحدث سلسلة أدوات مثبتة مرتبطة بهذا الإصدار الرئيسي/الثانوي إلى أحدث إصدار تصحيح متاح لهذا الإصدار الرئيسي/الثانوي.
swiftly update 5.3
يمكنك أيضًا تحديد إصدار كامل لتحديث سلسلة الأدوات هذه إلى أحدث تصحيح متاح لهذا الإصدار الرئيسي/الثانوي:
swiftly update 5.3.1
وبالمثل، لتحديث أحدث لقطة مرتبطة بإصدار معين، يمكن توفير إصدار "ab-snapshot":
swiftly update 5.3-snapshot
يمكنك أيضًا تحديث أحدث لقطة رئيسية مثبتة إلى أحدث لقطة متوفرة بمجرد توفير main-snapshot
:
swiftly update main-snapshot
يمكن تحديث سلسلة أدوات لقطة محددة إلى أحدث لقطة متوفرة لهذا الفرع عن طريق تضمين التاريخ:
swiftly update 5.9-snapshot-2023-09-20
يمكن استخدام الأمر list-available
لسرد أحدث سلاسل الأدوات التي أتاحتها Apple للتثبيت.
لاحظ أن هذا الأمر لم يتم تنفيذه بعد، ولكن سيتم تضمينه في إصدار مستقبلي.
swiftly list-available
يمكن توفير محدد اختياريًا لتضييق النتائج:
$ swiftly list-available 5.6
$ swiftly list-available main-snapshot
$ swiftly list-available 5.7-snapshot
يتحقق هذا الأمر لمعرفة ما إذا كانت هناك إصدارات جديدة من swiftly
نفسه ويقوم بترقيتها إذا كان الأمر كذلك.
لاحظ أن هذا الأمر لم يتم تنفيذه بعد، ولكن سيتم تضمينه في إصدار مستقبلي.
swiftly self-update
الاسم المتعارف عليه لسلسلة أدوات اللقطة في واجهة أوامر Swiftly هو كما يلي:
<branch>-snapshot-YYYY-MM-DD
ومع ذلك، يقبل Swift أيضًا أسماء ملفات سلسلة أدوات اللقطة من التنزيلات المقدمة من Swift.org. على سبيل المثال:
swift-DEVELOPMENT-SNAPSHOT-2022-09-10-a
swift-5.7-DEVELOPMENT-SNAPSHOT-2022-08-30-a
تم اختيار تنسيق الاسم المتعارف عليه لتقليل ضغطات المفاتيح اللازمة للإشارة إلى سلسلة أدوات لقطة، ولكن النموذج الأطول مفيد أيضًا عند نسخ/لصق اسم سلسلة أدوات مقدم من مكان آخر.
مرحبًا بك في مجتمع سويفت!
المساهمات في Swiftly موضع ترحيب وتشجيع! يرجى الاطلاع على دليل المساهمة في Swift والتحقق من بنية المجتمع.
لكي يكون Swift مجتمعًا رائعًا حقًا، يحتاج إلى الترحيب بالمطورين من جميع مناحي الحياة، بخلفيات مختلفة، ومع مجموعة واسعة من الخبرة. سيكون لدى المجتمع المتنوع والودي المزيد من الأفكار الرائعة، ووجهات النظر الفريدة، وسينتج المزيد من التعليمات البرمجية الرائعة. سنعمل بجد لجعل مجتمع Swift مرحبًا بالجميع.
لتوضيح ما هو متوقع من أعضائنا، اعتمدت Swift قواعد السلوك المحددة في ميثاق المساهمين. يتم استخدام هذه الوثيقة عبر العديد من المجتمعات مفتوحة المصدر، ونعتقد أنها توضح قيمنا بشكل جيد. للمزيد، راجع مدونة قواعد السلوك.
apt
أو yum
)؟ يوفر Swift.org حاليًا حزم .rpm
و .deb
التجريبية التي تتيح لك تثبيت Swift عبر مدير الحزم لديك. على الرغم من أن هذه طريقة فعالة لتثبيت وتحديث إصدار واحد من Swift، إلا أنها ليست مناسبة تمامًا لمهمة تثبيت سلاسل أدوات Swift المتعددة التي يمكنك التبديل بينها بسهولة. الجمهور المستهدف لـ Swiftly هو مطورو Swift الذين يقومون بالتبديل بين الإصدارات لأغراض اختبار مكتباتهم وتطبيقاتهم. كما أن .deb
و .rpm
لا يوفران حاليًا دعمًا لسلاسل أدوات اللقطة.
Swiftenv هو مدير إصدار Swift موجود بالفعل ويحتوي بالفعل على الكثير من الوظائف التي ستتوفر لها سريعًا في النهاية. إنها أداة رائعة، وإذا كانت جزءًا من سير عملك، فنحن نشجعك على الاستمرار في استخدامها! ومع ذلك، فإن السرعة ستكون مختلفة بعدة طرق:
تم إنشاء Swiftly كجهد مجتمعي بقيادة مجموعة عمل خادم Swift، ومن خلال هذا التعاون، سوف تصبح Swiftly في النهاية أداة تثبيت رسمية لسلاسل أدوات Swift. كخطوة أولى نحو ذلك، سيساعد برنامج Swiftly في إعلام عملية إنشاء نقاط نهاية واجهة برمجة التطبيقات (API) التي يحتفظ بها مشروع Swift والتي سيستخدمها لاسترداد المعلومات حول سلاسل الأدوات المتاحة للتثبيت والتحقق من توقيعاتها المتوقعة. يستخدم Swiftenv حاليًا طبقة API لجهة خارجية لهذا الغرض. يؤدي استخدام واجهة برمجة التطبيقات (API) الرسمية إلى تقليل فرص الثغرات الأمنية ويقلل أيضًا من خطر التوقف عن العمل الذي يؤثر على عمليات تثبيت Swift.
Swiftly ستتم كتابتها بلغة Swift، والتي نعتقد أنها مهمة لقابلية الصيانة وتشجيع مساهمات المجتمع.
يتمتع Swiftly بدعم من الدرجة الأولى لتثبيت وإدارة سلاسل أدوات اللقطة.
لقد قام Swiftly ببناء دعم لتحديث سلاسل الأدوات.
تم تحسين Swiftly لسهولة التثبيت - ويمكن إجراؤه باستخدام بطانة واحدة مشابهة لـ Homebrew وrustup. بالإضافة إلى ذلك، لن يتطلب تطبيق Swiftly تثبيت أي تبعيات للنظام على نظام المستخدم. على الرغم من أن تثبيت Swiftenv سهل نسبيًا، إلا أنه يتضمن استنساخ مستودع git أو استخدام Homebrew، ويتطلب بعض تبعيات النظام (مثل bash، وcurl، وtar).