The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Релиз 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)
    >Если кратко, создаем файл на любом компилируемом языке, в комментарии пишем иструкции по сборке.
    >#!/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 это хотя бы учитывают и обходятся без раста

    • Релиз 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)
    Добавил deb, rpm пакеты для основных дистрибутивов, а также просто релиз со статически линкованым исполняемым файлом. Тоже собираются автоматически

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

  • Релиз Scriptisto - shebang для скриптом на компилируемых языках, !*! IgorPetruk, 02:31 , 29-Окт-19 (7)
    Добавил сборку статических исполняемых файлов внутри Docker, без компиляторов в хостовой системе



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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