summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/bashcompletion/README12
-rw-r--r--examples/bashcompletion/bashcompletion.py38
-rw-r--r--examples/bashcompletion/setup.py15
3 files changed, 65 insertions, 0 deletions
diff --git a/examples/bashcompletion/README b/examples/bashcompletion/README
new file mode 100644
index 0000000..f8a0d51
--- /dev/null
+++ b/examples/bashcompletion/README
@@ -0,0 +1,12 @@
+$ bashcompletion
+
+ bashcompletion is a simple example of an application that
+ tries to autocomplete commands, arguments and options.
+
+ This example requires Click 2.0 or higher.
+
+Usage:
+
+ $ pip install --editable .
+ $ eval "$(_BASHCOMPLETION_COMPLETE=source bashcompletion)"
+ $ bashcompletion --help
diff --git a/examples/bashcompletion/bashcompletion.py b/examples/bashcompletion/bashcompletion.py
new file mode 100644
index 0000000..0a8d4d9
--- /dev/null
+++ b/examples/bashcompletion/bashcompletion.py
@@ -0,0 +1,38 @@
+import click
+import os
+from netifaces import interfaces, ifaddresses, AF_INET
+
+@click.group()
+def cli():
+ pass
+
+def get_env_vars(ctx, args, incomplete):
+ return os.environ.keys()
+
+@cli.command()
+@click.argument("envvar", type=click.STRING, autocompletion=get_env_vars)
+def cmd1(envvar):
+ click.echo('Environment variable: %s' % envvar)
+ click.echo('Value: %s' % os.environ[envvar])
+
+@cli.command()
+def cmd3():
+ pass
+
+@click.group()
+def group():
+ pass
+
+def ip4_addresses():
+ ip_list = []
+ for interface in interfaces():
+ for link in ifaddresses(interface)[AF_INET]:
+ ip_list.append(link['addr'])
+ return ip_list
+
+@group.command()
+@click.argument("ip", type=click.STRING, autocompletion=ip4_addresses)
+def subcmd(ip):
+ click.echo('Chosen IP is %s' % color)
+
+cli.add_command(group)
diff --git a/examples/bashcompletion/setup.py b/examples/bashcompletion/setup.py
new file mode 100644
index 0000000..ad20081
--- /dev/null
+++ b/examples/bashcompletion/setup.py
@@ -0,0 +1,15 @@
+from setuptools import setup
+
+setup(
+ name='click-example-bashcompletion',
+ version='1.0',
+ py_modules=['bashcompletion'],
+ include_package_data=True,
+ install_requires=[
+ 'click',
+ ],
+ entry_points='''
+ [console_scripts]
+ bashcompletion=bashcompletion:cli
+ ''',
+)