Ejemplo n.º 1
0
def exec_cmd(argv):
    try:
        script = None
        encoding = 'utf8'
        output = 'w'

        if len(argv) > 2:
            opts, _ = getopt.getopt(
                argv[2:], 'hs:e:o:',
                ['help', '--script', '--encoding', '--output'])
            for name, value in opts:
                if name in ('-h', '--help'):
                    show_help()
                if name in ('-s', '--script'):
                    script = value
                if name in ('-e', '--encoding'):
                    encoding = value
                if name in ('-o', '--output'):
                    output = value

            if str_utils.is_empty(script) or not os.path.exists(script):
                print 'error : could not find script file : ' + script
                sys.exit()
            edit(script, encoding, output)
        else:
            show_help()
    except GetoptError, e:
        print 'error : ' + e.msg
Ejemplo n.º 2
0
def exec_cmd(argv):
    try:
        script = None
        encoding = 'utf8'
        output = 'w'
        
        if len(argv) > 2:
            opts, _ = getopt.getopt(argv[2:], 'hs:e:o:', ['help', '--script', '--encoding', '--output'])
            for name, value in opts:
                if name in ('-h', '--help'):
                    show_help()
                if name in ('-s', '--script'):
                    script = value
                if name in ('-e', '--encoding'):
                    encoding = value
                if name in ('-o', '--output'):
                    output = value
                    
            if str_utils.is_empty(script) or not os.path.exists(script):
                print 'error : could not find script file : ' + script
                sys.exit()
            edit(script, encoding, output)
        else:
            show_help()
    except GetoptError, e:
        print 'error : ' + e.msg
Ejemplo n.º 3
0
def __read_script(script, encoding = 'utf8'):
    file_reg = '\[(.*)\]'
    cmd_reg = '(\w+)\s*:\s*(.*)'
    
    tag_file = None
    cmd_set = {}
    
    if isinstance(script, str):
        content = text_file.read_file(script, 'all', encoding, True)
    elif isinstance(script, list):
        content = script
    elif isinstance(script, dict):
        return script
    else:
        raise IOError('script must be a filename or script command list')
    
    for line in content:
        if str_utils.is_empty(line):
            continue
        line = line.strip()
        if str_utils.startswith(line, '#'):
            continue
        if regex_utils.check_line(file_reg, line):
            tag_file = regex_utils.parse_line(file_reg, line)[0]
            if str_utils.is_not_empty(tag_file):
                tag_file = tag_file.strip()
        elif regex_utils.check_line(cmd_reg, line):
            cmd_item = regex_utils.parse_line(cmd_reg, line)
            if tag_file is not None and cmd_item is not None and len(cmd_item) == 2:
                cmd_list = cmd_set.get(tag_file) if cmd_set.has_key(tag_file) else []
                cmd_list.append(cmd_item)
                cmd_set[tag_file] = cmd_list
                
    return cmd_set
Ejemplo n.º 4
0
def size(filename):
    if string_utils.is_empty(filename):
        return 0
    
    size = 0
    with codecs.open(filename, 'r') as f:
        for _ in f:
            size = size + 1
    return size
Ejemplo n.º 5
0
 def filter(self, filename):
     if string_utils.is_empty(filename):
         return False
     
     if hasattr(self, "file_filter"):
         flag = False
         for filter_item in self.file_filter:
             if regex_utils.check_line(str(filter_item), filename):
                 flag = True
                 break
         return flag
     else:
         return True
