Source code for citadel.nodes.pypirc

#!/usr/bin/env python

import citadel.nodes.node
import citadel.tools


[docs]class Pypirc(citadel.nodes.node.Base): """:synopsis: Sets up a .pypirc configuration in the current dir. :requirements: None :platform: Any **Usage** .. code-block:: yaml :linenos: pypirc: pypi: repository: https://example.com/pypi username: <username> password: <password> other: repository: https://example.com/other username: <username> password: <password> .. warning:: Avoid authentication tokens in plain text. CITADel does a best effort to remove them from the logs (anything containing the *password* string), but it's a very imperfect method. Generates a .pypirc in the current directory to allow custom package installation without super user privileges. The file is generating using the same format as describe in the package index section of the official distutils documentation. In addition to generating the .pypirc file itself it also re-sets the $HOME variable to the current directory to ensure all packages are installed in the local directory. Finally, adds the ``$HOME/.local/bin`` to $PATH so that any installed packages can be used as if they were globally installed. This directive depends on a working internet connection. If any proxy is required, remember to specific it either in the ``environment`` directive or directly passing the http proxy's options using the ``-e "http_proxy=value"`` options through ``citadel-generate``. """ def __init__(self, yml, path): super(Pypirc, self).__init__(yml, path) self.output.append(self.generate_pypirc(yml))
[docs] def generate_pypirc(self, pypirc): """Generate a .pypirc file.""" out = """[distutils] index-servers = """ out += '\n '.join(pypirc.keys()) out += '\n' for index_server, properties in pypirc.items(): out += '\n[%s]\n' % (index_server) for k, v in properties.items(): out += "%s = %s\n" % (k, v) return """echo "%s" > .pypirc echo "Re-setting HOME variable so the correct .pypirc file is read." export HOME=$PWD echo "Adding $(pwd)/.local/bin to PATH..." export PATH=$PATH:$(pwd)/.local/bin """ % (out)