83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			V
		
	
	
module cmdline
 | 
						|
 | 
						|
// Fetch multiple option by param, e.g.
 | 
						|
// args: ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc']
 | 
						|
// param: '-d'
 | 
						|
// ret: ['aa', 'bb', 'cc']
 | 
						|
pub fn options(args []string, param string) []string {
 | 
						|
	mut flags := []string{}
 | 
						|
	for i, v in args {
 | 
						|
		if v == param {
 | 
						|
			if i + 1 < args.len {
 | 
						|
				flags << args[i + 1]
 | 
						|
			}
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return flags
 | 
						|
}
 | 
						|
 | 
						|
// Fetch option by param, e.g.
 | 
						|
// args: ['v', '-d', 'aa']
 | 
						|
// param: '-d'
 | 
						|
// def: ''
 | 
						|
// ret: 'aa'
 | 
						|
pub fn option(args []string, param string, def string) string {
 | 
						|
	mut found := false
 | 
						|
	for arg in args {
 | 
						|
		if found {
 | 
						|
			return arg
 | 
						|
		} else if param == arg {
 | 
						|
			found = true
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return def
 | 
						|
}
 | 
						|
 | 
						|
// Fetch all options before what params, e.g.
 | 
						|
// args: ['-stat', 'test', 'aaa.v']
 | 
						|
// what: ['test']
 | 
						|
// ret: ['-stat']
 | 
						|
pub fn options_before(args []string, what []string) []string {
 | 
						|
	mut args_before := []string{}
 | 
						|
	for a in args {
 | 
						|
		if a in what {
 | 
						|
			break
 | 
						|
		}
 | 
						|
		args_before << a
 | 
						|
	}
 | 
						|
	return args_before
 | 
						|
}
 | 
						|
 | 
						|
// Fetch all options after what params, e.g.
 | 
						|
// args: ['-stat', 'test', 'aaa.v']
 | 
						|
// what: ['test']
 | 
						|
// ret: ['aaa.v']
 | 
						|
pub fn options_after(args []string, what []string) []string {
 | 
						|
	mut found := false
 | 
						|
	mut args_after := []string{}
 | 
						|
	for a in args {
 | 
						|
		if a in what {
 | 
						|
			found = true
 | 
						|
			continue
 | 
						|
		}
 | 
						|
		if found {
 | 
						|
			args_after << a
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return args_after
 | 
						|
}
 | 
						|
 | 
						|
// Fetch all options not start with '-', e.g.
 | 
						|
// args: ['-d', 'aa', '--help', 'bb']
 | 
						|
// ret: ['aa', 'bb']
 | 
						|
pub fn only_non_options(args []string) []string {
 | 
						|
	return args.filter(!it.starts_with('-'))
 | 
						|
}
 | 
						|
 | 
						|
// Fetch all options start with '-', e.g.
 | 
						|
// args: ['-d', 'aa', '--help', 'bb']
 | 
						|
// ret: ['-d', '--help']
 | 
						|
pub fn only_options(args []string) []string {
 | 
						|
	return args.filter(it.starts_with('-'))
 | 
						|
}
 |