Ejemplo n.º 6
0
def exec_cmd(argv):
    try:
        filename = None
        pattern = None
        number = False
        model = 'e'

        if len(argv) > 2:
            opts, _ = getopt.getopt(
                argv[2:], 'hf:p:nm:',
                ['help', '--file', '--pattern', '--number', '--model'])
            for name, value in opts:
                if name in ('-h', '--help'):
                    show_help()
                if name in ('-f', '--file'):
                    filename = value
                if name in ('-p', '--pattern'):
                    pattern = value
                if name in ('-n', '--number'):
                    number = True
                if name in ('-m', '--model'):
                    model = value

            if str_utils.is_empty(filename) or not os.path.exists(filename):
                print 'error : could not find file : ' + filename
                sys.exit()
            if str_utils.is_empty(pattern):
                print 'error : pattern is empty'
                sys.exit()

            result = grep(filename, pattern, number, model)
            if result and isinstance(result, list):
                for line in result:
                    print line
        else:
            show_help()
    except GetoptError, e:
        print 'error : ' + e.msg
Ejemplo n.º 7
0
def exec_cmd(argv):
    try:
        filename = None
        pattern = None
        number = False
        model = "e"

        if len(argv) > 2:
            opts, _ = getopt.getopt(argv[2:], "hf:p:nm:", ["help", "--file", "--pattern", "--number", "--model"])
            for name, value in opts:
                if name in ("-h", "--help"):
                    show_help()
                if name in ("-f", "--file"):
                    filename = value
                if name in ("-p", "--pattern"):
                    pattern = value
                if name in ("-n", "--number"):
                    number = True
                if name in ("-m", "--model"):
                    model = value

            if str_utils.is_empty(filename) or not os.path.exists(filename):
                print "error : could not find file : " + filename
                sys.exit()
            if str_utils.is_empty(pattern):
                print "error : pattern is empty"
                sys.exit()

            result = grep(filename, pattern, number, model)
            if result and isinstance(result, list):
                for line in result:
                    print line
        else:
            show_help()
    except GetoptError, e:
        print "error : " + e.msg
Ejemplo n.º 8
0
def edit(script, base_path=None, encoding='utf8', output='w'):
    cmd_set = __read_script(script)
    for filename in cmd_set:
        if str_utils.is_empty(filename):
            continue
        cmd_list = cmd_set.get(filename)
        if str_utils.is_not_empty(base_path):
            if filename.startswith('/'):
                filename = base_path + filename
            else:
                filename = os.path.join(base_path, filename)
        if os.path.exists(filename):
            if os.path.isdir(filename):
                continue
        else:
            __create(filename)
        content = text_file.read_file(filename, 'all', encoding, False)
        content = content if content else []
        for cmd_item in cmd_list:
            cmd = cmd_item[0].strip()
            cmd_arg = cmd_item[1].strip()
            if str_utils.is_not_empty(cmd):
                cmd = cmd.lower()
                if cmd == 'd':
                    content = __delete(cmd_arg, content)
                elif cmd == 'u':
                    content = __update(cmd_arg, content)
                elif cmd == 'a':
                    content = __add(cmd_arg, content)
                elif cmd == 'n':
                    value = __reduce_value(cmd_arg)
                    content.append(value)
                elif cmd == 'c':
                    content = []

        content = [line for line in content if line != None]
        if output == 'w':
            text_file.write_file(filename, content, encoding, '')
        else:
            print ''.join(content)
Ejemplo n.º 9
0
def edit(script, base_path = None, encoding = 'utf8', output = 'w'):
    cmd_set = __read_script(script)
    for filename in cmd_set:
        if str_utils.is_empty(filename):
            continue
        cmd_list = cmd_set.get(filename)
        if str_utils.is_not_empty(base_path):
            if filename.startswith('/'):
                filename = base_path + filename
            else:
                filename = os.path.join(base_path, filename)
        if os.path.exists(filename):
            if os.path.isdir(filename):
                continue
        else:
            __create(filename)
        content = text_file.read_file(filename, 'all', encoding, False)
        content = content if content else []
        for cmd_item in cmd_list:
            cmd = cmd_item[0].strip()
            cmd_arg = cmd_item[1].strip()
            if str_utils.is_not_empty(cmd):
                cmd = cmd.lower()
                if cmd == 'd':
                    content = __delete(cmd_arg, content)
                elif cmd == 'u':
                    content = __update(cmd_arg, content)
                elif cmd == 'a':
                    content = __add(cmd_arg, content)
                elif cmd == 'n':
                    value = __reduce_value(cmd_arg)
                    content.append(value)
                elif cmd == 'c':
                    content = []
                        
        content = [line for line in content if line != None]
        if output == 'w':
            text_file.write_file(filename, content, encoding, '')
        else:
            print ''.join(content)
