diff --git a/README.html b/README.html index eafdc6a..4dfa5ed 100644 --- a/README.html +++ b/README.html @@ -316,10 +316,10 @@ Written by Drew (@topkecleon) and Kay M (@gnadelwartz).
/start
 
 You are Botadmin
-*Available commands*:
-*• /start*: _Start bot and get this message_.
-*• /help*: _Get this message_.
-*• /info*: _Get shorter info message about this bot_....
+Available commands:
+  /start: _Start bot and get this message_.
+  /help: _Get this message_.
+  /info: _Get shorter info message about this bot_....
 
 /info
 
@@ -329,12 +329,12 @@ It features background tasks and interactive chats, and can serve as an interfac
 

Log files

Bashbot actions are logged to BASHBOT.log. Telegram send/receive errors are logged to ERROR.log. Start bashbot in debug mode to see all messages sent to / received from Telegram, as well as bash command error messages.

To enable debug mode, start bashbot with debug as third argument: bashbot start debug

-
├── logs 
-│   ├── BASHBOT.log      # log what your bot is doing ...
-│   ├── ERROR.log        # connection errors from / to Telegram API
-│   │
-│   ├── DEBUG.log        # stdout/stderr of you bot (debug mode enabled)
-│   └── MESSAGE.log      # full text of all message send/received (debug mode enabled)
+
|__ logs
+|     |__ BASHBOT.log  # log what your bot is doing ...
+|     |__ ERROR.log    # connection errors from / to Telegram API
+|     |
+|     |__ DEBUG.log    # stdout/stderr of you bot (debug mode enabled)
+|     |__ MESSAGE.log  # full text of all message send/received (debug mode enabled)

Security Considerations

Running a Telegram Bot means it is connected to the public and you never know what's send to your Bot.

@@ -390,6 +390,6 @@ It features background tasks and interactive chats, and can serve as an interfac

@Gnadelwartz

That's it all guys!

If you feel that there's something missing or if you found a bug, feel free to submit a pull request!

-

$$VERSION$$ v1.21-0-gc85af77

+

$$VERSION$$ v1.25-dev-33-g04e3c18

