This is a pre-production deployment of Warehouse, however changes made here WILL affect the production instance of PyPI.
Latest Version Dependencies status unknown Test status unknown Test coverage unknown
Project Description
Sync your packages with your dotfiles (and vice versa)
======================================================

When we use a package manager (be it apt, pip, npm,…), we want to sync
the list of installed packages in requirement files. We then declare a
mapping that links a package manager to its requirements file:

.. code:: python

REQUIREMENTS_ROOT_DIR = "~/dotfiles/"
REQUIREMENTS_FILES = {
"apt": {
"file": "apt.txt", # => ~/dotfiles/apt.txt
"pacman": "apt-get",
"install": "install -y --force-yes",
"uninstall": "remove",
},
# and so on for pip, pip3, gem, npm, docker and guix.
}

and we call

.. code:: example

syp --pm apt foo bar

to add the two packages "foo" and "bar" in ``~/dotfiles/apt.txt`` and at
the same time, to check if this list has been edited manually (with
packages added or removed) and act accordingly (we make diffs against
the cache at ``~/.syp/apt.txt``).

See the Settings section below.

Tested on python 2.7 and 3.4.

Usage
-----

The basic usage is to check all of the package managers, and install and
remove what's necessary:

Example:

.. code:: example

syp

can output:

.. raw:: html

<img src="http://i.imgur.com/NXiddZB.png" <="" img="">

We set the package manager with ``--pm`` and **give one or many packages
to install**:

.. code:: example

syp --pm pip syp foo bar

will append "syp", "foo" and "bar" at the bottom of
``~/dotfiles/pip.txt`` (if they are not there yet), check if pip.txt was
manually edited, and suggest a list of packages to install and remove.

So a suggested alias is

.. code:: example

alias sypip="syp --pm pip "

If no package manager is specified, **we use apt by default** (see
Settings below).

To **remove packages**, use ``--rm``:

.. code:: example

syp --pm pip foo --rm

We can **add a message** with ``-m``. It will be appended on the same
line:

.. code:: example

syp --pm pip foo -m "foo is a cool package"

We can **edit the list** of packages for that package manager before the
operations with ``-e`` (``--editor``):

.. code:: example

syp --pm pip foo --rm -e

Settings
========

The default settings come with a configuration for ``apt``, ``pip``,
``pip3``, ``gem``, ``npm``, ``docker`` and ``guix``.

The user settings, stored at ``~/.syp/settings.py``, is a regular python
file that will be ``exec``'ed on startup. So, if you want to add or
overide a package manager settings, edit the ``REQUIREMENTS_FILES``
dictionnary accordingly. Only the key "file" is required:

.. code:: python

REQUIREMENTS_FILES['apt'] = {
"file": "requirements-apt.txt", # required. appended to REQUIREMENTS_ROOT_DIR
"pacman": "aptitude", # by default, same as the package manager name, here 'apt'
"install": "install -y", # 'install' by default
"uninstall": "remove", # 'uninstall' by default.
}

See also

.. code:: python

#: The base directory where lies the configuration files.
REQUIREMENTS_ROOT_DIR = "~/dotfiles/"

#: System package manager, as a default.
SYSTEM_PACMAN = "apt-get"

Develop
=======

.. code:: example

pip install -e .

Todos and ideas
===============

- auto commit
- auto-recognize a virtualenv ?
- allow for more than a requirement file for one package manager.
- ask all and apply
- more tests

Bust most of all... use `Guix <https: gnu.org="" software="" guix=""/>`__ !
Release History

Release History

0.1.6

This version

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.5

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.4

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.3

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.2

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

0.1

History Node

TODO: Figure out how to actually get changelog content.

Changelog content for this version goes here.

Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Show More

Download Files

Download Files

TODO: Brief introduction on what you do with files - including link to relevant help section.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
syp-0.1.6-py2.7.egg (23.2 kB) Copy SHA256 Checksum SHA256 2.7 Egg Jan 22, 2017
syp-0.1.6-py2-none-any.whl (17.8 kB) Copy SHA256 Checksum SHA256 2.7 Wheel Jan 22, 2017
syp-0.1.6.tar.gz (8.3 kB) Copy SHA256 Checksum SHA256 Source Jan 22, 2017

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting