提供一些有用的函数来编写维护程序脚本或部署脚本

pybee的Python项目详细描述


pybee

pybee 提供一些辅助函数,方便使用 Python 来写系统维护/部署脚本, 使用 Bash 写维护/部署脚本实在不爽;例如提供 sed、awk 工具对应的功能函数,但 pybee 目标不是编写一个 python 版的 sed/awk 工具

编译

安装依赖工具

  • python 3.4+
  • poetry

执行下面命令安装依赖包

poetry install

编译

poetry build

pybee 模块

pybee 模块封装了或者增加常见系统维护需要的函数

  • pybee.path 增强 os.path 模块的一些函数
  • pybee.compress 封装 zip/tar.gz 压缩函数
  • pybee.sed 提供 sed 工具类似功能的函数
  • pybee.ask 封装在 termia 常见交互操作的函数
  • pybee.importutil 提供把一个 py 文件当作模块 import 的函数

还有其他模块,这里就不一一列出

pybee.action 模块

在 pybee 模块的基础上把常见的操作封装成 action,下面就是一个列子

import pybee

ac = pybee.action.ActionContext([
  ('SCRIPT_DIR', pybee.path.get_script_path(__file__)),
  ('DIST_DIR', '$CURRENT_DIR/dist'),
  ('OUT_PUT_DIR', '$DIST_DIR/test-demo-portable'),
])

ac.prepare_dir(
  [
      '$DIST_DIR', '$OUT_PUT_DIR',
      '$OUT_PUT_DIR/portable',
  ]
)

ac.check_bin([
  ('gradle','please install gradle', 'GRADLE_BIN'),
])

ac.exec_cmd(
  [
      '$GRADLE_BIN', 'packDist', '-x', 'test'
  ]
)

ac.unzip(
  '$DIST_DIR/test-demo/test-demo.jar',
  '$OUT_PUT_DIR'
)


def ignore_config_files(src, names):
  return ['project.groovy', ]

ac.copy(
  [
      ('$CURRENT_DIR/config', '$OUT_PUT_DIR', {
          'ignore': ignore_config_files
      }),
      ('$CURRENT_DIR/public', '$OUT_PUT_DIR'),
  ]
)

ac.copy(
  [
      ('run.ps1', '$OUT_PUT_DIR'),
      ('run.sh', '$OUT_PUT_DIR'),
      ('portable.groovy', '$OUT_PUT_DIR/config'),
  ],
  work_dir='$SCRIPT_DIR/portable'
)

ac.zip(
  '$OUT_PUT_DIR',
  '$DIST_DIR/test-demo-portable-{datetime}.zip',
  env_name='DIST_FILE'
)


def print_success(context):
  print('')
  zip_file = context.get_env('DIST_FILE')
  print('pack successfully, dist file is %s' % zip_file)


ac.execute(succ_func=print_success)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使Eclipse在其控制台中显示最顶层的异常,而不是完整的堆栈跟踪   java如何为一个组件提供多个DropTargetListener?   在Eclipse包资源管理器中,有些文件不可见?   java在Spring Boot中使用@Bean配置设置类属性的默认值   在JTextPane中使用#链接的Java HTML?   java当应用程序打开时,如何将通知内容发送给活动?   java Android ROOM如何编写包含多个实体的查询,这是在哪里完成的?   Play Framework的java登录/注销问题?   java如何从安卓 Cordova/Phonegap调用javascript函数   JavaFX8如何在Java8中显示上次修改的LocalDateTime?   javabean验证中的多个约束注释   java使用JSTL设置请求属性   java在Android启动的服务中调用函数   用于检查xml是否包含键和值的java XPath表达式   在java游戏中使用斜坡因子挥杆   Java文件:尝试使用FileWriter将结果附加到已经存在的文件中   bootclasspath Java Xbootclasspath,相对路径   java我如何让这个“怪物战斗模拟器”工作?   swing使用动作侦听器隐藏和显示java桌面应用程序