@ -1,7 +1,7 @@
#!/bin/bash
## sets optional variable from environment
opt ( ) { eval "if [ -z " \$ { $1 } " ]; then ${ 1 } = ${ 2 } ; fi" ; }
opt ( ) { eval "if [ -z " \$ { $1 } " ]; then ${ 1 } = ' ${ 2 } ' ; fi" ; }
## output usage
usage ( ) {
@ -15,11 +15,11 @@ prompt () {
local var = " $1 "
local q = " $2 "
local value = ""
printf "%s" " ${ q } "
{
trap "exit -1" SIGINT SIGTERM
read -re value;
read -p " $q " -r -e value;
value = " ${ value // \" / \' } " ;
} 2>& 1
if [ ! -z " ${ value } " ] ; then
@ -27,6 +27,20 @@ prompt () {
fi
}
prompt_if ( ) {
local mesg = " $1 "
local func = " $2 "
prompt ANSWER " $mesg [y/n]: "
case " $ANSWER " in
y| Y| yes| YES| Yes)
shift
shift
$func $@
return 0
esac
return 1
}
## alert user of hint
hint ( ) {
{
@ -64,7 +78,7 @@ wrap () {
intro ( ) {
echo
echo "This will walk you through initial zing the bpkg \`package.json' file."
echo "This will walk you through initial i zing the bpkg \`package.json' file."
echo "It will prompt you for the bare minimum that is needed and provide"
echo "defaults."
echo
@ -81,17 +95,22 @@ options () {
opt VERSION "0.0.1"
opt DESCRIPTION ""
opt GLOBAL ""
opt INSTALL " "
opt INSTALL " install -b ${ NAME } .sh \${PREFIX:-/usr/local}/bin/ ${ NAME } "
opt SCRIPTS " ${ NAME } .sh "
}
set_global ( ) {
GLOBAL = 1
}
prompts ( ) {
prompt NAME " name: ( ${ NAME } ) "
prompt VERSION " version: ( ${ VERSION } ) "
prompt DESCRIPTION "description: "
prompt GLOBAL "global: "
prompt INSTALL "install: "
prompt INSTALL " install: ( ${ INSTALL } ) "
prompt SCRIPTS " scripts: ( ${ SCRIPTS } ) "
prompt USER " username: ( ${ USER } ) "
prompt_if "Force global install?" set_global
}
## handle required fields
@ -108,6 +127,7 @@ required () {
## convert scripts to quoted csv
csv ( ) {
if [ ! -z " ${ SCRIPTS } " ] ; then
RAW_SCRIPTS = ${ SCRIPTS }
{
local TMP = ""
SCRIPTS = " ${ SCRIPTS //,/ } "
@ -165,7 +185,7 @@ delimit () {
## validate completed contents with user
validate ( ) {
prompt ANSWER " ${ buf } (yes) ? "
prompt ANSWER " ${ buf } Does this look OK? (type 'n' to cancel) "
if [ "n" = " ${ ANSWER : 0 : 1 } " ] ; then
exit 1
fi
@ -174,15 +194,79 @@ validate () {
## if package file already exists, ensure user wants to clobber
clobber ( ) {
if test -f " ${ file } " ; then
prompt ANSWER "A \`package.json' already exists. Would you like to replace it? (yes): "
if [ "n" = " ${ ANSWER : 0 : 1 } " ] ; then
exit 1
else
rm -f " ${ file } "
fi
prompt_if "A \`package.json' already exists. Would you like to replace it?" rm -f " ${ file } "
fi
}
create_shell_file ( ) {
if [ " ${ NAME } .sh " = = " ${ RAW_SCRIPTS } " ] && [ ! -f " ${ NAME } .sh " ] ; then
{
echo "#!/bin/bash"
echo
echo " VERSION= $VERSION "
echo
echo "usage () {"
echo " echo \" $NAME [-hV]\" "
echo " echo"
echo " echo \"Options:\""
echo " echo \" -h|--help Print this help dialogue and exit\""
echo " echo \" -V|--version Print the current version and exit\""
echo '}'
echo
echo " ${ NAME } () { "
echo " for opt in \"\${@}\"; do"
echo " case \"\$opt\" in"
echo " -h|--help)"
echo " usage"
echo " return 0"
echo " ;;"
echo " -V|--version)"
echo " echo \"\$VERSION\""
echo " return 0"
echo " ;;"
echo " esac"
echo " done"
echo
echo " ## your code here"
echo "}"
echo
echo 'if [[ ${BASH_SOURCE[0]} != $0 ]]; then'
echo " export -f $NAME "
echo 'else'
echo " $NAME " '"${@}"'
echo " exit $? "
echo 'fi'
} > " ${ NAME } .sh "
chmod 755 " { $NAME }.sh "
fi
}
create_readme ( ) {
if [ ! -f "README.md" ] ; then
{
echo " # $NAME "
echo
echo " $DESCRIPTION "
echo
echo "# Install"
echo
echo "Available as a [bpkg](http://www.bpkg.io/)"
echo '```sh'
echo " bpkg install [-g] ${ USER :- bpkg } / $NAME "
echo '```'
} > "README.md"
fi
}
create_repo ( ) {
if git status & >/dev/null; then
echo "Repo already exists"
else
git init
fi
}
## main
bpkg_init ( ) {
local version = "0.0.1"
@ -227,6 +311,15 @@ bpkg_init () {
## create and write package file
touch " ${ file } "
echo " ${ buf } " > " ${ file } "
create_shell_file
create_readme
# initialize a git repo if one does not exist
if [ ! -d '.git' ] ; then
git init
fi
return 0
}