def main(): arguments = docopt(__doc__, version='1.0', options_first=True) ipa = IPAparser(arguments['<IPA>']) InfoPlist = ipa.parseInfo() # # Saving icon files # if arguments['icons']: # Old search icons = InfoPlist.get('CFBundleIconFiles', list()) for icn in icons: icon_path = ipa.findFile(icn) print icon_path ipa.saveFileTo(icon_path, "%s-%s" % (arguments['IPA'].split('/')[-1].split('.')[0], icn)) elif arguments['manifest']: display_name = InfoPlist.get('CFBundleDisplayName') bundle_id = InfoPlist.get('CFBundleIdentifier') bundle_version = InfoPlist.get('CFBundleShortVersionString') ipa_url = arguments['<IPA_URL>'] icon_url = arguments['<ICON_URL>'] manifest_path = 'manifest.plist' if arguments['<MANIFEST_FILENAME>'] is None else arguments['<MANIFEST_FILENAME>'] manifest = {'items': [{'assets': [{'url': ipa_url, 'kind': 'software-package'}, {'url': icon_url,'kind': 'display-image'}, {'url': icon_url,'kind': 'full-size-image'}], 'metadata': {'kind': 'software', 'title': display_name, 'bundle-identifier': bundle_id,'bundle-version': bundle_version}}], 'custom': 'prova_paolo' } plistlib.writePlist(manifest, manifest_path) else: key_filter = DEFAULT_KEYS if arguments['--keys']: key_filter = arguments['--keys'] if arguments['--all']: d = InfoPlist else: d = dict((k, v) for k, v in InfoPlist.items() if k in key_filter) if arguments['--out'] == 'json': out = json.dumps(d, indent=2) elif arguments['--out'] == 'text': # todo: print list as text in a nicer way out = "\n".join([str(v) for k, v in d.items()]) # todo: other formats?? else: err('Wrong output format: %s' % arguments['--out']) if arguments['FILE']: f = open(arguments['FILE'], "w") f.write(out) f.close() else: print out
def main(): arguments = docopt(__doc__, version='1.0', options_first=True) ipa = IPAparser(arguments['<IPA>']) InfoPlist = ipa.parseInfo() # # Saving icon files # if arguments['icons']: # Old search icons = InfoPlist.get('CFBundleIconFiles', list()) for icn in icons: icon_path = ipa.findFile(icn) print icon_path ipa.saveFileTo( icon_path, "%s-%s" % (arguments['IPA'].split('/')[-1].split('.')[0], icn)) elif arguments['manifest']: display_name = InfoPlist.get('CFBundleDisplayName') bundle_id = InfoPlist.get('CFBundleIdentifier') bundle_version = InfoPlist.get('CFBundleShortVersionString') ipa_url = arguments['<IPA_URL>'] icon_url = arguments['<ICON_URL>'] manifest_path = 'manifest.plist' if arguments[ '<MANIFEST_FILENAME>'] is None else arguments['<MANIFEST_FILENAME>'] manifest = { 'items': [{ 'assets': [{ 'url': ipa_url, 'kind': 'software-package' }, { 'url': icon_url, 'kind': 'display-image' }, { 'url': icon_url, 'kind': 'full-size-image' }], 'metadata': { 'kind': 'software', 'title': display_name, 'bundle-identifier': bundle_id, 'bundle-version': bundle_version } }], 'custom': 'prova_paolo' } plistlib.writePlist(manifest, manifest_path) else: key_filter = DEFAULT_KEYS if arguments['--keys']: key_filter = arguments['--keys'] if arguments['--all']: d = InfoPlist else: d = dict((k, v) for k, v in InfoPlist.items() if k in key_filter) if arguments['--out'] == 'json': out = json.dumps(d, indent=2) elif arguments['--out'] == 'text': # todo: print list as text in a nicer way out = "\n".join([str(v) for k, v in d.items()]) # todo: other formats?? else: err('Wrong output format: %s' % arguments['--out']) if arguments['FILE']: f = open(arguments['FILE'], "w") f.write(out) f.close() else: print out