博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给大家推荐一个整合了python和bash的神器,xonsh
阅读量:7298 次
发布时间:2019-06-30

本文共 2430 字,大约阅读时间需要 8 分钟。

xonsh

Python-powered, cross-platform, Unix-gazing shell http://xon.sh

演示代码

比如我最近写了这样一个python+bash的脚本。

#!/usr/bin/env xonshimport refrom os.path import dirname, join, abspath, exists, basenamefrom json import load, dumpimport tomlimport sys__dirname = dirname(abspath(__file__))sys.path.append(__dirname)from dnspod import Dnspodfrom config import CONFIGVERSION_INCR = 1def main():    root = dirname(dirname(__dirname))    version_toml_path = join(root, '.release.version.toml')    package_path = join(        root,        "package.json"    )    release_path = join(dirname(root), "release/srv")    if not exists(release_path):        print(release_path, '不存在')        return    cd @(root)    git add -u    try:        version_toml = toml.load(version_toml_path)    except:        version_toml = {}    if re.findall("nothing.* to commit", $(git st), re.S):        last_commit = $(git log -1).split("\n",1)[0].split(" ",1)[-1]        if last_commit in version_toml:            print(f"commit {last_commit} released version {version_toml[last_commit]}")            return    with open(package_path) as f:        package = load(f)        version = package['version']        version = list(map(int, version.split(".")))        version[-1]+=VERSION_INCR        version = ".".join(map(str, version))        package['version'] = version    with open(package_path,"w") as f:        dump(package, f, indent=4, sort_keys=True)    comment = f"PUBLISH VERSION {version}"    print(comment)    cd @(release_path)    find . | grep -vE '\.git/|.git$|\.$|\.\.$' | xargs rm -rf    cd @(root)    print(f">> cd {root}")    git add -u    git commit -m @(comment)    last_commit = $(git log -1).split("\n",1)[0].split(" ",1)[-1]    git archive master | tar -x -C @(release_path)    print(f">> cd {release_path}")    cd @(release_path)    rm -rf nodemon.json .gitignore dev py *.md test LICENSE release.sh    git add .    gitignore = join(root, ".gitignore")    cp @(gitignore) .    git add .gitignore    git commit -m @(comment)    git push origin master    git push github master    version_toml[last_commit] = version    with open(version_toml_path, "w") as f:        toml.dump(version_toml, f)    dnspod_update(version)def dnspod_update(version):    domain = CONFIG.HOST.TXT    dnspod = Dnspod(*CONFIG.DNSPOD)    dnspod.update(domain, "cli-v", version)    dnspod.update(domain, "cli-git", " ".join(CONFIG.GIT))if __name__ == "__main__":    main()复制代码

转载地址:http://bwznm.baihongyu.com/

你可能感兴趣的文章
jQuery全屏滚动插件fullPage.js
查看>>
IO_字节流_拷贝
查看>>
Django中的FBV和CBV
查看>>
SQL内联、外联的简单理解
查看>>
友情链接
查看>>
Joomla源代码解析
查看>>
Docker集群管理(一)—— 基础docker+swarm+shipyard
查看>>
聊下并发和Tomcat线程数(Updated)
查看>>
bzoj1389
查看>>
eclipse设置代码上屏按键
查看>>
事件的stopImmediatePropagation和stopPropagation
查看>>
统计iOS产品不同渠道的下载量
查看>>
做你心目中的达文西
查看>>
数据挖掘复习 回归
查看>>
SpringBoot-03:SpringBoot+Idea热部署
查看>>
分布式系统cap理论
查看>>
BEC listen and translation exercise 11
查看>>
cocos 碰撞系统
查看>>
记一次通宵加班
查看>>
解决iframe重定向让父级页面跳转
查看>>