Metadata-Version: 1.1
Name: syp
Version: 0.1.5
Summary: Sync your packages with your dotfiles (and vice versa).
Home-page: https://github.com/vindarel/syp
Author: vindarel
Author-email: ehvince@mailz.org
License: GNU GPLv3
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/>`__ !
        
        
        
Keywords: utility packages shell
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: License :: Public Domain
Classifier: Topic :: Utilities
