Релиз Scriptisto - shebang для скриптом на компилируемых языках, IgorPetruk, 25-Окт-19, 16:58 [смотреть все]Выложил в open-source свою первую утилиту на Rust (сама утилита работает для любых ЯП). Посмотрите, может кому пригодится, рад советам и пожеланиям.https://github.com/igor-petruk/scriptisto Почему это полезно тут - https://github.com/igor-petruk/scriptisto/wiki Если кратко, создаем файл на любом компилируемом языке, в комментарии пишем иструкции по сборке. Например С с зависимостью на glib: #!/usr/bin/env scriptisto #include <stdio.h> #include <glib.h> // scriptisto-begin // script_src: main.c // build_cmd: clang -O2 main.c `pkg-config --libs --cflags glib-2.0` -o ./script // scriptisto-end int main(int argc, char *argv[]) { gchar* user = g_getenv("USER"); printf("Hello, C! Current user: %s\n", user); return 0; } Потом $ chmod +x ./script.c $ ./script.c Hello, C! Current user: username Последующие запуски будут очень быстрые, так как исполняемый файл кеширован. С утилитой доступно множество шаблонов для разных ЯП. На новость не тянет, потому что утилита небольшая. Это немного реклама - да, но некоммерческая, просто хотел поделиться может будет полезно, как было полезно мне.
|
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, Аноним, 17:19 , 25-Окт-19 (1)
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, IgorPetruk, 17:28 , 25-Окт-19 (2)
>>Если кратко, создаем файл на любом компилируемом языке, в комментарии пишем иструкции по сборке. >>#!/usr/bin/env scriptisto > хороший пример, а если я захочу его с помощью gcc скомпилировать, то > он не обидится на такой shebang?scriptisto по дефолту вытирает shebang в пустую строку перед тем как компилировать. Не удаляет, чтобы номера строк в сообщениях об ошибке не поплыли, а просто делает ее пустой. Это не очень хорошо только в Go, есть опция чтобы заменять на что-то другое, совместимое с яп, например на комментариий // как в Go. В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект если вам это нужно (например потом, скрипт становится все больше и больше) - https://github.com/igor-petruk/scriptisto/issues/10 > тут https://hackaday.com/2019/09/17/linux-fu-shell-scripts-in-c-.../ > и тут https://coderwall.com/p/e1htcg/self-compiling-source-code это хотя бы учитывают > и обходятся без раста Насчет "//" - если у вас работает такой shebang, нету проблем чтобы использовать его и scriptisto. Насчет этих статей - нужно чуть больше строк чтобы обеспечить кеширование, иначе перекомпиляция будет каждый раз.
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, Аноним, 19:39 , 25-Окт-19 (3)
>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проектт.е. если я захочу поделиться своим "скриптом", то я либо должен не забыть вытереть shebang, либо распространять его вместе в бинарником, либо убедить человека поставить раст (и все это чтобы меня не обматерили). >Насчет этих статей - нужно чуть больше строк bash/dash у меня уже есть, а вот раста нет. Да и строк у вас достаточно. >scriptisto по дефолту вытирает shebang в пустую строку перед тем как компилировать. Можно/лучше было вообще сделать что-то вроде генератора run-файлов (или типа распаковщиков от gog)
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, IgorPetruk, 20:26 , 25-Окт-19 (4)
>>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект > т.е. если я захочу поделиться своим "скриптом", то я либо должен не > забыть вытереть shebang, либо распространять его вместе в бинарником, Ну смотря что значит распространять. Если вы распространяете среди ваших машин где установлен scriptisto, тогда достаточно одного файла. Я больше говорил о фиче, когда вам надоело это держать в форме скрипта И я реализую ту фичу, то можно будет условно говоря выполнить scriptisto export и он создаст нормальный проект, без себя, без shebang, но с обычным Makefile. Уже от этого сможете дальше развивать ваше приложение. А пока это просто удобная штука для локалхоста чтобы не возиться с системами сборки для простых скриптов. > либо убедить человека поставить раст (и все это чтобы меня не обматерили). Ну я утилиту выпустил всего вчера. Потому легче всего мне ее распространять через crates.io. Но если ее опакетить для дистрибутивов, то бинарнику не нужен Rust. Я разберусь как это сделать и попытаюсь засунуть это в дистрибутивы. В качестве компромисса могу собирать статические бинарники с musl и выкладывать на Github наверное в релизы в tar.gz. >>Насчет этих статей - нужно чуть больше строк > bash/dash у меня уже есть, а вот раста нет. Да и строк > у вас достаточно. >>scriptisto по дефолту вытирает shebang в пустую строку перед тем как компилировать. > Можно/лучше было вообще сделать что-то вроде генератора run-файлов (или типа распаковщиков > от gog) Я подумаю над такой фичей, наверное в рамках export
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, IgorPetruk, 23:21 , 25-Окт-19 (5)
>>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект > т.е. если я захочу поделиться своим "скриптом", то я либо должен не > забыть вытереть shebang, либо распространять его вместе в бинарником, либо убедить > человека поставить раст (и все это чтобы меня не обматерили).Все, я исправил ситуацию. Теперь каждый релиз собирает статический бинарник на общественном сервере и выкладывает на Github. В логах CI можно увидеть контрольную сумму бинарного файла чтобы быть уверенным что он оттуда. Сборщик https://cloud.drone.io/igor-petruk/scriptisto Релизы https://github.com/igor-petruk/scriptisto/releases
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, Igor Petruk, 04:59 , 26-Окт-19 (6)
- Релиз Scriptisto - shebang для скриптом на компилируемых языках, IgorPetruk, 02:31 , 29-Окт-19 (7)
Добавил сборку статических исполняемых файлов внутри Docker, без компиляторов в хостовой системе
|