os: merge with filepath

pull/3954/head
yuyi 2020-03-08 05:26:26 +08:00 committed by GitHub
parent 5e541e1f11
commit 783dee1f48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
57 changed files with 249 additions and 361 deletions

View File

@ -5,13 +5,12 @@
import ( import (
os os
time time
filepath
) )
fn main() { fn main() {
exe := os.executable() exe := os.executable()
dir := filepath.dir(exe) dir := os.dir(exe)
vdir := filepath.dir(filepath.dir(filepath.dir(dir))) vdir := os.dir(os.dir(os.dir(dir)))
if !os.exists('$vdir/v') && !os.is_dir('$vdir/vlib') { if !os.exists('$vdir/v') && !os.is_dir('$vdir/vlib') {
println('fast.html generator needs to be located in `v/cmd/tools/fast`') println('fast.html generator needs to be located in `v/cmd/tools/fast`')
} }

View File

@ -4,7 +4,6 @@ import (
os os
term term
benchmark benchmark
filepath
sync sync
v.pref v.pref
) )
@ -96,9 +95,9 @@ fn worker_trunner(p mut sync.PoolProcessor, idx int, thread_id int) voidptr {
file := os.realpath(relative_file) file := os.realpath(relative_file)
// Ensure that the generated binaries will be stored in the temporary folder. // Ensure that the generated binaries will be stored in the temporary folder.
// Remove them after a test passes/fails. // Remove them after a test passes/fails.
fname := filepath.filename(file) fname := os.filename(file)
generated_binary_fname := if os.user_os() == 'windows' { fname.replace('.v', '.exe') } else { fname.replace('.v', '') } generated_binary_fname := if os.user_os() == 'windows' { fname.replace('.v', '.exe') } else { fname.replace('.v', '') }
generated_binary_fpath := filepath.join(tmpd,generated_binary_fname) generated_binary_fpath := os.join(tmpd,generated_binary_fname)
if os.exists(generated_binary_fpath) { if os.exists(generated_binary_fpath) {
os.rm(generated_binary_fpath) os.rm(generated_binary_fpath)
} }
@ -153,7 +152,7 @@ fn worker_trunner(p mut sync.PoolProcessor, idx int, thread_id int) voidptr {
} }
pub fn vlib_should_be_present(parent_dir string) { pub fn vlib_should_be_present(parent_dir string) {
vlib_dir := filepath.join(parent_dir,'vlib') vlib_dir := os.join(parent_dir,'vlib')
if !os.is_dir(vlib_dir) { if !os.is_dir(vlib_dir) {
eprintln('$vlib_dir is missing, it must be next to the V executable') eprintln('$vlib_dir is missing, it must be next to the V executable')
exit(1) exit(1)
@ -164,13 +163,13 @@ pub fn v_build_failing(zargs string, folder string) bool {
main_label := 'Building $folder ...' main_label := 'Building $folder ...'
finish_label := 'building $folder' finish_label := 'building $folder'
vexe := pref.vexe_path() vexe := pref.vexe_path()
parent_dir := filepath.dir(vexe) parent_dir := os.dir(vexe)
vlib_should_be_present(parent_dir) vlib_should_be_present(parent_dir)
vargs := zargs.replace(vexe, '') vargs := zargs.replace(vexe, '')
eheader(main_label) eheader(main_label)
eprintln('v compiler args: "$vargs"') eprintln('v compiler args: "$vargs"')
mut session := new_test_session(vargs) mut session := new_test_session(vargs)
files := os.walk_ext(filepath.join(parent_dir,folder), '.v') files := os.walk_ext(os.join(parent_dir,folder), '.v')
mut mains := []string mut mains := []string
for f in files { for f in files {
if !f.contains('modules') && !f.contains('preludes') { if !f.contains('modules') && !f.contains('preludes') {
@ -205,7 +204,7 @@ pub fn building_any_v_binaries_failed() bool {
eheader('Building V binaries...') eheader('Building V binaries...')
eprintln('VFLAGS is: "' + os.getenv('VFLAGS') + '"') eprintln('VFLAGS is: "' + os.getenv('VFLAGS') + '"')
vexe := pref.vexe_path() vexe := pref.vexe_path()
parent_dir := filepath.dir(vexe) parent_dir := os.dir(vexe)
testing.vlib_should_be_present(parent_dir) testing.vlib_should_be_present(parent_dir)
os.chdir(parent_dir) os.chdir(parent_dir)
mut failed := false mut failed := false

View File

@ -2,7 +2,6 @@ module vgit
import os import os
import flag import flag
import filepath
import scripting import scripting
const ( const (
@ -42,7 +41,7 @@ pub fn line_to_timestamp_and_commit(line string) (int,string) {
pub fn normalized_workpath_for_commit(workdir string, commit string) string { pub fn normalized_workpath_for_commit(workdir string, commit string) string {
nc := 'v_at_' + commit.replace('^', '_').replace('-', '_').replace('/', '_') nc := 'v_at_' + commit.replace('^', '_').replace('-', '_').replace('/', '_')
return os.realpath(workdir + filepath.separator + nc) return os.realpath(workdir + os.path_separator + nc)
} }
pub fn prepare_vc_source(vcdir string, cdir string, commit string) (string,string) { pub fn prepare_vc_source(vcdir string, cdir string, commit string) (string,string) {
@ -65,7 +64,7 @@ pub fn prepare_vc_source(vcdir string, cdir string, commit string) (string,strin
pub fn clone_or_pull( remote_git_url string, local_worktree_path string ) { pub fn clone_or_pull( remote_git_url string, local_worktree_path string ) {
// NB: after clone_or_pull, the current repo branch is === HEAD === master // NB: after clone_or_pull, the current repo branch is === HEAD === master
if os.is_dir( local_worktree_path ) && os.is_dir(filepath.join(local_worktree_path,'.git')) { if os.is_dir( local_worktree_path ) && os.is_dir(os.join(local_worktree_path,'.git')) {
// Already existing ... Just pulling in this case is faster usually. // Already existing ... Just pulling in this case is faster usually.
scripting.run('git -C "$local_worktree_path" checkout --quiet master') scripting.run('git -C "$local_worktree_path" checkout --quiet master')
scripting.run('git -C "$local_worktree_path" pull --quiet ') scripting.run('git -C "$local_worktree_path" pull --quiet ')
@ -97,7 +96,7 @@ pub mut:
pub fn (vgit_context mut VGitContext) compile_oldv_if_needed() { pub fn (vgit_context mut VGitContext) compile_oldv_if_needed() {
vgit_context.vexename = if os.user_os() == 'windows' { 'v.exe' } else { 'v' } vgit_context.vexename = if os.user_os() == 'windows' { 'v.exe' } else { 'v' }
vgit_context.vexepath = os.realpath( filepath.join(vgit_context.path_v, vgit_context.vexename) ) vgit_context.vexepath = os.realpath( os.join(vgit_context.path_v, vgit_context.vexename) )
mut command_for_building_v_from_c_source := '' mut command_for_building_v_from_c_source := ''
mut command_for_selfbuilding := '' mut command_for_selfbuilding := ''
if 'windows' == os.user_os() { if 'windows' == os.user_os() {

View File

@ -1,7 +1,6 @@
import ( import (
os os
flag flag
filepath
scripting scripting
vgit vgit
) )
@ -70,7 +69,7 @@ fn main() {
scripting.used_tools_must_exist(['git', 'cc']) scripting.used_tools_must_exist(['git', 'cc'])
mut context := Context{} mut context := Context{}
mut fp := flag.new_flag_parser(os.args) mut fp := flag.new_flag_parser(os.args)
fp.application(filepath.filename(os.executable())) fp.application(os.filename(os.executable()))
fp.version(tool_version) fp.version(tool_version)
fp.description(tool_description) fp.description(tool_description)
fp.arguments_description('VCOMMIT') fp.arguments_description('VCOMMIT')

View File

@ -1,7 +1,6 @@
import ( import (
os os
flag flag
filepath
scripting scripting
vgit vgit
) )
@ -165,7 +164,7 @@ fn (c Context) compare_v_performance(label string, commands []string) string {
hyperfine_commands_arguments << " \'cd ${c.a:-34s} ; ./$cmd \' ".replace_each(['@COMPILER@', source_location_a, '@DEBUG@', debug_option_a]) hyperfine_commands_arguments << " \'cd ${c.a:-34s} ; ./$cmd \' ".replace_each(['@COMPILER@', source_location_a, '@DEBUG@', debug_option_a])
} }
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
cmd_stats_file := os.realpath([c.workdir, 'v_performance_stats_${label}.json'].join(filepath.separator)) cmd_stats_file := os.realpath([c.workdir, 'v_performance_stats_${label}.json'].join(os.path_separator))
comparison_cmd := 'hyperfine $c.hyperfineopts ' + '--export-json ${cmd_stats_file} ' + '--time-unit millisecond ' + '--style full --warmup $c.warmups ' + hyperfine_commands_arguments.join(' ') comparison_cmd := 'hyperfine $c.hyperfineopts ' + '--export-json ${cmd_stats_file} ' + '--time-unit millisecond ' + '--style full --warmup $c.warmups ' + hyperfine_commands_arguments.join(' ')
// ///////////////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////////////
if c.verbose { if c.verbose {
@ -181,7 +180,7 @@ fn main() {
scripting.used_tools_must_exist(['cp', 'rm', 'strip', 'make', 'git', 'upx', 'cc', 'wc', 'tail', 'hyperfine']) scripting.used_tools_must_exist(['cp', 'rm', 'strip', 'make', 'git', 'upx', 'cc', 'wc', 'tail', 'hyperfine'])
mut context := new_context() mut context := new_context()
mut fp := flag.new_flag_parser(os.args) mut fp := flag.new_flag_parser(os.args)
fp.application(filepath.filename(os.executable())) fp.application(os.filename(os.executable()))
fp.version(tool_version) fp.version(tool_version)
fp.description(tool_description) fp.description(tool_description)
fp.arguments_description('COMMIT_BEFORE [COMMIT_AFTER]') fp.arguments_description('COMMIT_BEFORE [COMMIT_AFTER]')

View File

@ -8,7 +8,7 @@ module main
// / code, instead of in embedded C ... // / code, instead of in embedded C ...
// ///////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////////
import ( import (
filepath os
benchmark benchmark
) )
@ -80,7 +80,7 @@ fn (b &BenchedTests) fn_name() string {
// Called at the end of the test program produced by `v -stats file_test.v` // Called at the end of the test program produced by `v -stats file_test.v`
fn (b mut BenchedTests) end_testing() { fn (b mut BenchedTests) end_testing() {
b.bench.stop() b.bench.stop()
println(INNER_INDENT + b.bench.total_message('running V tests in "' + filepath.filename(b.test_suit_file) + '"')) println(INNER_INDENT + b.bench.total_message('running V tests in "' + os.filename(b.test_suit_file) + '"'))
} }
// /////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////

View File

@ -2,7 +2,6 @@ module main
import os import os
import flag import flag
import filepath
const ( const (
tool_version = '0.0.3' tool_version = '0.0.3'
@ -42,7 +41,7 @@ fn (context Context) footer() {
} }
fn (context Context) file2v(file string) { fn (context Context) file2v(file string) {
fname := filepath.filename(file) fname := os.filename(file)
fname_no_dots := fname.replace('.', '_') fname_no_dots := fname.replace('.', '_')
byte_name := '${context.prefix}${fname_no_dots}' byte_name := '${context.prefix}${fname_no_dots}'
fbytes := os.read_bytes(file) or { fbytes := os.read_bytes(file) or {

View File

@ -3,7 +3,6 @@ module main
import ( import (
os os
testing testing
filepath
) )
fn main() { fn main() {
@ -15,7 +14,7 @@ fn main() {
exit(1) exit(1)
} }
if testing.v_build_failing(params + '-live', filepath.join( 'examples', 'hot_reload')){ if testing.v_build_failing(params + '-live', os.join( 'examples', 'hot_reload')){
exit(1) exit(1)
} }

View File

@ -6,7 +6,6 @@ module main
import ( import (
os os
os.cmdline os.cmdline
filepath
compiler compiler
v.pref v.pref
v.fmt v.fmt
@ -40,7 +39,7 @@ const (
fn main() { fn main() {
toolexe := os.executable() toolexe := os.executable()
compiler.set_vroot_folder(filepath.dir(filepath.dir(filepath.dir(toolexe)))) compiler.set_vroot_folder(os.dir(os.dir(os.dir(toolexe))))
args := join_flags_and_argument() args := join_flags_and_argument()
foptions := FormatOptions{ foptions := FormatOptions{
is_2: '-2' in args is_2: '-2' in args
@ -155,8 +154,8 @@ fn (foptions &FormatOptions) format_file(file string) {
table := table.new_table() table := table.new_table()
file_ast := parser.parse_file(file, table, .parse_comments) file_ast := parser.parse_file(file, table, .parse_comments)
formatted_content := fmt.fmt(file_ast, table) formatted_content := fmt.fmt(file_ast, table)
file_name := filepath.filename(file) file_name := os.filename(file)
vfmt_output_path := filepath.join(os.tmpdir(), 'vfmt_' + file_name) vfmt_output_path := os.join(os.tmpdir(), 'vfmt_' + file_name)
os.write_file(vfmt_output_path, formatted_content ) os.write_file(vfmt_output_path, formatted_content )
if foptions.is_verbose { if foptions.is_verbose {
eprintln('vfmt2 fmt.fmt worked and ${formatted_content.len} bytes were written to ${vfmt_output_path} .') eprintln('vfmt2 fmt.fmt worked and ${formatted_content.len} bytes were written to ${vfmt_output_path} .')
@ -180,15 +179,15 @@ fn (foptions &FormatOptions) format_file(file string) {
is_test_file := file.ends_with('_test.v') is_test_file := file.ends_with('_test.v')
mod_name,is_module_file := file_to_mod_name_and_is_module_file(file) mod_name,is_module_file := file_to_mod_name_and_is_module_file(file)
use_tmp_main_program := is_module_file && !is_test_file use_tmp_main_program := is_module_file && !is_test_file
mod_folder := filepath.basedir(file) mod_folder := os.basedir(file)
if use_tmp_main_program { if use_tmp_main_program {
// TODO: remove the need for this // TODO: remove the need for this
// This makes a small program that imports the module, // This makes a small program that imports the module,
// so that the module files will get processed by the // so that the module files will get processed by the
// vfmt implementation. // vfmt implementation.
mod_folder_parent = filepath.basedir(mod_folder) mod_folder_parent = os.basedir(mod_folder)
mut main_program_content := if mod_name == 'builtin' || mod_name == 'main' { 'fn main(){}\n' } else { 'import ${mod_name}\n' + 'fn main(){}\n' } mut main_program_content := if mod_name == 'builtin' || mod_name == 'main' { 'fn main(){}\n' } else { 'import ${mod_name}\n' + 'fn main(){}\n' }
main_program_file := filepath.join(tmpfolder,'vfmt_tmp_${mod_name}_program.v') main_program_file := os.join(tmpfolder,'vfmt_tmp_${mod_name}_program.v')
if os.exists(main_program_file) { if os.exists(main_program_file) {
os.rm(main_program_file) os.rm(main_program_file)
} }
@ -384,7 +383,7 @@ fn get_compile_name_of_potential_v_project(file string) string {
// This function get_compile_name_of_potential_v_project returns: // This function get_compile_name_of_potential_v_project returns:
// a) the file's folder, if file is part of a v project // a) the file's folder, if file is part of a v project
// b) the file itself, if the file is a standalone v program // b) the file itself, if the file is a standalone v program
pfolder := os.realpath(filepath.dir(file)) pfolder := os.realpath(os.dir(file))
// a .v project has many 'module main' files in one folder // a .v project has many 'module main' files in one folder
// if there is only one .v file, then it must be a standalone // if there is only one .v file, then it must be a standalone
all_files_in_pfolder := os.ls(pfolder) or { all_files_in_pfolder := os.ls(pfolder) or {
@ -392,7 +391,7 @@ fn get_compile_name_of_potential_v_project(file string) string {
} }
mut vfiles := []string mut vfiles := []string
for f in all_files_in_pfolder { for f in all_files_in_pfolder {
vf := filepath.join(pfolder,f) vf := os.join(pfolder,f)
if f.starts_with('.') || !f.ends_with('.v') || os.is_dir(vf) { if f.starts_with('.') || !f.ends_with('.v') || os.is_dir(vf) {
continue continue
} }

View File

@ -4,7 +4,6 @@ import (
os os
flag flag
strings strings
filepath
compiler compiler
v.pref v.pref
) )
@ -56,10 +55,10 @@ fn analyze_v_file(file string) {
fn main(){ fn main(){
toolexe := os.executable() toolexe := os.executable()
compiler.set_vroot_folder(filepath.dir(filepath.dir(filepath.dir(toolexe)))) compiler.set_vroot_folder(os.dir(os.dir(os.dir(toolexe))))
mut fp := flag.new_flag_parser(os.args) mut fp := flag.new_flag_parser(os.args)
fp.application(filepath.filename(toolexe)) fp.application(os.filename(toolexe))
fp.version( tool_version ) fp.version( tool_version )
fp.description( tool_description ) fp.description( tool_description )
fp.arguments_description('FILE.v/FOLDER [FILE.v/FOLDER]...') fp.arguments_description('FILE.v/FOLDER [FILE.v/FOLDER]...')

View File

@ -5,7 +5,6 @@ import (
os os
os.cmdline os.cmdline
json json
filepath
) )
const ( const (
@ -177,7 +176,7 @@ fn vpm_install(module_names []string) {
println('Skipping module "$name", since it uses an unsupported VCS {$vcs} .') println('Skipping module "$name", since it uses an unsupported VCS {$vcs} .')
continue continue
} }
final_module_path := os.realpath(filepath.join(settings.vmodules_path,mod.name.replace('.', filepath.separator))) final_module_path := os.realpath(os.join(settings.vmodules_path,mod.name.replace('.', os.path_separator)))
if os.exists(final_module_path) { if os.exists(final_module_path) {
vpm_update([name]) vpm_update([name])
continue continue
@ -278,7 +277,7 @@ fn vpm_remove(module_names []string) {
os.rmdir_all(final_module_path) os.rmdir_all(final_module_path)
// delete author directory if it is empty // delete author directory if it is empty
author := name.split('.')[0] author := name.split('.')[0]
author_dir := os.realpath(filepath.join(settings.vmodules_path,author)) author_dir := os.realpath(os.join(settings.vmodules_path,author))
if os.is_dir_empty(author_dir) { if os.is_dir_empty(author_dir) {
verbose_println('removing author folder $author_dir') verbose_println('removing author folder $author_dir')
os.rmdir(author_dir) os.rmdir(author_dir)
@ -287,7 +286,7 @@ fn vpm_remove(module_names []string) {
} }
fn valid_final_path_of_existing_module(name string) ?string { fn valid_final_path_of_existing_module(name string) ?string {
name_of_vmodules_folder := filepath.join(settings.vmodules_path,name.replace('.', filepath.separator)) name_of_vmodules_folder := os.join(settings.vmodules_path,name.replace('.', os.path_separator))
final_module_path := os.realpath(name_of_vmodules_folder) final_module_path := os.realpath(name_of_vmodules_folder)
if !os.exists(final_module_path) { if !os.exists(final_module_path) {
println('No module with name "$name" exists at $name_of_vmodules_folder') println('No module with name "$name" exists at $name_of_vmodules_folder')
@ -326,7 +325,7 @@ fn vpm_help(module_names []string) {
fn vcs_used_in_dir(dir string) ?[]string { fn vcs_used_in_dir(dir string) ?[]string {
mut vcs := []string mut vcs := []string
for repo_subfolder in supported_vcs_folders { for repo_subfolder in supported_vcs_folders {
checked_folder := os.realpath(filepath.join(dir,repo_subfolder)) checked_folder := os.realpath(os.join(dir,repo_subfolder))
if os.is_dir(checked_folder) { if os.is_dir(checked_folder) {
vcs << repo_subfolder.replace('.', '') vcs << repo_subfolder.replace('.', '')
} }
@ -343,7 +342,7 @@ fn get_installed_modules() []string {
} }
mut modules := []string mut modules := []string
for dir in dirs { for dir in dirs {
adir := filepath.join(settings.vmodules_path,dir) adir := os.join(settings.vmodules_path,dir)
if dir in excluded_dirs || !os.is_dir(adir) { if dir in excluded_dirs || !os.is_dir(adir) {
continue continue
} }
@ -352,7 +351,7 @@ fn get_installed_modules() []string {
continue continue
} }
for m in mods { for m in mods {
vcs_used_in_dir(filepath.join(adir,m)) or { vcs_used_in_dir(os.join(adir,m)) or {
continue continue
} }
modules << '${author}.$m' modules << '${author}.$m'
@ -400,7 +399,7 @@ fn get_all_modules() []string {
} }
fn resolve_dependencies(name, module_path string, module_names []string) { fn resolve_dependencies(name, module_path string, module_names []string) {
vmod_path := filepath.join(module_path,'v.mod') vmod_path := os.join(module_path,'v.mod')
if !os.exists(vmod_path) { if !os.exists(vmod_path) {
return return
} }

View File

@ -9,7 +9,6 @@ import (
term term
readline readline
os.cmdline os.cmdline
filepath
) )
struct Repl { struct Repl {
@ -78,8 +77,8 @@ pub fn run_repl(workdir string, vrepl_prefix string) []string {
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 := os.join( workdir, '.${vrepl_prefix}vrepl.v' )
temp_file := filepath.join( workdir, '.${vrepl_prefix}vrepl_temp.v') temp_file := os.join( workdir, '.${vrepl_prefix}vrepl_temp.v')
mut prompt := '>>> ' mut prompt := '>>> '
defer { defer {
println('') println('')

View File

@ -2,14 +2,13 @@ module main
import ( import (
os os
filepath
v.pref v.pref
) )
fn main() { fn main() {
println('V Self Compiling...') println('V Self Compiling...')
vexe := pref.vexe_path() vexe := pref.vexe_path()
vroot := filepath.dir(vexe) vroot := os.dir(vexe)
os.chdir(vroot) os.chdir(vroot)
s2 := os.exec('$vexe -o v2 cmd/v') or { s2 := os.exec('$vexe -o v2 cmd/v') or {
panic(err) panic(err)

View File

@ -2,14 +2,13 @@ module main
import ( import (
os os
filepath
v.pref v.pref
) )
fn main() { fn main() {
$if windows { $if windows {
println('Setup freetype...') println('Setup freetype...')
vroot := filepath.dir(pref.vexe_path()) vroot := os.dir(pref.vexe_path())
os.chdir(vroot) os.chdir(vroot)
if os.is_dir('./thirdparty/freetype') { if os.is_dir('./thirdparty/freetype') {

View File

@ -4,7 +4,6 @@ import (
os os
testing testing
benchmark benchmark
filepath
v.pref v.pref
) )
@ -20,7 +19,7 @@ fn main() {
fn v_test_compiler(vargs string) { fn v_test_compiler(vargs string) {
vexe := pref.vexe_path() vexe := pref.vexe_path()
parent_dir := filepath.dir(vexe) parent_dir := os.dir(vexe)
testing.vlib_should_be_present(parent_dir) testing.vlib_should_be_present(parent_dir)
// Changing the current directory is needed for some of the compiler tests, // Changing the current directory is needed for some of the compiler tests,
// compiler/tests/local_test.v and compiler/tests/repl/repl_test.v // compiler/tests/local_test.v and compiler/tests/repl/repl_test.v
@ -53,7 +52,7 @@ fn v_test_compiler(vargs string) {
eprintln('') eprintln('')
building_examples_failed := testing.v_build_failing(vargs, 'examples') building_examples_failed := testing.v_build_failing(vargs, 'examples')
eprintln('') eprintln('')
building_live_failed := testing.v_build_failing(vargs + '-live', filepath.join('examples','hot_reload')) building_live_failed := testing.v_build_failing(vargs + '-live', os.join('examples','hot_reload'))
eprintln('') eprintln('')
v_module_install_cmd := '$vexe install nedpals.args' v_module_install_cmd := '$vexe install nedpals.args'
eprintln('') eprintln('')

View File

@ -3,7 +3,6 @@ module main
import ( import (
os os
os.cmdline os.cmdline
filepath
testing testing
) )
@ -40,7 +39,7 @@ pub fn main() {
} }
if os.is_dir(targ) { if os.is_dir(targ) {
// Fetch all tests from the directory // Fetch all tests from the directory
ts.files << os.walk_ext( targ.trim_right(filepath.separator), '_test.v') ts.files << os.walk_ext( targ.trim_right(os.path_separator), '_test.v')
continue continue
} }
println('Unrecognized test file $targ .') println('Unrecognized test file $targ .')

View File

@ -2,13 +2,12 @@ module main
import ( import (
os os
filepath
v.pref v.pref
) )
fn main() { fn main() {
println('Updating V...') println('Updating V...')
vroot := filepath.dir(pref.vexe_path()) vroot := os.dir(pref.vexe_path())
os.chdir(vroot) os.chdir(vroot)
// git pull // git pull
s := os.exec('git pull --rebase origin master') or { s := os.exec('git pull --rebase origin master') or {

View File

@ -5,14 +5,13 @@ module main
import ( import (
compiler compiler
filepath
os os
v.pref v.pref
) )
fn launch_tool(verbosity pref.VerboseLevel, tool_name string) { fn launch_tool(verbosity pref.VerboseLevel, tool_name string) {
vexe := pref.vexe_path() vexe := pref.vexe_path()
vroot := filepath.dir(vexe) vroot := os.dir(vexe)
compiler.set_vroot_folder(vroot) compiler.set_vroot_folder(vroot)
tool_args := os.args[1..].join(' ') tool_args := os.args[1..].join(' ')

View File

@ -7,7 +7,6 @@
module main module main
import filepath
import rand import rand
import time import time
import os import os
@ -20,7 +19,7 @@ import sdl.ttf as ttf
const ( const (
Title = 'tVintris' Title = 'tVintris'
BASE = filepath.dir( os.realpath( os.executable() ) ) BASE = os.dir( os.realpath( os.executable() ) )
FontName = BASE + '/../../assets/fonts/RobotoMono-Regular.ttf' FontName = BASE + '/../../assets/fonts/RobotoMono-Regular.ttf'
MusicName = BASE + '/sounds/TwintrisThosenine.mod' MusicName = BASE + '/sounds/TwintrisThosenine.mod'
SndBlockName = BASE + '/sounds/block.wav' SndBlockName = BASE + '/sounds/block.wav'

View File

@ -1,6 +1,5 @@
import ( import (
os os
filepath
) )
fn test_syscallwrappers() { fn test_syscallwrappers() {
@ -8,7 +7,7 @@ fn test_syscallwrappers() {
$if linux { $if linux {
$if x64 { $if x64 {
exe := os.executable() exe := os.executable()
vdir := filepath.dir(exe) vdir := os.dir(exe)
if vdir.len > 1 { if vdir.len > 1 {
dot_checks := vdir + "/.checks" dot_checks := vdir + "/.checks"
assert os.is_dir(dot_checks) assert os.is_dir(dot_checks)

View File

@ -6,7 +6,6 @@ module compiler
import ( import (
os os
strings strings
filepath
v.pref v.pref
// compiler.x64 // compiler.x64
time time
@ -177,12 +176,12 @@ fn (v mut V) new_parser_from_file(path string) Parser {
} }
} }
mut p := v.new_parser(new_scanner_file(path)) mut p := v.new_parser(new_scanner_file(path))
path_dir := os.realpath(filepath.dir(path)) path_dir := os.realpath(os.dir(path))
p = { p = {
p | p |
file_path:path, file_path:path,
file_path_dir: path_dir, file_path_dir: path_dir,
file_name:path.all_after(filepath.separator), file_name:path.all_after(os.path_separator),
file_platform:path_platform, file_platform:path_platform,
file_pcguard:path_pcguard, file_pcguard:path_pcguard,
is_vh:path.ends_with('.vh'), is_vh:path.ends_with('.vh'),
@ -2487,7 +2486,7 @@ struct IndexConfig {
// for debugging only // for debugging only
fn (p &Parser) fileis(s string) bool { fn (p &Parser) fileis(s string) bool {
return filepath.filename(p.scanner.file_path).contains(s) return os.filename(p.scanner.file_path).contains(s)
} }
// in and dot have higher priority than `!` // in and dot have higher priority than `!`

View File

@ -6,7 +6,6 @@ module compiler
import ( import (
os os
time time
filepath
v.pref v.pref
term term
) )
@ -32,7 +31,7 @@ fn (v mut V) cc() {
} }
v.build_thirdparty_obj_files() v.build_thirdparty_obj_files()
vexe := pref.vexe_path() vexe := pref.vexe_path()
vdir := filepath.dir(vexe) vdir := os.dir(vexe)
// Just create a C/JavaScript file and exit // Just create a C/JavaScript file and exit
// for example: `v -o v.c compiler` // for example: `v -o v.c compiler`
ends_with_c := v.pref.out_name.ends_with('.c') ends_with_c := v.pref.out_name.ends_with('.c')
@ -153,8 +152,8 @@ fn (v mut V) cc() {
} }
if v.pref.build_mode == .build_module { if v.pref.build_mode == .build_module {
// Create the modules & out directory if it's not there. // Create the modules & out directory if it's not there.
mut out_dir := if v.pref.path.starts_with('vlib') { '$v_modules_path${filepath.separator}cache${filepath.separator}$v.pref.path' } else { '$v_modules_path${filepath.separator}$v.pref.path' } mut out_dir := if v.pref.path.starts_with('vlib') { '$v_modules_path${os.path_separator}cache${os.path_separator}$v.pref.path' } else { '$v_modules_path${os.path_separator}$v.pref.path' }
pdir := out_dir.all_before_last(filepath.separator) pdir := out_dir.all_before_last(os.path_separator)
if !os.is_dir(pdir) { if !os.is_dir(pdir) {
os.mkdir_all(pdir) os.mkdir_all(pdir)
} }
@ -220,14 +219,14 @@ fn (v mut V) cc() {
a << '-c' a << '-c'
} }
else if v.pref.is_cache { else if v.pref.is_cache {
builtin_o_path := filepath.join(v_modules_path,'cache','vlib','builtin.o') builtin_o_path := os.join(v_modules_path,'cache','vlib','builtin.o')
a << builtin_o_path.replace('builtin.o', 'strconv.o') // TODO hack no idea why this is needed a << builtin_o_path.replace('builtin.o', 'strconv.o') // TODO hack no idea why this is needed
if os.exists(builtin_o_path) { if os.exists(builtin_o_path) {
libs = builtin_o_path libs = builtin_o_path
} }
else { else {
println('$builtin_o_path not found... building module builtin') println('$builtin_o_path not found... building module builtin')
os.system('$vexe build module vlib${filepath.separator}builtin') os.system('$vexe build module vlib${os.path_separator}builtin')
} }
for imp in v.table.imports { for imp in v.table.imports {
if imp.contains('vweb') { if imp.contains('vweb') {
@ -236,8 +235,8 @@ fn (v mut V) cc() {
if imp == 'webview' { if imp == 'webview' {
continue continue
} }
imp_path := imp.replace('.', filepath.separator) imp_path := imp.replace('.', os.path_separator)
path := '$v_modules_path${filepath.separator}cache${filepath.separator}vlib${filepath.separator}${imp_path}.o' path := '$v_modules_path${os.path_separator}cache${os.path_separator}vlib${os.path_separator}${imp_path}.o'
// println('adding ${imp_path}.o') // println('adding ${imp_path}.o')
if os.exists(path) { if os.exists(path) {
libs += ' ' + path libs += ' ' + path
@ -254,7 +253,7 @@ fn (v mut V) cc() {
} }
} }
else { else {
os.system('$vexe build module vlib${filepath.separator}$imp_path') os.system('$vexe build module vlib${os.path_separator}$imp_path')
} }
} }
if path.ends_with('vlib/ui.o') { if path.ends_with('vlib/ui.o') {

View File

@ -6,7 +6,6 @@ module compiler
import ( import (
os os
strings strings
filepath
) )
struct CGen { struct CGen {
@ -278,14 +277,14 @@ fn (v &V) build_thirdparty_obj_file(path string, moduleflags []CFlag) {
return return
} }
println('$obj_path not found, building it...') println('$obj_path not found, building it...')
parent := filepath.dir(obj_path) parent := os.dir(obj_path)
files := os.ls(parent)or{ files := os.ls(parent)or{
panic(err) panic(err)
} }
mut cfiles := '' mut cfiles := ''
for file in files { for file in files {
if file.ends_with('.c') { if file.ends_with('.c') {
cfiles += '"' + os.realpath(parent + filepath.separator + file) + '" ' cfiles += '"' + os.realpath(parent + os.path_separator + file) + '" '
} }
} }
btarget := moduleflags.c_options_before_target() btarget := moduleflags.c_options_before_target()

View File

@ -2,7 +2,6 @@ module compiler
import ( import (
os os
filepath
term term
) )
// //////////////////////////////////////////////////////////////////////////////////////////////// // ////////////////////////////////////////////////////////////////////////////////////////////////
@ -157,7 +156,7 @@ fn (s &Scanner) get_error_filepath() string {
else { else {
s.print_rel_paths_on_error}} s.print_rel_paths_on_error}}
if use_relative_paths { if use_relative_paths {
workdir := os.getwd() + filepath.separator workdir := os.getwd() + os.path_separator
if s.file_path.starts_with(workdir) { if s.file_path.starts_with(workdir) {
return s.file_path.replace(workdir, '') return s.file_path.replace(workdir, '')
} }

View File

@ -7,7 +7,6 @@ import (
vweb.tmpl // for `$vweb_html()` vweb.tmpl // for `$vweb_html()`
os os
strings strings
filepath
) )
fn (p mut Parser) comp_time() { fn (p mut Parser) comp_time() {
@ -198,7 +197,7 @@ fn (p mut Parser) comp_time() {
// Can't find the template file in current directory, // Can't find the template file in current directory,
// try looking next to the vweb program, in case it's run with // try looking next to the vweb program, in case it's run with
// v path/to/vweb_app.v // v path/to/vweb_app.v
path = filepath.dir(p.scanner.file_path) + '/' + path path = os.dir(p.scanner.file_path) + '/' + path
if !os.exists(path) { if !os.exists(path) {
p.error('vweb HTML template "$path" not found') p.error('vweb HTML template "$path" not found')
} }

View File

@ -1,4 +1,3 @@
module compiler module compiler
// import filepath // import os
// import compiler.x64 // import compiler.x64

View File

@ -3,7 +3,6 @@ module compiler
import ( import (
os os
time time
filepath
) )
fn (v &V) generate_hotcode_reloading_compiler_flags() []string { fn (v &V) generate_hotcode_reloading_compiler_flags() []string {
@ -55,7 +54,7 @@ fn (v &V) generate_hotcode_reloading_main_caller() {
// We are in live code reload mode, so start the .so loader in the background // We are in live code reload mode, so start the .so loader in the background
mut cgen := v.cgen mut cgen := v.cgen
cgen.genln('') cgen.genln('')
file_base := filepath.filename(v.pref.path).replace('.v', '') file_base := os.filename(v.pref.path).replace('.v', '')
if v.pref.os != .windows { if v.pref.os != .windows {
// unix: // unix:
so_name := file_base + '.so' so_name := file_base + '.so'
@ -80,7 +79,7 @@ fn (v &V) generate_hot_reload_code() {
// Hot code reloading // Hot code reloading
if v.pref.is_live { if v.pref.is_live {
mut file := os.realpath(v.pref.path) mut file := os.realpath(v.pref.path)
file_base := filepath.filename(file).replace('.v', '') file_base := os.filename(file).replace('.v', '')
so_name := file_base + '.so' so_name := file_base + '.so'
// Need to build .so file before building the live application // Need to build .so file before building the live application
// The live app needs to load this .so file on initialization. // The live app needs to load this .so file on initialization.
@ -225,4 +224,3 @@ void reload_so() {
cgen.genln(' int load_so(byteptr path) { return 0; }') cgen.genln(' int load_so(byteptr path) { return 0; }')
} }
} }

View File

@ -6,7 +6,6 @@ module compiler
import ( import (
os os
strings strings
filepath
v.pref v.pref
v.builder v.builder
) )
@ -66,11 +65,11 @@ pub fn new_v(pref &pref.Preferences) &V {
mut vgen_buf := strings.new_builder(1000) mut vgen_buf := strings.new_builder(1000)
vgen_buf.writeln('module vgen\nimport strings') vgen_buf.writeln('module vgen\nimport strings')
compiled_dir:=if os.is_dir(rdir) { rdir } else { filepath.dir(rdir) } compiled_dir:=if os.is_dir(rdir) { rdir } else { os.dir(rdir) }
return &V{ return &V{
mod_file_cacher: new_mod_file_cacher() mod_file_cacher: new_mod_file_cacher()
compiled_dir:compiled_dir// if os.is_dir(rdir) { rdir } else { filepath.dir(rdir) } compiled_dir:compiled_dir// if os.is_dir(rdir) { rdir } else { os.dir(rdir) }
table: new_table(pref.obfuscate) table: new_table(pref.obfuscate)
out_name_c: out_name_c out_name_c: out_name_c
cgen: new_cgen(out_name_c) cgen: new_cgen(out_name_c)
@ -106,13 +105,13 @@ pub fn (v &V) finalize_compilation() {
pub fn (v mut V) add_parser(parser Parser) int { pub fn (v mut V) add_parser(parser Parser) int {
pidx := v.parsers.len pidx := v.parsers.len
v.parsers << parser v.parsers << parser
file_path := if filepath.is_abs(parser.file_path) { parser.file_path } else { os.realpath(parser.file_path) } file_path := if os.is_abs(parser.file_path) { parser.file_path } else { os.realpath(parser.file_path) }
v.file_parser_idx[file_path] = pidx v.file_parser_idx[file_path] = pidx
return pidx return pidx
} }
pub fn (v &V) get_file_parser_index(file string) ?int { pub fn (v &V) get_file_parser_index(file string) ?int {
file_path := if filepath.is_abs(file) { file } else { os.realpath(file) } file_path := if os.is_abs(file) { file } else { os.realpath(file) }
if file_path in v.file_parser_idx { if file_path in v.file_parser_idx {
return v.file_parser_idx[file_path] return v.file_parser_idx[file_path]
} }
@ -349,7 +348,7 @@ pub fn (v mut V) compile_x64() {
println('v -x64 can only generate Linux binaries for now') println('v -x64 can only generate Linux binaries for now')
println('You are not on a Linux system, so you will not ' + 'be able to run the resulting executable') println('You are not on a Linux system, so you will not ' + 'be able to run the resulting executable')
} }
//v.files << v.v_files_from_dir(filepath.join(v.pref.vlib_path,'builtin','bare')) //v.files << v.v_files_from_dir(os.join(v.pref.vlib_path,'builtin','bare'))
v.files << v.pref.path v.files << v.pref.path
v.set_module_lookup_paths() v.set_module_lookup_paths()
mut b := v.new_v2() mut b := v.new_v2()
@ -625,7 +624,7 @@ pub fn (v &V) v_files_from_dir(dir string) []string {
continue continue
} }
} }
res << filepath.join(dir,file) res << os.join(dir,file)
} }
return res return res
} }
@ -639,7 +638,7 @@ pub fn (v mut V) add_v_files_to_compile() {
} }
// Builtin cache exists? Use it. // Builtin cache exists? Use it.
if v.pref.is_cache { if v.pref.is_cache {
builtin_vh := filepath.join(v_modules_path,'vlib','builtin.vh') builtin_vh := os.join(v_modules_path,'vlib','builtin.vh')
if os.exists(builtin_vh) { if os.exists(builtin_vh) {
v.cached_mods << 'builtin' v.cached_mods << 'builtin'
builtin_files = [builtin_vh] builtin_files = [builtin_vh]
@ -690,8 +689,8 @@ pub fn (v mut V) add_v_files_to_compile() {
// Cached modules are broken currently // Cached modules are broken currently
/* /*
if v.pref.vpath != '' && v.pref.build_mode != .build_module && !mod.contains('vweb') { if v.pref.vpath != '' && v.pref.build_mode != .build_module && !mod.contains('vweb') {
mod_path := mod.replace('.', filepath.separator) mod_path := mod.replace('.', os.path_separator)
vh_path := '$v_modules_path${filepath.separator}vlib${filepath.separator}${mod_path}.vh' vh_path := '$v_modules_path${os.path_separator}vlib${os.path_separator}${mod_path}.vh'
if v.pref.is_cache && os.exists(vh_path) { if v.pref.is_cache && os.exists(vh_path) {
eprintln('using cached module `$mod`: $vh_path') eprintln('using cached module `$mod`: $vh_path')
v.cached_mods << mod v.cached_mods << mod
@ -722,16 +721,16 @@ pub fn (v &V) get_builtin_files() []string {
// Lookup for built-in folder in lookup path. // Lookup for built-in folder in lookup path.
// Assumption: `builtin/` folder implies usable implementation of builtin // Assumption: `builtin/` folder implies usable implementation of builtin
for location in v.pref.lookup_path { for location in v.pref.lookup_path {
if !os.exists(filepath.join(location, 'builtin')) { if !os.exists(os.join(location, 'builtin')) {
continue continue
} }
if v.pref.is_bare { if v.pref.is_bare {
return v.v_files_from_dir(filepath.join(location, 'builtin', 'bare')) return v.v_files_from_dir(os.join(location, 'builtin', 'bare'))
} }
$if js { $if js {
return v.v_files_from_dir(filepath.join(location, 'builtin','js')) return v.v_files_from_dir(os.join(location, 'builtin','js'))
} }
return v.v_files_from_dir(filepath.join(location, 'builtin')) return v.v_files_from_dir(os.join(location, 'builtin'))
} }
// Panic. We couldn't find the folder. // Panic. We couldn't find the folder.
verror('`builtin/` not included on module lookup path. verror('`builtin/` not included on module lookup path.
@ -748,19 +747,19 @@ pub fn (v &V) get_user_files() []string {
mut user_files := []string mut user_files := []string
// See cmd/tools/preludes/README.md for more info about what preludes are // See cmd/tools/preludes/README.md for more info about what preludes are
vroot := filepath.dir(pref.vexe_path()) vroot := os.dir(pref.vexe_path())
preludes_path := filepath.join(vroot,'cmd','tools','preludes') preludes_path := os.join(vroot,'cmd','tools','preludes')
if v.pref.is_live { if v.pref.is_live {
user_files << filepath.join(preludes_path,'live_main.v') user_files << os.join(preludes_path,'live_main.v')
} }
if v.pref.is_solive { if v.pref.is_solive {
user_files << filepath.join(preludes_path,'live_shared.v') user_files << os.join(preludes_path,'live_shared.v')
} }
if v.pref.is_test { if v.pref.is_test {
user_files << filepath.join(preludes_path,'tests_assertions.v') user_files << os.join(preludes_path,'tests_assertions.v')
} }
if v.pref.is_test && v.pref.is_stats { if v.pref.is_test && v.pref.is_stats {
user_files << filepath.join(preludes_path,'tests_with_stats.v') user_files << os.join(preludes_path,'tests_with_stats.v')
} }
is_test := dir.ends_with('_test.v') is_test := dir.ends_with('_test.v')
@ -781,7 +780,7 @@ pub fn (v &V) get_user_files() []string {
v.log('> That brings in all other ordinary .v files in the same module too .') v.log('> That brings in all other ordinary .v files in the same module too .')
} }
user_files << single_test_v_file user_files << single_test_v_file
dir = filepath.basedir(single_test_v_file) dir = os.basedir(single_test_v_file)
} }
if dir.ends_with('.v') || dir.ends_with('.vsh') { if dir.ends_with('.v') || dir.ends_with('.vsh') {
single_v_file := dir single_v_file := dir
@ -934,5 +933,5 @@ pub fn set_vroot_folder(vroot_path string) {
// VEXE env variable is needed so that compiler.vexe_path() // VEXE env variable is needed so that compiler.vexe_path()
// can return it later to whoever needs it: // can return it later to whoever needs it:
vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' } vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' }
os.setenv('VEXE', os.realpath([vroot_path, vname].join(filepath.separator)), true) os.setenv('VEXE', os.realpath([vroot_path, vname].join(os.path_separator)), true)
} }

View File

@ -6,7 +6,6 @@ module compiler
import ( import (
strings strings
os os
filepath
v.pref v.pref
) )
/* /*
@ -29,10 +28,10 @@ mut:
fn generate_vh(mod string) { fn generate_vh(mod string) {
println('\n\n\n\nGenerating a V header file for module `$mod`') println('\n\n\n\nGenerating a V header file for module `$mod`')
vexe := pref.vexe_path() vexe := pref.vexe_path()
full_mod_path := filepath.join(filepath.dir(vexe),mod) full_mod_path := os.join(os.dir(vexe),mod)
dir := if mod.starts_with('vlib') { '$compiler.v_modules_path${filepath.separator}$mod' } else { mod } dir := if mod.starts_with('vlib') { '$compiler.v_modules_path${os.path_separator}$mod' } else { mod }
path := dir + '.vh' path := dir + '.vh'
pdir := dir.all_before_last(filepath.separator) pdir := dir.all_before_last(os.path_separator)
if !os.is_dir(pdir) { if !os.is_dir(pdir) {
os.mkdir_all(pdir) os.mkdir_all(pdir)
// os.mkdir(os.realpath(dir)) or { panic(err) } // os.mkdir(os.realpath(dir)) or { panic(err) }
@ -50,7 +49,7 @@ fn generate_vh(mod string) {
// mut vfiles := os.ls(full_mod_path) or { // mut vfiles := os.ls(full_mod_path) or {
// exit(1) // exit(1)
// } // }
filtered := vfiles.filter(it.ends_with('.v') && !it.ends_with('test.v') && !it.ends_with('_windows.v') && !it.ends_with('_win.v') && !it.ends_with('_lin.v') && !it.contains('${filepath.separator}examples') && !it.contains('_js.v') && !it.contains('_bare.v') && !it.contains('${filepath.separator}js')) // TODO merge once filter allows it filtered := vfiles.filter(it.ends_with('.v') && !it.ends_with('test.v') && !it.ends_with('_windows.v') && !it.ends_with('_win.v') && !it.ends_with('_lin.v') && !it.contains('${os.path_separator}examples') && !it.contains('_js.v') && !it.contains('_bare.v') && !it.contains('${os.path_separator}js')) // TODO merge once filter allows it
// println('f:') // println('f:')
// println(filtered) // println(filtered)
mut pref := &pref.Preferences { mut pref := &pref.Preferences {

View File

@ -4,7 +4,6 @@
module compiler module compiler
import ( import (
filepath
os os
v.pref v.pref
) )
@ -25,7 +24,7 @@ fn (table &Table) qualify_module(mod string, file_path string) string {
for m in table.imports { for m in table.imports {
if m.contains('.') && m.contains(mod) { if m.contains('.') && m.contains(mod) {
m_parts := m.split('.') m_parts := m.split('.')
m_path := m_parts.join(filepath.separator) m_path := m_parts.join(os.path_separator)
if mod == m_parts[m_parts.len - 1] && file_path.contains(m_path) { if mod == m_parts[m_parts.len - 1] && file_path.contains(m_path) {
return m return m
} }
@ -147,7 +146,7 @@ pub fn (graph &DepGraph) imports() []string {
[inline] [inline]
fn (v &V) module_path(mod string) string { fn (v &V) module_path(mod string) string {
// submodule support // submodule support
return mod.replace('.', filepath.separator) return mod.replace('.', os.path_separator)
} }
// 'strings' => 'VROOT/vlib/strings' // 'strings' => 'VROOT/vlib/strings'
@ -168,10 +167,10 @@ fn (v mut V) set_module_lookup_paths() {
// 3.2) search in ~/.vmodules/ (i.e. modules installed with vpm) // 3.2) search in ~/.vmodules/ (i.e. modules installed with vpm)
v.module_lookup_paths = [] v.module_lookup_paths = []
if v.pref.is_test { if v.pref.is_test {
v.module_lookup_paths << filepath.basedir(v.compiled_dir) // pdir of _test.v v.module_lookup_paths << os.basedir(v.compiled_dir) // pdir of _test.v
} }
v.module_lookup_paths << v.compiled_dir v.module_lookup_paths << v.compiled_dir
v.module_lookup_paths << filepath.join(v.compiled_dir,'modules') v.module_lookup_paths << os.join(v.compiled_dir,'modules')
v.module_lookup_paths << v.pref.lookup_path v.module_lookup_paths << v.pref.lookup_path
if v.pref.verbosity.is_higher_or_equal(.level_two) { if v.pref.verbosity.is_higher_or_equal(.level_two) {
v.log('v.module_lookup_paths: $v.module_lookup_paths') v.log('v.module_lookup_paths: $v.module_lookup_paths')
@ -190,7 +189,7 @@ fn (p mut Parser) find_module_path(mod string) ?string {
mod_path := p.v.module_path(mod) mod_path := p.v.module_path(mod)
for lookup_path in module_lookup_paths { for lookup_path in module_lookup_paths {
try_path := filepath.join(lookup_path,mod_path) try_path := os.join(lookup_path,mod_path)
if p.v.pref.verbosity.is_higher_or_equal(.level_three) { if p.v.pref.verbosity.is_higher_or_equal(.level_three) {
println(' >> trying to find $mod in $try_path ...') println(' >> trying to find $mod in $try_path ...')
} }

View File

@ -1,9 +1,6 @@
module compiler module compiler
import ( import os
os
filepath
)
#flag windows -l shell32 #flag windows -l shell32
#flag windows -l dbghelp #flag windows -l dbghelp
@ -165,7 +162,7 @@ fn find_msvc() ?MsvcResult {
return error('Unable to find visual studio') return error('Unable to find visual studio')
} }
return MsvcResult{ return MsvcResult{
full_cl_exe_path: os.realpath(vs.exe_path + filepath.separator + 'cl.exe') full_cl_exe_path: os.realpath(vs.exe_path + os.path_separator + 'cl.exe')
exe_path: vs.exe_path exe_path: vs.exe_path
um_lib_path: wk.um_lib_path um_lib_path: wk.um_lib_path
ucrt_lib_path: wk.ucrt_lib_path ucrt_lib_path: wk.ucrt_lib_path
@ -316,14 +313,14 @@ fn build_thirdparty_obj_file_with_msvc(path string, moduleflags []CFlag) {
return return
} }
println('$obj_path not found, building it (with msvc)...') println('$obj_path not found, building it (with msvc)...')
parent := filepath.dir(obj_path) parent := os.dir(obj_path)
files := os.ls(parent)or{ files := os.ls(parent)or{
panic(err) panic(err)
} }
mut cfiles := '' mut cfiles := ''
for file in files { for file in files {
if file.ends_with('.c') { if file.ends_with('.c') {
cfiles += '"' + os.realpath(parent + filepath.separator + file) + '" ' cfiles += '"' + os.realpath(parent + os.path_separator + file) + '" '
} }
} }
include_string := '-I "$msvc.ucrt_include_path" -I "$msvc.vs_include_path" -I "$msvc.um_include_path" -I "$msvc.shared_include_path"' include_string := '-I "$msvc.ucrt_include_path" -I "$msvc.vs_include_path" -I "$msvc.um_include_path" -I "$msvc.shared_include_path"'
@ -378,7 +375,7 @@ fn (cflags []CFlag) msvc_string_flags() MsvcStringFlags {
} }
else if flag.name == '-L' { else if flag.name == '-L' {
lib_paths << flag.value lib_paths << flag.value
lib_paths << flag.value + filepath.separator + 'msvc' lib_paths << flag.value + os.path_separator + 'msvc'
// The above allows putting msvc specific .lib files in a subfolder msvc/ , // The above allows putting msvc specific .lib files in a subfolder msvc/ ,
// where gcc will NOT find them, but cl will do... // where gcc will NOT find them, but cl will do...
// NB: gcc is smart enough to not need .lib files at all in most cases, the .dll is enough. // NB: gcc is smart enough to not need .lib files at all in most cases, the .dll is enough.

View File

@ -3,11 +3,7 @@
// that can be found in the LICENSE file. // that can be found in the LICENSE file.
module compiler module compiler
import ( import os
os
filepath
// strings
)
const ( const (
single_quote = `\'` single_quote = `\'`
@ -919,7 +915,7 @@ fn (s mut Scanner) debug_tokens() {
s.pos = 0 s.pos = 0
s.started = false s.started = false
s.debug = true s.debug = true
fname := s.file_path.all_after(filepath.separator) fname := s.file_path.all_after(os.path_separator)
println('\n===DEBUG TOKENS $fname===') println('\n===DEBUG TOKENS $fname===')
for { for {
res := s.scan() res := s.scan()

View File

@ -4,7 +4,6 @@ import os
import compiler.tests.repl.runner import compiler.tests.repl.runner
import benchmark import benchmark
import sync import sync
import filepath
fn test_the_v_compiler_can_be_invoked() { fn test_the_v_compiler_can_be_invoked() {
vexec := runner.full_path_to_v(5) vexec := runner.full_path_to_v(5)
@ -64,7 +63,7 @@ fn worker_repl(p mut sync.PoolProcessor, idx int, thread_id int) voidptr {
p.set_thread_context(idx, tls_bench) p.set_thread_context(idx, tls_bench)
} }
tls_bench.cstep = idx tls_bench.cstep = idx
tfolder := filepath.join(cdir,'vrepl_tests_$idx') tfolder := os.join(cdir,'vrepl_tests_$idx')
if os.is_dir(tfolder) { if os.is_dir(tfolder) {
os.rmdir_all(tfolder) os.rmdir_all(tfolder)
} }

View File

@ -1,9 +1,6 @@
module runner module runner
import ( import os
os
filepath
)
pub struct RunnerOptions { pub struct RunnerOptions {
pub: pub:
@ -20,9 +17,9 @@ pub fn full_path_to_v(dirs_in int) string {
vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' } vname := if os.user_os() == 'windows' { 'v.exe' } else { 'v' }
mut path := os.executable() mut path := os.executable()
for i := 0; i < dirs_in; i++ { for i := 0; i < dirs_in; i++ {
path = filepath.dir(path) path = os.dir(path)
} }
vexec := filepath.join( path, vname ) vexec := os.join( path, vname )
/* /*
args := os.args args := os.args
vreal := os.realpath('v') vreal := os.realpath('v')
@ -51,17 +48,17 @@ fn diff_files( file_result, file_expected string ) string {
} }
pub fn run_repl_file(wd string, vexec string, file string) ?string { pub fn run_repl_file(wd string, vexec string, file string) ?string {
vexec_folder := filepath.dir(vexec) + filepath.separator vexec_folder := os.dir(vexec) + os.path_separator
fcontent := os.read_file(file) or { return error('Could not read file ${file}') } fcontent := os.read_file(file) or { return error('Could not read file ${file}') }
content := fcontent.replace('\r', '') content := fcontent.replace('\r', '')
input := content.all_before('===output===\n') input := content.all_before('===output===\n')
output := content.all_after('===output===\n') output := content.all_after('===output===\n')
fname := filepath.filename( file ) fname := os.filename( file )
input_temporary_filename := os.realpath(filepath.join( wd, 'input_temporary_filename.txt')) input_temporary_filename := os.realpath(os.join( wd, 'input_temporary_filename.txt'))
os.write_file(input_temporary_filename, input) os.write_file(input_temporary_filename, input)
os.write_file( os.realpath(filepath.join( wd, 'original.txt' ) ), fcontent ) os.write_file( os.realpath(os.join( wd, 'original.txt' ) ), fcontent )
rcmd := '"$vexec" repl -replfolder "$wd" -replprefix "${fname}." < $input_temporary_filename' rcmd := '"$vexec" repl -replfolder "$wd" -replprefix "${fname}." < $input_temporary_filename'
r := os.exec(rcmd) or { r := os.exec(rcmd) or {
os.rm(input_temporary_filename) os.rm(input_temporary_filename)
@ -74,7 +71,7 @@ pub fn run_repl_file(wd string, vexec string, file string) ?string {
.replace('>>>', '') .replace('>>>', '')
.replace('... ', '') .replace('... ', '')
.all_after('Use Ctrl-C or `exit` to exit\n') .all_after('Use Ctrl-C or `exit` to exit\n')
.replace(wd + filepath.separator, '' ) .replace(wd + os.path_separator, '' )
.replace(vexec_folder, '') .replace(vexec_folder, '')
.replace('\\', '/') .replace('\\', '/')
@ -137,7 +134,7 @@ pub fn new_options() RunnerOptions {
if os.args.len > 1 { if os.args.len > 1 {
files = os.args[1..] files = os.args[1..]
} else { } else {
os.chdir( filepath.dir(vexec) ) os.chdir( os.dir(vexec) )
wd = os.getwd() wd = os.getwd()
files = os.walk_ext('.', '.repl') files = os.walk_ext('.', '.repl')
} }

View File

@ -1,7 +1,6 @@
module compiler module compiler
import os import os
import filepath
// This file provides a caching mechanism for seeking quickly whether a // This file provides a caching mechanism for seeking quickly whether a
@ -98,13 +97,13 @@ fn (mcache mut ModFileCacher) traverse(mfolder string) ([]string, ModFileAndFold
if 'v.mod' in files { if 'v.mod' in files {
// TODO: actually read the v.mod file and parse its contents to see // TODO: actually read the v.mod file and parse its contents to see
// if its source folder is different // if its source folder is different
res := ModFileAndFolder{ vmod_file: filepath.join( cfolder, 'v.mod'), vmod_folder: cfolder } res := ModFileAndFolder{ vmod_file: os.join( cfolder, 'v.mod'), vmod_folder: cfolder }
return folders_so_far, res return folders_so_far, res
} }
if mcache.check_for_stop( cfolder, files ) { if mcache.check_for_stop( cfolder, files ) {
break break
} }
cfolder = filepath.basedir( cfolder ) cfolder = os.basedir( cfolder )
folders_so_far << cfolder folders_so_far << cfolder
levels++ levels++
} }

View File

@ -4,10 +4,9 @@
module compiler module compiler
import os import os
import filepath
fn get_vtmp_folder() string { fn get_vtmp_folder() string {
vtmp := filepath.join(os.tmpdir(),'v') vtmp := os.join(os.tmpdir(),'v')
if !os.is_dir(vtmp) { if !os.is_dir(vtmp) {
os.mkdir(vtmp)or{ os.mkdir(vtmp)or{
panic(err) panic(err)
@ -18,5 +17,5 @@ fn get_vtmp_folder() string {
fn get_vtmp_filename(base_file_name string, postfix string) string { fn get_vtmp_filename(base_file_name string, postfix string) string {
vtmp := get_vtmp_folder() vtmp := get_vtmp_folder()
return os.realpath(filepath.join(vtmp,filepath.filename(os.realpath(base_file_name)) + postfix)) return os.realpath(os.join(vtmp,os.filename(os.realpath(base_file_name)) + postfix))
} }

View File

@ -1,50 +0,0 @@
module filepath
// ext returns the extension in the file `path`.
pub fn ext(path string) string {
pos := path.last_index('.') or {
return ''
}
return path[pos..]
}
// is_abs returns true if `path` is absolute.
pub fn is_abs(path string) bool {
$if windows {
return path[0] == `/` || // incase we're in MingGW bash
(path[0].is_letter() && path[1] == `:`)
}
return path[0] == `/`
}
// join returns path as string from string parameter(s).
pub fn join(base string, dirs ...string) string {
mut result := []string
result << base.trim_right('\\/')
for d in dirs {
result << d
}
return result.join(separator)
}
// dir returns all but the last element of path, typically the path's directory.
pub fn dir(path string) string {
pos := path.last_index(separator) or {
return '.'
}
return path[..pos]
}
// basedir returns a directory name from path
pub fn basedir(path string) string {
pos := path.last_index(separator) or {
return path
}
// NB: *without* terminating /
return path[..pos]
}
// filename returns a file name from path
pub fn filename(path string) string {
return path.all_after(separator)
}

View File

@ -1,5 +0,0 @@
module filepath
pub const (
separator = '/'
)

View File

@ -1,43 +0,0 @@
import filepath
fn test_ext() {
assert filepath.ext('file.v') == '.v'
assert filepath.ext('file') == ''
}
fn test_is_abs() {
assert filepath.is_abs('/home/user') == true
assert filepath.is_abs('v/vlib') == false
$if windows {
assert filepath.is_abs('C:\\Windows\\') == true
}
}
fn test_join() {
$if windows {
assert filepath.join('v', 'vlib', 'filepath') == 'v\\vlib\\filepath'
} $else {
assert filepath.join('v', 'vlib', 'filepath') == 'v/vlib/filepath'
}
}
fn test_dir() {
$if windows {
assert filepath.dir('C:\\a\\b\\c') == 'C:\\a\\b'
} $else {
assert filepath.dir('/var/tmp/foo') == '/var/tmp'
}
assert filepath.dir('filepath') == '.'
}
fn test_basedir() {
$if windows {
assert filepath.basedir('v\\vlib\\filepath') == 'v\\vlib'
} $else {
assert filepath.basedir('v/vlib/filepath') == 'v/vlib'
}
assert filepath.basedir('filename') == 'filename'
}

View File

@ -1,5 +0,0 @@
module filepath
pub const (
separator = '\\'
)

View File

@ -10,7 +10,6 @@ import (
gg gg
glm glm
gl gl
filepath
) )
#flag windows -I @VROOT/thirdparty/freetype/include #flag windows -I @VROOT/thirdparty/freetype/include
@ -205,7 +204,7 @@ pub fn new_context(cfg gg.Cfg) &FreeType {
} }
if !os.exists(font_path) { if !os.exists(font_path) {
exe_path := os.executable() exe_path := os.executable()
exe_dir := filepath.basedir(exe_path) exe_dir := os.basedir(exe_path)
font_path = '$exe_dir/$font_path' font_path = '$exe_dir/$font_path'
} }
if !os.exists(font_path) { if !os.exists(font_path) {

View File

@ -4,7 +4,6 @@ import (
os os
time time
term term
filepath
) )
pub enum LogLevel { pub enum LogLevel {
@ -69,8 +68,8 @@ pub fn (l mut Log) set_output_level(level LogLevel) {
pub fn (l mut Log) set_full_logpath(full_log_path string) { pub fn (l mut Log) set_full_logpath(full_log_path string) {
rlog_file := os.realpath( full_log_path ) rlog_file := os.realpath( full_log_path )
l.set_output_label( filepath.filename( rlog_file ) ) l.set_output_label( os.filename( rlog_file ) )
l.set_output_path( filepath.basedir( rlog_file ) ) l.set_output_path( os.basedir( rlog_file ) )
} }
pub fn (l mut Log) set_output_label(label string){ pub fn (l mut Log) set_output_label(label string){
@ -80,7 +79,7 @@ pub fn (l mut Log) set_output_label(label string){
pub fn (l mut Log) set_output_path(output_file_path string) { pub fn (l mut Log) set_output_path(output_file_path string) {
if l.ofile.is_opened() { l.ofile.close() } if l.ofile.is_opened() { l.ofile.close() }
l.output_to_file = true l.output_to_file = true
l.output_file_name = filepath.join( os.realpath( output_file_path ) , l.output_label ) l.output_file_name = os.join( os.realpath( output_file_path ) , l.output_label )
ofile := os.open_append( l.output_file_name ) or { ofile := os.open_append( l.output_file_name ) or {
panic('error while opening log file ${l.output_file_name} for appending') panic('error while opening log file ${l.output_file_name} for appending')
} }
@ -137,4 +136,3 @@ pub fn (l mut Log) debug(s string) {
if l.level < .debug { return } if l.level < .debug { return }
l.send_output(s, .debug) l.send_output(s, .debug)
} }

View File

@ -3,8 +3,6 @@
// that can be found in the LICENSE file. // that can be found in the LICENSE file.
module os module os
import filepath
#include <sys/stat.h> // #include <signal.h> #include <sys/stat.h> // #include <signal.h>
#include <errno.h> #include <errno.h>
@ -183,7 +181,7 @@ pub fn cp_all(osource_path, odest_path string, overwrite bool) ?bool {
} }
// single file copy // single file copy
if !os.is_dir(source_path) { if !os.is_dir(source_path) {
adjasted_path := if os.is_dir(dest_path) { filepath.join(dest_path,filepath.filename(source_path)) } else { dest_path } adjasted_path := if os.is_dir(dest_path) { os.join(dest_path,os.filename(source_path)) } else { dest_path }
if os.exists(adjasted_path) { if os.exists(adjasted_path) {
if overwrite { if overwrite {
os.rm(adjasted_path) os.rm(adjasted_path)
@ -204,8 +202,8 @@ pub fn cp_all(osource_path, odest_path string, overwrite bool) ?bool {
return error(err) return error(err)
} }
for file in files { for file in files {
sp := filepath.join(source_path,file) sp := os.join(source_path,file)
dp := filepath.join(dest_path,file) dp := os.join(dest_path,file)
if os.is_dir(sp) { if os.is_dir(sp) {
os.mkdir(dp) or { os.mkdir(dp) or {
panic(err) panic(err)
@ -634,10 +632,10 @@ pub fn rmdir_all(path string) {
return return
} }
for item in items { for item in items {
if os.is_dir(filepath.join(path,item)) { if os.is_dir(os.join(path,item)) {
rmdir_all(filepath.join(path,item)) rmdir_all(os.join(path,item))
} }
os.rm(filepath.join(path,item)) os.rm(os.join(path,item))
} }
os.rmdir(path) os.rmdir(path)
} }
@ -655,24 +653,30 @@ fn print_c_errno() {
println('errno=$e err=$se') println('errno=$e err=$se')
} }
[deprecated]
pub fn ext(path string) string { pub fn ext(path string) string {
panic('Use `filepath.ext` instead of `os.ext`') pos := path.last_index('.') or {
return ''
}
return path[pos..]
} }
[deprecated]
pub fn dir(path string) string { pub fn dir(path string) string {
panic('Use `filepath.dir` instead of `os.dir`') pos := path.last_index(path_separator) or {
return '.'
}
return path[..pos]
} }
[deprecated]
pub fn basedir(path string) string { pub fn basedir(path string) string {
panic('Use `filepath.basedir` instead of `os.basedir`') pos := path.last_index(path_separator) or {
return path
}
// NB: *without* terminating /
return path[..pos]
} }
[deprecated]
pub fn filename(path string) string { pub fn filename(path string) string {
panic('Use `filepath.filename` instead of `os.filename`') return path.all_after(path_separator)
} }
// get_line returns a one-line string from stdin // get_line returns a one-line string from stdin
@ -792,9 +796,9 @@ pub fn user_os() string {
// home_dir returns path to user's home directory. // home_dir returns path to user's home directory.
pub fn home_dir() string { pub fn home_dir() string {
$if windows { $if windows {
return os.getenv('USERPROFILE') + filepath.separator return os.getenv('USERPROFILE') + os.path_separator
} $else { } $else {
return os.getenv('HOME') + filepath.separator return os.getenv('HOME') + os.path_separator
} }
} }
@ -988,6 +992,25 @@ pub fn realpath(fpath string) string {
return string(fullpath) return string(fullpath)
} }
// is_abs returns true if `path` is absolute.
pub fn is_abs(path string) bool {
$if windows {
return path[0] == `/` || // incase we're in MingGW bash
(path[0].is_letter() && path[1] == `:`)
}
return path[0] == `/`
}
// join returns path as string from string parameter(s).
pub fn join(base string, dirs ...string) string {
mut result := []string
result << base.trim_right('\\/')
for d in dirs {
result << d
}
return result.join(path_separator)
}
// walk_ext returns a recursive list of all file paths ending with `ext`. // walk_ext returns a recursive list of all file paths ending with `ext`.
pub fn walk_ext(path, ext string) []string { pub fn walk_ext(path, ext string) []string {
if !os.is_dir(path) { if !os.is_dir(path) {
@ -997,7 +1020,7 @@ pub fn walk_ext(path, ext string) []string {
return [] return []
} }
mut res := []string mut res := []string
separator := if path.ends_with(filepath.separator) { '' } else { filepath.separator } separator := if path.ends_with(os.path_separator) { '' } else { os.path_separator }
for i, file in files { for i, file in files {
if file.starts_with('.') { if file.starts_with('.') {
continue continue
@ -1023,7 +1046,7 @@ pub fn walk(path string, f fn(path string)) {
return return
} }
for file in files { for file in files {
p := path + filepath.separator + file p := path + os.path_separator + file
if os.is_dir(p) && !os.is_link(p) { if os.is_dir(p) && !os.is_link(p) {
walk(p, f) walk(p, f)
} }
@ -1089,9 +1112,9 @@ pub fn flush() {
} }
pub fn mkdir_all(path string) { pub fn mkdir_all(path string) {
mut p := if path.starts_with(filepath.separator) { filepath.separator } else { '' } mut p := if path.starts_with(os.path_separator) { os.path_separator } else { '' }
for subdir in path.split(filepath.separator) { for subdir in path.split(os.path_separator) {
p += subdir + filepath.separator p += subdir + os.path_separator
if !os.is_dir(p) { if !os.is_dir(p) {
os.mkdir(p) or { os.mkdir(p) or {
panic(err) panic(err)
@ -1100,11 +1123,6 @@ pub fn mkdir_all(path string) {
} }
} }
[deprecated]
pub fn join(base string, dirs ...string) string {
panic('Use `filepath.join` instead of `os.join`')
}
// cachedir returns the path to a *writable* user specific folder, suitable for writing non-essential data. // cachedir returns the path to a *writable* user specific folder, suitable for writing non-essential data.
pub fn cachedir() string { pub fn cachedir() string {
// See: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html // See: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
@ -1169,10 +1187,10 @@ pub const (
// It gives a convenient way to access program resources like images, fonts, sounds and so on, // It gives a convenient way to access program resources like images, fonts, sounds and so on,
// *no matter* how the program was started, and what is the current working directory. // *no matter* how the program was started, and what is the current working directory.
pub fn resource_abs_path(path string) string { pub fn resource_abs_path(path string) string {
mut base_path := os.realpath(filepath.dir(os.executable())) mut base_path := os.realpath(os.dir(os.executable()))
vresource := os.getenv('V_RESOURCE_PATH') vresource := os.getenv('V_RESOURCE_PATH')
if vresource.len != 0 { if vresource.len != 0 {
base_path = vresource base_path = vresource
} }
return os.realpath( filepath.join( base_path, path ) ) return os.realpath( os.join( base_path, path ) )
} }

View File

@ -7,10 +7,6 @@ import strings
#include <fcntl.h> #include <fcntl.h>
pub const ( pub const (
/**
* This constant is deprecated. Use `filepath.separator` instead.
* FIXME Remove this separator, as it a part of `filepath` module.
*/
path_separator = '/' path_separator = '/'
) )

View File

@ -1,7 +1,4 @@
import ( import os
os
filepath
)
fn testsuite_begin() { fn testsuite_begin() {
cleanup_leftovers() cleanup_leftovers()
@ -134,14 +131,14 @@ fn walk_callback(file string) {
if file == '.' || file == '..' { if file == '.' || file == '..' {
return return
} }
assert file == 'test_walk' + filepath.separator + 'test1' assert file == 'test_walk' + os.path_separator + 'test1'
} }
fn test_walk() { fn test_walk() {
folder := 'test_walk' folder := 'test_walk'
os.mkdir(folder) or { panic(err) } os.mkdir(folder) or { panic(err) }
file1 := folder + filepath.separator + 'test1' file1 := folder + os.path_separator + 'test1'
os.write_file(file1,'test-1') os.write_file(file1,'test-1')
@ -190,7 +187,7 @@ fn test_tmpdir(){
assert t.len > 0 assert t.len > 0
assert os.is_dir(t) assert os.is_dir(t)
tfile := t + filepath.separator + 'tmpfile.txt' tfile := t + os.path_separator + 'tmpfile.txt'
os.rm(tfile) // just in case os.rm(tfile) // just in case
@ -269,7 +266,7 @@ fn test_symlink() {
} }
fn test_is_executable_writable_readable() { fn test_is_executable_writable_readable() {
file_name := os.tmpdir() + filepath.separator + 'rwxfile.exe' file_name := os.tmpdir() + os.path_separator + 'rwxfile.exe'
mut f := os.create(file_name) or { mut f := os.create(file_name) or {
eprintln('failed to create file $file_name') eprintln('failed to create file $file_name')
@ -294,6 +291,48 @@ fn test_is_executable_writable_readable() {
os.rm(file_name) os.rm(file_name)
} }
fn test_ext() {
assert os.ext('file.v') == '.v'
assert os.ext('file') == ''
}
fn test_is_abs() {
assert os.is_abs('/home/user') == true
assert os.is_abs('v/vlib') == false
$if windows {
assert os.is_abs('C:\\Windows\\') == true
}
}
fn test_join() {
$if windows {
assert os.join('v', 'vlib', 'os') == 'v\\vlib\\os'
} $else {
assert os.join('v', 'vlib', 'os') == 'v/vlib/os'
}
}
fn test_dir() {
$if windows {
assert os.dir('C:\\a\\b\\c') == 'C:\\a\\b'
} $else {
assert os.dir('/var/tmp/foo') == '/var/tmp'
}
assert os.dir('os') == '.'
}
fn test_basedir() {
$if windows {
assert os.basedir('v\\vlib\\os') == 'v\\vlib'
} $else {
assert os.basedir('v/vlib/os') == 'v/vlib'
}
assert os.basedir('filename') == 'filename'
}
// this function is called by both test_aaa_setup & test_zzz_cleanup // this function is called by both test_aaa_setup & test_zzz_cleanup
// it ensures that os tests do not polute the filesystem with leftover // it ensures that os tests do not polute the filesystem with leftover
// files so that they can be run several times in a row. // files so that they can be run several times in a row.

View File

@ -6,10 +6,6 @@ import strings
#include <winsock2.h> #include <winsock2.h>
pub const ( pub const (
/**
* This constant is deprecated. Use `filepath.separator` instead.
* FIXME Remove this separator, as it a part of `filepath` module.
*/
path_separator = '\\' path_separator = '\\'
) )

View File

@ -3,7 +3,6 @@ module builder
import ( import (
os os
time time
filepath
v.ast v.ast
v.table v.table
v.pref v.pref
@ -183,7 +182,7 @@ pub fn (b &Builder) v_files_from_dir(dir string) []string {
} }
*/ */
res << filepath.join(dir,file) res << os.join(dir,file)
} }
return res return res
} }
@ -201,13 +200,13 @@ pub fn (b &Builder) log(s string) {
[inline] [inline]
fn module_path(mod string) string { fn module_path(mod string) string {
// submodule support // submodule support
return mod.replace('.', filepath.separator) return mod.replace('.', os.path_separator)
} }
pub fn (b &Builder) find_module_path(mod string) ?string { pub fn (b &Builder) find_module_path(mod string) ?string {
mod_path := module_path(mod) mod_path := module_path(mod)
for search_path in b.module_search_paths { for search_path in b.module_search_paths {
try_path := filepath.join(search_path,mod_path) try_path := os.join(search_path,mod_path)
if b.pref.verbosity.is_higher_or_equal(.level_three) { if b.pref.verbosity.is_higher_or_equal(.level_three) {
println(' >> trying to find $mod in $try_path ..') println(' >> trying to find $mod in $try_path ..')
} }

View File

@ -8,7 +8,6 @@ import (
v.table v.table
v.token v.token
os os
filepath
) )
const ( const (
@ -920,7 +919,7 @@ pub fn (c mut Checker) error(s string, pos token.Position) {
print_backtrace() print_backtrace()
mut path := c.file.path mut path := c.file.path
// Get relative path // Get relative path
workdir := os.getwd() + filepath.separator workdir := os.getwd() + os.path_separator
if path.starts_with(workdir) { if path.starts_with(workdir) {
path = path.replace(workdir, '') path = path.replace(workdir, '')
} }

View File

@ -8,7 +8,6 @@ import (
v.parser v.parser
v.ast v.ast
os os
filepath
) )
struct Doc { struct Doc {
@ -27,9 +26,9 @@ pub fn doc(mod string, table &table.Table) string {
table: table table: table
mod: mod mod: mod
} }
vlib_path := filepath.dir(pref.vexe_path()) + '/vlib' vlib_path := os.dir(pref.vexe_path()) + '/vlib'
mod_path := mod.replace('.', filepath.separator) mod_path := mod.replace('.', os.path_separator)
path := filepath.join(vlib_path, mod_path) path := os.join(vlib_path, mod_path)
if !os.exists(path) { if !os.exists(path) {
println('module "$mod" not found') println('module "$mod" not found')
println(path) println(path)
@ -46,7 +45,7 @@ pub fn doc(mod string, table &table.Table) string {
if file.ends_with('_test.v') || file.ends_with('_windows.v') || file.ends_with('_macos.v') { if file.ends_with('_test.v') || file.ends_with('_windows.v') || file.ends_with('_macos.v') {
continue continue
} }
file_ast := parser.parse_file(filepath.join(path,file), table, .skip_comments) file_ast := parser.parse_file(os.join(path,file), table, .skip_comments)
d.stmts << file_ast.stmts d.stmts << file_ast.stmts
} }
d.print_fns() d.print_fns()

View File

@ -2,7 +2,6 @@ import (
os os
term term
benchmark benchmark
filepath
v.fmt v.fmt
v.parser v.parser
v.table v.table
@ -21,7 +20,7 @@ fn test_fmt() {
eprintln('VEXE must be set') eprintln('VEXE must be set')
exit(error_missing_vexe) exit(error_missing_vexe)
} }
vroot := filepath.dir(vexe) vroot := os.dir(vexe)
tmpfolder := os.tmpdir() tmpfolder := os.tmpdir()
diff_cmd := find_working_diff_command() or { diff_cmd := find_working_diff_command() or {
'' ''
@ -33,7 +32,7 @@ fn test_fmt() {
for istep, ipath in input_files { for istep, ipath in input_files {
fmt_bench.cstep = istep fmt_bench.cstep = istep
fmt_bench.step() fmt_bench.step()
ifilename := filepath.filename(ipath) ifilename := os.filename(ipath)
opath := ipath.replace('_input.vv', '_expected.vv') opath := ipath.replace('_input.vv', '_expected.vv')
if !os.exists(opath) { if !os.exists(opath) {
fmt_bench.fail() fmt_bench.fail()
@ -55,7 +54,7 @@ fn test_fmt() {
eprintln('>> sorry, but no working "diff" CLI command can be found') eprintln('>> sorry, but no working "diff" CLI command can be found')
continue continue
} }
vfmt_result_file := filepath.join(tmpfolder,'vfmt_run_over_${ifilename}') vfmt_result_file := os.join(tmpfolder,'vfmt_run_over_${ifilename}')
os.write_file(vfmt_result_file, result_ocontent) os.write_file(vfmt_result_file, result_ocontent)
os.system('$diff_cmd --minimal --text --unified=2 --show-function-line="fn " "$opath" "$vfmt_result_file"') os.system('$diff_cmd --minimal --text --unified=2 --show-function-line="fn " "$opath" "$vfmt_result_file"')
continue continue

View File

@ -1,4 +1,4 @@
import ( import (
filepath math
os os
) )

View File

@ -1,2 +1,2 @@
import filepath import math
import os import os

View File

@ -1,6 +1,5 @@
import ( import (
os os
filepath
v.pref v.pref
v.builder v.builder
term term
@ -13,7 +12,7 @@ const (
fn test_c_files() { fn test_c_files() {
println('Running V => C tests') println('Running V => C tests')
vexe := os.getenv('VEXE') vexe := os.getenv('VEXE')
vroot := filepath.dir(vexe) vroot := os.dir(vexe)
term_ok := term.ok_message('OK') term_ok := term.ok_message('OK')
term_fail := term.fail_message('FAIL') term_fail := term.fail_message('FAIL')
for i in 1 .. (nr_tests + 1) { for i in 1 .. (nr_tests + 1) {

View File

@ -11,7 +11,6 @@ import (
v.pref v.pref
term term
os os
filepath
) )
const ( const (
@ -414,7 +413,7 @@ pub fn (p &Parser) error(s string) {
print_backtrace() print_backtrace()
mut path := p.file_name mut path := p.file_name
// Get relative path // Get relative path
workdir := os.getwd() + filepath.separator workdir := os.getwd() + os.path_separator
if path.starts_with(workdir) { if path.starts_with(workdir) {
path = path.replace(workdir, '') path = path.replace(workdir, '')
} }

View File

@ -3,10 +3,7 @@
// that can be found in the LICENSE file. // that can be found in the LICENSE file.
module pref module pref
import ( import os
filepath
os
)
pub const ( pub const (
default_module_path = os.home_dir() + '.vmodules' default_module_path = os.home_dir() + '.vmodules'
@ -15,9 +12,9 @@ pub const (
pub fn (p mut Preferences) fill_with_defaults() { pub fn (p mut Preferences) fill_with_defaults() {
if p.vroot == '' { if p.vroot == '' {
// Location of all vlib files // Location of all vlib files
p.vroot = filepath.dir(vexe_path()) p.vroot = os.dir(vexe_path())
} }
vlib_path := filepath.join(p.vroot, 'vlib') vlib_path := os.join(p.vroot, 'vlib')
if p.lookup_path.len == 0 { if p.lookup_path.len == 0 {
p.lookup_path = ['@vlib', '@vmodules'] p.lookup_path = ['@vlib', '@vmodules']
} }
@ -26,14 +23,14 @@ pub fn (p mut Preferences) fill_with_defaults() {
} }
rpath := os.realpath(p.path) rpath := os.realpath(p.path)
if p.out_name == ''{ if p.out_name == ''{
filename := filepath.filename(rpath).trim_space() filename := os.filename(rpath).trim_space()
mut base := filename.all_before_last('.') mut base := filename.all_before_last('.')
if base == '' { if base == '' {
// The file name is just `.v` or `.vsh` or `.*` // The file name is just `.v` or `.vsh` or `.*`
base = filename base = filename
} }
target_dir := if os.is_dir(rpath) { rpath } else { filepath.dir(rpath) } target_dir := if os.is_dir(rpath) { rpath } else { os.dir(rpath) }
p.out_name = filepath.join(target_dir, base) p.out_name = os.join(target_dir, base)
if rpath == '$p.vroot/cmd/v' && os.is_dir('vlib/compiler') { if rpath == '$p.vroot/cmd/v' && os.is_dir('vlib/compiler') {
// Building V? Use v2, since we can't overwrite a running // Building V? Use v2, since we can't overwrite a running
@ -44,7 +41,7 @@ pub fn (p mut Preferences) fill_with_defaults() {
p.out_name = 'v2' p.out_name = 'v2'
} }
} }
rpath_name := filepath.filename(rpath) rpath_name := os.filename(rpath)
p.building_v = !p.is_repl && (rpath_name == 'v' || rpath_name == 'vfmt.v') p.building_v = !p.is_repl && (rpath_name == 'v' || rpath_name == 'vfmt.v')
if p.os == ._auto { if p.os == ._auto {
// No OS specifed? Use current system // No OS specifed? Use current system

View File

@ -5,9 +5,7 @@ module scanner
import ( import (
os os
filepath
v.token v.token
// strings
) )
const ( const (
@ -929,7 +927,7 @@ fn (s mut Scanner) debug_tokens() {
s.pos = 0 s.pos = 0
s.started = false s.started = false
s.debug = true s.debug = true
fname := s.file_path.all_after(filepath.separator) fname := s.file_path.all_after(os.path_separator)
println('\n===DEBUG TOKENS $fname===') println('\n===DEBUG TOKENS $fname===')
for { for {
tok := s.scan() tok := s.scan()

View File

@ -10,7 +10,6 @@ import (
net.http net.http
net.urllib net.urllib
strings strings
filepath
) )
pub const ( pub const (
@ -331,7 +330,7 @@ fn (ctx mut Context) scan_static_directory(directory_path, mount_path string) {
if os.is_dir(file) { if os.is_dir(file) {
ctx.scan_static_directory(directory_path + '/' + file, mount_path + '/' + file) ctx.scan_static_directory(directory_path + '/' + file, mount_path + '/' + file)
} else if file.contains('.') && ! file.starts_with('.') && ! file.ends_with('.') { } else if file.contains('.') && ! file.starts_with('.') && ! file.ends_with('.') {
ext := filepath.ext(file) ext := os.ext(file)
// Rudimentary guard against adding files not in mime_types. // Rudimentary guard against adding files not in mime_types.
// Use serve_static directly to add non-standard mime types. // Use serve_static directly to add non-standard mime types.