Update some docs, update contrib README.

This commit is contained in:
Griatch 2017-06-27 21:31:31 +02:00
parent 248f20e8e5
commit dc859eae57
2 changed files with 21 additions and 11 deletions

View file

@ -30,6 +30,8 @@ things you want from here into your game folder and change them there.
multiple descriptions for time and season as well as details.
* GenderSub (Griatch 2015) - Simple example (only) of storing gender
on a character and access it in an emote with a custom marker.
* In-game Python (Vincent Le Geoff 2017) - Allow trusted builders to script
objects and events using Python from in-game.
* Mail (grungies1138 2016) - An in-game mail system for communication.
* Menu login (Griatch 2011) - A login system using menus asking
for name/password rather than giving them as one command
@ -51,6 +53,7 @@ things you want from here into your game folder and change them there.
as a start to build from. Has attack/disengage and turn timeouts.
* Wilderness (titeuf87 2017) - Make infinitely large wilderness areas
with dynamically created locations.
* UnixCommand (Vincent Le Geoff 2017) - Add commands with UNIX-style syntax.
## Contrib packages

View file

@ -1,15 +1,20 @@
"""
Module containing the UnixCommand class.
Unix-like Command style parent
This command allows to use unix-like options in game commands. It is
not the best parser for players, but can be really useful for builders
when they need to have a single command to do many things with many
options.
Evennia contribution, Vincent Le Geoff 2017
The UnixCommand can be ovverridden to have your commands parsed.
You will need to override two methods:
- The `init_parser` method, which adds options to the parser.
- The `func` method, called to execute the command once parsed.
This module contains a command class that allows for unix-style command syntax in-game, using
--options, positional arguments and stuff like -n 10 etc similarly to a unix command. It might not
the best syntax for the average player but can be really useful for builders when they need to have
a single command do many things with many options. It uses the ArgumentParser from Python's standard
library under the hood.
To use, inherit `UnixCommand` from this module from your own commands. You need
to override two methods:
- The `init_parser` method, which adds options to the parser. Note that you should normally
*not* override the normal `parse` method when inheriting from `UnixCommand`.
- The `func` method, called to execute the command once parsed (like any Command).
Here's a short example:
@ -19,7 +24,7 @@ class CmdPlant(UnixCommand):
'''
Plant a tree or plant.
This command is used to plant a tree or plant in the room you are in.
This command is used to plant something in the room you are in.
Examples:
plant orange -a 8
@ -62,6 +67,7 @@ from textwrap import dedent
from evennia import Command, InterruptCommand
from evennia.utils.ansi import raw
class ParseError(Exception):
"""An error occurred during parsing."""
@ -109,6 +115,7 @@ class UnixCommandParser(argparse.ArgumentParser):
conflict_handler='resolve', add_help=False, **kwargs)
self.command = command
self.post_help = epilog
def n_exit(code=None, msg=None):
raise ParseError(msg)
@ -116,7 +123,7 @@ class UnixCommandParser(argparse.ArgumentParser):
# Replace the -h/--help
self.add_argument("-h", "--hel", nargs=0, action=HelpAction,
help="display the command help")
help="display the command help")
def format_usage(self):
"""Return the usage line.