Exemplo n.º 1
0
 def file_type(self, filename):
     if not os.path.exists(filename):
         raise EArgument('%r does not exist.' % filename)
     if self._file_type is not 'auto':
         return self._file_type
     lname = filename.lower()
     if lname.endswith('.template'):
         lname = lname[:-9]
     if lname.endswith('.html') or lname.endswith('.htm'):
         return 'html'
     if lname.endswith('.xml'):
         return 'xml'
     if lname.endswith('.js'):
         return 'js'
     if (lname.endswith('.sh') or lname.endswith('.rc')
             or lname.endswith('.csh') or lname.endswith('.ksh')
             or lname.endswith('.ash') or lname.endswith('.bash')
             or lname.endswith('.profile')
             or lname.endswith('.bash_profile')
             or lname.endswith('.bashrc')):
         return 'shell'
     if isdir(filename):
         return 'directory'
     f = open(filename, 'r')
     try:
         for line in f.xreadlines():
             if line.find('\x1b') != -1:
                 return 'ansi-esc'
     finally:
         f.close()
     raise EArgument('can not determine file type of %r.' % filename)
Exemplo n.º 2
0
 def _and_handler(self, *args):
     property = self.pop_next()
     value = self.pop_next()
     if property is None or value is None:
         raise EArgument('--and requires property value arguments.')
     self._property_value_list.append((property, value))
     return
Exemplo n.º 3
0
 def __call__(self, *args):
     property_name = self.pop_next()
     property_value = self.pop_next()
     if property_name is None:
         raise EArgument("pfileinfo equal command requires a property_name"
                         " and a property_value as it's first and second"
                         " arguments.")
     if property_value is None:
         raise EArgument("pfileinfo equal command requires a property_value"
                         " name as it's second argument.")
     files = self.arguments()
     if not files:
         raise EArgument("pfileinfo equal command requires a list of file"
                         " names after the property_value name argument.")
     for f in self.arguments():
         if self.get(f, property_name) != property_value:
             return 2
     return 0
Exemplo n.º 4
0
 def _load(self,argument_name):
     filename = self.pop_next()
     if filename is None:
         raise EArgument("Missing required %r argument." % argument_name)
     database = _Database(filename)
     database.load_script_file(
         filename, force=self.registered_command().root()._force
         )
     return database
Exemplo n.º 5
0
 def _specific(self):
     property_name = self.pop_next()
     if property_name is None:
         raise EArgument("pfileinfo get command requires a property_name"
                         " followed by a list of file names.")
     files = self.arguments()
     if not files:
         raise EArgument("pfileinfo get command requires a list of file"
                         " names.")
     for f in self.arguments():
         property_value = self.get(f, property_name)
         if property_value is None:
             property_value = self._no_property_text
         if self._value_only:
             self.put_stdout_msg("%s\n", property_value)
         else:
             self.put_stdout_msg("%s: %s = '%s'\n", f, property_name,
                                 property_value)
     return 0
Exemplo n.º 6
0
 def __call__(self, *args):
     if not self._property_value_list:
         property_name = self.pop_next()
         property_value = self.pop_next()
         if property_name is None or property_value is None:
             raise EArgument('pfileinfo set requires property_name'
                             ' property_value arguments.')
         self._property_value_list.append((property_name, property_value))
     files = self.arguments()
     if len(files) < 2:
         if len(files) == 1:
             raise EArgument("pfileinfo set command requires a target file"
                             " or directory.")
         raise EArgument("pfileinfo set command requires at least one "
                         " source file and a target file or directory.")
     target = files.pop()
     if len(files) > 1 and not os.path.isdir(target):
         raise EArgument("If more then one source file is specified, then"
                         " the target must be a directory.")
     return self.set_properties(self._property_value_list, files, target)
Exemplo n.º 7
0
 def _load(self):
     filename = self.pop_next()
     if filename is None:
         filename = 'master.script'
     if self.arguments():
         EArgument("Too many arguments.")
     self._database = _Database(filename)
     self._database.load_script_file(
         filename, force=self.registered_command().root()._force
         )
     return
Exemplo n.º 8
0
 def _diff(self):
     self._db1 = self._load("database1-script-file")
     self._db2 = self._load("database2-script-file")
     if self.arguments():
         EArgument("Too many arguments.")
     self._diff_tables_definitions()
     self._diff_tables_rows()
     self._diff_grants()
     self._diff_users()
     self._diff_aliases()
     self._diff_connections()
     return
Exemplo n.º 9
0
 def __call__(self, *args):
     files = self.arguments()
     if not files:
         raise EArgument("pfileinfo type command requires a list of file"
                         " names.")
     for f in self.arguments():
         try:
             file_type = self.file_type(f)
         except ECommand:
             file_type = self._unknown_type_text
         if self._value_only:
             self.put_stdout_msg("%s\n", file_type)
         else:
             self.put_stdout_msg("%s: %s\n", f, file_type)
     return 0
Exemplo n.º 10
0
 def _all(self):
     files = self.arguments()
     if not files:
         raise EArgument("pfileinfo get --all command requires a list of"
                         " file names.")
     for f in self.arguments():
         property_values = self.as_dict(f)
         property_names = property_values.keys()
         property_names.sort()
         for property_name in property_names:
             property_value = property_values[property_name]
             if self._value_only:
                 self.put_stdout_msg("%s\n", property_value)
             else:
                 self.put_stdout_msg("%s: %s = '%s'\n", f, property_name,
                                     property_value)
     return 0
Exemplo n.º 11
0
 def run_command(self, command):
     raise EArgument('pfileinfo requires a sub-command.')
Exemplo n.º 12
0
 def __call__(self, *args):
     self._load()
     if self.arguments():
         EArgument("Too many arguments.")
     return 0