rocketLauncher CLI

A very opinionated CLI to automate the start of a new project.

Installation

Since the nature of this package is very opinionated (meaning, made with me in mind) I will not be publishing to pypi. But if you would like to use it, this are the installation steps.

Prerequisites

For rocketLauncher to work the followinng packages need to be installed.

Once installed you can use the following code to get the latest release.

    repo='https://github.com/drearondov/rocketLauncher'

    # Find the latest release.
    latest=$(git ls-remote --tags --refs $repo | # Fetch remote tags.
                     sort -t '/' -k 3 -V |       # Sort them by version.
                     tail -n 1 |                 # Take the latest one.
                     awk -F / '{print $3}')      # Return only the tag.

    # Craft the URL for the release asset.
    version=$(echo $latest | tr -d 'v')  # Remove the leading v.
    wheel="rocket_launcher-${version}-py3-none-any.whl"
    release="${repo}/releases/download/${latest}/${wheel}"

    # Install the release.
    pip install $release

From sources

The sources for rocketLauncher can be downloaded from the Github repo.

Bear in mind that to install this package from source you will need to have Poetry installed in your system.

With that in mind, you can either clone the public repository:

    git clone git://github.com/drearondov/rocket_launcher

Or download the tarball:

    curl -OJL https://github.com/drearondov/rocket_launcher/tarball/master

Once you have a copy of the source, you can install it with:

    poetry build
    poetry install

Usage

Usage:

$ rocketLauncher [OPTIONS] COMMAND [ARGS]...

Options:

  • --install-completion: Install completion for the current shell.

  • --show-completion: Show completion for the current shell, to copy it or customize the installation.

  • --help: Show this message and exit.

Commands:

  • config: Create configuration file and/or set defaults

  • cookiecutters: List/ add available cookiecutters

  • init: Configure the projects directory and login to…

  • new: Creates new project in folder, runs a…

  • push: Creates a local repository and pushed it to…

rocketLauncher config

Create configuration file and/or set defaults

Usage:

$ rocketLauncher config [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • change: Change a default

  • init: Define default configuration

rocketLauncher config change

Change a default

Usage:

$ rocketLauncher config change [OPTIONS]

Options:

  • --key TEXT: Name of the value to change

  • --new-value TEXT: New default value

  • --help: Show this message and exit.

rocketLauncher config init

Define default configuration

Usage:

$ rocketLauncher config init [OPTIONS]

Options:

  • --env-manager TEXT: Environment manager to use by default

  • --create-env / --no-create-env: Create a virtual environment by default

  • --poetry-adapted / --no-poetry-adapted: Are the cookiecutters used adapted for Poetry by default

  • --upload-github / --no-upload-github: Upload to github by default

  • --commit-message TEXT: Deafult commit message

  • --quickstart / --no-quickstart: Use quickstart by default or interactive prompt

  • --help: Show this message and exit.

rocketLauncher cookiecutters

List/ add available cookiecutters

Usage:

$ rocketLauncher cookiecutters [OPTIONS] COMMAND [ARGS]...

Options:

  • --help: Show this message and exit.

Commands:

  • add: Adds new cookiecutter to curated…

  • list: List all the cookiecutters available

rocketLauncher cookiecutters add

Adds new cookiecutter to curated cookiecutters

Usage:

$ rocketLauncher cookiecutters add [OPTIONS]

Options:

  • --alias TEXT: Alias for the new cookiecutter

  • --link TEXT: Link of the cookiecutter, to use with cookiecutter command

  • --help: Show this message and exit.

rocketLauncher cookiecutters list

List all the cookiecutters available

Usage:

$ rocketLauncher cookiecutters list [OPTIONS]

Options:

  • --help: Show this message and exit.

rocketLauncher init

Configure the projects directory and login to Github.

Usage:

$ rocketLauncher init [OPTIONS]

Options:

  • --projects-path DIRECTORY: Directory where projects are located [required]

  • --github-token TEXT: Github token to be used to connect to Github

  • --set-config / --no-set-config: Whether to set the default config now or not [required]

  • --help: Show this message and exit.

rocketLauncher new

Creates new project in folder, runs a cookiecutter and uploads to github.

Usage:

$ rocketLauncher new [OPTIONS]

Options:

  • --project-name TEXT: Name of the project. To be used for the repo and virtual environment

  • --env-manager [conda|pyenv]: Virtual environment manager used for the project [default: pyenv]

  • --create-env / --no-create-env: Boolean variable to tell if create or not a virtual environment. If false, it activates the virtual environment [default: True]

  • --cookiecutter TEXT: Alias in curated list or link to a cookiecutter

  • --poetry-adapted / --no-poetry-adapted: Is the cookiecutter chosen adapted for Poetry? [default: True]

  • --upload-github / --no-upload-github: Choose whether you create a repository and upload to Github or not [default: False]

  • --commit-message TEXT: Commit message [default: :tada: initial commit]

  • --quickstart / --no-quickstart: Choose all defaults [default: True]

  • --help: Show this message and exit.

rocketLauncher push

Creates a local repository and pushed it to Github

Usage:

$ rocketLauncher push [OPTIONS]

Options:

  • --commit-message TEXT: Commit message

  • --help: Show this message and exit.

Contributing

Contributions are welcome, and they are greatly appreciated! Every little bit helps, and credit will always be given.

You can contribute in many ways:

Types of Contributions

Report Bugs

Report bugs at https://github.com/drearondov/rocket_launcher/issues.

If you are reporting a bug, please include:

  • Your operating system name and version.

  • Any details about your local setup that might be helpful in troubleshooting.

  • Detailed steps to reproduce the bug.

Fix Bugs

Look through the GitHub issues for bugs. Anything tagged with “bug” and “help wanted” is open to whoever wants to implement it.

Implement Features

Look through the GitHub issues for features. Anything tagged with “enhancement” and “help wanted” is open to whoever wants to implement it.

Write Documentation

projects-cli could always use more documentation, whether as part of the official projects-cli docs, in docstrings, or even on the web in blog posts, articles, and such.

Submit Feedback

The best way to send feedback is to file an issue at https://github.com/drearondov/rocket_launcher/issues.

If you are proposing a feature:

  • Explain in detail how it would work.

  • Keep the scope as narrow as possible, to make it easier to implement.

  • Remember that this is a volunteer-driven project, and that contributions are welcome :)

