{"id":15650498,"url":"https://github.com/koudaiii/qucli","last_synced_at":"2025-04-30T18:08:31.044Z","repository":{"id":57506257,"uuid":"78281484","full_name":"koudaiii/qucli","owner":"koudaiii","description":"Manage repositories in Quay.io","archived":false,"fork":false,"pushed_at":"2019-04-19T13:00:57.000Z","size":98,"stargazers_count":36,"open_issues_count":7,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-30T18:08:24.582Z","etag":null,"topics":["cli","docker","go","golang","quay","registry"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/koudaiii.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-07T13:47:38.000Z","updated_at":"2024-11-06T21:58:58.000Z","dependencies_parsed_at":"2022-08-29T20:00:45.119Z","dependency_job_id":null,"html_url":"https://github.com/koudaiii/qucli","commit_stats":null,"previous_names":["koudaiii/qcli","koudaiii/dockerepos"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koudaiii%2Fqucli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koudaiii%2Fqucli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koudaiii%2Fqucli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/koudaiii%2Fqucli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/koudaiii","download_url":"https://codeload.github.com/koudaiii/qucli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251758167,"owners_count":21638989,"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","docker","go","golang","quay","registry"],"created_at":"2024-10-03T12:34:52.192Z","updated_at":"2025-04-30T18:08:31.003Z","avatar_url":"https://github.com/koudaiii.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qucli\n\n[![Build Status](https://travis-ci.org/koudaiii/qucli.svg?branch=master)](https://travis-ci.org/koudaiii/qucli)\n[![Docker Repository on Quay](https://quay.io/repository/koudaiii/qucli/status \"Docker Repository on Quay\")](https://quay.io/repository/koudaiii/qucli)\n[![GitHub release](https://img.shields.io/github/release/koudaiii/qucli.svg)](https://github.com/koudaiii/qucli/releases)\n\n## Description\n\nManage repositories in Quay.io\n\n## Table of Contents\n\n* [qucli](#qucli)\n  * [Description](#description)\n  * [Table of Contents](#table-of-contents)\n  * [Requirements](#requirements)\n  * [Installation](#installation)\n    * [Using Homebrew (OS X only)](#using-homebrew-os-x-only)\n    * [Precompiled binary](#precompiled-binary)\n    * [From source](#from-source)\n    * [Run in a Docker container](#run-in-a-docker-container)\n  * [Usage](#usage)\n    * [list](#list)\n    * [get](#get)\n    * [create](#create)\n    * [delete](#delete)\n    * [add-user](#add-user)\n    * [add-team](#add-team)\n    * [delete-user](#delete-user)\n    * [delete-team](#delete-team)\n    * [add-notification](#add-notification)\n    * [test-notification](#test-notification)\n    * [delete-notification](#delete-notification)\n    * [Options](#options)\n  * [Development](#development)\n  * [Contribution](#contribution)\n  * [Author](#author)\n  * [License](#license)\n\n## Requirements\n\n- Enviroment QUAY_API_TOKEN\n- Get Api Token. [Applications and Tokens](https://docs.quay.io/api/)\n\n```shell-session\n$ export QUAY_API_TOKEN=foobar\n```\n\nif Quay Enterprise user, add Enviroment QUAY_HOSTNAME or `--hostname`\n\n```shell-session\n$ export QUAY_HOSTNAME=quay.example.com\nor\n$ qucli xxx --hostname=quay.example.com\n```\n\n## Installation\n\n### Using Homebrew (OS X only)\n\nFormula is available at [koudaiii/homebrew-tools](https://github.com/koudaiii/homebrew-tools).\n\n```shell-session\n$ brew tap koudaiii/tools\n$ brew install qucli\n```\n\n### Precompiled binary\n\nPrecompiled binaries for Windows, OS X, Linux are available at [Releases](https://github.com/koudaiii/qucli/releases).\n\n### From source\nTo install, use `go get`:\n\n```shell-session\n$ go get -d github.com/koudaiii/qucli\n$ cd $GOPATH/src/github.com/koudaiii/qucli\n$ make deps\n$ make install\n```\n\n### Run in a Docker container\n\ndocker image is available at [quay.io/koudaiii/qucli](https://quay.io/repository/koudaiii/qucli).\n\n```shell-session\n# -t is required to colorize logs\n$ docker run \\\n    --rm \\\n    -t \\\n    -e QUAY_API_TOKEN=foobar \\\n    -e QUAY_HOSTNAME=quay.io \\\n    quay.io/koudaiii/qucli:latest\n```\n\n## Usage\n\n```shell-session\n$ qucli\nusage: qucli [--version] [--help] \u003ccommand\u003e [\u003cargs\u003e]\n\nAvailable commands are:\n    add-notification       Add notification in repository\n    add-team               Add team in repository\n    add-user               Add user in repository\n    create                 Create repository in Quay\n    delete                 Delete repository in Quay\n    delete-notification    Delete notification in repository\n    delete-team            Delete team in repository\n    delete-user            Delete user in repository\n    get                    Get Repository and Permissions and Notifications in Quay\n    list                   List repository and Permissions in Quay\n    test-notification      Test notification in repository\n    version                Print qucli version and quit\n```\n\n### `list`\n\nList repository in namespace\n\nWith `--is-public` option, you can `true` or `false`\n\n```bsah\n$ qucli list koudaiii\nNAME\t\t\t\tisPublic\tDESCRIPTION\nquay.io/koudaiii/apig-sample\ttrue\nquay.io/koudaiii/qucli\ttrue\nquay.io/koudaiii/kubeps\t\ttrue\nquay.io/koudaiii/test\t\ttrue\n```\n\n### `get`\n\nGet repository and Permissions in Quay\n\n```shell-session\n$ qucli get koudaiii/test\nRepository:\n\tquay.io/koudaiii/test\nVisibility:\n\tprivate\nPermissions:\n\tkoudaiii(admin)\nNotifications:\n\tb0736be9-f0eb-4c3c-8d33-2e331b1e5b0f\tSome title\trepo_push\tmap[]\tslack\tmap[url:https://hooks.slack.com/service/some/token/here]\n```\n\n### `create`\n\nCreate repository in Quay\n\nWith `--visibility` option, you can `public` or `private`\n\n```shell-session\n$ qucli create koudaiii/test --visibility private\nCreated! quay.io/koudaiii/test\n```\n\n### `delete`\n\nDelete repository in Quay\n\n```shell-session\n$ qucli delete koudaiii/test\nDeleted! quay.io/koudaiii/test\n```\n\n```shell-session\n$ qucli get koudaiii/test\nerr: HTTP error!\nURL: https://quay.io/api/v1/repository/koudaiii/test\nstatus code: 404\nbody:\n{\"status\": 404, \"error_message\": \"Not Found\", \"title\": \"not_found\", \"error_type\": \"not_found\", \"detail\": \"Not Found\", \"type\": \"https://quay.io/api/v1/error/not_found\"}\n```\n\n### `add-user`\n\nAdd user in repository\n\nWith `--role` option, you can `read` or `write` or `admin`\n\n```shell-session\n$ qucli add-user koudaiii/test dtan4 --role write\nAdded! dtan4(write) in quay.io/koudaiii/test\n```\n\n```shell-session\n$ qucli get koudaiii/test\nRepository:\n\tquay.io/koudaiii/test\nVisibility:\n\tprivate\nPermissions:\n\tkoudaiii(admin)\n\tdtan4(write)\n```\n\n### `add-team`\n\nAdd team in repository\n\nWith `--role` option, you can `read` or `write` or `admin`\n\n```shell-session\n$ qucli add-team koudaiii/test infrastructure --role write\nAdded! infrastructure(write) in quay.io/koudaiii/test\n```\n\n```shell-session\n$ qucli get koudaiii/test\nRepository:\n\tquay.io/koudaiii/test\nVisibility:\n\tprivate\nPermissions:\n\tkoudaiii(admin)\n\tdtan4(write)\n\tinfrastructure(write)\n```\n\n### `delete-user`\n\nDelete user from repository\n\n```shell-session\n$ qucli delete-user koudaiii/test dtan4\nDeleted! dtan4 in quay.io/koudaiii/test\n```\n\n```shell-session\n$ qucli get koudaiii/test\nRepository:\n\tquay.io/koudaiii/test\nVisibility:\n\tprivate\nPermissions:\n\tkoudaiii(admin)\n\tinfrastructure(write)\n```\n\n### `delete-team`\n\nDelete team from repository\n\n```shell-session\n$ qucli delete-team koudaiii/test infrastructure\nDeleted! infrastructure in quay.io/koudaiii/test\n```\n\n```shell-session\n$ qucli get koudaiii/test\nRepository:\n\tquay.io/koudaiii/test\nVisibility:\n\tprivate\nPermissions:\n\tkoudaiii(admin)\n```\n\n### `add-notification`\n\nAdd notification in repository with some options.\n\n- `webhook` method\n\n```shell-session\n$ qucli add-notification koudaiii/test --event=\"repo_push\" --method=\"webhook\" --url=\"http://url/goes/here\"\nAdded! \t3c3c142c-2161-42ae-9414-39c787386b5c\t\trepo_push\tmap[]\twebhook\tmap[url:http://url/goes/here]\tin quay.io/koudaiii/test\n```\n\n- `slack` method\n\n```shell-session\n$ qucli add-notification koudaiii/test --event=\"repo_push\" --method=\"slack\" --url=\"https://hooks.slack.com/service/{some}/{token}/{here}\"\nAdded! \t61ae254f-89f0-4a36-a439-9b78004f2ab0\t\trepo_push\tmap[]\tslack\tmap[url:https://hooks.slack.com/service/{some}/{token}/{here}]\tin quay.io/koudaiii/test\n```\n\n- options\n\n```shell-session\n$ qucli add-notification\nqucli supported only Quay.io\nUsage: add-notification\n  qucli add-notification koudaiii/qucli --event=\"repo_push\" --method=\"webhook\" --url=\"http://url/goes/here\"\n\nOption:\n  --event string        set 'evnet'.  ['repo_push', 'build_queued', 'build_start', 'build_success', 'build_failure', 'build_cancelled', 'vulnerability_found'].\n  --level string        if you use 'vulnerability_found' evnet, A vulnerability must have a severity of the chosen level (highest level is 0).[0-6]\n  --ref string          if you use event excluding 'repo_push' event, an optional regular expression for matching the git branch or tag git ref. If left blank, the notification will fire for all builds.(refs/heads/somebranch)|(refs/tags/sometag)\n  --method string       set 'method'.  ['webhook', 'slack', 'email'].\n  --email string        if you use 'email' method, set E-mail address. 'test@example.com'.\n  --url string          if you use 'webhook' or 'slack' method, set url. 'http://url/goes/here' or 'https://hooks.slack.com/service/{some}/{token}/{here}'.\n  --title string        The title for a notification is an optional field for a human-readable title for the notification.\n```\n\n### `test-notification`\n\nTest notification from repository.\n\n```shell-session\n$ qucli test-notification koudaiii/qucli 0c91e746-9d9e-4845-8dff-3c0995976dfa\nTest Notification! 0c91e746-9d9e-4845-8dff-3c0995976dfa notification in quay.io/koudaiii/qucli\n```\n\n### `delete-notification`\n\nDelete notification from repository.\n\n```shell-session\n$ ./bin/qucli delete-notification koudaiii/test 3c3c142c-2161-42ae-9414-39c787386b5c\nDeleted! 3c3c142c-2161-42ae-9414-39c787386b5c notification in quay.io/koudaiii/test\n```\n\n### Options\n\n|Option|Description|Required|Default|\n|---------|-----------|-------|-------|\n|`--visibility=VISIBILITY`| \"visibility set to 'public' or 'private'||`public`|\n|`--role=ROLE`|role to use for the user or team ROLE='read' or 'write' or 'admin'||`read`|\n|`--is-public=bool`| repository type is public. `true` or `false`||`true`|\n|`--hostname=HOSTNAME`| if Quay Enterprise user, set hostname. ||`quay.io`|\n|`--event=EVENT` | set 'evnet'. EVENT='repo_push' or 'build_queued' or 'build_start' or 'build_success' or 'build_failure' or 'build_cancelled' or 'vulnerability_found'. |true||\n|`--level=LEVEL`| if you use 'vulnerability_found' evnet, A vulnerability must have a severity of the chosen level (highest level is 0).LEVEL=0-6 |||\n|`--ref=REF`|if you use event excluding 'repo_push' event, an optional regular expression for matching the git branch or tag git ref. If left blank, the notification will fire for all builds.(refs/heads/somebranch) or (refs/tags/sometag) |||\n|`--method=METHOD`|set 'method'.  METHOD='webhook' or 'slack' or 'email'.|true||\n|`--email=EMAIL`|if you use 'email' method, set E-mail address. EMAIL='test@example.com'.|||\n|`--url=URL`|if you use 'webhook' or 'slack' method, set url. 'http://url/goes/here' or 'https://hooks.slack.com/service/{some}/{token}/{here}'.|||\n|`--title=TITLE`|The title for a notification is an optional field for a human-readable title for the notification.|||\n|`--help`|Print command line usage|||\n|`-v`, `--version`|Print version|||\n\n## Development\n\nClone this repository and build using `make`.\n\n```shell-session\n$ go get -d github.com/koudaiii/qucli\n$ cd $GOPATH/src/github.com/koudaiii/qucli\n$ make\n```\n\n## Contribution\n\n1. Fork ([https://github.com/koudaiii/qucli/fork](https://github.com/koudaiii/qucli/fork))\n1. Create a feature branch\n1. Commit your changes\n1. Rebase your local changes against the master branch\n1. Run test suite with the `go test ./...` command and confirm that it passes\n1. Run `gofmt -s`\n1. Create a new Pull Request\n\n## Author\n\n[koudaiii](https://github.com/koudaiii)\n\n## License\n\n[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoudaiii%2Fqucli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkoudaiii%2Fqucli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkoudaiii%2Fqucli/lists"}