flying

Cli tools for manage releases


Keywords
release, cli, docker, git, npm, pypi
License
MIT
Install
pip install flying==0.0.6

Documentation

Flying

PyPI

Purpose

Make release easy again .

Features

  1. git tag
  2. npm publish
  3. docker build && push
  4. pypi build && upload

Example

https://github.com/joway/flying-example

Install

pip install -U flying

Usage

init

Create flying.json template

flying init .

commit

Beautify git commit message

flying commit [commit_type] [commit_message]

eg:
    flying commit feature 'some feature description'
    ==>
    git commit -m '[✨feature]: some feature description'

commit-type choice:

{
    "feature": "✨feature",
    "bugfix": "🐛bugfix",
    "hotfix": "🚑hotfix",
    "docs": "📚docs",
    "style": "🎨style",
    "refactor": "🏗️refactor",
    "test": "✅test",
    "chore": "🔨chore",
    "release": "🎉release",
    "text": "📝text",
    "addlog": "🔉add log",
    "dellog": "🔇delete log",
}

release

Release current version which set in flying.json .

flying release

Automatically upgrade version (+0.0.1)

flying release --upgrade

Configuration

Quick View

Template : flying.json

{
  "name": "flying-example",
  "version": "0.0.8",
  "version_prefix": "v",
  "conditions": [
    "git status | grep \"nothing to commit, working tree clean\""
  ],
  "pre_release": [
    "cat ./flying.json"
  ],
  "git": {
    "enable": true,
    "remote": "origin",
  },
  "docker": {
    "enable": true,
    "namespace": "joway/flying-example",
    "dkf_path": "./Dockerfile"
  },
  "npm": {
    "enable": true,
    "package_path": "./package.json"
  },
  "pypi": {
    "enable": false,
    "build_cmd": "python setup.py sdist",
    "upload_cmd": "twine upload dist/*"
  }
}

version

version_prefix + version will be set as a tag for git and docker

conditions

conditions is a shell commonds list , flying will check if every commond has a non-empty out . If not , it will exit without any release .

For Example , when you set :

  "conditions": [
    "git status | grep \"nothing to commit, working tree clean\""
  ],

If your project has any un-commited file changes , it will be blocked .

pre_release

pre_release is a shell commonds list , it will be exec before release jobs start .

For example , you can set this line if you are using webpack :

"pre_release": ["npm run build"]

git

Push new version tag to git remote server .

docker

  • namespace: For example , set it to 'joway/flying-example' , it will push docker image as joway/flying-example:vx.x.x (if version_prefix = "v") .
  • dkf_path : Dockerfile's path relative to the project root dir .

npm

  • package_path: package.json's path relative to the project root dir .
  • upgrade_version_enable: if set true , it will automatically upgrade package.json[version] when exec flying release --upgrade

pypi

Custom your own build && upload commond by set build_cmd and upload_cmd