1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

vlib: filepath module

This commit is contained in:
joe-conigliaro 2019-11-02 03:29:51 +11:00 committed by Alexander Medvednikov
parent fe9d884d90
commit 7b1993b1e4
4 changed files with 44 additions and 12 deletions

View File

@ -7,6 +7,7 @@ module compiler
import (
os
time
filepath
)
fn todo() {
@ -152,7 +153,7 @@ fn (v mut V) cc() {
a << '-c'
}
else if v.pref.is_cache {
builtin_o_path := os.join(v_modules_path, 'cache', 'vlib', 'builtin.o')
builtin_o_path := filepath.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
if os.file_exists(builtin_o_path) {
libs = builtin_o_path

View File

@ -7,6 +7,7 @@ module compiler
import (
os
strings
filepath
)
pub const (
@ -650,11 +651,11 @@ pub fn (v &V) get_user_files() []string {
mut user_files := []string
if v.pref.is_test {
user_files << os.join(v.vroot,'vlib','compiler','preludes','tests_assertions.v')
user_files << filepath.join(v.vroot,'vlib','compiler','preludes','tests_assertions.v')
}
if v.pref.is_test && v.pref.is_stats {
user_files << os.join(v.vroot,'vlib','compiler','preludes','tests_with_stats.v')
user_files << filepath.join(v.vroot,'vlib','compiler','preludes','tests_with_stats.v')
}
// v volt/slack_test.v: compile all .v files to get the environment

36
vlib/filepath/filepath.v Normal file
View File

@ -0,0 +1,36 @@
module filepath
import(
os
strings
)
// return the extension in the file `path`
pub fn ext(path string) string {
pos := path.last_index_byte(`.`)
if pos != -1 {
return path[pos..]
}
return ''
}
// 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] == `/`
}
// pass directories as parameters, returns path as string
// TODO use []string.join once ...string becomes "[]string"
pub fn join(base string, dirs ...string) string {
mut path := strings.new_builder(50)
path.write(base.trim_right('\\/'))
for d in dirs {
path.write(os.path_separator)
path.write(d)
}
return path.str()
}

View File

@ -4,7 +4,7 @@
module os
import strings
import filepath
#include <sys/stat.h>
#include <signal.h>
@ -920,13 +920,7 @@ pub fn mkdir_all(path string) {
}
}
// TODO use []string.join once ...string becomes "[]string"
pub fn join(base string, dirs ...string) string {
mut path := strings.new_builder(50)
path.write(base.trim_right('\\/'))
for d in dirs {
path.write(os.path_separator)
path.write(d)
}
return path.str()
println('use filepath.join')
return filepath.join(base, dirs)
}