Giter VIP home page Giter VIP logo

pickley's Introduction

Automate installation of standalone python CLIs

Version on pypi Tested with Github Actions Test code codecov Python versions tested (link to github project)

Overview

pickley allows to install and keep up-to-date standalone pip-installable python CLIs such as tox, hatch, etc.

It is similar to pipx, main difference being installed CLIs automatically self-upgrade as you use them.

It can work out of the box, without any configuration:

  • pickley is portable, it will run and install other CLIs in the same folder it's running from (drop it in ~/.local/bin or /usr/local/bin for example)
  • All pypi packages with console_scripts entry point(s) can be immediately installed
  • Latest non-prerelease pypi version will be installed by default (can be pinned via explicit pin pickley install foo==1.0, or via configuration)

With some configuration, the following becomes possible:

  • You can pin what version to install, what python to use etc, per pypi package
  • You can define bundle-s: names that install several pypi packages at once, for example: you could define a bundle:dev to install tox pipenv pre-commit
  • You can use a custom pypi server index (pip's default is respected by default)
  • You can use the symlink delivery method, which will use symlinks instead of self-upgrading wrapper

Example

Once you have pickley, you can get other python CLIs and use them as standalone programs, for example:

# One-liner to grab pickley, and drop it in ~/.local/bin
$ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/src/pickley/bstrap.py | /usr/bin/python3 -

# Double-check you do have ~/.local/bin in your PATH
$ which -a pickley
~/.local/bin/pickley

$ pickley base
~/.local/bin

$ pickley install tox hatch
Installed tox v4.5.2 in 6 seconds 501 ms
Installed hatch v1.7.0 in 15 seconds

$ which tox
~/.local/bin/tox

$ tox --version
tox version 3.21.4

$ pickley list
| Package    | Version |
-------------|----------
| tox        | 4.5.2   |
| hatch      | 1.7.0   |

Configuration

See config

Features

  • Any pypi package that has console_scripts entry point can be installed and kept up-to-date

  • Aims to work with zero configuration (but configuration is possible):

    • entirely portable, installations are performed in the same folder where pickley resides, drop it in ~/.local/bin and all the stuff you install with it will also be there
    • latest non pre-release version from pypi is used
  • Commands:

    • check: exit with code 0 if specified package(s) are up-to-date
    • install: install specified package(s)
    • list: list installed packages via pickley, in folder where it resides (not globally)
    • package: can be used to simplify packaging of python projects for internal use

Installation

Install latest version in ~/.local/bin

Handy one-line using bash:

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/get-pickley)"

Handy one-liner using python (see --help, the script accepts a few options):

$ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/master/src/pickley/bstrap.py | /usr/bin/python3 - --help

Install from source

Run (you will need tox):

git clone https://github.com/codrsquad/pickley.git
cd pickley
tox -e venv
.venv/bin/pickley --help

pickley's People

Contributors

amjith avatar zsimic avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.