arghelper
=========
|PyPi Version| |Build Status| |Coverage Status| |License Badge|
`arghelper <https://github.com/questrail/arghelper>`__ is a Python
(2.6+/3.2+) module providing functions to help with argparse.
Requirements
------------
- ``argparse`` module from the `Python Standard
Library <https://docs.python.org/2/library/>`__
- ``sys`` module from the `Python Standard
Library <https://docs.python.org/2/library/>`__
- ``os`` module from the `Python Standard
Library <https://docs.python.org/2/library/>`__
Usage
-----
``arghelper`` provides functions to determine if a file or directory
exists:
- ``extant_file``
- ``extant_dir``
These can be used as follows:
.. code:: python
if __name__ == "__main__":
# Process the arguments
import argparse
import arghelper
parser = argparse.ArgumentParser(
description='Process the TAFFmat CET files')
parser.add_argument(
'config_file',
help='CSV configuration file.',
metavar='FILE', type=arghelper.extant_file)
parser.add_argument(
'input_dir',
help='Directory containing input files.',
metvar='DIR', type=arghelper.extant_dir)
args = parser.parse_args()
A common pattern, for me at least, is to have three positional arguments
consisting of:
1. ``config_file`` --- A configuration file
2. ``input_dir`` --- A directory containing input files to be read
3. ``output_dir`` --- A directory where the output files should be saved
This pattern has been abstracted to a Facade function called
``parse_config_input_output``, which can be used as follows:
.. code:: python
if __name__ == "__main__":
# Process the arguments
import arghelper
args = arghelper.parse_config_input_output(sys.argv)
Another common pattern is to just parse the name of a config file:
.. code:: python
if __name__ == "__main__":
# Process the arguments
import arghelper
args = arghelper.parse_config(sys.argv)
Contributing
------------
`arghelper <https://github.com/questrail/arghelper>`__ is developed
using `Scott Chacon <http://scottchacon.com/about.html>`__'s `GitHub
Flow <http://scottchacon.com/2011/08/31/github-flow.html>`__. To
contribute, fork `arghelper <https://github.com/questrail/arghelper>`__,
create a feature branch, and then submit a pull request. `GitHub
Flow <http://scottchacon.com/2011/08/31/github-flow.html>`__ is
summarized as:
- Anything in the ``master`` branch is deployable
- To work on something new, create a descriptively named branch off of
``master`` (e.g., ``new-oauth2-scopes``)
- Commit to that branch locally and regularly push your work to the
same named branch on the server
- When you need feedback or help, or you think the brnach is ready for
merging, open a `pull
request <https://help.github.com/articles/using-pull-requests>`__.
- After someone else has reviewed and signed off on the feature, you
can merge it into master.
- Once it is merged and pushed to ``master``, you can and *should*
deploy immediately.
License
=======
`arghelper <https://github.com/questrail/arghelper>`__ is released under
the MIT license. Please see the
`LICENSE.txt <https://github.com/questrail/arghelper/blob/master/LICENSE.txt>`__
file for more information.
.. |PyPi Version| image:: http://img.shields.io/pypi/v/arghelper.svg
:target: https://pypi.python.org/pypi/arghelper
.. |Build Status| image:: http://img.shields.io/travis/questrail/arghelper/master.svg
:target: https://travis-ci.org/questrail/arghelper
.. |Coverage Status| image:: http://img.shields.io/coveralls/questrail/arghelper/master.svg
:target: https://coveralls.io/r/questrail/arghelper
.. |License Badge| image:: http://img.shields.io/pypi/l/arghelper.svg
:target: https://github.com/questrail/arghelper/blob/master/LICENSE.txt