mirror of
				https://git.launchpad.net/livecd-rootfs
				synced 2025-10-31 08:54:06 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python3
 | |
| 
 | |
| import argparse
 | |
| import gettext
 | |
| import glob
 | |
| import os
 | |
| import sys
 | |
| import yaml
 | |
| 
 | |
| parser = argparse.ArgumentParser()
 | |
| parser.add_argument('--output', required=True)
 | |
| parser.add_argument('--size', required=True)
 | |
| parser.add_argument('--squashfs', required=True)
 | |
| parser.add_argument('--translations', required=True)
 | |
| parser.add_argument('--template', required=True)
 | |
| parser.add_argument('--langs', default=None)
 | |
| 
 | |
| opts = parser.parse_args(sys.argv[1:])
 | |
| 
 | |
| if os.path.exists(opts.output):
 | |
|     with open(opts.output) as fp:
 | |
|         output = yaml.safe_load(fp)
 | |
| else:
 | |
|     output = []
 | |
| 
 | |
| 
 | |
| with open(opts.template) as fp:
 | |
|     template = yaml.safe_load(fp)
 | |
| 
 | |
| 
 | |
| template['size'] = int(opts.size)
 | |
| template['path'] = opts.squashfs
 | |
| 
 | |
| en_name = template['name']
 | |
| en_description = template['description']
 | |
| 
 | |
| template['name'] = {'en': en_name}
 | |
| template['description'] = {'en': en_description}
 | |
| 
 | |
| for mo in glob.glob(os.path.join(opts.translations, '*.mo')):
 | |
|     with open(mo, 'rb') as fp:
 | |
|         t = gettext.GNUTranslations(fp=fp)
 | |
|     t_name = t.gettext(en_name)
 | |
|     if t_name != en_name:
 | |
|         lang = os.path.splitext(os.path.basename(mo))[0]
 | |
|         template['name'][lang] = t_name
 | |
|     t_description = t.gettext(en_description)
 | |
|     if t_description != en_description:
 | |
|         lang = os.path.splitext(os.path.basedescription(mo))[0]
 | |
|         template['description'][lang] = t_description
 | |
|     if opts.langs is not None:
 | |
|         template['preinstalled_langs'] = opts.langs.split(',')
 | |
| 
 | |
| output.append(template)
 | |
| 
 | |
| default_count = 0
 | |
| ids = set()
 | |
| for entry in output:
 | |
|     if entry.get('default', False):
 | |
|         default_count += 1
 | |
|     ids.add(entry['id'])
 | |
| 
 | |
| 
 | |
| if default_count > 1:
 | |
|     print("Too many defaults in source catalog!")
 | |
|     sys.exit(1)
 | |
| 
 | |
| if len(ids) != len(output):
 | |
|     print("Non unique ids in %s!" % output)
 | |
| 
 | |
| with open(opts.output, 'w') as fp:
 | |
|     yaml.dump(output, fp)
 |