コード例 #1
0
 def _checkMigrate(self,
                   dataDir,
                   label,
                   targetDirectory,
                   kpfName="toolbox.kpf"):
     toolboxPath = join(dataDir, kpfName)
     if targetDirectory == koToolbox2.PROJECT_TARGET_DIRECTORY:
         # If the project doesn't have any tools, don't extract them
         try:
             f = open(toolboxPath, 'r')
             contents = f.read()
             f.close()
             for tag in [
                     'macro', 'snippet', 'command', 'template', 'URL',
                     'menu', 'toolbar'
             ]:
                 if ("<" + tag + " ") in contents:
                     break
             else:
                 #log.debug("No tools to convert in %s", contents)
                 return
         except:
             log.exception(
                 "Can't check file %s to see if it contains tools",
                 toolboxPath)
     toolboxDir = join(dataDir, targetDirectory)
     migrateStampPath = join(toolboxDir, ".migrated")
     if (exists(toolboxPath) and
         (not exists(migrateStampPath) or os.stat(toolboxPath).st_mtime >
          os.stat(migrateStampPath).st_mtime)):
         curDir = os.getcwd()
         try:
             koMigrateV5Toolboxes.expand_toolbox(
                 toolboxPath,
                 dataDir,
                 toolboxDirName=targetDirectory,
                 force=1)
         except:
             log.exception("Failed to migrate toolbox %s", toolboxPath)
         finally:
             os.chdir(curDir)
         try:
             f = open(migrateStampPath, "w")
             f.write("migrated %s on %s\n" % (label, time.ctime()))
             f.close()
         except IOError:
             log.exception("Can't write to %s: ", migrateStampPath)
     else:
         log.debug("No need to migrate from %s to %s", toolboxPath,
                   toolboxDir)
         pass
コード例 #2
0
 def _checkMigrate(self, dataDir, label, targetDirectory, kpfName="toolbox.kpf"):
     toolboxPath = join(dataDir, kpfName)
     if targetDirectory == koToolbox2.PROJECT_TARGET_DIRECTORY:
         # If the project doesn't have any tools, don't extract them
         try:
             f = open(toolboxPath, 'r')
             contents = f.read()
             f.close()
             for tag in ['macro', 'snippet', 'command',
                         'template', 'URL', 'menu', 'toolbar']:
                 if ("<" + tag + " ") in contents:
                     break
             else:
                 #log.debug("No tools to convert in %s", contents)
                 return
         except:
             log.exception("Can't check file %s to see if it contains tools",
                           toolboxPath)
     toolboxDir = join(dataDir, targetDirectory)
     migrateStampPath = join(toolboxDir, ".migrated")
     if (exists(toolboxPath)
         and (not exists(migrateStampPath)
              or os.stat(toolboxPath).st_mtime > os.stat(migrateStampPath).st_mtime)):
         curDir = os.getcwd()
         try:
             koMigrateV5Toolboxes.expand_toolbox(toolboxPath,
                                                 dataDir,
                                               toolboxDirName=targetDirectory,
                                                 force=1)
         except:
             log.exception("Failed to migrate toolbox %s", toolboxPath)
         finally:
             os.chdir(curDir)
         try:
             f = open(migrateStampPath, "w")
             f.write("migrated %s on %s\n" % (label, time.ctime()))
             f.close()
         except IOError:
             log.exception("Can't write to %s: ", migrateStampPath)
     else:
         log.debug("No need to migrate from %s to %s", toolboxPath, toolboxDir)
         pass
