pytoil


Namepytoil JSON
Version 0.38.0 PyPI version JSON
download
home_page
SummaryCLI to automate the development workflow.
upload_time2022-12-09 21:39:16
maintainerTom Fleet
docs_urlNone
authorTom Fleet
requires_python>=3.9
licenseApache Software License 2.0
keywords automation cli developer-tools python
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ![logo](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/logo.png)

[![License](https://img.shields.io/github/license/FollowTheProcess/pytoil)](https://github.com/FollowTheProcess/pytoil)
[![PyPI](https://img.shields.io/pypi/v/pytoil.svg?logo=python)](https://pypi.python.org/pypi/pytoil)
[![GitHub](https://img.shields.io/github/v/release/FollowTheProcess/pytoil?logo=github&sort=semver)](https://github.com/FollowTheProcess/pytoil)
[![Code Style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/FollowTheProcess/pytoil)
[![CI](https://github.com/FollowTheProcess/pytoil/workflows/CI/badge.svg)](https://github.com/FollowTheProcess/pytoil/actions?query=workflow%3ACI)
[![codecov](https://codecov.io/gh/FollowTheProcess/pytoil/branch/main/graph/badge.svg?token=OLMR2P3J6N)](https://codecov.io/gh/FollowTheProcess/pytoil)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/FollowTheProcess/pytoil/main.svg)](https://results.pre-commit.ci/latest/github/FollowTheProcess/pytoil/main)
[![Downloads](https://static.pepy.tech/personalized-badge/pytoil?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads)](https://pepy.tech/project/pytoil)

> ***toil:***
> *"Long, strenuous or fatiguing labour"*

* **Source Code**: [https://github.com/FollowTheProcess/pytoil](https://github.com/FollowTheProcess/pytoil)

* **Documentation**: [https://FollowTheProcess.github.io/pytoil/](https://FollowTheProcess.github.io/pytoil/)

![help](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/help.svg)

## What is it?

*pytoil is a small, helpful CLI to take the toil out of software development!*

`pytoil` is a handy tool that helps you stay on top of all your projects, remote or local. It's primarily aimed at python developers but you could easily use it to manage any project!

pytoil is:

* Easy to use ✅
* Easy to configure ✅
* Safe (it won't edit your repos at all) ✅
* Snappy (it's asynchronous from the ground up and as much as possible is done concurrently, clone all your repos in seconds!) 💨
* Useful! (I hope 😃)

Say goodbye to janky bash scripts 👋🏻

## Background

Like many developers I suspect, I quickly became bored of typing repeated commands to manage my projects, create virtual environments, install packages, fire off `cURL` snippets to check if I had a certain repo etc.

So I wrote some shell functions to do some of this for me...

And these shell functions grew and grew and grew.

Until one day I saw that the file I kept these functions in was over 1000 lines of bash (a lot of `printf`'s so it wasn't all logic but still). And 1000 lines of bash is *waaaay* too much!

And because I'd basically hacked it all together, it was **very** fragile. If a part of a function failed, it would just carry on and wreak havoc! I'd have to do `rm -rf all_my_projects`... I mean careful forensic investigation to fix it.

So I decided to make a robust CLI with the proper error handling and testability of python, and here it is! 🎉

## Installation

As pytoil is a CLI program, I'd recommend installing with [pipx].

```shell
pipx install pytoil
```

![pipx-install](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/pipx_install.svg)

You can always fall back to pip

![pip-install](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/pip_install.svg)

pytoil will install everything it needs *in python* to work. However, it's full feature set can only be accessed if you have the following external dependencies:

* [git]
* [conda] (if you work with conda environments)
* A directory-aware editor e.g. [VSCode] etc. (if you want to use pytoil to automatically open your projects for you)
* [poetry] (if you want to create poetry environments)
* [flit] (if you want to create flit environments)

## Quickstart

`pytoil` is super easy to get started with.

After you install pytoil, the first time you run it you'll get something like this.

![setup](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/setup.svg)

If you say yes, pytoil will walk you through a few questions and fill out your config file with the values you enter. If you'd rather not do this interactively, just say no and it will instead put a default config file in the right place for you to edit later.

Once you've configured it properly, you can do things like...

#### See your local and remote projects

![show-local](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/show_local.svg)

#### See which ones you have on GitHub, but not on your computer

![show-diff](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/show_diff.svg)

#### Easily grab a project, regardless of where it is

This project is available on your local machine...

![checkout-local](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/checkout_local.svg)

This one is on GitHub...

![checkout-remote](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/checkout_remote.svg)

#### Create a new project and virtual environment in one go

![new-venv](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/new_venv.svg)

(And include custom packages, see the [docs])

#### And even do this from a [cookiecutter] template

![new-cookie](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/new_cookie.svg)

And loads more!

pytoil's CLI is designed such that if you don't specify any arguments, it won't do anything! just show you the `--help`. This is called being a 'well behaved' unix command line tool.

This is true for any subcommand of pytoil so you won't accidentally break anything if you don't specify arguments 🎉

And if you get truly stuck, you can quickly open pytoil's documentation with:

![docs](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/docs.svg)

Check out the [docs] for more 💥

## Contributing

`pytoil` is an open source project and, as such, welcomes contributions of all kinds 😃

Your best bet is to check out the [contributing guide] in the docs!

[pipx]: https://pipxproject.github.io/pipx/
[docs]: https://FollowTheProcess.github.io/pytoil/
[contributing guide]: https://followtheprocess.github.io/pytoil/contributing/contributing.html
[git]: https://git-scm.com
[conda]: https://docs.conda.io/en/latest/
[VSCode]: https://code.visualstudio.com
[cookiecutter]: https://github.com/cookiecutter/cookiecutter
[poetry]: https://python-poetry.org
[flit]: https://flit.readthedocs.io

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "pytoil",
    "maintainer": "Tom Fleet",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "tomfleet2018@gmail.com",
    "keywords": "automation,cli,developer-tools,python",
    "author": "Tom Fleet",
    "author_email": "tomfleet2018@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/af/33/4faa6303aaf2c9e59ffd085ec384263cf9b5f5e2f07e26c050f6dd742626/pytoil-0.38.0.tar.gz",
    "platform": null,
    "description": "![logo](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/logo.png)\n\n[![License](https://img.shields.io/github/license/FollowTheProcess/pytoil)](https://github.com/FollowTheProcess/pytoil)\n[![PyPI](https://img.shields.io/pypi/v/pytoil.svg?logo=python)](https://pypi.python.org/pypi/pytoil)\n[![GitHub](https://img.shields.io/github/v/release/FollowTheProcess/pytoil?logo=github&sort=semver)](https://github.com/FollowTheProcess/pytoil)\n[![Code Style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/FollowTheProcess/pytoil)\n[![CI](https://github.com/FollowTheProcess/pytoil/workflows/CI/badge.svg)](https://github.com/FollowTheProcess/pytoil/actions?query=workflow%3ACI)\n[![codecov](https://codecov.io/gh/FollowTheProcess/pytoil/branch/main/graph/badge.svg?token=OLMR2P3J6N)](https://codecov.io/gh/FollowTheProcess/pytoil)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/FollowTheProcess/pytoil/main.svg)](https://results.pre-commit.ci/latest/github/FollowTheProcess/pytoil/main)\n[![Downloads](https://static.pepy.tech/personalized-badge/pytoil?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads)](https://pepy.tech/project/pytoil)\n\n> ***toil:***\n> *\"Long, strenuous or fatiguing labour\"*\n\n* **Source Code**: [https://github.com/FollowTheProcess/pytoil](https://github.com/FollowTheProcess/pytoil)\n\n* **Documentation**: [https://FollowTheProcess.github.io/pytoil/](https://FollowTheProcess.github.io/pytoil/)\n\n![help](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/help.svg)\n\n## What is it?\n\n*pytoil is a small, helpful CLI to take the toil out of software development!*\n\n`pytoil` is a handy tool that helps you stay on top of all your projects, remote or local. It's primarily aimed at python developers but you could easily use it to manage any project!\n\npytoil is:\n\n* Easy to use \u2705\n* Easy to configure \u2705\n* Safe (it won't edit your repos at all) \u2705\n* Snappy (it's asynchronous from the ground up and as much as possible is done concurrently, clone all your repos in seconds!) \ud83d\udca8\n* Useful! (I hope \ud83d\ude03)\n\nSay goodbye to janky bash scripts \ud83d\udc4b\ud83c\udffb\n\n## Background\n\nLike many developers I suspect, I quickly became bored of typing repeated commands to manage my projects, create virtual environments, install packages, fire off `cURL` snippets to check if I had a certain repo etc.\n\nSo I wrote some shell functions to do some of this for me...\n\nAnd these shell functions grew and grew and grew.\n\nUntil one day I saw that the file I kept these functions in was over 1000 lines of bash (a lot of `printf`'s so it wasn't all logic but still). And 1000 lines of bash is *waaaay* too much!\n\nAnd because I'd basically hacked it all together, it was **very** fragile. If a part of a function failed, it would just carry on and wreak havoc! I'd have to do `rm -rf all_my_projects`... I mean careful forensic investigation to fix it.\n\nSo I decided to make a robust CLI with the proper error handling and testability of python, and here it is! \ud83c\udf89\n\n## Installation\n\nAs pytoil is a CLI program, I'd recommend installing with [pipx].\n\n```shell\npipx install pytoil\n```\n\n![pipx-install](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/pipx_install.svg)\n\nYou can always fall back to pip\n\n![pip-install](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/pip_install.svg)\n\npytoil will install everything it needs *in python* to work. However, it's full feature set can only be accessed if you have the following external dependencies:\n\n* [git]\n* [conda] (if you work with conda environments)\n* A directory-aware editor e.g. [VSCode] etc. (if you want to use pytoil to automatically open your projects for you)\n* [poetry] (if you want to create poetry environments)\n* [flit] (if you want to create flit environments)\n\n## Quickstart\n\n`pytoil` is super easy to get started with.\n\nAfter you install pytoil, the first time you run it you'll get something like this.\n\n![setup](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/setup.svg)\n\nIf you say yes, pytoil will walk you through a few questions and fill out your config file with the values you enter. If you'd rather not do this interactively, just say no and it will instead put a default config file in the right place for you to edit later.\n\nOnce you've configured it properly, you can do things like...\n\n#### See your local and remote projects\n\n![show-local](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/show_local.svg)\n\n#### See which ones you have on GitHub, but not on your computer\n\n![show-diff](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/show_diff.svg)\n\n#### Easily grab a project, regardless of where it is\n\nThis project is available on your local machine...\n\n![checkout-local](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/checkout_local.svg)\n\nThis one is on GitHub...\n\n![checkout-remote](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/checkout_remote.svg)\n\n#### Create a new project and virtual environment in one go\n\n![new-venv](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/new_venv.svg)\n\n(And include custom packages, see the [docs])\n\n#### And even do this from a [cookiecutter] template\n\n![new-cookie](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/new_cookie.svg)\n\nAnd loads more!\n\npytoil's CLI is designed such that if you don't specify any arguments, it won't do anything! just show you the `--help`. This is called being a 'well behaved' unix command line tool.\n\nThis is true for any subcommand of pytoil so you won't accidentally break anything if you don't specify arguments \ud83c\udf89\n\nAnd if you get truly stuck, you can quickly open pytoil's documentation with:\n\n![docs](https://github.com/FollowTheProcess/pytoil/raw/main/docs/img/docs.svg)\n\nCheck out the [docs] for more \ud83d\udca5\n\n## Contributing\n\n`pytoil` is an open source project and, as such, welcomes contributions of all kinds \ud83d\ude03\n\nYour best bet is to check out the [contributing guide] in the docs!\n\n[pipx]: https://pipxproject.github.io/pipx/\n[docs]: https://FollowTheProcess.github.io/pytoil/\n[contributing guide]: https://followtheprocess.github.io/pytoil/contributing/contributing.html\n[git]: https://git-scm.com\n[conda]: https://docs.conda.io/en/latest/\n[VSCode]: https://code.visualstudio.com\n[cookiecutter]: https://github.com/cookiecutter/cookiecutter\n[poetry]: https://python-poetry.org\n[flit]: https://flit.readthedocs.io\n",
    "bugtrack_url": null,
    "license": "Apache Software License 2.0",
    "summary": "CLI to automate the development workflow.",
    "version": "0.38.0",
    "split_keywords": [
        "automation",
        "cli",
        "developer-tools",
        "python"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "68c9d4a5ba2380f08f399abb6f8fb9c1",
                "sha256": "0de558f6b50ce5506e5586561da208aae6e466b39e08832a54fa476307c2fa64"
            },
            "downloads": -1,
            "filename": "pytoil-0.38.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "68c9d4a5ba2380f08f399abb6f8fb9c1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 56415,
            "upload_time": "2022-12-09T21:39:12",
            "upload_time_iso_8601": "2022-12-09T21:39:12.920759Z",
            "url": "https://files.pythonhosted.org/packages/ab/df/16a024d0f04d995883dabf63aee2e623001f940f1a6ad69391b59fc52cae/pytoil-0.38.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "5ec5a47444f2c657248eca0a5e4f036c",
                "sha256": "dc75cab666801418608964b6c6a3ede5e2a6029b58ed5c0b2c697f017bbfc22f"
            },
            "downloads": -1,
            "filename": "pytoil-0.38.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5ec5a47444f2c657248eca0a5e4f036c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 3702870,
            "upload_time": "2022-12-09T21:39:16",
            "upload_time_iso_8601": "2022-12-09T21:39:16.139584Z",
            "url": "https://files.pythonhosted.org/packages/af/33/4faa6303aaf2c9e59ffd085ec384263cf9b5f5e2f07e26c050f6dd742626/pytoil-0.38.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-12-09 21:39:16",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "lcname": "pytoil"
}
        
Elapsed time: 0.03799s