view retrieve_meta.py @ 0:0de428c589f3 draft default tip

"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/packaged_annotation_loader commit 339a6c16fb6d944d4e147b5192cbeb0ebd26d18e"
author iuc
date Tue, 04 Jan 2022 18:34:48 +0000
parents
children
line wrap: on
line source

#!/usr/bin/env python

import argparse
import json
import os

import yaml

if __name__ == "__main__":
    parser = argparse.ArgumentParser()

    parser.add_argument('galaxy_json')
    parser.add_argument(
        '-o', '--ofile',
        required=True
    )
    parser.add_argument(
        '--format', choices=['yaml', 'tab'], default='yaml'
    )
    args = parser.parse_args()

    galaxy_collection_info = json.load(open(args.galaxy_json))
    annotation_info = next(iter(galaxy_collection_info.values()))['elements']
    selected_ids = {i['name'] for i in annotation_info}
    package_meta_file = os.path.join(
        os.path.dirname(annotation_info[0]['filename']),
        'meta.yml'
    )
    meta = yaml.safe_load(open(package_meta_file))
    meta['records'] = [
        rec for rec in meta['records'] if rec['id'] in selected_ids
    ]

    with open(args.ofile, 'w') as fo:
        if args.format == 'yaml':
            yaml.dump(
                meta, fo, allow_unicode=False, default_flow_style=False
            )
        else:
            print('Annotation\tVersion', file=fo)
            for record in meta['records']:
                print(record['name'], record['version'], sep='\t', file=fo)