コード例 #3
0
 def importV5Package_aux(self, parentPath, kpzPath):
     koDirSvc = components.classes["@activestate.com/koDirs;1"].getService()
     userDataDir = koDirSvc.userDataDir
     kpzExtractDir = join(userDataDir, 'extracted-kpz')
     if not os.path.exists(kpzExtractDir):
         os.mkdir(kpzExtractDir)
     startedWithWebResource = kpzPath.startswith("http:/")
     if startedWithWebResource:
         # Copy the web data to a temporary file.
         koResource = components.classes["@activestate.com/koFileEx;1"].\
             createInstance(components.interfaces.koIFileEx)
         koResource.URI = kpzPath
         kpzPath = join(kpzExtractDir, koResource.baseName)
         koTarget = components.classes["@activestate.com/koFileEx;1"].\
             createInstance(components.interfaces.koIFileEx)
         koTarget.path = kpzPath
         koTarget.open('wb')
         koResource.open('rb')
         koTarget.write(koResource.read(-1))
         koResource.close()
         koTarget.close()
     basedir, kpfFile = self._extractPackage(kpzPath, kpzExtractDir)
     kpfDirToDelete = basedir
     toolboxDirName = os.path.splitext(os.path.basename(kpzPath))[0]
     tempToolsDir = join(os.path.dirname(kpfFile), ".extract-tools")
     if exists(tempToolsDir):
         try:
             shutil.rmtree(tempToolsDir)
         except:
             log.exception("importV5Package: failed to rmtree %s", tempToolsDir)
             
     try:
         koMigrateV5Toolboxes.expand_toolbox(kpfFile,
                                             tempToolsDir,
                                             toolboxDirName=toolboxDirName,
                                             force=1)
         # Now, where are the tools?
         # Usually the package is wrapped in a directory called "Project"
         childFiles = os.listdir(tempToolsDir)
         kpfDir = None
         if len(childFiles) == 1:
             candidate = join(tempToolsDir, childFiles[0])
             if os.path.isdir(candidate):
                 kpfDir = candidate
                 # Skip the hardcoded project thing
                 if childFiles[0].lower() != 'project':
                     childFiles = os.listdir(kpfDir)
                     if len(childFiles) == 1 and childFiles[0].lower() == 'project':
                         candidate = join(kpfDir, childFiles[0])
                         if os.path.isdir(candidate):
                             kpfDir = candidate                
                         
         if kpfDir is None and 'Project' in childFiles:
             candidate = join(tempToolsDir, 'Project')
             if os.path.isdir(candidate):
                 kpfDir = candidate
         if kpfDir is None:
             kpfDir = tempToolsDir
         self.toolboxLoader.importDirectory(parentPath, kpfDir)
     except:
         log.exception("Failed to expand/import package based at %s", parentPath)
     finally:
         # Clean up
         if startedWithWebResource:
             try:
                 os.unlink(kpzPath)
             except:
                 log.exception("importV5Package: failed to delete %s", kpzPath)
         try:
             shutil.rmtree(kpfDirToDelete)
         except:
             log.exception("importV5Package: failed to rmtree %s", kpfDirToDelete)
コード例 #4
0
ファイル: expand_toolbox.py プロジェクト: nagyist/KomodoEdit
            ver = ".".join([str(i) for i in _version_])
            sys.stderr.write("expand_toolbox %s\n" % ver)
            return 0
        elif opt in ("-v", "--verbose"):
            log.setLevel(logging.DEBUG)
            verbose = 1
        elif opt in ("-f", "--force"):
            force = 1
        elif opt == "-o":
            outdir = optarg
        elif opt in ("-n", "--dry-run"):
            nowrite = True

    # Process arguments.
    if len(args) != 1:
        log.error("incorrect number of arguments: argv=%r\n" % argv)
        return 1
    toolboxFile = args[0]
    try:
        return koMigrateV5Toolboxes.expand_toolbox(toolboxFile, outdir, toolboxDirName=None, force=force)
    except koMigrateV5Toolboxes.ExpandToolboxException:
        log.exception("problemo...")
        return 2


if __name__ == "__main__":
    __file__ = sys.argv[0]
    rc = main(sys.argv)
    print ("done")
    sys.exit(rc)
