php-developer/jumpstart-bash

Bash 脚本模板。

安装: 8

依赖: 0

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 1

开放问题: 2

语言:Shell

类型:项目

dev-master 2019-02-22 15:40 UTC

This package is auto-updated.

Last update: 2024-09-29 04:36:48 UTC


README

StyleCI Codacy Badge

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。

在此特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的人免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许向软件提供副本的人进行此类操作,但受以下条件约束

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何形式的保证,无论是明示的还是隐含的,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任源于合同行为、侵权行为或其他,无论与软件或软件的使用或其它交易有关。