diff --git a/behave/features/git-login.feature b/behave/features/git-login.feature index 304886cc..bc8f38d3 100644 --- a/behave/features/git-login.feature +++ b/behave/features/git-login.feature @@ -5,21 +5,21 @@ Background: When I execute git-obs with args "login list" Then stdout is """ - Name : admin - Default : true - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Admin - SSH Key : {context.fixtures}/ssh-keys/admin + Name : admin + Default : true + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Admin + Private SSH key path : {context.fixtures}/ssh-keys/admin - Name : alice - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Alice - SSH Key : {context.fixtures}/ssh-keys/alice + Name : alice + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Alice + Private SSH key path : {context.fixtures}/ssh-keys/alice - Name : bob - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Bob - SSH Key : {context.fixtures}/ssh-keys/bob + Name : bob + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Bob + Private SSH key path : {context.fixtures}/ssh-keys/bob """ @@ -34,33 +34,33 @@ Scenario: Add a credentials login entry And stdout is """ Added entry: - Name : example1 - Default : true - URL : https://gitea.example.com - User : Admin + Name : example1 + Default : true + URL : https://gitea.example.com + User : Admin """ When I execute git-obs with args "login list" Then stdout is """ - Name : admin - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Admin - SSH Key : {context.fixtures}/ssh-keys/admin + Name : admin + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Admin + Private SSH key path : {context.fixtures}/ssh-keys/admin - Name : alice - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Alice - SSH Key : {context.fixtures}/ssh-keys/alice + Name : alice + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Alice + Private SSH key path : {context.fixtures}/ssh-keys/alice - Name : bob - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Bob - SSH Key : {context.fixtures}/ssh-keys/bob + Name : bob + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Bob + Private SSH key path : {context.fixtures}/ssh-keys/bob - Name : example1 - Default : true - URL : https://gitea.example.com - User : Admin + Name : example1 + Default : true + URL : https://gitea.example.com + User : Admin """ @@ -75,24 +75,24 @@ Scenario: Remove a credentials login entry And stdout is """ Removed entry: - Name : admin - Default : true - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Admin - SSH Key : {context.fixtures}/ssh-keys/admin + Name : admin + Default : true + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Admin + Private SSH key path : {context.fixtures}/ssh-keys/admin """ When I execute git-obs with args "login list" Then stdout is """ - Name : alice - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Alice - SSH Key : {context.fixtures}/ssh-keys/alice + Name : alice + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Alice + Private SSH key path : {context.fixtures}/ssh-keys/alice - Name : bob - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Bob - SSH Key : {context.fixtures}/ssh-keys/bob + Name : bob + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Bob + Private SSH key path : {context.fixtures}/ssh-keys/bob """ @@ -107,32 +107,32 @@ Scenario: Update a credentials login entry And stdout is """ Original entry: - Name : alice - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Alice - SSH Key : {context.fixtures}/ssh-keys/alice + Name : alice + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Alice + Private SSH key path : {context.fixtures}/ssh-keys/alice Updated entry: - Name : NEW_NAME - Default : true - URL : NEW_URL - User : NEW_USER + Name : NEW_NAME + Default : true + URL : NEW_URL + User : NEW_USER """ When I execute git-obs with args "login list" Then stdout is """ - Name : admin - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Admin - SSH Key : {context.fixtures}/ssh-keys/admin + Name : admin + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Admin + Private SSH key path : {context.fixtures}/ssh-keys/admin - Name : NEW_NAME - Default : true - URL : NEW_URL - User : NEW_USER + Name : NEW_NAME + Default : true + URL : NEW_URL + User : NEW_USER - Name : bob - URL : http://localhost:{context.podman.container.ports[gitea_http]} - User : Bob - SSH Key : {context.fixtures}/ssh-keys/bob + Name : bob + URL : http://localhost:{context.podman.container.ports[gitea_http]} + User : Bob + Private SSH key path : {context.fixtures}/ssh-keys/bob """ diff --git a/osc/commands_git/login_add.py b/osc/commands_git/login_add.py index c6364f1d..005dde43 100644 --- a/osc/commands_git/login_add.py +++ b/osc/commands_git/login_add.py @@ -15,12 +15,12 @@ class LoginAddCommand(osc.commandline_git.GitObsCommand): def init_arguments(self): from osc.commandline_git import complete_ssh_key_path - self.parser.add_argument("name") - self.parser.add_argument("--url", required=True) - self.parser.add_argument("--user", required=True) - self.parser.add_argument("--token", help="Omit or set to '-' to invoke a secure interactive prompt.") - self.parser.add_argument("--ssh-key").completer = complete_ssh_key_path - self.parser.add_argument("--set-as-default", action="store_true", default=None) + self.parser.add_argument("name", help="The name of the login entry to be added") + self.parser.add_argument("--url", help="Gitea URL, for example https://example.com", required=True) + self.parser.add_argument("--user", help="Gitea username", required=True) + self.parser.add_argument("--token", help="Gitea access token; omit or set to '-' to invoke a secure interactive prompt") + self.parser.add_argument("--ssh-key", metavar="PATH", help="Path to a private SSH key").completer = complete_ssh_key_path + self.parser.add_argument("--set-as-default", help="Set the new login entry as default", action="store_true", default=None) def run(self, args): from osc import gitea_api diff --git a/osc/commands_git/login_remove.py b/osc/commands_git/login_remove.py index 05300093..23ea80b3 100644 --- a/osc/commands_git/login_remove.py +++ b/osc/commands_git/login_remove.py @@ -14,7 +14,7 @@ class LoginRemoveCommand(osc.commandline_git.GitObsCommand): def init_arguments(self): from osc.commandline_git import complete_login - self.parser.add_argument("name").completer = complete_login + self.parser.add_argument("name", help="The name of the login entry to be removed").completer = complete_login def run(self, args): print(f"Removing a Gitea credentials entry with name '{args.name}' ...", file=sys.stderr) diff --git a/osc/commands_git/login_update.py b/osc/commands_git/login_update.py index 1a39434f..4de092a0 100644 --- a/osc/commands_git/login_update.py +++ b/osc/commands_git/login_update.py @@ -15,13 +15,13 @@ class LoginUpdateCommand(osc.commandline_git.GitObsCommand): def init_arguments(self): from osc.commandline_git import complete_ssh_key_path - self.parser.add_argument("name") - self.parser.add_argument("--new-name") - self.parser.add_argument("--new-url") - self.parser.add_argument("--new-user") - self.parser.add_argument("--new-token", help="Set to '-' to invoke a secure interactive prompt.") - self.parser.add_argument("--new-ssh-key").completer = complete_ssh_key_path - self.parser.add_argument("--set-as-default", action="store_true") + self.parser.add_argument("name", help="The name of the login entry to be updated") + self.parser.add_argument("--new-name", help="New name of the login entry") + self.parser.add_argument("--new-url", metavar="URL", help="New Gitea URL, for example https://example.com",) + self.parser.add_argument("--new-user", metavar="USER", help="Gitea username") + self.parser.add_argument("--new-token", metavar="TOKEN", help="Gitea access token; set to '-' to invoke a secure interactive prompt") + self.parser.add_argument("--new-ssh-key", metavar="PATH", help="Path to a private SSH key").completer = complete_ssh_key_path + self.parser.add_argument("--set-as-default", action="store_true", help="Set the login entry as default") def run(self, args): print(f"Updating a Gitea credentials entry with name '{args.name}' ...", file=sys.stderr) diff --git a/osc/gitea_api/conf.py b/osc/gitea_api/conf.py index d5c861f3..fa200e0b 100644 --- a/osc/gitea_api/conf.py +++ b/osc/gitea_api/conf.py @@ -53,14 +53,14 @@ class Login(BaseModel): def to_human_readable_string(self, *, show_token: bool = False): from osc.output import KeyValueTable - table = KeyValueTable() + table = KeyValueTable(min_key_length=20) table.add("Name", self.name, color="bold") if self.default: table.add("Default", "true", color="bold") table.add("URL", self.url) table.add("User", self.user) if self.ssh_key: - table.add("SSH Key", self.ssh_key) + table.add("Private SSH key path", self.ssh_key) if show_token: # tokens are stored in the plain text, there's not reason to protect them too much # let's only hide them from the output by default