VirtualMailManager/cli/__init__.py
changeset 760 b678a1c43027
parent 748 659c4476c57c
child 761 e4e656f19771
--- a/VirtualMailManager/cli/__init__.py	Mon Mar 24 19:22:04 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-# -*- coding: UTF-8 -*-
-# Copyright (c) 2010 - 2014, Pascal Volk
-# See COPYING for distribution information.
-"""
-    VirtualMailManager.cli
-    ~~~~~~~~~~~~~~~~~~~~~~
-
-    VirtualMailManager's command line interface.
-"""
-
-import os
-from array import array
-from fcntl import ioctl
-from getpass import getpass
-from termios import TIOCGWINSZ
-
-from VirtualMailManager import ENCODING
-from VirtualMailManager.constants import VMM_TOO_MANY_FAILURES
-from VirtualMailManager.errors import VMMError
-
-
-__all__ = ('prog', 'get_winsize', 'read_pass', 'w_err', 'w_std')
-
-_ = lambda msg: msg
-_std_write = os.sys.stdout.write
-_err_write = os.sys.stderr.write
-prog = os.path.basename(os.sys.argv[0])
-
-
-def w_std(*args):
-    """Writes a line for each arg of *args*, encoded in the current
-    ENCODING, to stdout.
-    """
-    _std_write('\n'.join(a.encode(ENCODING, 'replace') for a in args) + '\n')
-
-
-def w_err(code, *args):
-    """Writes a line for each arg of *args*, encoded in the current
-    ENCODING, to stderr.
-    This function optionally interrupts the program execution if *code*
-    does not equal to 0. *code* will be used as the system exit status.
-    """
-    _err_write('\n'.join(a.encode(ENCODING, 'replace') for a in args) + '\n')
-    if code:
-        os.sys.exit(code)
-
-
-def get_winsize():
-    """Returns a tuple of integers ``(ws_row, ws_col)`` with the height and
-    width of the terminal."""
-    fd = None
-    for dev in (os.sys.stdout, os.sys.stderr, os.sys.stdin):
-        if hasattr(dev, 'fileno') and os.isatty(dev.fileno()):
-            fd = dev.fileno()
-            break
-    if fd is None:  # everything seems to be redirected
-        # fall back to environment or assume some common defaults
-        ws_row, ws_col = 24, 80
-        try:
-            ws_col = int(os.environ.get('COLUMNS', 80))
-            ws_row = int(os.environ.get('LINES', 24))
-        except ValueError:
-            pass
-        return ws_row, ws_col
-    #"struct winsize" with the ``unsigned short int``s ws_{row,col,{x,y}pixel}
-    ws = array('H', (0, 0, 0, 0))
-    ioctl(fd, TIOCGWINSZ, ws, True)
-    ws_row, ws_col = ws[:2]
-    return ws_row, ws_col
-
-
-def read_pass():
-    """Interactive 'password chat', returns the password in plain format.
-
-    Throws a VMMError after the third failure.
-    """
-    # TP: Please preserve the trailing space.
-    readp_msg0 = _(u'Enter new password: ').encode(ENCODING, 'replace')
-    # TP: Please preserve the trailing space.
-    readp_msg1 = _(u'Retype new password: ').encode(ENCODING, 'replace')
-    mismatched = True
-    failures = 0
-    while mismatched:
-        if failures > 2:
-            raise VMMError(_(u'Too many failures - try again later.'),
-                           VMM_TOO_MANY_FAILURES)
-        clear0 = getpass(prompt=readp_msg0)
-        clear1 = getpass(prompt=readp_msg1)
-        if clear0 != clear1:
-            failures += 1
-            w_err(0, _(u'Sorry, passwords do not match.'))
-            continue
-        if not clear0:
-            failures += 1
-            w_err(0, _(u'Sorry, empty passwords are not permitted.'))
-            continue
-        mismatched = False
-    return clear0
-
-del _