def dep(usdfile, level=1): id = '-' * (level) # print('UsdUtilsExtractExternalReferences'.center(40, '-')) print(id, usdfile) sublayers, references, payloads = UsdUtils.ExtractExternalReferences( usdfile) if sublayers: print(id, 'SUBLAYERS') for sublayer in sublayers: # print(id, sublayer) refpath = os.path.normpath( os.path.join(os.path.dirname(usdfile), sublayer)) dep(refpath, level=level + 1) if references: print(id, 'REFERENCES') for reference in references: # print(id, reference) refpath = os.path.normpath( os.path.join(os.path.dirname(usdfile), reference)) dep(refpath, level=level + 1) if payloads: print(id, 'PAYLOADS') for payload in payloads: # print(id, payload) refpath = os.path.normpath( os.path.join(os.path.dirname(usdfile), payload)) dep(refpath, level=level + 1)
with open(path, *args, **kwargs) as fp: yield fp def presult(ostr, fileName, refType, refs): if refs: for i, r in enumerate(refs): print('{} {}[{:03d}]: {}'.format(fileName, refType, i + 1, r), file=ostr) else: print('{} no {}'.format(fileName, refType), file=ostr) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('infile') parser.add_argument('outfile', default='-') args = parser.parse_args() if not os.path.exists(args.infile): print('Error: cannot access file {}'.format(args.infile), file=sys.stderr) sys.exit(1) sublayers, references, payloads = \ UsdUtils.ExtractExternalReferences(args.infile) with stream(args.outfile, 'w') as ofp: presult(ofp, args.infile, 'sublayers', sublayers) presult(ofp, args.infile, 'references', references) presult(ofp, args.infile, 'payloads', payloads)