94 lines
2.0 KiB
V
94 lines
2.0 KiB
V
module herocmds
|
|
|
|
import freeflowuniverse.herolib.core.generator.generic
|
|
import os
|
|
import cli { Command, Flag }
|
|
|
|
pub fn cmd_generator(mut cmdroot Command) {
|
|
mut cmd_run := Command{
|
|
name: 'generate'
|
|
description: 'generator for vlang code in hero context.'
|
|
required_args: 0
|
|
execute: cmd_generator_execute
|
|
}
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .bool
|
|
required: false
|
|
name: 'reset'
|
|
abbrev: 'r'
|
|
description: 'will reset.'
|
|
})
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .string
|
|
required: false
|
|
name: 'path'
|
|
abbrev: 'p'
|
|
description: 'path where to generate the code or scan over multiple directories.'
|
|
})
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .bool
|
|
required: false
|
|
name: 'force'
|
|
abbrev: 'f'
|
|
description: 'will work non interactive if possible.'
|
|
})
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .bool
|
|
required: false
|
|
name: 'playonly'
|
|
description: 'generate the play script.'
|
|
})
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .bool
|
|
required: false
|
|
name: 'scan'
|
|
abbrev: 's'
|
|
description: 'force scanning operation.'
|
|
})
|
|
|
|
cmd_run.add_flag(Flag{
|
|
flag: .bool
|
|
required: false
|
|
name: 'installer'
|
|
abbrev: 'i'
|
|
description: 'Make sure its installer.'
|
|
})
|
|
|
|
cmdroot.add_command(cmd_run)
|
|
}
|
|
|
|
fn cmd_generator_execute(cmd Command) ! {
|
|
mut force := cmd.flags.get_bool('force') or { false }
|
|
mut reset := cmd.flags.get_bool('reset') or { false }
|
|
mut scan := cmd.flags.get_bool('scan') or { false }
|
|
mut playonly := cmd.flags.get_bool('playonly') or { false }
|
|
mut installer := cmd.flags.get_bool('installer') or { false }
|
|
mut path := cmd.flags.get_string('path') or { '' }
|
|
|
|
if playonly{
|
|
force=true
|
|
}
|
|
|
|
if path == '' {
|
|
path = os.getwd()
|
|
}
|
|
|
|
path = path.replace('~', os.home_dir())
|
|
|
|
mut cat := generic.Cat.client
|
|
if installer {
|
|
cat = generic.Cat.installer
|
|
}
|
|
|
|
if scan {
|
|
generic.scan(path: path, reset: reset, force: force, cat: cat, playonly:playonly)!
|
|
} else {
|
|
generic.generate(path: path, reset: reset, force: force, cat: cat)!
|
|
}
|
|
}
|