vfmt fixes
parent
9eeb3dfe7e
commit
e272a10bda
|
@ -62,7 +62,7 @@ fn main() {
|
||||||
exit(0)
|
exit(0)
|
||||||
}
|
}
|
||||||
// we are NOT a worker at this stage, i.e. we are a parent vfmt process
|
// we are NOT a worker at this stage, i.e. we are a parent vfmt process
|
||||||
possible_files := cmdline.only_non_options(cmdline.after(args, ['fmt']))
|
possible_files := cmdline.only_non_options(cmdline.options_after(args, ['fmt']))
|
||||||
if foptions.is_verbose {
|
if foptions.is_verbose {
|
||||||
eprintln('vfmt toolexe: $toolexe')
|
eprintln('vfmt toolexe: $toolexe')
|
||||||
eprintln('vfmt args: ' + os.args.str())
|
eprintln('vfmt args: ' + os.args.str())
|
||||||
|
@ -71,11 +71,13 @@ fn main() {
|
||||||
}
|
}
|
||||||
mut files := []string
|
mut files := []string
|
||||||
for file in possible_files {
|
for file in possible_files {
|
||||||
if !os.exists(file) {
|
|
||||||
compiler.verror('"$file" does not exist.')
|
|
||||||
}
|
|
||||||
if !file.ends_with('.v') {
|
if !file.ends_with('.v') {
|
||||||
compiler.verror('v fmt can only be used on .v files.\nOffending file: "$file" .')
|
compiler.verror('v fmt can only be used on .v files.\nOffending file: "$file" .')
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !os.exists(file) {
|
||||||
|
compiler.verror('"$file" does not exist.')
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
files << file
|
files << file
|
||||||
}
|
}
|
||||||
|
@ -170,7 +172,7 @@ fn (foptions &FormatOptions) format_file(file string) {
|
||||||
compiler_params.path = cfile
|
compiler_params.path = cfile
|
||||||
compiler_params.mod = mod_name
|
compiler_params.mod = mod_name
|
||||||
compiler_params.is_test = is_test_file
|
compiler_params.is_test = is_test_file
|
||||||
compiler_params.is_script = file.ends_with('.v') || file.ends_with('.vsh')
|
compiler_params.is_script = file.ends_with('.v') || file.ends_with('.vsh')
|
||||||
if foptions.is_verbose {
|
if foptions.is_verbose {
|
||||||
eprintln('vfmt format_file: file: $file')
|
eprintln('vfmt format_file: file: $file')
|
||||||
eprintln('vfmt format_file: cfile: $cfile')
|
eprintln('vfmt format_file: cfile: $cfile')
|
||||||
|
|
|
@ -478,7 +478,7 @@ fn init_settings() {
|
||||||
}
|
}
|
||||||
s.is_help = '-h' in os.args || '--help' in os.args || 'help' in os.args
|
s.is_help = '-h' in os.args || '--help' in os.args || 'help' in os.args
|
||||||
s.is_verbose = '-verbose' in os.args || '--verbose' in os.args
|
s.is_verbose = '-verbose' in os.args || '--verbose' in os.args
|
||||||
s.server_urls = cmdline.many_values(os.args, '-server-url')
|
s.server_urls = cmdline.options(os.args, '-server-url')
|
||||||
s.vmodules_path = os.home_dir() + '.vmodules'
|
s.vmodules_path = os.home_dir() + '.vmodules'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,10 +77,10 @@ pub fn run_repl(workdir string, vrepl_prefix string) []string {
|
||||||
version := v_version()
|
version := v_version()
|
||||||
println(version)
|
println(version)
|
||||||
println('Use Ctrl-C or `exit` to exit')
|
println('Use Ctrl-C or `exit` to exit')
|
||||||
|
|
||||||
file := filepath.join( workdir, '.${vrepl_prefix}vrepl.v' )
|
file := filepath.join( workdir, '.${vrepl_prefix}vrepl.v' )
|
||||||
temp_file := filepath.join( workdir, '.${vrepl_prefix}vrepl_temp.v')
|
temp_file := filepath.join( workdir, '.${vrepl_prefix}vrepl_temp.v')
|
||||||
mut prompt := '>>> '
|
mut prompt := '>>> '
|
||||||
defer {
|
defer {
|
||||||
os.rm(file)
|
os.rm(file)
|
||||||
os.rm(temp_file)
|
os.rm(temp_file)
|
||||||
|
@ -155,12 +155,12 @@ pub fn run_repl(workdir string, vrepl_prefix string) []string {
|
||||||
mut temp_flag := false
|
mut temp_flag := false
|
||||||
func_call := r.function_call(r.line)
|
func_call := r.function_call(r.line)
|
||||||
if !(
|
if !(
|
||||||
r.line.contains(' ') ||
|
r.line.contains(' ') ||
|
||||||
r.line.contains(':') ||
|
r.line.contains(':') ||
|
||||||
r.line.contains('=') ||
|
r.line.contains('=') ||
|
||||||
r.line.contains(',') ||
|
r.line.contains(',') ||
|
||||||
r.line.ends_with('++') ||
|
r.line.ends_with('++') ||
|
||||||
r.line.ends_with('--') ||
|
r.line.ends_with('--') ||
|
||||||
r.line == '') && !func_call {
|
r.line == '') && !func_call {
|
||||||
temp_line = 'println($r.line)'
|
temp_line = 'println($r.line)'
|
||||||
temp_flag = true
|
temp_flag = true
|
||||||
|
@ -219,7 +219,7 @@ fn main() {
|
||||||
// Support for the parameters replfolder and replprefix is needed
|
// Support for the parameters replfolder and replprefix is needed
|
||||||
// so that the repl can be launched in parallel by several different
|
// so that the repl can be launched in parallel by several different
|
||||||
// threads by the REPL test runner.
|
// threads by the REPL test runner.
|
||||||
args := cmdline.after(os.args, ['repl'])
|
args := cmdline.options_after(os.args, ['repl'])
|
||||||
replfolder := os.realpath( cmdline.option(args, '-replfolder', '.') )
|
replfolder := os.realpath( cmdline.option(args, '-replfolder', '.') )
|
||||||
replprefix := cmdline.option(args, '-replprefix', 'noprefix.')
|
replprefix := cmdline.option(args, '-replprefix', 'noprefix.')
|
||||||
os.chdir( replfolder )
|
os.chdir( replfolder )
|
||||||
|
|
|
@ -22,8 +22,8 @@ pub fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
args_to_executable := args[1..]
|
args_to_executable := args[1..]
|
||||||
args_before := cmdline.before(args_to_executable, ['test'])
|
args_before := cmdline.options_before(args_to_executable, ['test'])
|
||||||
args_after := cmdline.after(args_to_executable, ['test'])
|
args_after := cmdline.options_after(args_to_executable, ['test'])
|
||||||
|
|
||||||
if args_after.join(' ') == 'v' {
|
if args_after.join(' ') == 'v' {
|
||||||
eprintln('`v test v` has been deprecated.')
|
eprintln('`v test v` has been deprecated.')
|
||||||
|
@ -53,4 +53,3 @@ pub fn main() {
|
||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ pub fn run_compiled_executable_and_exit(v &compiler.V, args []string) {
|
||||||
println('============ running $v.pref.out_name ============')
|
println('============ running $v.pref.out_name ============')
|
||||||
}
|
}
|
||||||
mut cmd := '"${v.pref.out_name}"'
|
mut cmd := '"${v.pref.out_name}"'
|
||||||
args_after_no_options := cmdline.only_non_options( cmdline.after(args,['run','test']) )
|
args_after_no_options := cmdline.only_non_options( cmdline.options_after(args,['run','test']) )
|
||||||
if args_after_no_options.len > 1 {
|
if args_after_no_options.len > 1 {
|
||||||
cmd += ' ' + args_after_no_options[1..].join(' ')
|
cmd += ' ' + args_after_no_options[1..].join(' ')
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ pub fn new_v(args []string) &compiler.V {
|
||||||
mut out_name := cmdline.option(args, '-o', '')
|
mut out_name := cmdline.option(args, '-o', '')
|
||||||
mut dir := args.last()
|
mut dir := args.last()
|
||||||
if 'run' in args {
|
if 'run' in args {
|
||||||
args_after_run := cmdline.only_non_options( cmdline.after(args,['run']) )
|
args_after_run := cmdline.only_non_options( cmdline.options_after(args,['run']) )
|
||||||
dir = if args_after_run.len>0 { args_after_run[0] } else { '' }
|
dir = if args_after_run.len>0 { args_after_run[0] } else { '' }
|
||||||
}
|
}
|
||||||
if dir == 'v.v' {
|
if dir == 'v.v' {
|
||||||
|
@ -95,9 +95,8 @@ pub fn new_v(args []string) &compiler.V {
|
||||||
}
|
}
|
||||||
|
|
||||||
// println('VROOT=$vroot')
|
// println('VROOT=$vroot')
|
||||||
cflags := cmdline.many_values(args, '-cflags').join(' ')
|
cflags := cmdline.options(args, '-cflags').join(' ')
|
||||||
|
defines := cmdline.options(args, '-d')
|
||||||
defines := cmdline.many_values(args, '-d')
|
|
||||||
compile_defines, compile_defines_all := parse_defines( defines )
|
compile_defines, compile_defines_all := parse_defines( defines )
|
||||||
|
|
||||||
rdir := os.realpath(dir)
|
rdir := os.realpath(dir)
|
||||||
|
@ -194,7 +193,7 @@ pub fn new_v(args []string) &compiler.V {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find_c_compiler_thirdparty_options(args []string) string {
|
fn find_c_compiler_thirdparty_options(args []string) string {
|
||||||
mut cflags := cmdline.many_values(args,'-cflags')
|
mut cflags := cmdline.options(args, '-cflags')
|
||||||
$if !windows {
|
$if !windows {
|
||||||
cflags << '-fPIC'
|
cflags << '-fPIC'
|
||||||
}
|
}
|
||||||
|
@ -226,4 +225,3 @@ fn parse_defines(defines []string) ([]string,[]string) {
|
||||||
}
|
}
|
||||||
return compile_defines, compile_defines_all
|
return compile_defines, compile_defines_all
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,26 @@
|
||||||
module cmdline
|
module cmdline
|
||||||
|
|
||||||
pub fn many_values(args []string, optname string) []string {
|
// 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
|
mut flags := []string
|
||||||
for ci, cv in args {
|
for i, v in args {
|
||||||
if cv == optname {
|
if v == param {
|
||||||
if ci + 1 < args.len {
|
if i + 1 < args.len {
|
||||||
flags << args[ci + 1]
|
flags << args[i + 1]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flags
|
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 {
|
pub fn option(args []string, param string, def string) string {
|
||||||
mut found := false
|
mut found := false
|
||||||
for arg in args {
|
for arg in args {
|
||||||
|
@ -25,7 +34,11 @@ pub fn option(args []string, param string, def string) string {
|
||||||
return def
|
return def
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn before(args []string, what []string) []string {
|
// 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 found := false
|
mut found := false
|
||||||
mut args_before := []string
|
mut args_before := []string
|
||||||
for a in args {
|
for a in args {
|
||||||
|
@ -38,7 +51,11 @@ pub fn before(args []string, what []string) []string {
|
||||||
return args_before
|
return args_before
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn after(args []string, what []string) []string {
|
// 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 found := false
|
||||||
mut args_after := []string
|
mut args_after := []string
|
||||||
for a in args {
|
for a in args {
|
||||||
|
@ -53,10 +70,16 @@ pub fn after(args []string, what []string) []string {
|
||||||
return args_after
|
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 {
|
pub fn only_non_options(args []string) []string {
|
||||||
return args.filter(!it.starts_with('-'))
|
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 {
|
pub fn only_options(args []string) []string {
|
||||||
return args.filter(it.starts_with('-'))
|
return args.filter(it.starts_with('-'))
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
import os.cmdline
|
||||||
|
|
||||||
|
fn test_options() {
|
||||||
|
args := ['v', '-d', 'aa', '-d', 'bb', '-d', 'cc']
|
||||||
|
ret := cmdline.options(args, '-d')
|
||||||
|
assert ret.eq(['aa', 'bb', 'cc'])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_option() {
|
||||||
|
args := ['v', '-d', 'aa']
|
||||||
|
ret := cmdline.option(args, '-d', '')
|
||||||
|
assert ret == 'aa'
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_options_before() {
|
||||||
|
args := ['-stat', 'test', 'aaa.v']
|
||||||
|
ret := cmdline.options_before(args, ['test'])
|
||||||
|
assert ret.eq(['-stat'])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_options_after() {
|
||||||
|
args := ['-stat', 'test', 'aaa.v']
|
||||||
|
ret := cmdline.options_after(args, ['test'])
|
||||||
|
assert ret.eq(['aaa.v'])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_only_non_options() {
|
||||||
|
args := ['-d', 'aa', '--help', 'bb']
|
||||||
|
ret := cmdline.only_non_options(args)
|
||||||
|
assert ret.eq(['aa', 'bb'])
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_only_options() {
|
||||||
|
args := ['-d', 'aa', '--help', 'bb']
|
||||||
|
ret := cmdline.only_options(args)
|
||||||
|
assert ret.eq(['-d', '--help'])
|
||||||
|
}
|
Loading…
Reference in New Issue