php-developer / jumpstart-bash
Bash 脚本模板。
This package is auto-updated.
Last update: 2024-09-29 04:36:48 UTC
README
Jump Start 设计为一种简单轻量级的样板代码,通过模块化来管理可读性并生成自部署解决方案。虽然可以使用 jumpstart
来处理独立工具,但它也可以用于管理全局环境中的多个食谱。
旨在解决由于某些 经典语言限制 导致的结构性差距,允许通过最初基于函数声明源代码注释进行自动补全和生成文档,Jump Start 希望成为您从小型项目开始到复杂解决方案的选择,而不离开您的 最佳实践。
Bash 是一个真正的强大工具,有许多 在线文档,良好 实践,风格指南,建议和工具用于 验证、静态分析和linting,以确保代码质量和可维护性。
入门
安装
兼容性检查
动手实践
创建一个小型且独立的应用程序
创建一个复杂且可自部署的解决方案
解决问题
结构
#! (即:Shebang)
程序加载器的标准声明通常是可执行文件的第一行,指定了解释器和环境参数。
#!/usr/bin/env bash
这意味着我们的脚本在 Bash 上运行。
文档标题
描述脚本名称、描述、用法、作者以及如何/在哪里获取更多信息(仓库链接等)。
# # TITLE : Template title. # DESCRIPTION : Template description. # AUTHOR : Your Name <your@email> # DATE : 20170825 # VERSION : 7.6.2-33 # USAGE : bash template.sh or ./template.sh or .. # REPOSITORY : https://github.com/YOUR_USER/your_project #
版本控制
使用 ID 和版本变量,通过使用您最喜欢的版本控制器的标签来有效地跟踪功能和错误,并保持这些值与版本控制器的标签保持同步 以最适合您的方式。
APP_TITLE="${Cb}λ${Cn} Template" APP_MAJOR=0 APP_MINOR=0 APP_REVISION=0 APP_PATCH=0 # # AVOID change above the safety line. # # --------------------------------------- SAFETY LINE ------------- APP_VERSION="${APP_MAJOR}.${APP_MINOR}.${APP_REVISION}-${APP_PATCH}"
开发区域 (娱乐区)
下面的函数示例说明了在哪里停留以及如何记录函数,以便它们被脚本助手正确地显示为选项。
function example { # Explains how documentation works $_e "I don't know what to do" } function colors { # Show color/style variable table $_e "Color/style variables: ${Cb}Cn${Cn} ${Cn}Normal/reset${Cn} ${Cb}Cb${Cn} ${Cb}Bold${Cn} ${Cb}Ci${Cn} ${Ci}Italic${Cn} ${Cb}Cd${Cn} ${Cd}Dark/gray${Cn} ${Cb}Cr${Cn} ${Cr}Red${Cn} ${Cb}Cg${Cn} ${Cg}Green${Cn} ${Cb}Cc${Cn} ${Cc}Cian/Blue${Cn} ${Cb}Cy${Cn} ${Cy}Yellow${Cn}" }
注意,使用
$_e
变量作为echo -e
命令的替代品,仅用于美学目的。
辅助函数
设置默认错误消息,如果输入的参数不是有效的命令。
# # AVOID change above the safety line. # # --------------------------------------- SAFETY LINE ------------- DEFAULT_ERROR_MESSAGE="Warning: ${Cb}$1${Cn} is an invalid command."
懒助手
显示支持的应用程序参数的帮助。
function help { # Show this content. success message "${EMPTY}" $_e " ${APP_TITLE} v${APP_VERSION} Usage: ${Cb}$0${Cn} [${Cb}help${Cn}|..] .. Parameters: " commands="$(grep 'function ' -A1 < "$0" | \ awk -F-- '{print($1)}' | \ sed -r 's/fu''nction (.*) \{$/\\t\\'"${Cb}"'\1\\'"${Cn}"'\\t/' | \ sed -r 's/\s+# (.*)$/@ok\1/' | \ grep '@ok' -B1 | \ sed -e 's/\@ok//')" $_e "${commands}" | tr '\n' '\ ' | sed -e 's/--/\n/g' success || fail 'Something terrible happens.' }
为了正确显示方法描述,请在函数定义下方包含一行总结其操作的注释 - 如上面示例所示。
提示 Yes/No
# # HELPERS # confirmYesNo= function confirmYesNo { Y=y; N=n if [ $# -gt 1 ] then case ${1^^} in -DY) Y=${Y^}; d=Y;; -DN) N=${N^}; d=N;; esac m=$2 else m=$1 fi option="($Y/$N)? " $_e -n "$m ${option}" read -n 1 m -r;c=${m^} case $c in Y|N) n=$c;; *) n=$d;; esac export confirmYesNo=$n; }
成功和失败消息
# Hold a success message. # # Ex.: # success message "all commands executed" # command1 # command2 # command3 || fail "command 3 fail" # success # # will execute command1, command2, command3 and print: "all commands executed" # when success. function success { if [ "$1" == "message" ] then success_message="$2"; return 0; fi $_e "${success_message}" $_e && success_message= } # # Trigger a failure message with exit. # # Ex.: # success message "all commands executed" # command1 # command2 # command3 || fail "command 3 fail" # success # # will execute command1, command2, command3 and print: "command 3 fail" # when command 3 fails. function fail { $_e "$@" && exit 1 }
使用
fail
显示一条消息并退出脚本。
检查给定的参数是否是当前函数作用域内的有效函数
# # FUNCTION CALLER if [ ${#} -eq 0 ] then help else [ "$(functionExists "$1")" != "YES" ] \ && help \ && fail "${DEFAULT_ERROR_MESSAGE}" "$@" fi
TODO
- 实现
traps
; - 教程;
- 自动构建递增版本签名;
- 改进函数
confirmYesNo
; - 将 README 模块化到维基或类似的东西中;
- 集成 GIT 版本控制;
许可、保修和条款
作者不对免费使用和/或分发此工具造成的误用和/或损害负责。
MIT许可证(MIT)
版权所有 © 2017 λ::lambda, CompilouIT, John Murowaniecki。
在此特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供副本的人进行此类操作,但受以下条件约束
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任源于合同行为、侵权行为或其他,无论与软件或软件的使用或其它交易有关。