summaryrefslogtreecommitdiffstats
path: root/third_party/python/Click/examples/naval/naval.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/python/Click/examples/naval/naval.py')
-rw-r--r--third_party/python/Click/examples/naval/naval.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/third_party/python/Click/examples/naval/naval.py b/third_party/python/Click/examples/naval/naval.py
new file mode 100644
index 0000000000..2d173d84bd
--- /dev/null
+++ b/third_party/python/Click/examples/naval/naval.py
@@ -0,0 +1,70 @@
+import click
+
+
+@click.group()
+@click.version_option()
+def cli():
+ """Naval Fate.
+
+ This is the docopt example adopted to Click but with some actual
+ commands implemented and not just the empty parsing which really
+ is not all that interesting.
+ """
+
+
+@cli.group()
+def ship():
+ """Manages ships."""
+
+
+@ship.command('new')
+@click.argument('name')
+def ship_new(name):
+ """Creates a new ship."""
+ click.echo('Created ship %s' % name)
+
+
+@ship.command('move')
+@click.argument('ship')
+@click.argument('x', type=float)
+@click.argument('y', type=float)
+@click.option('--speed', metavar='KN', default=10,
+ help='Speed in knots.')
+def ship_move(ship, x, y, speed):
+ """Moves SHIP to the new location X,Y."""
+ click.echo('Moving ship %s to %s,%s with speed %s' % (ship, x, y, speed))
+
+
+@ship.command('shoot')
+@click.argument('ship')
+@click.argument('x', type=float)
+@click.argument('y', type=float)
+def ship_shoot(ship, x, y):
+ """Makes SHIP fire to X,Y."""
+ click.echo('Ship %s fires to %s,%s' % (ship, x, y))
+
+
+@cli.group('mine')
+def mine():
+ """Manages mines."""
+
+
+@mine.command('set')
+@click.argument('x', type=float)
+@click.argument('y', type=float)
+@click.option('ty', '--moored', flag_value='moored',
+ default=True,
+ help='Moored (anchored) mine. Default.')
+@click.option('ty', '--drifting', flag_value='drifting',
+ help='Drifting mine.')
+def mine_set(x, y, ty):
+ """Sets a mine at a specific coordinate."""
+ click.echo('Set %s mine at %s,%s' % (ty, x, y))
+
+
+@mine.command('remove')
+@click.argument('x', type=float)
+@click.argument('y', type=float)
+def mine_remove(x, y):
+ """Removes a mine at a specific coordinate."""
+ click.echo('Removed mine at %s,%s' % (x, y))