script_update_with_sbsupdater script
- script_update_with_sbsupdater.scriptUpdatePackagesVersion(aContext, aPreviousVersion, aPreviousUpdaterVersion, aPackagesFolderRootDir, aBatchToolsFolder=None)
Allows to update to the current version of Substance Designer all .sbs recursively included in the given folder path using the Mutator Batch Tool.
- Parameters:
aContext (context.Context) – Execution context
aPreviousVersion (str) – Previous version number. Only .sbs with this version will be updated
aPreviousUpdaterVersion (str) – Previous updater version number. Only .sbs with this updater version will be updated
aPackagesFolderRootDir – The root folder containing the packages to update
aBatchToolsFolder (str, optional) – The folder containing the batch tools executables. If not provided, the path of Substance Designer identified by the given context will be used
- Returns:
True if success
Here is the code of function scriptUpdatePackagesVersion:
aUpdaterPath = aContext.getBatchToolExePath(aBatchTool=sbsenum.BatchToolsEnum.UPDATER, aBatchToolsFolder=aBatchToolsFolder) aPresetPackagePath = aContext.getDefaultPackagePath() try: aCommand = [aUpdaterPath, '--no-dependency', '--output-path', '{inputPath}', '--output-name', '{inputName}', '--presets-path', aPresetPackagePath] log.info(aCommand) aRootDir = os.path.normpath(aPackagesFolderRootDir) for root, subFolders, files in os.walk(aRootDir): for aFile in files: if aFile.endswith('.sbs'): aPackagePath = os.path.join(root, aFile) aDoc = substance.SBSDocument(aContext=aContext, aFileAbsPath=aPackagePath) log.info('Parse substance '+aPackagePath) try: aDoc.parseDoc() except SBSIncompatibleVersionError: pass if aDoc.mFormatVersion == aPreviousVersion and aDoc.mUpdaterVersion == aPreviousUpdaterVersion: aMutatorCmd = aCommand + ['--input', aPackagePath] print(aMutatorCmd) log.info('Update substance '+aPackagePath) subprocess.check_call(aMutatorCmd) log.info('=> All packages have been updated using the Mutator Batch Tool') return True except BaseException as error: log.error("!!! [demoUpdatePackagesVersion] Failed to update a package") raise error