43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from shlex import quote
 | |
| 
 | |
| 
 | |
| defaults = {
 | |
|     'steam-workshop-download': {},
 | |
|     'pip': {
 | |
|         'vpk': {},
 | |
|     },
 | |
| }
 | |
| 
 | |
| 
 | |
| @metadata_reactor.provides(
 | |
|     'systemd/units',
 | |
| )
 | |
| def workshop(metadata):
 | |
|     units = {}
 | |
| 
 | |
|     for name, conf in metadata.get('steam-workshop-download').items():
 | |
|         units[f'steam-workshop-download-{name}.service'] = {
 | |
|             'Unit': {
 | |
|                 'Description': 'install workshop items',
 | |
|                 'After': {
 | |
|                     'network-online.target',
 | |
|                     'steam-update.target',
 | |
|                 },
 | |
|                 'Before': 'steam-update.service',
 | |
|                 'Requires': conf['requires'],
 | |
|             },
 | |
|             'Service': {
 | |
|                 'Type': 'oneshot',
 | |
|                 'User': conf['user'],
 | |
|                 'ExecStart': f"/opt/steam-workshop-download {' '.join(quote(str(id)) for id in conf['ids'])} --out {quote(conf['path'])}",
 | |
|             },
 | |
|             'Install': {
 | |
|                 'RequiredBy': conf['required_by'],
 | |
|             },
 | |
|         }
 | |
| 
 | |
|     return {
 | |
|         'systemd': {
 | |
|             'units': units,
 | |
|         },
 | |
|     }
 |