{"id":17144991,"url":"https://github.com/vshn/concierge-cli","last_synced_at":"2025-04-12T14:21:54.550Z","repository":{"id":34279193,"uuid":"173348899","full_name":"vshn/concierge-cli","owner":"vshn","description":"Companion CLI for Concierge to bulk-manage repository projects.","archived":false,"fork":false,"pushed_at":"2024-12-24T18:24:09.000Z","size":136,"stargazers_count":8,"open_issues_count":18,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-26T08:51:36.551Z","etag":null,"topics":["cli","concierge","gitlab","python3","vshn-project-ignore"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/concierge-cli/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vshn.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-01T18:22:02.000Z","updated_at":"2023-04-12T07:53:01.000Z","dependencies_parsed_at":"2023-10-02T23:40:28.084Z","dependency_job_id":"6be563d0-51b2-43ea-bdc1-702d88c0768f","html_url":"https://github.com/vshn/concierge-cli","commit_stats":{"total_commits":121,"total_committers":10,"mean_commits":12.1,"dds":"0.38842975206611574","last_synced_commit":"b5348d5575dd2c95c292d645954d07b83f75a964"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fconcierge-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fconcierge-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fconcierge-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vshn%2Fconcierge-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vshn","download_url":"https://codeload.github.com/vshn/concierge-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248578878,"owners_count":21127717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","concierge","gitlab","python3","vshn-project-ignore"],"created_at":"2024-10-14T21:04:01.774Z","updated_at":"2025-04-12T14:21:54.516Z","avatar_url":"https://github.com/vshn.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Concierge-cli |latest-version|\n==============================\n\n|checks-status| |tests-status| |health| |python-support| |license|\n\nCompanion CLI for `Concierge`_, the Configuration management \u0026 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\u0026logo=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\u0026logo=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 \u003e= 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=\u003credacted\u003e\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 \u003e configs/foo-bar/managed_modules.yml\n    $ git add -v configs/foo-bar/managed_modules.yml\n    $ git status \u0026\u0026 git commit -m 'Added ...' \u0026\u0026 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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvshn%2Fconcierge-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvshn%2Fconcierge-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvshn%2Fconcierge-cli/lists"}