All Projects → michaeljoseph → Changes

michaeljoseph / Changes

Licence: mit
changes automates python library release tasks.

Programming Languages

python
139335 projects - #7 most used programming language

Labels

Projects that are alternatives of or similar to Changes

Ddh
A fast duplicate file finder
Stars: ✭ 262 (-3.32%)
Mutual labels:  cli
Fastify Cli
Run a Fastify application with one command!
Stars: ✭ 260 (-4.06%)
Mutual labels:  cli
Td
Your todo list in your terminal
Stars: ✭ 265 (-2.21%)
Mutual labels:  cli
Clasp
🔗 Command Line Apps Script Projects
Stars: ✭ 3,232 (+1092.62%)
Mutual labels:  cli
Imessage
💬 Send iMessages from command-line
Stars: ✭ 261 (-3.69%)
Mutual labels:  cli
Pygogo
A Python logging library with superpowers
Stars: ✭ 265 (-2.21%)
Mutual labels:  cli
I18next Scanner
Scan your code, extract translation keys/values, and merge them into i18n resource files.
Stars: ✭ 259 (-4.43%)
Mutual labels:  cli
Irs
🎸 🎶 A music downloader that understands your metadata needs.
Stars: ✭ 268 (-1.11%)
Mutual labels:  cli
Github cli
GitHub on your command line. Use your terminal, not the browser.
Stars: ✭ 263 (-2.95%)
Mutual labels:  cli
Frick
frick - aka the first debugger built on top of frida
Stars: ✭ 267 (-1.48%)
Mutual labels:  cli
Dockly
Immersive terminal interface for managing docker containers and services
Stars: ✭ 3,034 (+1019.56%)
Mutual labels:  cli
Terminus
The Pantheon CLI — a standalone utility for performing operations on the Pantheon Platform
Stars: ✭ 263 (-2.95%)
Mutual labels:  cli
Arduino Cli
Arduino command line tool
Stars: ✭ 3,173 (+1070.85%)
Mutual labels:  cli
Perfops Cli
A simple command line tool to interact with hundreds of servers around the world.
Stars: ✭ 263 (-2.95%)
Mutual labels:  cli
Fw
workspace productivity booster
Stars: ✭ 269 (-0.74%)
Mutual labels:  cli
Fsociety
A Modular Penetration Testing Framework
Stars: ✭ 259 (-4.43%)
Mutual labels:  cli
Cliffy
NodeJS Framework for Interactive CLIs
Stars: ✭ 263 (-2.95%)
Mutual labels:  cli
Git Hound
Git plugin that prevents sensitive data from being committed.
Stars: ✭ 269 (-0.74%)
Mutual labels:  cli
Gitmoji Cli
This project provides an easy solution for using gitmoji from your command line. Gitmoji-cli solves the hassle of searching through the gitmoji list. Includes a bunch of options you can play with! 🎉
Stars: ✭ 3,514 (+1196.68%)
Mutual labels:  cli
Picocli
Picocli is a modern framework for building powerful, user-friendly, GraalVM-enabled command line apps with ease. It supports colors, autocompletion, subcommands, and more. In 1 source file so apps can include as source & avoid adding a dependency. Written in Java, usable from Groovy, Kotlin, Scala, etc.
Stars: ✭ 3,286 (+1112.55%)
Mutual labels:  cli

changes

Travis CI Circle CI Appveyor CI

pypi version # of downloads

codecov.io Scrutinizer Code Quality Code Health

Gitter Stories in Ready

🎵 Ch-ch-changes 🎵

changes

Overview

Manages the release of a Python Library.

  • Auto generates changelog entries from commit messages
  • CLI that follows Semantic Versioning principles to auto-increment the library version
  • Runs the library tests
  • Checks the package installation from a tarball and PyPi
  • Uploads the distribution to PyPi
  • Tags the GitHub repository

Usage

An application wanting to use changes must meet these requirements:

  • Publically hosted on GitHub.
  • Has a setup.py.
  • Has a requirements.txt.
  • Has a CHANGELOG.md.
  • Has a README with a valid extension
  • <app_name>/__init__.py contains __version__ and __url__.
  • Executing tests with py.test or tox.
  • <app_name> is the package and module name.

