コード例 #1
0
ファイル: main.py プロジェクト: mogui/pyipa
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
コード例 #2
0
ファイル: main.py プロジェクト: SkOODaT/pyipa
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