Concierge-cli |latest-version|
==============================
|checks-status| |tests-status| |health| |python-support| |license|
Companion CLI for `Concierge`_, the Configuration management & CI solution
for aligning your multitude of Git repositories. Allows you to bulk-manage
properties of your Git repository projects. Currently, GitLab is supported.
.. |latest-version| image:: https://img.shields.io/pypi/v/concierge-cli.svg
:alt: Latest version on PyPI
:target: https://pypi.org/project/concierge-cli
.. |checks-status| image:: https://img.shields.io/github/workflow/status/vshn/concierge-cli/Checks/master?label=Checks&logo=github
:alt: GitHub Workflow Status
:target: https://github.com/vshn/concierge-cli/actions?query=workflow%3AChecks
.. |tests-status| image:: https://img.shields.io/github/workflow/status/vshn/concierge-cli/Tests/master?label=Tests&logo=github
:alt: GitHub Workflow Status
:target: https://github.com/vshn/concierge-cli/actions?query=workflow%3ATests
.. |health| image:: https://img.shields.io/codacy/grade/363c38ca95b941438b442afb64591892/master.svg
:target: https://www.codacy.com/app/VSHN/concierge-cli
:alt: Code health
.. |python-support| image:: https://img.shields.io/pypi/pyversions/concierge-cli.svg
:alt: Python versions
:target: https://pypi.org/project/concierge-cli
.. |license| image:: https://img.shields.io/pypi/l/concierge-cli.svg
:alt: Software license
:target: https://github.com/vshn/concierge-cli/blob/master/LICENSE
.. _Concierge: https://hub.docker.com/r/vshn/concierge/
Why Should I Use This Tool?
---------------------------
Concierge-cli helps you analyze and bulk-update the repository projects you
manage (e.g. set topics on projects, generate project lists for ModuleSync).
Installation
------------
From PyPI:
.. code-block:: console
$ pip install concierge-cli
**Note:** You need Python >= 3.6, otherwise your installation will not
succeed (`python-gitlab`_ v2.0.0 dropped support for older Pythons).
You can use Pipenv to work around this limitation:
.. code-block:: console
$ pip install pipenv
$ pipenv shell --three
$ pip install concierge-cli
.. _python-gitlab: https://pypi.org/project/python-gitlab/
Preparation
-----------
You need an `access token`_ of a GitLab user to access resources through the
API. For groups and group membership this needs to be an administrator user.
You may also want to `disable notifications`_ of the user(s) you plan to
perform bulk updates on, to avoid sending out massive amounts of emails.
.. _access token: https://gitlab.com/profile/personal_access_tokens
.. _disable notifications: https://gitlab.com/profile/notifications
Set the GitLab URI and TOKEN as environment variables (if you want to avoid
using the ``--token`` and/or ``--uri`` options):
.. code-block:: console
$ export CONCIERGE_GITLAB_URI=https://git.example.com/
$ export CONCIERGE_GITLAB_TOKEN=<redacted>
Usage Patterns
--------------
#. Manage `project topics`_
#. List projects by topic
#. List (and merge) merge requests by project
#. Manage `group membership`_ and permissions
.. _project topics: https://docs.gitlab.com/ce/user/project/settings/
.. _group membership: https://docs.gitlab.com/ce/user/group/#add-users-to-a-group
Manage topics
^^^^^^^^^^^^^
List all projects (for a private GitLab) that have no topics yet:
.. code-block:: console
$ concierge-cli gitlab --uri https://git.vs.hn topics --empty
List all projects "foo" or similar in group "bar" or similar: (on GitLab.com)
.. code-block:: console
$ concierge-cli gitlab topics bar/foo --empty
Set topics on all those projects:
.. code-block:: console
$ concierge-cli gitlab topics bar/foo --empty --set-topic Puppet --set-topic Ansible
List all projects *with* topics now: (double-check)
.. code-block:: console
$ concierge-cli gitlab topics bar/foo
List projects
^^^^^^^^^^^^^
Print a YAML list of all projects matching a topic:
.. code-block:: console
$ concierge-cli gitlab projects --topic Puppet
Update the list of modules Concierge manages with a specific configuration:
.. code-block:: console
$ concierge-cli gitlab projects --topic Puppet > configs/foo-bar/managed_modules.yml
$ git add -v configs/foo-bar/managed_modules.yml
$ git status && git commit -m 'Added ...' && git push
Merge requests
^^^^^^^^^^^^^^
List of all merge requests of a project, optionally matching labels:
.. code-block:: console
$ concierge-cli gitlab mrs mygroup/myproject --label mylabel
Add ``--merge yes`` to trigger merging all found requests.
Group membership
^^^^^^^^^^^^^^^^
List all groups where user is not yet a member of:
.. code-block:: console
$ concierge-cli gitlab groups --no-member my.user.name
Add user to all those groups:
.. code-block:: console
$ concierge-cli gitlab groups --no-member my.user.name \
--set-permission maintainer
List a user's group memberships and permissions:
.. code-block:: console
$ concierge-cli gitlab groups my.user.name
Remove a user from selected groups:
.. code-block:: console
$ concierge-cli gitlab groups my.user.name \
--group-filter a-group-name \
--set-permission none
Found a bug? Need a new feature?
--------------------------------
Please see our `Contribution Guide`_ if you want to help out!
.. _Contribution Guide:
https://github.com/vshn/concierge-cli/blob/master/CONTRIBUTING.md
Raw data
{
"_id": null,
"home_page": "https://github.com/vshn/concierge-cli",
"name": "concierge-cli",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "cli,gitlab,maintenance",
"author": "VSHN AG",
"author_email": "tech@vshn.ch",
"download_url": "https://files.pythonhosted.org/packages/ec/bf/a6f14ee89a00af52f8b52e89bbd9646a1980787482663fdd846c38e6a79c/concierge-cli-1.7.2.tar.gz",
"platform": null,
"description": "Concierge-cli |latest-version|\n==============================\n\n|checks-status| |tests-status| |health| |python-support| |license|\n\nCompanion CLI for `Concierge`_, the Configuration management & CI solution\nfor aligning your multitude of Git repositories. Allows you to bulk-manage\nproperties of your Git repository projects. Currently, GitLab is supported.\n\n.. |latest-version| image:: https://img.shields.io/pypi/v/concierge-cli.svg\n :alt: Latest version on PyPI\n :target: https://pypi.org/project/concierge-cli\n.. |checks-status| image:: https://img.shields.io/github/workflow/status/vshn/concierge-cli/Checks/master?label=Checks&logo=github\n :alt: GitHub Workflow Status\n :target: https://github.com/vshn/concierge-cli/actions?query=workflow%3AChecks\n.. |tests-status| image:: https://img.shields.io/github/workflow/status/vshn/concierge-cli/Tests/master?label=Tests&logo=github\n :alt: GitHub Workflow Status\n :target: https://github.com/vshn/concierge-cli/actions?query=workflow%3ATests\n.. |health| image:: https://img.shields.io/codacy/grade/363c38ca95b941438b442afb64591892/master.svg\n :target: https://www.codacy.com/app/VSHN/concierge-cli\n :alt: Code health\n.. |python-support| image:: https://img.shields.io/pypi/pyversions/concierge-cli.svg\n :alt: Python versions\n :target: https://pypi.org/project/concierge-cli\n.. |license| image:: https://img.shields.io/pypi/l/concierge-cli.svg\n :alt: Software license\n :target: https://github.com/vshn/concierge-cli/blob/master/LICENSE\n\n.. _Concierge: https://hub.docker.com/r/vshn/concierge/\n\nWhy Should I Use This Tool?\n---------------------------\n\nConcierge-cli helps you analyze and bulk-update the repository projects you\nmanage (e.g. set topics on projects, generate project lists for ModuleSync).\n\nInstallation\n------------\n\nFrom PyPI:\n\n.. code-block:: console\n\n $ pip install concierge-cli\n\n**Note:** You need Python >= 3.6, otherwise your installation will not\nsucceed (`python-gitlab`_ v2.0.0 dropped support for older Pythons).\nYou can use Pipenv to work around this limitation:\n\n.. code-block:: console\n\n $ pip install pipenv\n $ pipenv shell --three\n $ pip install concierge-cli\n\n.. _python-gitlab: https://pypi.org/project/python-gitlab/\n\nPreparation\n-----------\n\nYou need an `access token`_ of a GitLab user to access resources through the\nAPI. For groups and group membership this needs to be an administrator user.\nYou may also want to `disable notifications`_ of the user(s) you plan to\nperform bulk updates on, to avoid sending out massive amounts of emails.\n\n.. _access token: https://gitlab.com/profile/personal_access_tokens\n.. _disable notifications: https://gitlab.com/profile/notifications\n\nSet the GitLab URI and TOKEN as environment variables (if you want to avoid\nusing the ``--token`` and/or ``--uri`` options):\n\n.. code-block:: console\n\n $ export CONCIERGE_GITLAB_URI=https://git.example.com/\n $ export CONCIERGE_GITLAB_TOKEN=<redacted>\n\nUsage Patterns\n--------------\n\n#. Manage `project topics`_\n#. List projects by topic\n#. List (and merge) merge requests by project\n#. Manage `group membership`_ and permissions\n\n.. _project topics: https://docs.gitlab.com/ce/user/project/settings/\n.. _group membership: https://docs.gitlab.com/ce/user/group/#add-users-to-a-group\n\nManage topics\n^^^^^^^^^^^^^\n\nList all projects (for a private GitLab) that have no topics yet:\n\n.. code-block:: console\n\n $ concierge-cli gitlab --uri https://git.vs.hn topics --empty\n\nList all projects \"foo\" or similar in group \"bar\" or similar: (on GitLab.com)\n\n.. code-block:: console\n\n $ concierge-cli gitlab topics bar/foo --empty\n\nSet topics on all those projects:\n\n.. code-block:: console\n\n $ concierge-cli gitlab topics bar/foo --empty --set-topic Puppet --set-topic Ansible\n\nList all projects *with* topics now: (double-check)\n\n.. code-block:: console\n\n $ concierge-cli gitlab topics bar/foo\n\nList projects\n^^^^^^^^^^^^^\n\nPrint a YAML list of all projects matching a topic:\n\n.. code-block:: console\n\n $ concierge-cli gitlab projects --topic Puppet\n\nUpdate the list of modules Concierge manages with a specific configuration:\n\n.. code-block:: console\n\n $ concierge-cli gitlab projects --topic Puppet > configs/foo-bar/managed_modules.yml\n $ git add -v configs/foo-bar/managed_modules.yml\n $ git status && git commit -m 'Added ...' && git push\n\nMerge requests\n^^^^^^^^^^^^^^\n\nList of all merge requests of a project, optionally matching labels:\n\n.. code-block:: console\n\n $ concierge-cli gitlab mrs mygroup/myproject --label mylabel\n\nAdd ``--merge yes`` to trigger merging all found requests.\n\nGroup membership\n^^^^^^^^^^^^^^^^\n\nList all groups where user is not yet a member of:\n\n.. code-block:: console\n\n $ concierge-cli gitlab groups --no-member my.user.name\n\nAdd user to all those groups:\n\n.. code-block:: console\n\n $ concierge-cli gitlab groups --no-member my.user.name \\\n --set-permission maintainer\n\nList a user's group memberships and permissions:\n\n.. code-block:: console\n\n $ concierge-cli gitlab groups my.user.name\n\nRemove a user from selected groups:\n\n.. code-block:: console\n\n $ concierge-cli gitlab groups my.user.name \\\n --group-filter a-group-name \\\n --set-permission none\n\nFound a bug? Need a new feature?\n--------------------------------\n\nPlease see our `Contribution Guide`_ if you want to help out!\n\n.. _Contribution Guide:\n https://github.com/vshn/concierge-cli/blob/master/CONTRIBUTING.md\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Concierge repository projects management CLI.",
"version": "1.7.2",
"split_keywords": [
"cli",
"gitlab",
"maintenance"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d00660cd9bb1868847a324c6c2e81bd55ffcce7470b8e0a582e7525d876c4957",
"md5": "3dfdd5ebcea73c95b0d0195de4713947",
"sha256": "ea945389c2784fac866c7e3dff5c26c7b2e69d835f5f8ddd14d7712cadf599ee"
},
"downloads": -1,
"filename": "concierge_cli-1.7.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3dfdd5ebcea73c95b0d0195de4713947",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 11353,
"upload_time": "2023-02-01T16:46:36",
"upload_time_iso_8601": "2023-02-01T16:46:36.487786Z",
"url": "https://files.pythonhosted.org/packages/d0/06/60cd9bb1868847a324c6c2e81bd55ffcce7470b8e0a582e7525d876c4957/concierge_cli-1.7.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ecbfa6f14ee89a00af52f8b52e89bbd9646a1980787482663fdd846c38e6a79c",
"md5": "1bf425134c65f21c811ccbdb0354f5f1",
"sha256": "2f854d542df501167abde94b8bba436be61bc11a27678f445f513ffc1837a94f"
},
"downloads": -1,
"filename": "concierge-cli-1.7.2.tar.gz",
"has_sig": false,
"md5_digest": "1bf425134c65f21c811ccbdb0354f5f1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 11934,
"upload_time": "2023-02-01T16:46:38",
"upload_time_iso_8601": "2023-02-01T16:46:38.246026Z",
"url": "https://files.pythonhosted.org/packages/ec/bf/a6f14ee89a00af52f8b52e89bbd9646a1980787482663fdd846c38e6a79c/concierge-cli-1.7.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-02-01 16:46:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "vshn",
"github_project": "concierge-cli",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "concierge-cli"
}