Ejemplo n.º 10
0
def __match(line_num, line_text, model, pattern):

    if str_utils.is_blank(line_text):
        return False

    if str_utils.is_blank(pattern):
        return True

    patterns = []
    if type(pattern) == types.ListType:
        patterns = pattern
    elif type(pattern) == types.FunctionType:
        patterns = [pattern]
    else:
        patterns = [str(pattern)]

    if str_utils.is_empty(model):
        model = "s"
    model = model.lower()

    for match_pattern in patterns:
        if model == "s":
            if match_pattern in line_text:
                return True
        elif model == "n":
            _min, _max = __split_region(match_pattern)
            if line_num >= _min and line_num <= _max:
                return True
        elif model == "e":
            if regex_utils.check_line(match_pattern, line_text):
                return True
        elif model == "a":
            if type(pattern) == types.FunctionType:
                if pattern(line_text):
                    return True

    return False
Ejemplo n.º 11
0
def __match(line_num, line_text, model, pattern):

    if str_utils.is_blank(line_text):
        return False

    if str_utils.is_blank(pattern):
        return True

    patterns = []
    if type(pattern) == types.ListType:
        patterns = pattern
    elif type(pattern) == types.FunctionType:
        patterns = [pattern]
    else:
        patterns = [str(pattern)]

    if str_utils.is_empty(model):
        model = 's'
    model = model.lower()

    for match_pattern in patterns:
        if model == 's':
            if match_pattern in line_text:
                return True
        elif model == 'n':
            _min, _max = __split_region(match_pattern)
            if line_num >= _min and line_num <= _max:
                return True
        elif model == 'e':
            if regex_utils.check_line(match_pattern, line_text):
                return True
        elif model == 'a':
            if type(pattern) == types.FunctionType:
                if pattern(line_text):
                    return True

    return False
Ejemplo n.º 12
0
def __read_script(script, encoding='utf8'):
    file_reg = '\[(.*)\]'
    cmd_reg = '(\w+)\s*:\s*(.*)'

    tag_file = None
    cmd_set = {}

    if isinstance(script, str):
        content = text_file.read_file(script, 'all', encoding, True)
    elif isinstance(script, list):
        content = script
    elif isinstance(script, dict):
        return script
    else:
        raise IOError('script must be a filename or script command list')

    for line in content:
        if str_utils.is_empty(line):
            continue
        line = line.strip()
        if str_utils.startswith(line, '#'):
            continue
        if regex_utils.check_line(file_reg, line):
            tag_file = regex_utils.parse_line(file_reg, line)[0]
            if str_utils.is_not_empty(tag_file):
                tag_file = tag_file.strip()
        elif regex_utils.check_line(cmd_reg, line):
            cmd_item = regex_utils.parse_line(cmd_reg, line)
            if tag_file is not None and cmd_item is not None and len(
                    cmd_item) == 2:
                cmd_list = cmd_set.get(tag_file) if cmd_set.has_key(
                    tag_file) else []
                cmd_list.append(cmd_item)
                cmd_set[tag_file] = cmd_list

    return cmd_set
Ejemplo n.º 13
0
 def wrapper(*args, **kwargs):
     if string_utils.is_empty(args[1]) and string_utils.is_empty(kwargs.get('container_id')):
             raise ValueError('Container id is Empty')
     return func( *args , **kwargs)
Ejemplo n.º 14
0
 def wrapper(*args, **kwargs):
     if string_utils.is_empty(args[1]) and string_utils.is_empty(kwargs.get('image_name')):
         raise ValueError('Image name is Empty')
     return func( *args , **kwargs)