Ejemplo n.º 1
0
def Register(builtin_name):
    # type: (str) -> args.BuiltinFlags
    """
  """
    arg_spec = args.BuiltinFlags()
    _ARG_DEF[builtin_name] = arg_spec
    return arg_spec
Ejemplo n.º 2
0
  def testParseLikeEcho(self):
    s = args.BuiltinFlags()
    s.ShortFlag('-e')  # no backslash escapes
    s.ShortFlag('-n')

    arg, i = s.ParseLikeEcho(['-e', '-n', 'foo'])
    self.assertEqual(True, arg.e)
    self.assertEqual(True, arg.n)
    self.assertEqual(2, i)

    arg, i = s.ParseLikeEcho(['-en', 'foo'])
    self.assertEqual(True, arg.e)
    self.assertEqual(True, arg.n)
    self.assertEqual(1, i)

    arg, i = s.ParseLikeEcho(['-ez', 'foo'])
    self.assertEqual(None, arg.e)
    self.assertEqual(None, arg.n)
    self.assertEqual(0, i)
Ejemplo n.º 3
0
  def testBuiltinFlags(self):
    s = args.BuiltinFlags()
    s.ShortFlag('-f')
    s.ShortFlag('-n')
    s.ShortFlag('-d', args.Str)  # delimiter

    arg, i = s.Parse(['-f', 'foo', 'bar'])
    self.assertEqual(1, i)
    self.assertEqual(True, arg.f)
    self.assertEqual(None, arg.n)

    self.assertRaises(args.UsageError, s.Parse, ['-f', '-d'])

    arg, i = s.Parse(['-d', ' ', 'foo'])
    self.assertEqual(2, i)
    self.assertEqual(' ', arg.d)

    arg, i = s.Parse(['-d,',  'foo'])
    self.assertEqual(1, i)
    self.assertEqual(',', arg.d)
Ejemplo n.º 4
0
  def testBuiltinFlags(self):
    s = args.BuiltinFlags()
    s.ShortFlag('-f')
    s.ShortFlag('-n')
    s.ShortFlag('-d', args.Str)  # delimiter

    # like declare +rx
    s.ShortOption('r')
    s.ShortOption('x')

    arg, i = s.ParseVec(_MakeArgVector(['-f', 'foo', 'bar']))
    self.assertEqual(1, i-1)
    self.assertEqual(True, arg.f)
    self.assertEqual(None, arg.n)

    self.assertRaises(
        args.UsageError, s.ParseVec, _MakeArgVector(['-f', '-d']))

    arg, i = s.ParseVec(_MakeArgVector(['-d', ' ', 'foo']))
    self.assertEqual(2, i-1)
    self.assertEqual(' ', arg.d)

    arg, i = s.ParseVec(_MakeArgVector(['-d,',  'foo']))
    self.assertEqual(1, i-1)
    self.assertEqual(',', arg.d)
    self.assertEqual(None, arg.r)

    arg, i = s.ParseVec(_MakeArgVector(['-d,', '-r', '-x']))
    self.assertEqual(4, i)
    self.assertEqual(',', arg.d)
    self.assertEqual('-', arg.r)
    self.assertEqual('-', arg.x)

    arg, i = s.ParseVec(_MakeArgVector(['-d,', '+rx']))
    self.assertEqual(3, i)
    self.assertEqual(',', arg.d)
    self.assertEqual('+', arg.r)
    self.assertEqual('+', arg.x)
Ejemplo n.º 5
0
    def testReadBuiltinFlags(self):
        s = args.BuiltinFlags()
        s.ShortFlag('-r')  # no backslash escapes
        s.ShortFlag('-t', args.Float)  # timeout
        s.ShortFlag('-p', args.Str)  # prompt string

        arg, i = s.ParseVec(_MakeBuiltinArgv(['-r', 'foo']))
        self.assertEqual(True, arg.r)
        self.assertEqual(1, i - 1)

        arg, i = s.ParseVec(_MakeBuiltinArgv(['-p', '>']))
        self.assertEqual(None, arg.r)
        self.assertEqual('>', arg.p)
        self.assertEqual(2, i - 1)

        arg, i = s.ParseVec(_MakeBuiltinArgv(['-rp', '>']))
        self.assertEqual(True, arg.r)
        self.assertEqual('>', arg.p)
        self.assertEqual(2, i - 1)

        # REALLY ANNOYING: The first r is a flag, the second R is the prompt!  Only
        # works in that order
        # Does that mean anything with an arity consumes the rest?
        # read -p line
        #
        arg, i = s.ParseVec(_MakeBuiltinArgv(['-rpr']))
        self.assertEqual(True, arg.r)
        self.assertEqual('r', arg.p)
        self.assertEqual(1, i - 1)

        argv = ['-t1.5', '>']
        arg, i = s.ParseVec(_MakeBuiltinArgv(argv))
        self.assertEqual(1.5, arg.t)
        self.assertEqual(1, i - 1)

        # Invalid flag 'z'
        self.assertRaises(args.UsageError, s.ParseVec,
                          _MakeBuiltinArgv(['-rz']))
Ejemplo n.º 6
0
 def Register(self, name, help_topic=None):
     # The help topics are in the quick ref.  TODO: We should match them up?
     #help_topic = help_topic or name
     arg_spec = args.BuiltinFlags()
     self.arg_specs[name] = arg_spec
     return arg_spec
Ejemplo n.º 7
0
from __future__ import print_function
"""
readlink.py - Minimal implementation of readlink -f, e.g. for OS X.
"""

import libc
from frontend import args
from core import ui

SPEC = args.BuiltinFlags()
SPEC.ShortFlag('-f')


def main(argv):
    arg, i = SPEC.ParseArgv(argv)
    if not arg.f:
        ui.Stderr("readlink: -f must be passed")
        return 1
    for path in argv[i:]:
        res = libc.realpath(path)
        if res is None:
            return 1
        print(res)
    return 0