mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tools: make v doctor
more informative
This commit is contained in:
parent
5cb1f8965a
commit
4ba7ad9446
@ -15,6 +15,8 @@ fn (mut a App) println(s string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn (mut a App) collect_info() {
|
fn (mut a App) collect_info() {
|
||||||
|
a.line('V full version', version.full_v_version(true))
|
||||||
|
//
|
||||||
mut os_kind := os.user_os()
|
mut os_kind := os.user_os()
|
||||||
mut arch_details := []string{}
|
mut arch_details := []string{}
|
||||||
arch_details << '${runtime.nr_cpus()} cpus'
|
arch_details << '${runtime.nr_cpus()} cpus'
|
||||||
@ -96,34 +98,32 @@ fn (mut a App) collect_info() {
|
|||||||
}
|
}
|
||||||
a.line('OS', '${os_kind}, ${os_details}')
|
a.line('OS', '${os_kind}, ${os_details}')
|
||||||
a.line('Processor', arch_details.join(', '))
|
a.line('Processor', arch_details.join(', '))
|
||||||
a.line('CC version', a.cmd(command: 'cc --version'))
|
|
||||||
a.println('')
|
a.println('')
|
||||||
getwd := os.getwd()
|
getwd := os.getwd()
|
||||||
vmodules := os.vmodules_dir()
|
vmodules := os.vmodules_dir()
|
||||||
|
vtmp_dir := os.vtmp_dir()
|
||||||
vexe := os.getenv('VEXE')
|
vexe := os.getenv('VEXE')
|
||||||
vroot := os.dir(vexe)
|
vroot := os.dir(vexe)
|
||||||
os.chdir(vroot) or {}
|
os.chdir(vroot) or {}
|
||||||
a.line('getwd', getwd)
|
a.line('getwd', getwd)
|
||||||
a.line('vmodules', vmodules)
|
|
||||||
a.line('vroot', vroot)
|
|
||||||
a.line('vexe', vexe)
|
a.line('vexe', vexe)
|
||||||
a.line('vexe mtime', time.unix(os.file_last_mod_unix(vexe)).str())
|
a.line('vexe mtime', time.unix(os.file_last_mod_unix(vexe)).str())
|
||||||
a.line('is vroot writable', is_writable_dir(vroot).str())
|
a.println('')
|
||||||
a.line('is vmodules writable', is_writable_dir(vmodules).str())
|
a.line2('vroot', diagnose_dir(vroot), vroot)
|
||||||
a.line('V full version', version.full_v_version(true))
|
a.line2('VMODULES', diagnose_dir(vmodules), vmodules)
|
||||||
vtmp := os.getenv('VTMP')
|
a.line2('VTMP', diagnose_dir(vtmp_dir), vtmp_dir)
|
||||||
if vtmp != '' {
|
|
||||||
a.line('env VTMP', '"${vtmp}"')
|
|
||||||
}
|
|
||||||
vflags := os.getenv('VFLAGS')
|
vflags := os.getenv('VFLAGS')
|
||||||
|
a.println('')
|
||||||
if vflags != '' {
|
if vflags != '' {
|
||||||
a.line('env VFLAGS', '"${vflags}"')
|
a.line('env VFLAGS', '"${vflags}"')
|
||||||
|
a.println('')
|
||||||
}
|
}
|
||||||
a.println('')
|
|
||||||
a.line('Git version', a.cmd(command: 'git --version'))
|
a.line('Git version', a.cmd(command: 'git --version'))
|
||||||
a.line('Git vroot status', a.git_info())
|
a.line('Git vroot status', a.git_info())
|
||||||
a.line('.git/config present', os.is_file('.git/config').str())
|
a.line('.git/config present', os.is_file('.git/config').str())
|
||||||
|
a.println('')
|
||||||
//
|
//
|
||||||
|
a.line('CC version', a.cmd(command: 'cc --version'))
|
||||||
a.report_tcc_version('thirdparty/tcc')
|
a.report_tcc_version('thirdparty/tcc')
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,6 +153,11 @@ fn (mut a App) line(label string, value string) {
|
|||||||
a.println('${label}: ${term.colorize(term.bold, value)}')
|
a.println('${label}: ${term.colorize(term.bold, value)}')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (mut a App) line2(label string, value string, value2 string) {
|
||||||
|
a.println('${label}: ${term.colorize(term.bold, value)}, value: ${term.colorize(term.bold,
|
||||||
|
value2)}')
|
||||||
|
}
|
||||||
|
|
||||||
fn (app &App) parse(config string, sep string) map[string]string {
|
fn (app &App) parse(config string, sep string) map[string]string {
|
||||||
mut m := map[string]string{}
|
mut m := map[string]string{}
|
||||||
lines := config.split_into_lines()
|
lines := config.split_into_lines()
|
||||||
@ -261,6 +266,24 @@ fn is_writable_dir(path string) bool {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn diagnose_dir(path string) string {
|
||||||
|
mut diagnostics := []string{}
|
||||||
|
if !is_writable_dir(path) {
|
||||||
|
diagnostics << 'NOT writable'
|
||||||
|
}
|
||||||
|
if path.contains(' ') {
|
||||||
|
diagnostics << 'contains spaces'
|
||||||
|
}
|
||||||
|
path_non_ascii_runes := path.runes().filter(it > 255)
|
||||||
|
if path_non_ascii_runes.len > 0 {
|
||||||
|
diagnostics << 'contains these non ASCII characters: ${path_non_ascii_runes}'
|
||||||
|
}
|
||||||
|
if diagnostics.len == 0 {
|
||||||
|
diagnostics << 'OK'
|
||||||
|
}
|
||||||
|
return diagnostics.join(', ')
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
mut app := App{}
|
mut app := App{}
|
||||||
app.collect_info()
|
app.collect_info()
|
||||||
|
Loading…
Reference in New Issue
Block a user