examples: cli: more readable and informative program output (#6168)
							parent
							
								
									217f04e311
								
							
						
					
					
						commit
						e6e1011e47
					
				| 
						 | 
				
			
			@ -5,47 +5,55 @@ import os
 | 
			
		|||
 | 
			
		||||
fn main() {
 | 
			
		||||
	mut cmd := cli.Command{
 | 
			
		||||
		name: 'cli',
 | 
			
		||||
		description: 'An example of the cli library',
 | 
			
		||||
		version: '1.0.0',
 | 
			
		||||
		name: 'cli'
 | 
			
		||||
		description: 'An example of the cli library.'
 | 
			
		||||
		version: '1.0.0'
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	mut greet_cmd := cli.Command{
 | 
			
		||||
		name: 'greet',
 | 
			
		||||
		description: 'Prints greeting in different languages',
 | 
			
		||||
		pre_execute: greet_pre_func,
 | 
			
		||||
		execute: greet_func,
 | 
			
		||||
		post_execute: greet_post_func,
 | 
			
		||||
		name: 'greet'
 | 
			
		||||
		description: 'Prints greeting in different languages.'
 | 
			
		||||
		pre_execute: greet_pre_func
 | 
			
		||||
		execute: greet_func
 | 
			
		||||
		post_execute: greet_post_func
 | 
			
		||||
	}
 | 
			
		||||
	greet_cmd.add_flag(cli.Flag{
 | 
			
		||||
		flag: .string,
 | 
			
		||||
		required: true,
 | 
			
		||||
		name: 'language',
 | 
			
		||||
		abbrev: 'l',
 | 
			
		||||
		description: 'Language of the message'
 | 
			
		||||
		flag: .string
 | 
			
		||||
		required: true
 | 
			
		||||
		name: 'language'
 | 
			
		||||
		abbrev: 'l'
 | 
			
		||||
		description: 'Language of the message.'
 | 
			
		||||
	})
 | 
			
		||||
	greet_cmd.add_flag(cli.Flag{
 | 
			
		||||
		flag: .int,
 | 
			
		||||
		name: 'times',
 | 
			
		||||
		value: '3',
 | 
			
		||||
		description: 'Number of times the message gets printed'
 | 
			
		||||
		flag: .int
 | 
			
		||||
		name: 'times'
 | 
			
		||||
		value: '3'
 | 
			
		||||
		description: 'Number of times the message gets printed.'
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	cmd.add_command(greet_cmd)
 | 
			
		||||
	cmd.parse(os.args)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn greet_func(cmd cli.Command) {
 | 
			
		||||
	language := cmd.flags.get_string('language') or { panic('failed to get \'language\' flag: $err') }
 | 
			
		||||
	times := cmd.flags.get_int('times') or { panic('failed to get \'times\' flag: $err') }
 | 
			
		||||
 | 
			
		||||
	for _ in 0..times {
 | 
			
		||||
	language := cmd.flags.get_string('language') or {
 | 
			
		||||
		panic("Failed to get \'language\' flag: $err")
 | 
			
		||||
	}
 | 
			
		||||
	times := cmd.flags.get_int('times') or {
 | 
			
		||||
		panic("Failed to get \'times\' flag: $err")
 | 
			
		||||
	}
 | 
			
		||||
	for _ in 0 .. times {
 | 
			
		||||
		match language {
 | 
			
		||||
			'english' { println('Hello World') }
 | 
			
		||||
			'german' { println('Hallo Welt') }
 | 
			
		||||
			'dutch' { println('Hallo Wereld') }
 | 
			
		||||
			'english' {
 | 
			
		||||
				println('Hello World')
 | 
			
		||||
			}
 | 
			
		||||
			'german' {
 | 
			
		||||
				println('Hallo Welt')
 | 
			
		||||
			}
 | 
			
		||||
			'dutch' {
 | 
			
		||||
				println('Hallo Wereld')
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				println('unsupported language')
 | 
			
		||||
				println('Unsupported language')
 | 
			
		||||
				println('Supported are `englisch`, `german` and `dutch`.')
 | 
			
		||||
				break
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -53,9 +61,9 @@ fn greet_func(cmd cli.Command) {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
fn greet_pre_func(cmd cli.Command) {
 | 
			
		||||
	println('This is a function running before the main function')
 | 
			
		||||
	println('This is a function running before the main function.\n')
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fn greet_post_func(cmd cli.Command) {
 | 
			
		||||
	println('This is a function running after the main function')
 | 
			
		||||
	println('\nThis is a function running after the main function.')
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue