vpm: add 'vpm upgrade' to update all the outdated vpm modules (#6157)

pull/6163/head
pancake 2020-08-18 02:44:18 +02:00 committed by GitHub
parent fe5575f384
commit b5b53a5311
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 10 deletions

View File

@ -9,7 +9,7 @@ import v.vmod
const ( const (
default_vpm_server_urls = ['https://vpm.vlang.io'] default_vpm_server_urls = ['https://vpm.vlang.io']
valid_vpm_commands = ['help', 'search', 'install', 'update', 'outdated', 'list', 'remove'] valid_vpm_commands = ['help', 'search', 'install', 'update', 'upgrade', 'outdated', 'list', 'remove']
excluded_dirs = ['cache', 'vlib'] excluded_dirs = ['cache', 'vlib']
supported_vcs_systems = ['git', 'hg'] supported_vcs_systems = ['git', 'hg']
supported_vcs_folders = ['.git', '.hg'] supported_vcs_folders = ['.git', '.hg']
@ -76,6 +76,9 @@ fn main() {
'update' { 'update' {
vpm_update(module_names) vpm_update(module_names)
} }
'upgrade' {
vpm_upgrade()
}
'outdated' { 'outdated' {
vpm_outdated() vpm_outdated()
} }
@ -239,9 +242,8 @@ fn vpm_update(m []string) {
} }
} }
fn vpm_outdated() { fn get_outdated() ?[]string {
module_names := get_installed_modules() module_names := get_installed_modules()
mut errors := 0
mut outdated := []string{} mut outdated := []string{}
for name in module_names { for name in module_names {
final_module_path := valid_final_path_of_existing_module(name) or { final_module_path := valid_final_path_of_existing_module(name) or {
@ -260,11 +262,9 @@ fn vpm_outdated() {
mut outputs := []string{} mut outputs := []string{}
for step in vcs_cmd_steps { for step in vcs_cmd_steps {
res := os.exec(step) or { res := os.exec(step) or {
errors++
println('Error while checking latest commits for "$name".')
verbose_println('Error command: git fetch') verbose_println('Error command: git fetch')
verbose_println('Error details:\n$err') verbose_println('Error details:\n$err')
continue return error('Error while checking latest commits for "$name".')
} }
outputs << res.output outputs << res.output
} }
@ -272,6 +272,20 @@ fn vpm_outdated() {
outdated << name outdated << name
} }
} }
return outdated
}
fn vpm_upgrade() {
outdated := get_outdated() or { exit(1) }
if outdated.len > 0 {
vpm_update(outdated)
} else {
println('Modules are up to date.')
}
}
fn vpm_outdated() {
outdated := get_outdated() or { exit(1) }
if outdated.len > 0 { if outdated.len > 0 {
println('Outdated modules:') println('Outdated modules:')
for m in outdated { for m in outdated {
@ -280,9 +294,6 @@ fn vpm_outdated() {
} else { } else {
println('Modules are up to date.') println('Modules are up to date.')
} }
if errors > 0 {
exit(1)
}
} }
fn vpm_list() { fn vpm_list() {

View File

@ -31,6 +31,7 @@ V supports the following commands:
remove Remove a module that was installed from VPM. remove Remove a module that was installed from VPM.
search Search for a module from VPM. search Search for a module from VPM.
update Update an installed module from VPM. update Update an installed module from VPM.
upgrade Upgrade all the outdated modules.
list List all installed modules. list List all installed modules.
outdated Show installed modules that need updates. outdated Show installed modules that need updates.
* Others: * Others:

View File

@ -70,7 +70,7 @@ fn main() {
println('Translating C to V will be available in V 0.3') println('Translating C to V will be available in V 0.3')
return return
} }
'search', 'install', 'update', 'outdated', 'list', 'remove' { 'search', 'install', 'update', 'upgrade', 'outdated', 'list', 'remove' {
util.launch_tool(prefs.is_verbose, 'vpm', os.args[1..]) util.launch_tool(prefs.is_verbose, 'vpm', os.args[1..])
return return
} }