Hi bot people,
did anyone try creating command line autocompletion [1] for bot scripts? We are setting up a sort of toolserver for the bot owners on Hungarian Wikipedia, and trying to make it a comfortable environment, and parameter autocompletion would be a big step towards that.
I'm interested both in quick and dirty hacks (my current plan is to grep out the arg.startswith parameters from the bot code and use them as a more or less correct argument list) and a long-term solution for making pywikipediabot parameter handling and help generation easy both for the bot programmer and the bot user. I'm thinking along the lines of defining a list of options, with a couple field for each options: short name, long name(s), help text, whether it takes an option (a bit like getopts in Linux, just with cleaner syntax). Some helper function would then process the command line based on that, and the bot programmer would just have to iterate trough the results, without all the ugly string manipulation that is currently required. This would have several advantages: - easier parameter handling and help text autogeneration - automatic generation of bash completion files - it could pave the way for moving towards a more linux-like command syntax with double dashes before long arguments and the other usual features - it would make it possible to create GUI controls for the bots, with auto-generated option fields
What do you think about it? Am I overcomplicating, or reinventing the wheel, or is this worth doing?
[1] https://www.gnu.org/software/bash/manual/bashref.html#Programmable-Completio...
Hello Tisza,
On 16 December 2011 13:14, Tisza Gergo gtisza@gmail.com wrote:
did anyone try creating command line autocompletion [1] for bot scripts?
Not that I know of.
I'm interested both in quick and dirty hacks (my current plan is to grep
out the arg.startswith parameters from the bot code and use them as a more or less correct argument list)
This sounds like something that will work, although 'arg' might not be used every time. Should be a good first approach.
and a long-term solution for making pywikipediabot parameter handling and help generation easy both for the bot programmer and the bot user.
I'm not against this, but there are already some frameworks that do this, and they are IMO not much clearer than the current system. See, for instance, the getopt, argparse and optparse modules. ( http://docs.python.org/library/getopt.html, http://docs.python.org/library/optparse.html, http://docs.python.org/library/argparse.htmlhttp://docs.python.org/library/argparse.html#module-argparse). (although argparse is python 2.7+, and therefore not usable. optparse should be OK).
So: the module you'd want to write is already there. I'm just not sure if it's much better.
advantages:
- easier parameter handling and help text autogeneration
- automatic generation of bash completion files
I agree on these,
- it could pave the way for moving towards a more linux-like command
syntax with double dashes before long arguments and the other usual features
I´m not sure if this is an advantage, as is completely breaks compatibility. I agree it´s usual in unix, but it´s not necessarily a good reason to change. Besides, pwb is also used on windows a lot (and under powershell, single-dash parameters are 'usual').
- it would make it possible to create GUI controls for the bots, with
auto-generated option fields
GUI controls should work on a higher level, instantiating bot objects instead of running the bot using the shell, IMO.
What do you think about it? Am I overcomplicating, or reinventing the wheel, or is this worth doing?
In general, I think the bash completion would be very useful. I'm not sure if rewriting the entire mechanism is useful, nor necessary to achieve bash completion. I would be inclined to to just use the arg.startswith mechanism, and to adapt any script that does not conform to that 'standard'.
However, if you actually need the parameter description for some nicer autocompletion, we would need something nicer - parsing the module.__doc__ wouldn't be a good plan ;-)
In any case: good luck with building the auto-completion. If you need to change the way the argument parser is implemented in code, I'd suggest adapting optparse to use 'pwb-style' single dashes. I would suggest not to change the current parameters unless there is a very strong reason (i.e. stronger than 'the rest of the *nix world uses double-dashes') to do that.
Best regards, Merlijn van Deen
pywikipedia-l@lists.wikimedia.org