#!/usr/local/bin/python
################################################################
# file unpackapp2.py
# add backup of prior file contents
# use method extension, versus a new flag to App.setOutput
# use 'try' versus existence testing
################################################################


import string
from PP2E.System.App.apptools import StreamApp
from textpack import marker


class UnpackApp(StreamApp):
    def start(self):
        self.endargs()          # ignore more -o's, etc.

    def run(self):
        mlen = len(marker)
        while 1:
            line = self.readline()
            if not line: 
                break
            elif line[:mlen] != marker:
                self.write(line)
            else:
                name = string.strip(line[mlen:])
                self.message('creating: ' + name)
                self.setOutput(name)

    def setOutput(self, name=None):
        import os
        try:
            os.rename(name, name + '.bkp')   
        except: pass
        StreamApp.setOutput(self, name)


if __name__ == '__main__':  UnpackApp().main()


