Итак, вы написали крутую программу. Всё работает отлично, не глючит, и вы горите желанием поделиться своим творением с общественностью.
Какие есть варианты?
1) Pastebin
Это самое популярное, простое и идеальное решение для программ из одного файла.
Заливаете файлик, даёте юзерам ссылку или код файла - и дело в шляпе.
Консольная утилитка для скачивания программ с Pastebin доступна прямо в составе OpenOS.
2) Wget
Здесь тоже всё достаточно просто. Кидаете файл куда угодно в интернете, лишь бы прямую ссылку можно было получить.
Юзер пишет:
wget <url>
и получает ваш файл.
3) Копи-паст
Просто, но геморно. Сначала надо создать файл, потом скопировать в него код (откуда-нибудь). Потом сохранить.
Причём длинный листинг за одни раз скопировать не выйдет. Размер буфера обмена в ОС - 256 строк.
Ну, тут вроде всё ясно.
Но как быть если программа состоит из нескольких файлов? Или если она использует какую-нибудь прикольную библиотечку? Залить десятью файлами и заставлять пользователя скачать / скопировать всё?
4) OPPM
Многие наверное слышали, но мало кто использует.
Это клиент к репозиторию OpenPrograms на GitHub. Он предназначен специально для программ под OpenComputers.
Однако, тут тоже не всё безоблачно.
Во-первых надо владеть Git'ом.
Во-вторых - получить личный репозиторий в
OpenPrograms.
В-третьих, надо будет заполнить специальный конфиг для своей программы.
Если в нём будет хоть одна ошибка - всё сломается.
5) Pastebin с самописным инсталлятором
Многие в итоге приходят к этому.
Вы делаете небольшой скрипт и заливаете его на Pastebin, как обычно. Когда пользователь запустит скрипт, тот уже самостоятельно докачает остальные файлы, раскидает их по нужным папкам и настроит конфиги как надо.
Это гибкий способ. Но хлопотный. Надо морочиться с инсталлятором. Надо постоянно обновлять его код под новые версии программы или библиотек. Надо объяснять юзерам, как именно установить программу.
А если у пользователя две программы, которые используют одну библиотеку, то на жёстком окажется две копии этой библиотеки = лишние затраты места.
Было бы здорово этот процесс как-то облегчить или даже автоматизировать, не правда ли?
И тут на помощь приходит репозиторий Hel.
6) Hel Repository
Репозиторий - это сайт, которых хранит инфу о программах, и облегчает их поиск и установку.
Общая идея такова. Вы пишете программу как обычно. Там, где вам удобно. Вы можете заливать её на Pastebin, GitHub, C9, файлохранилище или вообще на свой личный сайт.
Главное - чтобы была прямая ссылка на файлы.
Когда пришла пора релизиться, вы заходите на сайт репозитория и создаёте там новый пакет с простым и понятным именем, которое легко запомнят ваши пользователи. Интерфейс создания пакета несложен. Но позволяет многое.
Вы можете указать лицензию, под которой распространяется код.
Добавить короткое описание для каталога (не более 120 символов).
Плюс длинное описание для странички пакета. Тут можно описать подробно ньюансы использования программы. Приложить примеры кода, если это библиотека. Длинное описание поддерживает форматирование кодом Markdown и подсветку синтаксиса 20 с лишним языков программирования (включая Lua и MoonScript).
Далее можно приаттачить несколько скриншотов (они потом будут показаны в слайдере наверху странички пакета).
Тегами указываются авторы проекта, а также пользователи Hel, которые имеют доступ к редактированию пакета (обычно это вы сами, но можно "допустить" к рулю кого-то ещё). Плюс контент теги. Это обычные теги, которыми можно потом пользоваться, чтобы найти вашу программу по ключевым словам.
И наконец главное. Версии программы.
Обычно, ваша первая программа имеет версию вида 0.1.0 или 1.0.0.
Но потом вы решаете добавить немного функциональности, пару фич и печенек. Появляется версия 0.1.1. Потом 0.2.0. А то и 2.0.0.
Но не всем юзерам нравятся нововведения. Какие-то ретрограды остались сидеть на версии 0.1.0, "потому что раньше лучше было". Можно сказать им, что они дураки. Но они ведь обидятся, и свалят к конкурентам.
Однако, есть решение получше. Репозиторий Hel позволяет каждому пакету иметь одновременно несколько версий. Каждая будет доступна для скачивания и установки. И все юзеры останутся довольны.
На вкладке версии вы указываете ссылки на все нужные файлы, на все части программы.
Тут тоже есть дополнительная плюшка. Если нужная вам библиотека уже есть в репозитории, в виде пакета, можно не морочиться с её файлами, а просто указать её название как "зависимость". Тогда репозиторий будет автоматически устанавливать эту библиотеку всем, кто захочет воспользоваться вашей программой.
Когда настройка завершена - просто сохраняете пакет и всё. Теперь любой пользователь может найти его в каталоге на главной странице репозитория и установить себе.
Установить любой пакет (любой версии) с репозитория крайне легко. И не имеет значения, сколько в нём файлов, сколько библиотек и зависимостей.
Просто пишете:
hpm install mypackage@version
И пакет будет скачан, все нужные файлы распиханы по нужным папкам, а программа полностью готова к запуску.
Удалить пакет, если он вам вдруг больше не нужен, тоже очень просто:
hpm remove mypackage
А если вы вдруг прознали, что доступна свежая версия пакета, можно сделать:
hpm upgrade
И все пакеты будут обновлены.
Сам клиент hpm
- это по сути универсальный установщик. Типа того,
который могли бы написать вы сами. Но он уже написан за вас. =)
Ставится всего одной командой. Умеет обновляться сам, при помощи апгрейда с репозитория Hel (он там тоже в виде пакета есть).
Плюс он тоже обладает несколькими интересными плюшками. Например
его можно расширять дополнительными модулями. В базовой комплектации
он как раз имеет один дополнительный модуль, который позволяет
ему работать c OPPM. Так что оригинальный oppm
можно в принципе и не
ставить, если у вас уже стоит hpm
.
Вы можете написать свой собственный модуль, и научить hpm
работать не
только с Hel и OPPM, но и Pastebin (Hastebin, Asiebin), С9, Яндекс.Диск
или вообще своей системой пакетов.
Подробности я раскрою в одном из следующих гайдов (в относительно
недалёком будущем).
А пока заходите на репозиторий по ссылке:
https://hel.fomalhaut.me/
(Эта же ссылка есть в шапке форума, в разделе Lua.)
Клиент HPM можно установить командой:
pastebin run vf6upeAN
P.S. Репозиторий сейчас находится в статусе Beta. Поэтому пишите каких фич ему не хватает по вашему мнению, или какие баги вам особенно досаждают.
Будем постепенно допиливать.
Enjoy!