No description
Find a file
2019-09-05 13:32:42 +01:00
docs Brainbreak doc updates, including a funky placeholder logo. ;-) 2019-09-02 15:17:48 +01:00
tests Handle directory based module names correctly (with tests). 2019-09-05 12:33:21 +01:00
.gitignore Project docs, scaffolding, utilities and other useful stuff. See README for details. 2019-09-02 11:09:21 +01:00
CHANGES.rst Filled in CHANGES in preparation for a 0.0.1 release via PyPI. 2019-09-05 12:00:15 +01:00
circup.py Documentation with examples. 2019-09-05 13:32:42 +01:00
CODE_OF_CONDUCT.rst First commit. More soon... 2019-09-02 09:05:13 +01:00
CONTRIBUTING.rst Project docs, scaffolding, utilities and other useful stuff. See README for details. 2019-09-02 11:09:21 +01:00
LICENSE First commit. More soon... 2019-09-02 09:05:13 +01:00
Makefile Project docs, scaffolding, utilities and other useful stuff. See README for details. 2019-09-02 11:09:21 +01:00
README.rst Documentation with examples. 2019-09-05 13:32:42 +01:00
setup.py Refactor to use Dan's suggestion of using bundle library as canonical source of version information. See #9. 2019-09-04 17:41:01 +01:00

CircUp
======

A tool to manage and update libraries (modules) on a CircuitPython device.

Installation
------------

Circup requires Python 3.5 or higher.

In a `virtualenv <https://virtualenv.pypa.io/en/latest/>`_,
``pip install circup`` should do the trick. This is the simplest way to make it
work.

If you have no idea what a virtualenv is, try the following command,
``pip3 install --user circup``.

.. note::

    If you use the ``pip3`` command to install CircUp you must make sure that
    your path contains the directory into which the script will be installed.
    To discover this path,

    * On unix-like systems, type ``python3 -m site --user-base`` and append
      ``bin`` to the resulting path.
    * On Windows, type the same command, but append ``Scripts`` to the
      resulting path.

What?
-----

Each CircuitPython library on the device (``.py``, *NOT* ``.mpy`` at this time)
usually has a version number as metadata within the module.

This utility looks at all the libraries on the device and checks if they are
the most recent (compared to the versions found in the most recent version of
the Adafruit CircuitPython Bundle). If the libraries are out of date, the
utility helps you update them.

The Adafruit CircuitPython Bundle can be found here:

https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest

Full details of these libraries, what they're for and how to get them, can be
found here:

https://circuitpython.org/libraries

Usage
-----

First, plug in a device running CircuiPython. This should appear as a mounted
storage device called ``CIRCUITPYTHON``.

To get help, just type the command::

    $ circup
    Usage: circup [OPTIONS] COMMAND [ARGS]...

      A tool to manage and update libraries on a CircuitPython device.

    Options:
      --verbose  Comprehensive logging is sent to stdout.
      --version  Show the version and exit.
      --help     Show this message and exit.

    Commands:
      freeze  Output details of all the modules found on the connected...
      list    Lists all out of date modules found on the connected
              CIRCUITPYTHON...
      update  Checks for out-of-date modules on the connected CIRCUITPYTHON...

To show version information for all the modules currently on a connected
CIRCUITPYTHON device::

    $ circup freeze
    Logging to /home/ntoll/.cache/circup/log/circup.log

    adafruit_binascii==v1.0
    adafruit_bme280==2.3.1
    adafruit_ble==1.0.2

To list all the modules that require an update::

    $ circup list
    Logging to /home/ntoll/.cache/circup/log/circup.log

    The following modules are out of date or probably need an update.

    Module             Version  Latest   
    ------------------ -------- -------- 
    adafruit_binascii  v1.0     1.0.1    
    adafruit_ble       1.0.2    4.0

To interactively update the out-of-date modules::

    $ circup update
    Logging to /home/ntoll/.cache/circup/log/circup.log

    Found 3 module[s] needing update.
    Please indicate which modules you wish to update:

    Update 'adafruit_binascii'? [y/N]: Y
    OK
    Update 'adafruit_ble'? [y/N]: Y
    OK

Use the ``--verbose`` flag to see the logs as the command is working::

    $ circup --verbose freeze



    Started 2019-09-05 13:13:41.031822
    INFO: Freeze
    INFO: Found device: /media/ntoll/CIRCUITPY
    ... etc ...

Finally, the ``--version`` flag will tell you the current version of the
``circup`` command itself::

    $ circup --version
    CircUp, A CircuitPython module updater. Version 0.0.1

That's it!

.. note::

    If you find a bug, or you want to suggest an enhancement or new feature
    feel free to submit a bug report or pull request here:

    https://github.com/adafruit/circup

Developer Setup
---------------

Clone the repository then make a virtualenv. From the root of the project,
install the requirements::

    pip install -r ".[dev]"

Run the test suite::

    make check

There is a Makefile that helps with most of the common workflows associated
with development. Typing "make" on its own will list the options thus::

    $ make

    There is no default Makefile target right now. Try:

    make clean - reset the project and remove auto-generated assets.
    make pyflakes - run the PyFlakes code checker.
    make pycodestyle - run the PEP8 style checker.
    make test - run the test suite.
    make coverage - view a report on test coverage.
    make tidy - tidy code with the 'black' formatter.
    make check - run all the checkers and tests.
    make dist - make a dist/wheel for the project.
    make publish-test - publish the project to PyPI test instance.
    make publish-live - publish the project to PyPI production.
    make docs - run sphinx to create project documentation.