{ "info": { "author": "", "author_email": "pydavid@baguette.io", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6" ], "description": "==============\nbaguette-olite\n==============\n\n.. image:: https://travis-ci.org/baguette-io/baguette-olite.svg?branch=master\n :target: https://travis-ci.org/baguette-io/baguette-olite\n\nPython wrapper for gitolite. Fork from https://github.com/PressLabs/pyolite.\n\nEasy and simple to user, just `pip install baguette-olite`.\n\nGitolite Setup Prereqs\n======================\n\nUsing Pyolite is very easy, but requires some initial set up. First, your **gitolite-admin** repo must contain a directory called `repos` and another one called \n`groups`, and all `.conf` files in these directories should be included in your `gitolite.conf` file. For example, your **gitolite-admin** repo might have the following structure:\n\n::\n\n \u251c\u2500\u2500 gitolite.conf\n \u2514\u2500\u2500 repos\n \u2514\u2500\u2500 [ empty ]\n \u2514\u2500\u2500 groups\n \u2514\u2500\u2500 [ empty ]\n\nAnd your `gitolite.conf` file might look like this:\n\n::\n\n repo gitolite-admin\n RW+ = admin\n\n repo testing\n RW+ = @all\n\n include\t \"repos/*.conf\"\n include\t \"groups/*.conf\"\n\nThis is required because Pyolite makes changes to files only inside the **repos** and **groups** directories.\n\nRepository API\n==============\n\nFirst, we need to initialize a `pyolite` object with the path to `gitolite`'s repository.\n\n::\n\n from pyolite import Pyolite\n\n # initial olite object\n admin_repository = '/home/absolute/path/to/gitolite/repo/'\n olite = Pyolite(admin_repository=admin_repository)\n\nAfter that, we can create and get a repo using `create` and `get` methods.\n\n::\n\n # create a repo\n repo = olite.repos.get('my_repo')\n repo = olite.repos.create('ydo')\n\n # List existing Pyolite repos\n repos = olite.repos.all()\n for repo_it in repos:\n print(repo_it.name)\n\n\nEvery repo has an `users` object, in order to facilitate basic operations: adding, editing and removing users from a repository.\n\n::\n\n print(\"Repo's users: %s\" % repo.users)\n # list a repo's users\n users_as_list = repo.users.list()\n\n # add a new user\n user = olite.users.create(name='bob', key_path=\"~/.ssh/third_rsa.pub\")\n repo.users.add(olite.users.get('admin'), permission='W+')\n repo.users.add('bob', permission='R')\n\n # change user's permissions\n repo.users.edit(olite.users.get('admin'), permission='WR+')\n repo.users.edit('bob', permission='RCW')\n\n # remove user\n repo.users.remove('admin')\n\nUsers API\n=========\n\nYou an easly manipulate `users` aswell, using allmost the same API.\n\n::\n\n from pyolite import Pyolite\n\n # initial olite object\n admin_repository = '/home/absolute/path/to/gitolite/repo/'\n olite = Pyolite(admin_repository=admin_repository)\n\n # create user object\n vlad = olite.users.create(name='bob',\n key_path='~/.ssh/second_rsa.pub')\n\n # get user by name\n vlad = olite.users.get(name='admin')\n\n # add new key to user\n vlad.keys.append('/path/to/key')\n vlad.keys.append('just put the key here')\n\n # check if user is admin or not\n print(vlad.is_admin)\n\n # list user's keys and repos\n keys_as_list = vlad.list_keys()\n repos_as_list = vlad.list_repos()\n\n # delete a user by name\n deleted_user = olite.users.delete('username')\n print(deleted_user)\n\nGroups API\n==========\n\nYou an easly manipulate `groups` aswell, using allmost the same API.\n\n::\n\n from pyolite import Pyolite\n\n # initial olite object\n admin_repository = '/home/absolute/path/to/gitolite/repo/'\n olite = Pyolite(admin_repository=admin_repository)\n\n # create group object\n group1 = olite.groups.create('group1')\n # create is idempotent\n group1 = olite.groups.create('group1')\n\n #get or create( `create()` wrapper)\n group2 = olite.groups.get_or_create('group2')\n group2 = olite.groups.get_or_create('group2')\n\n # get group by name\n group1 = olite.groups.get('group1')\n\n # list all groups\n olite.groups.all()\n\n # delete a group by name\n olite.groups.delete('group1')\n\n # add an user to the gorup\n olite.groups.user_add('group1', 'user1')\n\n # delete an user from a group\n olite.groups.user_delete('group1', 'user1')\n\n # add a group to a repo\n olite.groups.repo_add('group1', 'repo1', 'RW')\n\n # delete a group from a repo\n olite.groups.repo_delete('group1', 'repo1')\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/baguette-io/baguette-olite/", "keywords": "git", "license": "", "maintainer": "", "maintainer_email": "", "name": "baguette-olite", "package_url": "https://pypi.org/project/baguette-olite/", "platform": "", "project_url": "https://pypi.org/project/baguette-olite/", "project_urls": { "Homepage": "https://github.com/baguette-io/baguette-olite/" }, "release_url": "https://pypi.org/project/baguette-olite/0.13/", "requires_dist": null, "requires_python": "", "summary": "Python wrapper for gitolite", "version": "0.13" }, "last_serial": 3055971, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a570dcd66e0e43be9509512c872f4201", "sha256": "40f50e53f61839067a88785070b416c96e49f873bcff846896291e323aa7a0de" }, "downloads": -1, "filename": "baguette-olite-0.1.tar.gz", "has_sig": false, "md5_digest": "a570dcd66e0e43be9509512c872f4201", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12283, "upload_time": "2017-07-25T09:35:11", "url": "https://files.pythonhosted.org/packages/e3/89/a55a31785f7f99fcd7b98ba13937a75bbedd05cb1feb6a98ab7813941909/baguette-olite-0.1.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "37449bdf8d3b3d25898f95bea6025ea1", "sha256": "63fd4095a0c2ca9a8f45c1b5e1f51616f09e77147d00c4a4b56d2a4c20392e88" }, "downloads": -1, "filename": "baguette-olite-0.11.tar.gz", "has_sig": false, "md5_digest": "37449bdf8d3b3d25898f95bea6025ea1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14412, "upload_time": "2017-07-27T20:50:56", "url": "https://files.pythonhosted.org/packages/34/e1/aa94201b269af7966e059be0badc9d69ee619ff8b02c9c6c4633a9748aeb/baguette-olite-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "15889c14e8c143994c3b4930d5a08ece", "sha256": "835998fe21ee3b2197137e6baaaa741e2a85afdbd960e79eeea3e56c653ed455" }, "downloads": -1, "filename": "baguette-olite-0.12.tar.gz", "has_sig": false, "md5_digest": "15889c14e8c143994c3b4930d5a08ece", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14419, "upload_time": "2017-07-28T09:47:38", "url": "https://files.pythonhosted.org/packages/95/c0/76be72773f5c5b8ba573b8d99d9c5b3100723195338a4dea3cabdf5e1d53/baguette-olite-0.12.tar.gz" } ], "0.13": [ { "comment_text": "", "digests": { "md5": "6c3a9dfd7eabcdbe22e62658a4b837c3", "sha256": "2345689e45a07bb00a82daaee1c5c205c6a5928c1e2ca5441d16aafb5455e261" }, "downloads": -1, "filename": "baguette-olite-0.13.tar.gz", "has_sig": false, "md5_digest": "6c3a9dfd7eabcdbe22e62658a4b837c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14731, "upload_time": "2017-07-28T15:20:57", "url": "https://files.pythonhosted.org/packages/5f/c1/4da7b7af677838cf961d5dc99983874328c4aa4566d5fd8925e789481b5a/baguette-olite-0.13.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6c3a9dfd7eabcdbe22e62658a4b837c3", "sha256": "2345689e45a07bb00a82daaee1c5c205c6a5928c1e2ca5441d16aafb5455e261" }, "downloads": -1, "filename": "baguette-olite-0.13.tar.gz", "has_sig": false, "md5_digest": "6c3a9dfd7eabcdbe22e62658a4b837c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14731, "upload_time": "2017-07-28T15:20:57", "url": "https://files.pythonhosted.org/packages/5f/c1/4da7b7af677838cf961d5dc99983874328c4aa4566d5fd8925e789481b5a/baguette-olite-0.13.tar.gz" } ] }