Merge pull request #148 from python-escpos/feature/tabcompletion

Feature/tabcompletion
This commit is contained in:
Patrick Kanzler 2016-07-23 11:43:07 +02:00 committed by GitHub
commit c5d34cc268
5 changed files with 37 additions and 75 deletions

View File

@ -12,7 +12,6 @@ Content
:maxdepth: 1
:caption: User Documentation
user/dependencies
user/installation
user/methods
user/printers

View File

@ -1,57 +0,0 @@
************
Dependencies
************
Fedora
------
Fortunately everything is on Fedora repositories.
::
# yum install python-imaging pyserial pyusb python-qrcode
Ubuntu
------
Ultimately, this instructions also apply to Raspbian, in case you are
interested to install python-escpos on your Raspberry with Raspbian.
Install the packages available on distro repositories.
::
# apt-get install python-imaging pyserial
The packages which are not available at Ubuntu repositories need to be
installed manually.
pyusb
^^^^^
This is the python binding to libusb-1.0
* Get the latest tarball from `sourceforge <http://sourceforge.net/projects/pyusb/files/PyUSB%201.0/>`__
* Build and install it
::
# tar zxvf pyusb-1.*.tar.gz
# cd pyusb-1.*
# python setup.py build
# sudo python setup.py install
python-qrcode
^^^^^^^^^^^^^
This is the python module to generate QR Codes
* Checkout the latest code from `github <https://github.com/lincolnloop/python-qrcode>`__
* Build and install it
::
# git clone https://github.com/lincolnloop/python-qrcode
# cd python-qrcode
# python setup.py build
# sudo python setup.py install

View File

@ -2,16 +2,26 @@
Installation
************
System preparation
------------------
:Last Reviewed: 2016-07-23
1. Install the required
`dependencies <https://github.com/manpaz/python-escpos/wiki/Dependencies>`__
Installation with PIP
---------------------
Installation should be rather straight-forward. python-escpos is on PyPi, so you can simply enter:
2. Get the *Product ID* and *Vendor ID* from the lsusb command
::
pip install python-escpos
This should install all necessary dependencies. Apart from that python-escpos should also be
available as a Debian package. If you want to always benefit from the newest stable releases you should probably
install from PyPi.
Setup udev for USB-Printers
---------------------------
1. Get the *Product ID* and *Vendor ID* from the lsusb command
``# lsusb Bus 002 Device 001: ID 1a2b:1a2b Device name``
3. Create a udev rule to let users belonging to *dialout* group use the
2. Create a udev rule to let users belonging to *dialout* group use the
printer. You can create the file
``/etc/udev/rules.d/99-escpos.rules`` and add the following:
``SUBSYSTEM=="usb", ATTRS{idVendor}=="1a2b", ATTRS{idProduct}=="1a2b", MODE="0664", GROUP="dialout"``
@ -20,21 +30,19 @@ System preparation
"dialout" group, or use another group you already belongs instead
"dialout" and set it in the ``GROUP`` parameter in the above rule.
4. Restart udev ``# sudo service udev restart`` In some new systems it
3. Restart udev ``# sudo service udev restart`` In some new systems it
is done with ``# sudo udevadm control --reload``
Install
-------
Enabling tab-completion in CLI
------------------------------
python-escpos has a CLI with tab-completion. This is realised with ``argcomplete``.
In order for this to work you have to enable tab-completion, which is described in
the `manual of argcomplete <https://argcomplete.readthedocs.io>`__.
* Clone python-escpos from github
* Change directory to python-escpos and install the package
If you only want to enable it for python-escpos, or global activation does not work, try this:
::
::
# cd python-escpos
# python setup.py build
# sudo python setup.py install
* Enjoy !!!
eval "$(register-python-argcomplete python-escpos)"

View File

@ -110,6 +110,8 @@ setup(
'six',
'appdirs',
'pyyaml',
'argparse',
'argcomplete',
],
setup_requires=[
'setuptools_scm',

View File

@ -1,4 +1,5 @@
#!/usr/bin/env python
# PYTHON_ARGCOMPLETE_OK
""" CLI
This module acts as a command line interface for python-escpos. It mirrors
@ -14,6 +15,11 @@ from __future__ import print_function
from __future__ import unicode_literals
import argparse
try:
import argcomplete
except ImportError:
# this CLI works nevertheless without argcomplete
pass # noqa
import sys
import six
from . import config
@ -499,6 +505,10 @@ def main():
help='Print the version of python-escpos')
parser_command_version.set_defaults(version=True)
# hook in argcomplete
if 'argcomplete' in globals():
argcomplete.autocomplete(parser)
# Get only arguments actually passed
args_dict = vars(parser.parse_args())
if not args_dict: