This repository has been archived by the owner on Apr 27, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
1eae717
commit 9ea7b2f
Showing
4 changed files
with
110 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
""" | ||
This is a fork of the extension for the python | ||
``click`` module to provide a group or command | ||
with aliases. | ||
Original project: https://github.com/click-contrib/click-aliases | ||
""" | ||
|
||
import click | ||
|
||
_click7 = click.__version__[0] >= '7' | ||
|
||
|
||
class ClickAliasedGroup(click.Group): | ||
def __init__(self, *args, **kwargs): | ||
super(ClickAliasedGroup, self).__init__(*args, **kwargs) | ||
self._commands = {} | ||
self._aliases = {} | ||
|
||
def add_command(self, *args, **kwargs): | ||
aliases = kwargs.pop('aliases', []) | ||
super(ClickAliasedGroup, self).add_command(*args, **kwargs) | ||
if aliases: | ||
cmd = args[0] | ||
name = args[1] if len(args) > 1 else None | ||
name = name or cmd.name | ||
if name is None: | ||
raise TypeError('Command has no name.') | ||
|
||
self._commands[name] = aliases | ||
for alias in aliases: | ||
self._aliases[alias] = cmd.name | ||
|
||
def command(self, *args, **kwargs): | ||
aliases = kwargs.pop('aliases', []) | ||
decorator = super(ClickAliasedGroup, self).command(*args, **kwargs) | ||
if not aliases: | ||
return decorator | ||
|
||
def _decorator(f): | ||
cmd = decorator(f) | ||
if aliases: | ||
self._commands[cmd.name] = aliases | ||
for alias in aliases: | ||
self._aliases[alias] = cmd.name | ||
return cmd | ||
|
||
return _decorator | ||
|
||
def group(self, *args, **kwargs): | ||
aliases = kwargs.pop('aliases', []) | ||
decorator = super(ClickAliasedGroup, self).group(*args, **kwargs) | ||
if not aliases: | ||
return decorator | ||
|
||
def _decorator(f): | ||
cmd = decorator(f) | ||
if aliases: | ||
self._commands[cmd.name] = aliases | ||
for alias in aliases: | ||
self._aliases[alias] = cmd.name | ||
return cmd | ||
|
||
return _decorator | ||
|
||
def resolve_alias(self, cmd_name): | ||
if cmd_name in self._aliases: | ||
return self._aliases[cmd_name] | ||
return cmd_name | ||
|
||
def get_command(self, ctx, cmd_name): | ||
cmd_name = self.resolve_alias(cmd_name) | ||
command = super(ClickAliasedGroup, self).get_command(ctx, cmd_name) | ||
if command: | ||
return command | ||
|
||
def format_commands(self, ctx, formatter): | ||
rows = [] | ||
|
||
sub_commands = self.list_commands(ctx) | ||
|
||
max_len = 0 | ||
if len(sub_commands) > 0: | ||
max_len = max(len(cmd) for cmd in sub_commands) | ||
|
||
limit = formatter.width - 6 - max_len | ||
|
||
for sub_command in sub_commands: | ||
cmd = self.get_command(ctx, sub_command) | ||
if cmd is None: | ||
continue | ||
if hasattr(cmd, 'hidden') and cmd.hidden: | ||
continue | ||
if sub_command in self._commands: | ||
aliases = ','.join(sorted(self._commands[sub_command])) | ||
sub_command = '{0} ({1})'.format(sub_command, aliases) | ||
if _click7: | ||
cmd_help = cmd.get_short_help_str(limit) | ||
else: | ||
cmd_help = cmd.short_help or '' | ||
rows.append((sub_command, cmd_help)) | ||
|
||
if rows: | ||
with formatter.section('Commands'): | ||
formatter.write_dl(rows) |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
[tool.poetry] | ||
name = "memos-cli" | ||
version = "0.1.0" | ||
version = "0.1.1" | ||
description = "A CLI frontend for memos self-hosted memo hub" | ||
authors = ["Giulio De Matteis <[email protected]>"] | ||
readme = "README.md" | ||
|
@@ -14,7 +14,6 @@ packages = [ | |
python = "^3.11" | ||
click = "^8.1.3" | ||
requests = "^2.30.0" | ||
click-aliases = "^1.0.1" | ||
prettytable = "^3.7.0" | ||
|
||
[tool.poetry.scripts] | ||
|