53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			V
		
	
	
| module repos
 | |
| 
 | |
| import cli
 | |
| import conf as vconf
 | |
| import client
 | |
| 
 | |
| struct Config {
 | |
| 	address string [required]
 | |
| 	api_key string [required]
 | |
| }
 | |
| 
 | |
| // cmd returns the cli module that handles modifying the repository contents.
 | |
| pub fn cmd() cli.Command {
 | |
| 	return cli.Command{
 | |
| 		name: 'repos'
 | |
| 		description: 'Interact with the repositories & packages stored on the server.'
 | |
| 		commands: [
 | |
| 			cli.Command{
 | |
| 				name: 'remove'
 | |
| 				required_args: 1
 | |
| 				usage: 'repo [arch [pkgname]]'
 | |
| 				description: 'Remove a repo, arch-repo, or package from the server.'
 | |
| 				flags: [
 | |
| 					cli.Flag{
 | |
| 						name: 'force'
 | |
| 						flag: cli.FlagType.bool
 | |
| 					},
 | |
| 				]
 | |
| 				execute: fn (cmd cli.Command) ! {
 | |
| 					config_file := cmd.flags.get_string('config-file')!
 | |
| 					conf_ := vconf.load[Config](prefix: 'VIETER_', default_path: config_file)!
 | |
| 
 | |
| 					if cmd.args.len < 3 {
 | |
| 						if !cmd.flags.get_bool('force')! {
 | |
| 							return error('Removing an arch-repo or repository is a very destructive command. If you really do wish to perform this operation, explicitely add the --force flag.')
 | |
| 						}
 | |
| 					}
 | |
| 
 | |
| 					client_ := client.new(conf_.address, conf_.api_key)
 | |
| 
 | |
| 					if cmd.args.len == 1 {
 | |
| 						client_.remove_repo(cmd.args[0])!
 | |
| 					} else if cmd.args.len == 2 {
 | |
| 						client_.remove_arch_repo(cmd.args[0], cmd.args[1])!
 | |
| 					} else {
 | |
| 						client_.remove_package(cmd.args[0], cmd.args[1], cmd.args[2])!
 | |
| 					}
 | |
| 				}
 | |
| 			},
 | |
| 		]
 | |
| 	}
 | |
| }
 |