mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
59 lines
1.9 KiB
V
59 lines
1.9 KiB
V
module main
|
|
|
|
import os
|
|
import os.cmdline
|
|
import log
|
|
|
|
struct VpmSettings {
|
|
mut:
|
|
is_help bool
|
|
is_once bool
|
|
is_verbose bool
|
|
is_force bool
|
|
server_urls []string
|
|
vmodules_path string
|
|
tmp_path string
|
|
no_dl_count_increment bool
|
|
// To ensure that some test scenarios with conflicting module directory names do not get stuck in prompts.
|
|
// It is intended that VPM does not display a prompt when `VPM_FAIL_ON_PROMPT` is set.
|
|
fail_on_prompt bool
|
|
// git is used by default. URL installations can specify `--hg`. For already installed modules
|
|
// and VPM modules that specify a different VCS in their `v.mod`, the VCS is validated separately.
|
|
vcs VCS
|
|
logger &log.Logger
|
|
}
|
|
|
|
fn init_settings() VpmSettings {
|
|
args := os.args[1..]
|
|
opts := cmdline.only_options(args)
|
|
cmds := cmdline.only_non_options(args)
|
|
|
|
vmodules_path := os.vmodules_dir()
|
|
is_no_inc := os.getenv('VPM_NO_INCREMENT') != ''
|
|
is_dbg := os.getenv('VPM_DEBUG') != ''
|
|
is_ci := os.getenv('CI') != ''
|
|
|
|
mut logger := &log.Log{}
|
|
if is_dbg {
|
|
logger.set_level(.debug)
|
|
}
|
|
if !is_ci && !is_dbg {
|
|
// Log by default:
|
|
os.mkdir_all(os.join_path(vmodules_path, 'cache'), mode: 0o700) or { panic(err) }
|
|
logger.set_output_path(os.join_path(vmodules_path, 'cache', 'vpm.log'))
|
|
}
|
|
|
|
return VpmSettings{
|
|
is_help: '-h' in opts || '--help' in opts || 'help' in cmds
|
|
is_once: '--once' in opts
|
|
is_verbose: '-v' in opts || '--verbose' in opts
|
|
is_force: '-f' in opts || '--force' in opts
|
|
server_urls: cmdline.options(args, '--server-urls')
|
|
vcs: if '--hg' in opts { .hg } else { .git }
|
|
vmodules_path: vmodules_path
|
|
tmp_path: os.join_path(os.vtmp_dir(), 'vpm_modules')
|
|
no_dl_count_increment: is_ci || is_no_inc
|
|
fail_on_prompt: os.getenv('VPM_FAIL_ON_PROMPT') != ''
|
|
logger: logger
|
|
}
|
|
}
|