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 ( import (
os os
time time
filepath
) )
fn todo() { fn todo() {
@ -152,7 +153,7 @@ fn (v mut V) cc() {
a << '-c' a << '-c'
} }
else if v.pref.is_cache { 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 a << builtin_o_path.replace('builtin.o', 'strconv.o') // TODO hack no idea why this is needed
if os.file_exists(builtin_o_path) { if os.file_exists(builtin_o_path) {
libs = builtin_o_path libs = builtin_o_path

View File

@ -7,6 +7,7 @@ module compiler
import ( import (
os os
strings strings
filepath
) )
pub const ( pub const (
@ -650,11 +651,11 @@ pub fn (v &V) get_user_files() []string {
mut user_files := []string mut user_files := []string
if v.pref.is_test { 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 { 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 // 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 module os
import strings import filepath
#include <sys/stat.h> #include <sys/stat.h>
#include <signal.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 { pub fn join(base string, dirs ...string) string {
mut path := strings.new_builder(50) println('use filepath.join')
path.write(base.trim_right('\\/')) return filepath.join(base, dirs)
for d in dirs {
path.write(os.path_separator)
path.write(d)
}
return path.str()
} }