LINUX.ORG.RU

История изменений

Исправление zagatov_lev, (текущая версия) :

EDITOR='emacs -nw'
tmp=`mktemp`
VERSION='0.1'
args="${@:2}"

EDITOR – это редактор, в моем случае емакс в консольном режиме.
tmp – путь к временному файлу
VERSION – версия
args – аргументы, начиная со второго.

make(){
    /usr/bin/echo '#!/usr/bin/env rakudo' > $tmp
    /usr/bin/echo -e "use v6\n" >> $tmp
    /usr/bin/env bash -c "cat $args >> $tmp" 2> /dev/null
    cat $tmp > $args
}

Создается функция make. Выполняется гнутый оригнальный echo, который записывает хешбанг во временный файл и оттуда в нужный файл.

execute(){
    echo -n "Do you want to execute program? [Y/n] "; read -n 1 -s result; read -n 10000 -t 0.1
    case $result in
	'N'|'n') /usr/bin/echo '';;
	*) /usr/bin/echo ''; /usr/bin/env rakudo $args;;
    esac
}

Создается функция execute, которая спрашивает, хочу ли я запустить прогу. Если нет, то функция тупо заканчивается, а если нет, то запускается прога.

check(){
    if [[ `cat $args | grep '#!/usr/bin' | grep -E 'perl6|raku'` = '' ]]; then
	echo "It does not look like $args is correct Rakudo source code file. Continue? [Y/n] "; read -n 1 -s result; read -n 10000 -t 0.1
	case $result in
	    'N'|'n') /usr/bin/echo -n ''; exit 1;;
        esac
    fi
}

И создается функция check, которая проверяет программу на хешбанг.

Дальше создается функция help.

case $1 in
    'make'|'m')
        make; execute;;
    'edit'|'e')
	make; $EDITOR $args; execute;;
    'open'|'o')
	check; $EDITOR $args; execute;;
    'share'|'s')
	check; link=`curl -F"file=@$args" http://0x0.st || echo error`
	case $link in
	    'error') echo 'Error while uploading, sorry.';;
	    *) echo "Your $args file was succesfully uploaded to 0x0.st! Link: < $link >";;
	esac;;
    'help'|'h')
        help;;
    'version'|'v')
	echo "RakuToolz v$VERSION";;
    '')
	echo 'Error: no keys given'; help;;
    *)
	echo "Error: no key $1 found"; help;;
esac

Ну тут все состоит из вышеописанных функций.

Help for RakuToolz v0.1
=======================================
Ключи     | Описание
make m    | Создает файл с хешбангом и, если в файле что-то есть, записывает после хешбанга код
edit e    | Создает файл и открывает редактор
open o    | Открывает редактор
share s   | Загружает файл на 0x0.st
help h    | Показывает справку
version v | Показывает версию

Исходная версия zagatov_lev, :

Объяснение (WARNING: polotno)

EDITOR='emacs -nw'
tmp=`mktemp`
VERSION='0.1'
args="${@:2}"

EDITOR – это редактор, в моем случае емакс в консольном режиме.
tmp – путь к временному файлу
VERSION – версия
args – аргументы, начиная со второго.

make(){
    /usr/bin/echo '#!/usr/bin/env rakudo' > $tmp
    /usr/bin/echo -e "use v6\n" >> $tmp
    /usr/bin/env bash -c "cat $args >> $tmp" 2> /dev/null
    cat $tmp > $args
}

Создается функция make. Выполняется гнутый оригнальный echo, который записывает хешбанг во временный файл.

execute(){
    echo -n "Do you want to execute program? [Y/n] "; read -n 1 -s result; read -n 10000 -t 0.1
    case $result in
	'N'|'n') /usr/bin/echo '';;
	*) /usr/bin/echo ''; /usr/bin/env rakudo $args;;
    esac
}

Создается функция execute, которая спрашивает, хочу ли я запустить прогу. Если нет, то функция тупо заканчивается, а если нет, то запускается прога.

check(){
    if [[ `cat $args | grep '#!/usr/bin' | grep -E 'perl6|raku'` = '' ]]; then
	echo "It does not look like $args is correct Rakudo source code file. Continue? [Y/n] "; read -n 1 -s result; read -n 10000 -t 0.1
	case $result in
	    'N'|'n') /usr/bin/echo -n ''; exit 1;;
        esac
    fi
}

И создается функция check, которая проверяет программу на хешбанг.

Дальше создается функция help.

case $1 in
    'make'|'m')
        make; execute;;
    'edit'|'e')
	make; $EDITOR $args; execute;;
    'open'|'o')
	check; $EDITOR $args; execute;;
    'share'|'s')
	check; link=`curl -F"file=@$args" http://0x0.st || echo error`
	case $link in
	    'error') echo 'Error while uploading, sorry.';;
	    *) echo "Your $args file was succesfully uploaded to 0x0.st! Link: < $link >";;
	esac;;
    'help'|'h')
        help;;
    'version'|'v')
	echo "RakuToolz v$VERSION";;
    '')
	echo 'Error: no keys given'; help;;
    *)
	echo "Error: no key $1 found"; help;;
esac

Ну тут все состоит из вышеописанных функций.

Help for RakuToolz v0.1
=======================================
Ключи     | Описание
make m    | Создает файл с хешбангом и, если в файле что-то есть, записывает после хешбанга код
edit e    | Создает файл и открывает редактор
open o    | Открывает редактор
share s   | Загружает файл на 0x0.st
help h    | Показывает справку
version v | Показывает версию