Install changes:

$ pip install changes

Run the cli:

changes.

Usage:
  changes [options] <module_name> changelog
  changes [options] <module_name> release
  changes [options] <module_name> bump_version
  changes [options] <module_name> run_tests
  changes [options] <module_name> install
  changes [options] <module_name> upload
  changes [options] <module_name> pypi
  changes [options] <module_name> tag

  changes -h | --help

Options:
  --new-version=<ver>        Specify version.
  -p --patch                 Patch-level version increment.
  -m --minor                 Minor-level version increment.
  -M --major                 Major-level version increment.

  -h --help                  Show this screen.

  --pypi=<pypi>              Use alternative package index
  --dry-run                  Prints the commands that would have been executed.
  --skip-changelog           For the release task: should the changelog be
                             generated and committed?
  --tox                      Use `tox` instead of the default: `nosetests`
  --test-command=<cmd>       Command to use to test the newly installed package
  --version-prefix=<prefix>  Specify a prefix for version number tags
  --noinput                  To be used in conjunction with one of the version
                             increment options above, this option stops
                             `changes` from confirming the new version number.
  --module-name=<module>     If your module and package aren't the same
  --requirements=<reqfile>   Requirements file name (defaults to requirements.txt)
  --debug                    Debug output.

The commands do the following:
   changelog     Generates an automatic changelog from your commit messages
   bump_version  Increments the __version__ attribute of your module's __init__
   run_tests     Runs your tests with nosetests
   install       Attempts to install the sdist
   tag           Tags your git repo with the new version number
   upload        Uploads your project with setup.py clean sdist bdist_wheel upload
   pypi          Attempts to install your package from pypi
   release       Runs all the previous commands

The recommended workflow starts with running the changelog command to autogenerate a changelog entry based on your commit messages.

Edit the change entry and then run the release command to perform the rest of the release tasks (use the --skip-changelog option to prevent the release command from generating the automatic changelog again).

(changes)$ changes -p changes changelog
What is the release version for "changes" [Default: 0.1.1]:
INFO:changes.cli:Added content to CHANGELOG.md
Everything up-to-date
INFO:changes.cli:Committed changelog update

<< changelog pruning >>

(changes)$ changes -p changes release --skip-changelog
What is the release version for "changes" [Default: 0.1.1]:
Counting objects: 7, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 400 bytes, done.
Total 4 (delta 2), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
   5c6760d..bafce16  master -> master
Counting objects: 1, done.
Writing objects: 100% (1/1), 168 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
 * [new tag]         0.1.1 -> 0.1.1
warning: sdist: standard file not found: should have one of README, README.rst, README.txt

If you're made of sterner stuff (and your commit messages are good enough), you can do it all in one step:

(changes)$ changes -m changes release
What is the release version for "changes" [Default: 0.2.0]:
INFO:changes.cli:Added content to CHANGELOG.md

Changes test case
- extract
- extract attribute
- increment
- replace attribute
- write new changelog

----------------------------------------------------------------------
Ran 5 tests in 0.119s

OK

Counting objects: 9, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 1.01 KiB, done.
Total 5 (delta 3), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
   7b8f0a6..6a7379c  master -> master
warning: sdist: standard file not found: should have one of README, README.rst, README.txt

INFO:changes.cli:Successfully installed changes sdist
warning: sdist: standard file not found: should have one of README, README.rst, README.txt

INFO:changes.cli:Successfully installed changes from pypi
Counting objects: 1, done.
Writing objects: 100% (1/1), 168 bytes, done.
Total 1 (delta 0), reused 0 (delta 0)
To git@github.com:michaeljoseph/changes.git
 * [new tag]         0.2.0 -> 0.2.0

Documentation

API Documentation

Testing

Install development requirements:

pip install -r requirements.txt

Then run the tests with:

py.test

Lint the project with:

flake8 changes tests

API documentation

Generate the documentation with:

(cd docs && make singlehtml)

To monitor changes to Python files and execute flake8 and nosetests automatically, execute the following from the root project directory:

tdaemon -t py
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].