Changeset 7344:1e38b68979fb in orange


Ignore:
Timestamp:
02/03/11 22:34:11 (3 years ago)
Author:
ales_erjavec <ales.erjavec@…>
Branch:
default
Convert:
6c241cccbf6270290bc7822f96179a2d34170f40
Message:
  • added output file command argument
File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/orange2to25.py

    r7341 r7344  
    99import optparse 
    1010import logging 
     11import shutil 
    1112 
     13class MyStdRefactoringTool(StdoutRefactoringTool): 
     14    def write_file(self, new_text, filename, old_text, encoding): 
     15        if not self.nobackups: 
     16            # Make backup 
     17             
     18            filename = getattr(self, "outputfilename", filename) 
     19             
     20            backup = filename + ".bak" 
     21            if os.path.lexists(backup): 
     22                try: 
     23                    os.remove(backup) 
     24                except os.error, err: 
     25                    self.log_message("Can't remove backup %s", backup) 
     26            if os.path.exists(filename): 
     27                try: 
     28                    os.rename(filename, backup) 
     29                except os.error, err: 
     30                    self.log_message("Can't rename %s to %s", filename, backup) 
     31        # Actually write the new file 
     32        write = super(StdoutRefactoringTool, self).write_file 
     33        write(new_text, filename, old_text, encoding) 
     34        if not self.nobackups: 
     35            shutil.copymode(backup, filename) 
     36             
    1237def main(fixer_pkg, args=None): 
    1338    """Main program. 
     
    4469    parser.add_option("-a", "--aggressive", action="store_true", default=False, 
    4570                      help="Aggressive name replace (without a module qualifier, e.g. replace ExampleTable with even if not preceded by orange.* )") 
    46 #    parser.add_option("-o: --output", action="store_string", default = None, 
    47 #                      help="Output file (Ignore -w and write output to file)") 
     71    parser.add_option("-o", "--outfile", default = "", 
     72                      help="Output filename (if -w present and a single file on the command line)") 
    4873 
    4974    # Parse command line arguments 
     
    7095            print >> sys.stderr, "Can't write to stdin." 
    7196            return 2 
    72     if options.print_function: 
    73         flags["print_function"] = True 
     97         
     98#    if options.print_function: 
     99#        flags["print_function"] = True 
    74100 
    75101    # Set up logging handler 
     
    82108    if not options.aggressive: 
    83109        avail_fixes = set([fix for fix in avail_fixes if not fix.endswith("_aggressive")]) 
    84         print avail_fixes 
    85110         
    86111    unwanted_fixes = set(fixer_pkg + ".fix_" + fix for fix in options.nofix) 
     
    97122        requested = avail_fixes.union(explicit) 
    98123    fixer_names = requested.difference(unwanted_fixes) 
    99     print fixer_names 
    100     rt = StdoutRefactoringTool(sorted(fixer_names), flags, sorted(explicit), 
     124    rt = MyStdRefactoringTool(sorted(fixer_names), flags, sorted(explicit), 
    101125                               options.nobackups, not options.no_diffs) 
    102  
     126    if options.outfile: 
     127        if len(args) > 2: 
     128            print args 
     129            print >> sys.stderr, "-o, --outfile used but multiple script arguments" 
     130        elif not os.path.isfile(args[-1]): 
     131            print >> sys.stderr, "-o, --outfile used but argumnet is a directory" 
     132        else: 
     133            rt.outputfilename = options.outfile 
     134         
    103135    # Refactor all files and directories passed as arguments 
    104136    if not rt.errors: 
Note: See TracChangeset for help on using the changeset viewer.