From e492da05f7b0d79994163ccabcbf620befa3d238 Mon Sep 17 00:00:00 2001 From: "Kay Marquardt (Gnadelwartz)" Date: Sat, 11 May 2019 12:07:06 +0200 Subject: [PATCH] add make-standalone.sh, creates old style minimal bashbot files --- bashbot.sh | 3 +- dev/all-tests.sh | 10 ++- dev/git-add.sh | 10 ++- dev/install-hooks.sh | 10 ++- dev/{make-dist.sh => make-distribution.sh} | 11 ++- dev/make-standalone.sh | 87 ++++++++++++++++++++++ dev/version.sh | 10 ++- mycommands.sh | 4 +- 8 files changed, 127 insertions(+), 18 deletions(-) rename dev/{make-dist.sh => make-distribution.sh} (88%) create mode 100755 dev/make-standalone.sh diff --git a/bashbot.sh b/bashbot.sh index 7251d91..a5bf31e 100755 --- a/bashbot.sh +++ b/bashbot.sh @@ -12,7 +12,7 @@ # This file is public domain in the USA and all free countries. # Elsewhere, consider it to be WTFPLv2. (wtfpl.net/txt/copying) # -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # # Exit Codes: # - 0 sucess (hopefully) @@ -32,6 +32,7 @@ if [ -t 1 ] && [ "$TERM" != "" ]; then fi # get location and name of bashbot.sh +export SCRIPT SCRIPTDIR MODULEDIR RUNDIR RUNUSER SCRIPT="$0" SCRIPTDIR="$(dirname "$0")" MODULEDIR="${SCRIPTDIR}/modules" diff --git a/dev/all-tests.sh b/dev/all-tests.sh index e649aff..5af55fa 100755 --- a/dev/all-tests.sh +++ b/dev/all-tests.sh @@ -1,12 +1,16 @@ #!/usr/bin/env bash # this has to run once atfer git clone # and every time we create new hooks -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script -GIT_DIR=$(git rev-parse --git-dir) -cd "${GIT_DIR}/.." || exit 1 +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + echo "Sorry, no git repository $(pwd)" && exit 1 +fi # create test environment TESTENV="/tmp/bashbot.test$$" diff --git a/dev/git-add.sh b/dev/git-add.sh index e868495..250b6d0 100755 --- a/dev/git-add.sh +++ b/dev/git-add.sh @@ -3,12 +3,16 @@ # # works together with git pre-push.sh and ADD all changed files since last push -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script -GIT_DIR=$(git rev-parse --git-dir) -cd "$GIT_DIR/.." || exit 1 +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + echo "Sorry, no git repository $(pwd)" && exit 1 +fi [ ! -f .git/.lastpush ] && echo "No push or hooks not installed, use \"git add\" instead ... Abort" && exit diff --git a/dev/install-hooks.sh b/dev/install-hooks.sh index 87c9c00..b432650 100755 --- a/dev/install-hooks.sh +++ b/dev/install-hooks.sh @@ -1,12 +1,16 @@ #!/usr/bin/env bash # this has to run once atfer git clone # and every time we create new hooks -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script -GIT_DIR=$(git rev-parse --git-dir) -cd "$GIT_DIR/.." || exit 1 +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + echo "Sorry, no git repository $(pwd)" && exit 1 +fi HOOKDIR="dev/hooks" diff --git a/dev/make-dist.sh b/dev/make-distribution.sh similarity index 88% rename from dev/make-dist.sh rename to dev/make-distribution.sh index f7e8188..5fe29d7 100755 --- a/dev/make-dist.sh +++ b/dev/make-distribution.sh @@ -1,12 +1,16 @@ #!/usr/bin/env bash # this has to run once atfer git clone # and every time we create new hooks -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script -GIT_DIR=$(git rev-parse --git-dir) -cd "$GIT_DIR/.." || exit 1 +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + echo "Sorry, no git repository $(pwd)" && exit 1 +fi VERSION="$(git describe --tags | sed -e 's/-[0-9].*//' -e 's/v//')" @@ -18,6 +22,7 @@ DISTFILES="bashbot.rc bashbot.sh commands.sh mycommands.sh doc examples modu for test in "dev/all-tests.sh" do + [ ! -x ""${test} ] && continue if ! "${test}" ; then echo "Test ${test} failed, can't create dist!" exit 1 diff --git a/dev/make-standalone.sh b/dev/make-standalone.sh new file mode 100755 index 0000000..e450873 --- /dev/null +++ b/dev/make-standalone.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +# this has to run once atfer git clone +# and every time we create new hooks +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd + +# magic to ensure that we're always inside the root of our application, +# no matter from which directory we'll run script +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + [ ! -f "bashbot.sh" ] && echo "bashbot.sh not found in $(pwd)" && exit 1 +fi + +#DISTNAME="telegram-bot-bash" +DISTDIR="./standalone/${DISTNAME}" +DISTFILES="bashbot.sh commands.sh mycommands.sh modules LICENSE README.txt token count botacl botadmin" + +# run tests first! + +for test in "dev/all-tests.sh" +do + [ ! -x "${test}" ] && continue + if ! "${test}" ; then + echo "Test ${test} failed, can't create standalone!" + exit 1 + fi +done + +# create dir for distribution and copy files +mkdir -p "${DISTDIR}" 2>/dev/null +# shellcheck disable=SC2086 +cp -r ${DISTFILES} "${DISTDIR}" 2>/dev/null +cd "${DISTDIR}" || exit 1 + +####################### +# here the magic starts +# create all in one bashbot.sh file + +echo "OK, noe lets do the magic ..." +echo " ... create unified commands.sh" + +{ + # first head of commands.sh + sed -n '0,/^if / p' commands.sh | head -n -2 | grep -v 'mycommands.sh' + + # then mycommands from first non comment line on + printf '\n##############################\n# my commands starts here ...\n' + sed -n '/^$/,$ p' mycommands.sh + + # last tail of commands.sh + printf '\n##############################\n# default commands starts here ...\n' + sed -n '/\/mycommands.sh"/,$ p' commands.sh | tail -n +2 + +} >>$$commands.sh + +mv $$commands.sh commands.sh +rm -f mycommands.sh + +echo " ... create unified bashbot.sh" + +{ + # first head of bashbot.sh + sed -n '0,/\/commands.sh"/ p' bashbot.sh | head -n -2 + + # then mycommands from first non comment line on + printf '\n##############################\n# bashbot modules starts here ...\n' + cat modules/*.sh | sed -e 's/^#\!\/bin\/bash.*//' + + # last tail of commands.sh + printf '\n##############################\n# bashbot functions starts here ...\n\n' + sed -n '/\/commands.sh"/,$ p' bashbot.sh + +} >>$$bashbot.sh + +mv $$bashbot.sh bashbot.sh +chmod +x bashbot.sh + +rm -rf modules + +echo "Done!" + +cd .. || exit 1 + +echo -e "\\nStandalone bashbot files are now availible in \"${DISTDIR}\":\\n" +ls -l "${DISTDIR}"* + diff --git a/dev/version.sh b/dev/version.sh index 3d75f88..7f3e518 100755 --- a/dev/version.sh +++ b/dev/version.sh @@ -1,6 +1,6 @@ #!/bin/bash # -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # shellcheck disable=SC2016 # # Easy Versioning in git: @@ -36,8 +36,12 @@ # magic to ensure that we're always inside the root of our application, # no matter from which directory we'll run script -GIT_DIR=$(git rev-parse --git-dir) -cd "$GIT_DIR/.." || exit 1 +GIT_DIR=$(git rev-parse --git-dir 2>/dev/null) +if [ "$GIT_DIR" != "" ] ; then + cd "$GIT_DIR/.." || exit 1 +else + echo "Sorry, no git repository $(pwd)" && exit 1 +fi unset IFS # set -f # if you are paranoid use set -f to disable globbing diff --git a/mycommands.sh b/mycommands.sh index 54ca77b..cad65c3 100644 --- a/mycommands.sh +++ b/mycommands.sh @@ -2,7 +2,7 @@ # files: mycommands.sh.dist # copy to mycommands.sh and add all your commands and functions here ... # -#### $$VERSION$$ v0.80-dev2-1-g0b36bc5 +#### $$VERSION$$ v0.80-dev2-2-g0c5e3dd # # shellcheck disable=SC2154 # shellcheck disable=SC2034 @@ -117,7 +117,7 @@ else local image result sep="" count="1" result="$(wget --user-agent 'Mozilla/5.0' -qO - "https://images.search.yahoo.com/search/images?p=$1" | sed 's/