コード例 #5
0
 def importV5Package_aux(self, parentPath, kpzPath):
     koDirSvc = components.classes["@activestate.com/koDirs;1"].getService()
     userDataDir = koDirSvc.userDataDir
     kpzExtractDir = join(userDataDir, 'extracted-kpz')
     if not os.path.exists(kpzExtractDir):
         os.mkdir(kpzExtractDir)
     startedWithWebResource = kpzPath.startswith("http:/")
     if startedWithWebResource:
         # Copy the web data to a temporary file.
         koResource = components.classes["@activestate.com/koFileEx;1"].\
             createInstance(components.interfaces.koIFileEx)
         koResource.URI = kpzPath
         kpzPath = join(kpzExtractDir, koResource.baseName)
         koTarget = components.classes["@activestate.com/koFileEx;1"].\
             createInstance(components.interfaces.koIFileEx)
         koTarget.path = kpzPath
         koTarget.open('wb')
         koResource.open('rb')
         koTarget.write(koResource.read(-1))
         koResource.close()
         koTarget.close()
     basedir, kpfFile = self._extractPackage(kpzPath, kpzExtractDir)
     kpfDirToDelete = basedir
     toolboxDirName = os.path.splitext(os.path.basename(kpzPath))[0]
     tempToolsDir = join(os.path.dirname(kpfFile), ".extract-tools")
     if exists(tempToolsDir):
         try:
             shutil.rmtree(tempToolsDir)
         except:
             log.exception("importV5Package: failed to rmtree %s", tempToolsDir)
             
     try:
         koMigrateV5Toolboxes.expand_toolbox(kpfFile,
                                             tempToolsDir,
                                             toolboxDirName=toolboxDirName,
                                             force=1)
         # Now, where are the tools?
         # Usually the package is wrapped in a directory called "Project"
         childFiles = os.listdir(tempToolsDir)
         kpfDir = None
         if len(childFiles) == 1:
             candidate = join(tempToolsDir, childFiles[0])
             if os.path.isdir(candidate):
                 kpfDir = candidate
                 # Skip the hardcoded project thing
                 if childFiles[0].lower() != 'project':
                     childFiles = os.listdir(kpfDir)
                     if len(childFiles) == 1 and childFiles[0].lower() == 'project':
                         candidate = join(kpfDir, childFiles[0])
                         if os.path.isdir(candidate):
                             kpfDir = candidate                
                         
         if kpfDir is None and 'Project' in childFiles:
             candidate = join(tempToolsDir, 'Project')
             if os.path.isdir(candidate):
                 kpfDir = candidate
         if kpfDir is None:
             kpfDir = tempToolsDir
         self.toolboxLoader.importDirectory(parentPath, kpfDir)
     except:
         log.exception("Failed to expand/import package based at %s", parentPath)
     finally:
         # Clean up
         if startedWithWebResource:
             try:
                 os.unlink(kpzPath)
             except:
                 log.exception("importV5Package: failed to delete %s", kpzPath)
         try:
             shutil.rmtree(kpfDirToDelete)
         except:
             log.exception("importV5Package: failed to rmtree %s", kpfDirToDelete)
コード例 #6
0
        elif opt in ("-v", "--verbose"):
            log.setLevel(logging.DEBUG)
            verbose = 1
        elif opt in ("-f", "--force"):
            force = 1
        elif opt == "-o":
            outdir = optarg
        elif opt in ("-n", "--dry-run"):
            nowrite = True

    # Process arguments.
    if len(args) != 1:
        log.error("incorrect number of arguments: argv=%r\n" % argv)
        return 1
    toolboxFile = args[0]
    try:
        return koMigrateV5Toolboxes.expand_toolbox(toolboxFile,
                                                   outdir,
                                                   toolboxDirName=None,
                                                   force=force)
    except koMigrateV5Toolboxes.ExpandToolboxException:
        log.exception("problemo...")
        return 2


if __name__ == "__main__":
    __file__ = sys.argv[0]
    rc = main(sys.argv)
    print("done")
    sys.exit(rc)