The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Релиз Scriptisto - shebang для скриптом на компилируемых языках"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Rust)
Изначальное сообщение [ Отслеживать ]

"Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от IgorPetruk (ok), 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

Последующие запуски будут очень быстрые, так как исполняемый файл кеширован.

С утилитой доступно множество шаблонов для разных ЯП.

На новость не тянет, потому что утилита небольшая. Это немного реклама - да, но некоммерческая, просто хотел поделиться может будет полезно, как было полезно мне.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от Аноним (1), 25-Окт-19, 17:19 
>Если кратко, создаем файл на любом компилируемом языке, в комментарии пишем иструкции по сборке.
>#!/usr/bin/env scriptisto

хороший пример, а если я захочу его с помощью gcc скомпилировать, то он не обидится на такой shebang?

тут https://hackaday.com/2019/09/17/linux-fu-shell-scripts-in-c-.../ и тут https://coderwall.com/p/e1htcg/self-compiling-source-code это хотя бы учитывают и обходятся без раста

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от IgorPetruk (ok), 25-Окт-19, 17:28 
>>Если кратко, создаем файл на любом компилируемом языке, в комментарии пишем иструкции по сборке.
>>#!/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.

Насчет этих статей - нужно чуть больше строк чтобы обеспечить кеширование, иначе перекомпиляция будет каждый раз.


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от Аноним (3), 25-Окт-19, 19:39 
>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект

т.е. если я захочу поделиться своим "скриптом", то я либо должен не забыть вытереть shebang, либо распространять его вместе в бинарником, либо убедить человека поставить раст (и все это чтобы меня не обматерили).

>Насчет этих статей - нужно чуть больше строк

bash/dash у меня уже есть, а вот раста нет. Да и строк у вас достаточно.
>scriptisto по дефолту вытирает shebang в пустую строку перед тем как компилировать.

Можно/лучше было вообще сделать что-то вроде генератора run-файлов (или типа распаковщиков от gog)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от IgorPetruk (ok), 25-Окт-19, 20:26 
>>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект
> т.е. если я захочу поделиться своим "скриптом", то я либо должен не
> забыть вытереть shebang, либо распространять его вместе в бинарником,

Ну смотря что значит распространять. Если вы распространяете среди ваших машин где установлен scriptisto, тогда достаточно одного файла.

Я больше говорил о фиче, когда вам надоело это держать в форме скрипта И я реализую ту фичу, то можно будет условно говоря выполнить scriptisto export и он создаст нормальный проект, без себя, без shebang, но с обычным Makefile. Уже от этого сможете дальше развивать ваше приложение.

А пока это просто удобная штука для локалхоста чтобы не возиться с системами сборки для простых скриптов.

> либо убедить человека поставить раст (и все это чтобы меня не обматерили).

Ну я утилиту выпустил всего вчера. Потому легче всего мне ее распространять через crates.io. Но если ее опакетить для дистрибутивов, то бинарнику не нужен Rust. Я разберусь как это сделать и попытаюсь засунуть это в дистрибутивы.

В качестве компромисса могу собирать статические бинарники с musl и выкладывать на Github наверное в релизы в tar.gz.

>>Насчет этих статей - нужно чуть больше строк
> bash/dash у меня уже есть, а вот раста нет. Да и строк
> у вас достаточно.
>>scriptisto по дефолту вытирает shebang в пустую строку перед тем как компилировать.
> Можно/лучше было вообще сделать что-то вроде генератора run-файлов (или типа распаковщиков
> от gog)

Я подумаю над такой фичей, наверное в рамках export

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от IgorPetruk (ok), 25-Окт-19, 23:21 
>>В рамках вот этой Issue я хочу сделать трансформирование скрипта в реальный проект
> т.е. если я захочу поделиться своим "скриптом", то я либо должен не
> забыть вытереть shebang, либо распространять его вместе в бинарником, либо убедить
> человека поставить раст (и все это чтобы меня не обматерили).

Все, я исправил ситуацию. Теперь каждый релиз собирает статический бинарник на общественном сервере и выкладывает на Github.

В логах CI можно увидеть контрольную сумму бинарного файла чтобы быть уверенным что он оттуда.

Сборщик https://cloud.drone.io/igor-petruk/scriptisto
Релизы https://github.com/igor-petruk/scriptisto/releases

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от Igor Petrukemail (?), 26-Окт-19, 04:59 
Добавил deb, rpm пакеты для основных дистрибутивов, а также просто релиз со статически линкованым исполняемым файлом. Тоже собираются автоматически

https://github.com/igor-petruk/scriptisto/wiki/Installation

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Релиз Scriptisto - shebang для скриптом на компилируемых языках"  +/
Сообщение от IgorPetruk (ok), 29-Окт-19, 02:31 
Добавил сборку статических исполняемых файлов внутри Docker, без компиляторов в хостовой системе
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру