You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by ad...@apache.org on 2014/06/28 23:42:59 UTC
svn commit: r1606397 - in /labs/panopticon/pan-commands: bin/ src/asf/
src/asf/cli/ src/asf/cli/resources/ src/asf/cli/resources/moderator/
Author: adc
Date: Sat Jun 28 21:42:59 2014
New Revision: 1606397
URL: http://svn.apache.org/r1606397
Log:
Commands can provide completion scripts
Added:
labs/panopticon/pan-commands/src/asf/cli/
labs/panopticon/pan-commands/src/asf/cli/__init__.py
- copied, changed from r1605091, labs/panopticon/pan-commands/src/asf/cli.py
labs/panopticon/pan-commands/src/asf/cli/resources/
labs/panopticon/pan-commands/src/asf/cli/resources/__init__.py
labs/panopticon/pan-commands/src/asf/cli/resources/moderator/
labs/panopticon/pan-commands/src/asf/cli/resources/moderator/__init__.py
labs/panopticon/pan-commands/src/asf/cli/resources/moderator/bash.completion
labs/panopticon/pan-commands/src/asf/cli/resources/moderator/zsh.completion
Removed:
labs/panopticon/pan-commands/src/asf/cli.py
Modified:
labs/panopticon/pan-commands/bin/moderator
Modified: labs/panopticon/pan-commands/bin/moderator
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/bin/moderator?rev=1606397&r1=1606396&r2=1606397&view=diff
==============================================================================
--- labs/panopticon/pan-commands/bin/moderator (original)
+++ labs/panopticon/pan-commands/bin/moderator Sat Jun 28 21:42:59 2014
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+# !/usr/bin/env python
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
@@ -20,6 +20,9 @@
"""
Mailing list moderator tool used to manage mailing lists from the command line.
"""
+import argparse
+import sys
+
from asf.cli import entrypoint
from asf.data.aliases import get_mail_aliases
from asf.utils.committers import get_committer
Copied: labs/panopticon/pan-commands/src/asf/cli/__init__.py (from r1605091, labs/panopticon/pan-commands/src/asf/cli.py)
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/src/asf/cli/__init__.py?p2=labs/panopticon/pan-commands/src/asf/cli/__init__.py&p1=labs/panopticon/pan-commands/src/asf/cli.py&r1=1605091&r2=1606397&rev=1606397&view=diff
==============================================================================
--- labs/panopticon/pan-commands/src/asf/cli.py (original)
+++ labs/panopticon/pan-commands/src/asf/cli/__init__.py Sat Jun 28 21:42:59 2014
@@ -25,6 +25,7 @@ import os
import sys
import argparse
+import pkg_resources
from asf.utils.auth import get_username, get_password, AUTH_SECTION, save_password, AUTH_SECTIONS, remove_password
from asf.utils.config import load_config
@@ -64,6 +65,21 @@ def entrypoint(method, depth=1, cls=None
return method
+SUPPORTED_COMPLETION_SHELLS = ['bash', 'zsh']
+
+
+class _CompletionAction(argparse.Action):
+ def __init__(self, option_strings, dest=argparse.SUPPRESS, default=argparse.SUPPRESS, help=None, choices=None):
+ choices = choices or SUPPORTED_COMPLETION_SHELLS
+ super(_CompletionAction, self).__init__(
+ option_strings, dest, default=default, nargs=1, help=help, type=str, choices=choices, metavar='SHELL'
+ )
+
+ def __call__(self, parser, namespace, values, option_string=None):
+ print pkg_resources.resource_string('asf.cli.resources.%s' % parser.name, '%s.completion' % values[0])
+ parser.exit()
+
+
class CLI(object):
"""
Initialize a command line helper instance.
@@ -124,6 +140,22 @@ class CLI(object):
#: :mod:`argparse` replaces optparse in Python 2.7, it is installable as a stand-alone module.
self.argparser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter)
+ self.argparser.name = name
+
+ # add --completion option if completion scripts are available
+ try:
+ pkg_resources.resource_listdir('asf.cli.resources.%s' % name, '')
+ help_string = None
+ for shell in SUPPORTED_COMPLETION_SHELLS:
+ if pkg_resources.resource_exists('asf.cli.resources.%s' % name, '%s.completion' % shell):
+ if help_string:
+ help_string += ', ' + shell
+ else:
+ help_string = 'Print out shell completion script: ' + shell
+ self.argparser.register('action', 'completion', _CompletionAction)
+ self.argparser.add_argument('--completion', action='completion', help=help_string)
+ except ImportError:
+ pass
self.argparser.add_argument(
'--debug', action='store_true', default=False, help='Turn on debug mode / logging.'
Added: labs/panopticon/pan-commands/src/asf/cli/resources/__init__.py
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/src/asf/cli/resources/__init__.py?rev=1606397&view=auto
==============================================================================
--- labs/panopticon/pan-commands/src/asf/cli/resources/__init__.py (added)
+++ labs/panopticon/pan-commands/src/asf/cli/resources/__init__.py Sat Jun 28 21:42:59 2014
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
Added: labs/panopticon/pan-commands/src/asf/cli/resources/moderator/__init__.py
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/src/asf/cli/resources/moderator/__init__.py?rev=1606397&view=auto
==============================================================================
--- labs/panopticon/pan-commands/src/asf/cli/resources/moderator/__init__.py (added)
+++ labs/panopticon/pan-commands/src/asf/cli/resources/moderator/__init__.py Sat Jun 28 21:42:59 2014
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
Added: labs/panopticon/pan-commands/src/asf/cli/resources/moderator/bash.completion
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/src/asf/cli/resources/moderator/bash.completion?rev=1606397&view=auto
==============================================================================
--- labs/panopticon/pan-commands/src/asf/cli/resources/moderator/bash.completion (added)
+++ labs/panopticon/pan-commands/src/asf/cli/resources/moderator/bash.completion Sat Jun 28 21:42:59 2014
@@ -0,0 +1,42 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+__moderator_completion() {
+ local cur prev opts
+ local lists="$(moderator list)"
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+ opts="list add lookup remove"
+
+ case "${prev}" in
+ list)
+ COMPREPLY=( $(compgen -W "${lists}" -- ${cur}) );;
+ add)
+ COMPREPLY=( $(compgen -W "${lists}" -- ${cur}) );;
+ remove)
+ COMPREPLY=( $(compgen -W "${lists}" -- ${cur}) );;
+ moderator)
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) );;
+ esac
+
+ return 0
+}
+
+complete -F __moderator_completion moderator
Added: labs/panopticon/pan-commands/src/asf/cli/resources/moderator/zsh.completion
URL: http://svn.apache.org/viewvc/labs/panopticon/pan-commands/src/asf/cli/resources/moderator/zsh.completion?rev=1606397&view=auto
==============================================================================
--- labs/panopticon/pan-commands/src/asf/cli/resources/moderator/zsh.completion (added)
+++ labs/panopticon/pan-commands/src/asf/cli/resources/moderator/zsh.completion Sat Jun 28 21:42:59 2014
@@ -0,0 +1,19 @@
+#compdef moderator
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org