diff --git a/README.md b/README.md index 0b28c5d..42bedb8 100644 --- a/README.md +++ b/README.md @@ -104,10 +104,10 @@ Now open the Telegram App on your mobile phone and start a chat with your bot (_ /start You are Botadmin -*Available commands*: -*• /start*: _Start bot and get this message_. -*• /help*: _Get this message_. -*• /info*: _Get shorter info message about this bot_.... +Available commands: + /start: _Start bot and get this message_. + /help: _Get this message_. + /info: _Get shorter info message about this bot_.... /info @@ -124,12 +124,12 @@ Start bashbot in debug mode to see all messages sent to / received from Telegram To enable debug mode, start bashbot with debug as third argument: `bashbot start debug` ``` -├── logs -│   ├── BASHBOT.log # log what your bot is doing ... -│   ├── ERROR.log # connection errors from / to Telegram API -│   │ -│   ├── DEBUG.log # stdout/stderr of you bot (debug mode enabled) -│   └── MESSAGE.log # full text of all message send/received (debug mode enabled) +|__ logs +| |__ BASHBOT.log # log what your bot is doing ... +| |__ ERROR.log # connection errors from / to Telegram API +| | +| |__ DEBUG.log # stdout/stderr of you bot (debug mode enabled) +| |__ MESSAGE.log # full text of all message send/received (debug mode enabled) ``` ---- @@ -238,4 +238,4 @@ See `mycommnds.sh.dist` for an example. If you feel that there's something missing or if you found a bug, feel free to submit a pull request! -#### $$VERSION$$ v1.21-0-gc85af77 +#### $$VERSION$$ v1.25-dev-33-g04e3c18 diff --git a/README.txt b/README.txt index f05309f..2a91806 100644 --- a/README.txt +++ b/README.txt @@ -1,324 +1,284 @@ -

-Bashbot - A Telegram bot written in bash. -

+ + + + + +Bashbot README + + + Bashbot - A Telegram bot written in bash. + Written by Drew (@topkecleon) and Kay M (@gnadelwartz). +Contributions by Daniil Gentili (@danog), JuanPotato, BigNerd95, TiagoDanin, iicc1 and +dcoomber. +Released to the public domain wherever applicable. Elsewhere, consider it released under +the WTFPLv2. +Linted by #ShellCheck -Contributions by Daniil Gentili (@danog), JuanPotato, BigNerd95, TiagoDanin, -iicc1 and dcoomber. +Prerequisites -Released to the public domain wherever applicable. -Elsewhere, consider it released under the -[WTFPLv2](http://www.wtfpl.net/txt/copying/). +Uses JSON.sh and the magic of sed. +Bashbot is written in bash. It depends on commands typically available in a Linux/Unix +Environment. For more concrete information on the common commands provided by recent +versions of coreutils, busybox or toybox, see Developer_Notes. +Note for MacOS and BSD Users: Bashbot will not run without installing additional software +as it uses modern bash and (gnu) grep/sed features. See Install_Bashbot. +Note for embedded systems: You need to install a "real" bash as the vanilla installation +of busybox or toybox is not sufficient. See Install_Bashbot. +Bashbot Documentation and Downloads are available on www.github.com. -Linted by [#ShellCheck](https://github.com/koalaman/shellcheck) +Documentation -## Prerequisites -Uses [JSON.sh](http://github.com/dominictarr/JSON.sh) and the magic of sed. -Bashbot is written in bash. It depends on commands typically available in a -Linux/Unix Environment. -For more concrete information on the common commands provided by recent -versions of -[coreutils](https://en.wikipedia.org/wiki/List_of_GNU_Core_Utilities_commands), -[busybox](https://en.wikipedia.org/wiki/BusyBox#Commands) or -[toybox](https://landley.net/toybox/help.html), see [Developer -Notes](doc/7_develop.md#common-commands). +* Introduction_to_Telegram_Bots +* Install_Bashbot -**Note for MacOS and BSD Users:** Bashbot will not run without installing -additional software as it uses modern bash and (gnu) grep/sed features. See -[Install Bashbot](doc/0_install.md). + o Install release + o Install from github + o Update Bashbot + o Notes on Updates -**Note for embedded systems:** You need to install a "real" bash as the vanilla -installation of busybox or toybox is not sufficient. See [Install -Bashbot](doc/0_install.md). +* Get_Bottoken_from_Botfather +* Getting_Started -Bashbot [Documentation](https://github.com/topkecleon/telegram-bot-bash) and -[Downloads](https://github.com/topkecleon/telegram-bot-bash/releases) are -available on [www.github.com](https://www.github.com). + o Managing your Bot + o Receive data + o Send messages + o Send files, locations, keyboards -## Documentation -* [Introduction to Telegram Bots](https://core.telegram.org/bots) -* [Install Bashbot](doc/0_install.md) - * Install release - * Install from github - * Update Bashbot - * Notes on Updates -* [Get Bottoken from Botfather](doc/1_firstbot.md) -* [Getting Started](doc/2_usage.md) - * Managing your Bot - * Receive data - * Send messages - * Send files, locations, keyboards -* [Advanced Features](doc/3_advanced.md) - * Access Control - * Interactive Chats - * Background Jobs - * Inline queries - * Send message errors -* [Expert Use](doc/4_expert.md) - * Handling UTF-8 character sets - * Run as other user or system service - * Schedule bashbot from Cron - * Use from CLI and Scripts - * Customize Bashbot Environment -* [Best Practices](doc/5_practice.md) - * Customize mycommands.sh - * Overwrite/disable commands - * Separate logic from commands - * Test your Bot with shellcheck -* [Function Reference](doc/6_reference.md) - * Sending Messages, Files, Keyboards - * User Access Control - * Inline Queries - * jsshDB Bashbot key-value storage - * Background and Interactive Jobs -* [Developer Notes](doc/7_develop.md) - * Debug bashbot - * Modules, addons, events - * Setup your environment - * Bashbot test suite -* [Examples Directory](examples/README.md) +* Advanced_Features -### Your very first bashbot in a nutshell + o Access Control + o Interactive Chats + o Background Jobs + o Inline queries + o Send message errors -To install and run bashbot you need access to a Linux/Unix command line with -bash, a [Telegram client](https://telegram.org) and a mobile phone [with a -Telegram account](https://telegramguide.com/create-a-telegram-account/). +* Expert_Use -First you need to [create a new Telegram Bot token](doc/1_firstbot.md) for your -bot and write it down. + o Handling UTF-8 character sets + o Run as other user or system service + o Schedule bashbot from Cron + o Use from CLI and Scripts + o Customize Bashbot Environment -Now open a Linux/Unix terminal with bash, create a new directory, change to it -and install telegram-bot-bash: +* Best_Practices -```bash -# create bot dir -mkdir mybot -cd mybot + o Customize mycommands.sh + o Overwrite/disable commands + o Separate logic from commands + o Test your Bot with shellcheck -# download latest release with wget or from -https://github.com/topkecleon/telegram-bot-bash/releases/latest -wget "https://github.com/$(wget -q -"https://github.com/topkecleon/telegram-bot-bash/releases/latest" -O - | egrep -'/.*/download/.*/.*tar.gz' -o)" +* Function_Reference -# Extract the tar archive and go into bot dir -tar -xzf *.tar.gz -cd telegram-bot-bash + o Sending Messages, Files, Keyboards + o User Access Control + o Inline Queries + o jsshDB Bashbot key-value storage + o Background and Interactive Jobs -# initialize your bot -# Enter your bot token when asked, all other questions can be answered by -hitting the \ key. -./bashbot.sh init +* Developer_Notes -# Now start your bot -./bashbot.sh start + o Debug bashbot + o Modules, addons, events + o Setup your environment + o Bashbot test suite -Bottoken is valid ... -Bot Name: yourbotname_bot -Session Name: yourbotname_bot-startbot -Bot started successfully. -``` +* Examples_Directory -Now open the Telegram App on your mobile phone and start a chat with your bot -(_your bot's username is shown after 'Bot Name:'_): -``` -/start +Your very first bashbot in a nutshell -You are Botadmin -*Available commands*: -*• /start*: _Start bot and get this message_. -*• /help*: _Get this message_. -*• /info*: _Get shorter info message about this bot_.... +To install and run bashbot you need access to a Linux/Unix command line with bash, a +Telegram_client and a mobile phone with_a_Telegram_account. +First you need to create_a_new_Telegram_Bot_token for your bot and write it down. +Now open a Linux/Unix terminal with bash, create a new directory, change to it and install +telegram-bot-bash: -/info + # create bot dir + mkdir mybot + cd mybot -This is bashbot, the Telegram bot written entirely in bash. -It features background tasks and interactive chats, and can serve as an -interface for CLI programs. -``` -For more Information on how to install, customize and use your new bot, read -the [Documentation](#Documentation). + # download latest release with wget or from https://github.com/topkecleon/telegram-bot- + bash/releases/latest + wget "https://github.com/$(wget -q "https://github.com/topkecleon/telegram- + bot-bash/releases/latest" -O - | egrep '/.*/download/.*/.*tar.gz' -o)" -### Log files + # Extract the tar archive and go into bot dir + tar -xzf *.tar.gz + cd telegram-bot-bash -Bashbot actions are logged to `BASHBOT.log`. Telegram send/receive errors are -logged to `ERROR.log`. -Start bashbot in debug mode to see all messages sent to / received from + # initialize your bot + # Enter your bot token when asked, all other questions can be answered by hitting the + \ key. + ./bashbot.sh init + + # Now start your bot + ./bashbot.sh start + + Bottoken is valid ... + Bot Name: yourbotname_bot + Session Name: yourbotname_bot-startbot + Bot started successfully. + +Now open the Telegram App on your mobile phone and start a chat with your bot (your bot's +username is shown after 'Bot Name:'): + + /start + + You are Botadmin + Available commands: + /start: _Start bot and get this message_. + /help: _Get this message_. + /info: _Get shorter info message about this bot_.... + + /info + + This is bashbot, the Telegram bot written entirely in bash. + It features background tasks and interactive chats, and can serve as an interface for + CLI programs. + +For more Information on how to install, customize and use your new bot, read the +Documentation. + +Log files + +Bashbot actions are logged to BASHBOT.log. Telegram send/receive errors are logged to +ERROR.log. Start bashbot in debug mode to see all messages sent to / received from Telegram, as well as bash command error messages. +To enable debug mode, start bashbot with debug as third argument: bashbot start debug -To enable debug mode, start bashbot with debug as third argument: `bashbot -start debug` + |__ logs + | |__ BASHBOT.log # log what your bot is doing ... + | |__ ERROR.log # connection errors from / to Telegram API + | | + | |__ DEBUG.log # stdout/stderr of you bot (debug mode enabled) + | |__ MESSAGE.log # full text of all message send/received (debug mode enabled) -``` -├── logs -│   ├── BASHBOT.log # log what your bot is doing ... -│   ├── ERROR.log # connection errors from / to Telegram API -│   │ -│   ├── DEBUG.log # stdout/stderr of you bot (debug mode enabled) -│   └── MESSAGE.log # full text of all message send/received (debug mode -enabled) -``` +------------------------------------------------------------------------------------------ ----- +Security Considerations -## Security Considerations -Running a Telegram Bot means it is connected to the public and you never know -what's send to your Bot. +Running a Telegram Bot means it is connected to the public and you never know what's send +to your Bot. +Bash scripts in general are not designed to be bulletproof, so consider this Bot as a +proof of concept. Bash programmers often struggle with 'quoting hell' and globbing, see +Implications_of_wrong_quoting. +Whenever you are processing input from untrusted sources (messages, files, network) you +must be as careful as possible (e.g. set IFS appropriately, disable globbing with set - +f and quote everything). In addition remove unused scripts and examples from your Bot +(e.g. everything in example/) and disable/remove all unused bot commands. +It's important to escape or remove $ in input from user, files or network (as bashbot +does). One of the powerful features of Unix shells is variable and command substitution +using ${} and$() can lead to remote code execution (RCE) or remote information disclosure +(RID) bugs if unescaped $ is included in untrusted input (e.g. $$ or $(rm -rf /*)). +A powerful tool to improve your scripts is shellcheck. You can use_it_online or install +shellcheck_locally. Shellcheck is used extensively in bashbot development to ensure a high +code quality (e.g. it's not allowed to push changes without passing all shellcheck tests). +In addition bashbot has a test_suite to check if important functionality is working as +expected. -Bash scripts in general are not designed to be bulletproof, so consider this -Bot as a proof of concept. -Bash programmers often struggle with 'quoting hell' and globbing, -see [Implications of wrong -quoting](https://unix.stackexchange.com/questions/171346/security-implications-o -f-forgetting-to-quote-a-variable-in-bash-posix-shells). +Use printf whenever possible -Whenever you are processing input from untrusted sources (messages, files, -network) you must be as careful as possible -(e.g. set IFS appropriately, disable globbing with `set -f` and quote -everything). In addition remove unused scripts and examples -from your Bot (e.g. everything in `example/`) and disable/remove all unused bot -commands. +If you're writing a script that accepts external input (e.g. from the user as arguments or +the file system), you shouldn't use echo to display it. Use_printf_whenever_possible. -It's important to escape or remove `$` in input from user, files or network -(_as bashbot does_). -One of the powerful features of Unix shells is variable and command -substitution using `${}` and`$()` can lead to remote code execution (RCE) or -remote information disclosure (RID) bugs if unescaped `$` is included in -untrusted input (e.g. `$$` or `$(rm -rf /*)`). +Run your Bot as a restricted user -A powerful tool to improve your scripts is `shellcheck`. You can [use it -online](https://www.shellcheck.net/) or -[install shellcheck -locally](https://github.com/koalaman/shellcheck#installing). Shellcheck is used -extensively in bashbot development -to ensure a high code quality (e.g. it's not allowed to push changes without -passing all shellcheck tests). -In addition bashbot has a [test suite](doc/7_develop.md) to check if important -functionality is working as expected. +I recommend running your bot as a user with almost no access rights. All files your Bot +has write access to are in danger of being overwritten/deleted if your bot is hacked. For +the same reason every file your Bot can read is in danger of being disclosed. Restrict +your Bots access rights to the absolute minimum. +Never run your Bot as root, this is the most dangerous you can do! Usually the user +'nobody' has almost no rights on Linux/Unix systems. See Expert_use on how to run your Bot +as an other user. -### Use printf whenever possible +Secure your Bot installation -If you're writing a script that accepts external input (e.g. from the user as -arguments or the file system), -you shouldn't use echo to display it. [Use printf whenever -possible](https://unix.stackexchange.com/a/6581). +Your Bot configuration must not be readable by other users. Everyone who can read your +Bots token is able to act as your Bot and has access to all chats the Bot is in! +Everyone with read access to your Bot files can extract your Bots data. Especially your +Bot config inconfig.jssh must be protected against other users. No one except you should +have write access to the Bot files. The Bot should be restricted to have write access +tocount.jssh and data-bot-bash only, all other files must be write protected. +To set access rights for your bashbot installation to a reasonable default runsudo ./ +bashbot.sh init after every update or change to your installation directory. -### Run your Bot as a restricted user -**I recommend running your bot as a user with almost no access rights.** -All files your Bot has write access to are in danger of being -overwritten/deleted if your bot is hacked. -For the same reason every file your Bot can read is in danger of being -disclosed. Restrict your Bots access rights to the absolute minimum. - -**Never run your Bot as root, this is the most dangerous you can do!** Usually -the user 'nobody' has almost no rights on Linux/Unix systems. See [Expert -use](doc/4_expert.md) on how to run your Bot as an other user. - -### Secure your Bot installation -**Your Bot configuration must not be readable by other users.** Everyone who -can read your Bots token is able to act as your Bot and has access to all chats -the Bot is in! - -Everyone with read access to your Bot files can extract your Bots data. -Especially your Bot config in`config.jssh` must be protected against other -users. No one except you should have write access to the Bot files. The Bot -should be restricted to have write access to`count.jssh` and `data-bot-bash` -only, all other files must be write protected. - -To set access rights for your bashbot installation to a reasonable default -run`sudo ./bashbot.sh init` after every update or change to your installation -directory. - -## FAQ - -### Is this Bot insecure? -Bashbot is not more (in)secure than a Bot written in another language. We have -done our best to make it as secure as possible. But YOU are responsible for the -bot commands you wrote and you should know about the risks ... - -**Note:** Up to version 0.941 (mai/22/2020) telegram-bot-bash had a remote code -execution bug, please update if you use an older version! - -### Why Bash and not the much better xyz? -Well, that's a damn good question... maybe because I'm a Unix admin from the -stone age. Nevertheless there are more reasons from my side: - -- bashbot will run wherever bash and (gnu) sed is available, from embedded -Linux to mainframe -- easy to integrate with other shell scripts, e.g. for sending system message / -health status -- no need to install or learn a new programming language, library or framework -- no database, not event driven, not object oriented ... - -### Can I have the single bashbot.sh file back? -At the beginning bashbot was simply the file`bashbot.sh` that you could copy -everywhere and run the bot. Now we have 'commands.sh', 'mycommands.sh', -'modules/*.sh' and much more. - -Hey no problem, if you are finished with your cool bot, -run`dev/make-standalone.sh` to create a stripped down version of your bot -containing only -'bashbot.sh' and 'commands.sh'! For more information see [Create a stripped -down version of your Bot](doc/7_develop.md). - -### Can I send messages from CLI and scripts? -Of course you can send messages from command line and scripts! Simply install -bashbot as [described here](#Your-really-first-bashbot-in-a-nutshell), -send the message '/start' to set yourself as botadmin and then stop the bot -with `./bashbot.sh stop`. - -Bashbot provides some ready to use scripts for sending messages from command -line in `bin/` dir, e.g. `send_message.sh`. - -```bash -bin/send_message.sh BOTADMIN "This is my first message send from CLI" - -bin/send_message.sh --help -``` - -You can also source bashbot for use in your scripts, for more information see -[Expert Use](doc/4_expert.md). +FAQ -### Blocked by telegram? -This may happen if too many or wrong requests are sent to api.telegram.org, -e.g. using a invalid token or invalid API calls. -If the block stay for longer time you can ask telegram service to unblock your -IP-Address. +Is this Bot insecure? +Bashbot is not more (in)secure than a Bot written in another language. We have done our +best to make it as secure as possible. But YOU are responsible for the bot commands you +wrote and you should know about the risks ... +Note: Up to version 0.941 (mai/22/2020) telegram-bot-bash had a remote code execution bug, +please update if you use an older version! + +Why Bash and not the much better xyz? + +Well, that's a damn good question... maybe because I'm a Unix admin from the stone age. +Nevertheless there are more reasons from my side: + +* bashbot will run wherever bash and (gnu) sed is available, from embedded Linux to + mainframe +* easy to integrate with other shell scripts, e.g. for sending system message / health + status +* no need to install or learn a new programming language, library or framework +* no database, not event driven, not object oriented ... + + +Can I have the single bashbot.sh file back? + +At the beginning bashbot was simply the filebashbot.sh that you could copy everywhere and +run the bot. Now we have 'commands.sh', 'mycommands.sh', 'modules/*.sh' and much more. +Hey no problem, if you are finished with your cool bot, rundev/make-standalone.sh to +create a stripped down version of your bot containing only 'bashbot.sh' and 'commands.sh'! +For more information see Create_a_stripped_down_version_of_your_Bot. + +Can I send messages from CLI and scripts? + +Of course you can send messages from command line and scripts! Simply install bashbot as +described_here, send the message '/start' to set yourself as botadmin and then stop the +bot with ./bashbot.sh stop. +Bashbot provides some ready to use scripts for sending messages from command line in bin/ +dir, e.g. send_message.sh. + + bin/send_message.sh BOTADMIN "This is my first message send from CLI" + + bin/send_message.sh --help + +You can also source bashbot for use in your scripts, for more information see Expert_Use. + +Blocked by telegram? + +This may happen if too many or wrong requests are sent to api.telegram.org, e.g. using a +invalid token or invalid API calls. If the block stay for longer time you can ask telegram +service to unblock your IP-Address. You can check with curl or wget if you are blocked by Telegram: -```bash -curl -m 10 https://api.telegram.org/bot -#curl: (28) Connection timed out after 10001 milliseconds -wget -t 1 -T 10 https://api.telegram.org/bot -#Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... -failed: Connection timed out. + curl -m 10 https://api.telegram.org/bot + #curl: (28) Connection timed out after 10001 milliseconds -nc -w 2 api.telegram.org 443 || echo "your IP seems blocked by telegram" -#your IP seems blocked by telegram -``` + wget -t 1 -T 10 https://api.telegram.org/bot + #Connecting to api.telegram.org (api.telegram.org)|46.38.243.234|:443... failed: + Connection timed out. -Bashbot offers the option to recover from broken connections (blocked). -Therefore you can provide a function -named `bashbotBlockRecover()` in `mycommands.sh`, the function is called every -time when a broken connection is detected. - -Possible actions are: Check if network is working, change IP-Address or simply -wait some time. -See `mycommnds.sh.dist` for an example. - ---- + nc -w 2 api.telegram.org 443 || echo "your IP seems blocked by telegram" + #your IP seems blocked by telegram +Bashbot offers the option to recover from broken connections (blocked). Therefore you can +provide a function named bashbotBlockRecover() in mycommands.sh, the function is called +every time when a broken connection is detected. +Possible actions are: Check if network is working, change IP-Address or simply wait some +time. See mycommnds.sh.dist for an example. +------------------------------------------------------------------------------------------ @Gnadelwartz -## That's it all guys! +That's it all guys! -If you feel that there's something missing or if you found a bug, feel free to -submit a pull request! +If you feel that there's something missing or if you found a bug, feel free to submit a +pull request! + +$$VERSION$$ v1.25-dev-33-g04e3c18 -#### $$VERSION$$ v1.21-0-gc85af77 diff --git a/dev/version.sh b/dev/version.sh index 36e1ed7..21e5c6b 100755 --- a/dev/version.sh +++ b/dev/version.sh @@ -1,6 +1,6 @@ #!/bin/bash # -#### $$VERSION$$ v1.25-dev-14-g2fe6d4b +#### $$VERSION$$ v1.25-dev-33-g04e3c18 # shellcheck disable=SC2016 # # Easy Versioning in git: @@ -52,6 +52,18 @@ printf "Update to version %s ...\n" "${VERSION}" FILES="$(find ./*)" [ "$1" != "" ] && FILES="$*" +# autogenerate REMADME.html REMADE.txt +if [[ "${FILES}" == *"README.md"* ]]; then + FILES+=" README.html README.txt" + type -f pandoc >/dev/null && pandoc -s -f commonmark -M "title=Bashbot README" README.md >README.html + if type -f html2text >/dev/null; then + html2text -style pretty -width 90 README.html >README.txt + else + type -f fold >/dev/null && fold -s -w 90 README.md >README.txt + fi +fi + +# change version string in given files for file in ${FILES} do [ ! -f "${file}" ] && continue @@ -59,9 +71,6 @@ do printf "%s" " ${file}" >&2 sed -i 's/^#### $$VERSION$$.*/#### \$\$VERSION\$\$ '"${VERSION}"'/' "${file}" done -# try to compile README.txt -printf " README.txt" >&2 -type -f pandoc >/dev/null && pandoc -s -f commonmark -M "title=Bashbot README" README.md >README.html -fold -s README.md >README.txt + printf " done.\n"