История изменений
Исправление
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 | Показывает версию