Get Started!

Ready to contribute? Here’s how to set up rocket_launcher for local development.

  1. Fork the rocket_launcher repo on GitHub.

  2. Clone your fork locally and install dependencies.

    git clone git@github.com:your_name_here/rocket_launcher.git
    cd rocket_launcher/
  1. Create a virtualenv. Assuming you have pyenv-virtualenv installed, this is how you set up your fork for local development

    pyenv virtualenv rocket_launcher
    pyenv activate rocket_launcher
    poetry install
  1. Create a branch for local development

    git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

  1. When you’re done making changes, check that your changes pass flake8 and the tests, including testing other Python versions with tox

    flake8 rocket_launcher tests
    pytest
    tox

To get flake8 and tox, just pip install them into your virtualenv.

  1. Commit your changes and push your branch to GitHub::

    git add .
    git commit -m "Your detailed description of your changes."
    git push origin name-of-your-bugfix-or-feature
  1. Submit a pull request through the GitHub website.

Pull Request Guidelines

Before you submit a pull request, check that it meets these guidelines:

  1. The pull request should include tests.

  2. If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in README.rst.

  3. The pull request should work for Python 3.5, 3.6, 3.7 and 3.8, and for PyPy. Check https://travis-ci.com/drearondov/rocket_launcher/pull_requests and make sure that the tests pass for all supported Python versions.

Tips

To run a subset of tests

    pytest tests/test_cookiecutters.py

Deploying

A reminder for the maintainers on how to deploy. Make sure all your changes are committed (including an entry in CHANGELOG.md). Then run::

    bump2version patch # possible: major / minor / patch
    git push
    git push --tags

Travis will then deploy to the repository if the tests pass.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Development Lead

Contributors

None yet. Why not be the first?

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

  • Install dependencies from cookiecutter

  • Switch from setup.py to pyproject.toml

  • Full documentation

[0.1.0-alpha] - 2021-02-17

Added

  • init, new, push, cookiecutters and config commands

  • config commands cookiecutter, init

[0.1.0] - 2021-03-07

Added

  • cookiecutters commands add and list

  • Built test suite and setup Travis CI

Features

  • Select environment manager (pyenv, conda supported)

  • Create new virtual environment by default

  • Create folder structure from cookiecutter

  • Choose to create repository and upload project to Github

  • Configure defaults values

  • Quickstart a new project with default values

Basic usage

The available commands are:

  • rocketlauncher init: Configures the projects directory and logs in to Github

  • rocketlauncher new: Creates a new project and runs a cookiecutter inside

  • rocketlauncher push: Creates local repository and pushes to Github

  • rocketlauncher config: Allows the creation of a configuration file and edit/set defaults

  • rocketlauncher cookiecutters: Add/ view available cookiecutters

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.