mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
all: change optional to result of io (#16075)
This commit is contained in:
@ -67,16 +67,16 @@ const json_enc = json2.Encoder{
|
||||
escape_unicode: false
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) check_or_create_vls_folder() ? {
|
||||
fn (upd VlsUpdater) check_or_create_vls_folder() ! {
|
||||
if !os.exists(vls_folder) {
|
||||
upd.log('Creating .vls folder...')
|
||||
os.mkdir(vls_folder)?
|
||||
os.mkdir(vls_folder)!
|
||||
}
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) manifest_config() ?map[string]json2.Any {
|
||||
fn (upd VlsUpdater) manifest_config() !map[string]json2.Any {
|
||||
manifest_buf := os.read_file(vls_manifest_path) or { '{}' }
|
||||
manifest_contents := json2.raw_decode(manifest_buf)?.as_map()
|
||||
manifest_contents := json2.raw_decode(manifest_buf)!.as_map()
|
||||
return manifest_contents
|
||||
}
|
||||
|
||||
@ -88,9 +88,9 @@ fn (upd VlsUpdater) exec_asset_file_name() string {
|
||||
return 'vls_${os_name}_${arch + ext}'
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) update_manifest(new_path string, from_source bool, timestamp time.Time) ? {
|
||||
fn (upd VlsUpdater) update_manifest(new_path string, from_source bool, timestamp time.Time) ! {
|
||||
upd.log('Updating permissions...')
|
||||
os.chmod(new_path, 755)?
|
||||
os.chmod(new_path, 755)!
|
||||
|
||||
upd.log('Updating vls.config.json...')
|
||||
mut manifest := upd.manifest_config() or {
|
||||
@ -103,7 +103,7 @@ fn (upd VlsUpdater) update_manifest(new_path string, from_source bool, timestamp
|
||||
}
|
||||
}
|
||||
|
||||
mut manifest_file := os.open_file(vls_manifest_path, 'w+')?
|
||||
mut manifest_file := os.open_file(vls_manifest_path, 'w+')!
|
||||
defer {
|
||||
manifest_file.close()
|
||||
}
|
||||
@ -112,31 +112,31 @@ fn (upd VlsUpdater) update_manifest(new_path string, from_source bool, timestamp
|
||||
manifest['last_updated'] = json2.Any(timestamp.format_ss())
|
||||
manifest['from_source'] = json2.Any(from_source)
|
||||
|
||||
json_enc.encode_value(manifest, mut manifest_file)?
|
||||
json_enc.encode_value(manifest, mut manifest_file)!
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) init_download_prebuilt() ? {
|
||||
fn (upd VlsUpdater) init_download_prebuilt() ! {
|
||||
if !os.exists(vls_cache_folder) {
|
||||
os.mkdir(vls_cache_folder)?
|
||||
os.mkdir(vls_cache_folder)!
|
||||
}
|
||||
|
||||
if os.exists(vls_bin_folder) {
|
||||
os.rmdir_all(vls_bin_folder)?
|
||||
os.rmdir_all(vls_bin_folder)!
|
||||
}
|
||||
|
||||
os.mkdir(vls_bin_folder)?
|
||||
os.mkdir(vls_bin_folder)!
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) get_last_updated_at() ?time.Time {
|
||||
fn (upd VlsUpdater) get_last_updated_at() !time.Time {
|
||||
if manifest := upd.manifest_config() {
|
||||
if 'last_updated' in manifest {
|
||||
return time.parse(manifest['last_updated'] or { '' }.str()) or { return none }
|
||||
return time.parse(manifest['last_updated'] or { '' }.str()) or { return error('none') }
|
||||
}
|
||||
}
|
||||
return none
|
||||
return error('none')
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) download_prebuilt() ? {
|
||||
fn (upd VlsUpdater) download_prebuilt() ! {
|
||||
mut has_last_updated_at := true
|
||||
last_updated_at := upd.get_last_updated_at() or {
|
||||
has_last_updated_at = false
|
||||
@ -147,14 +147,15 @@ fn (upd VlsUpdater) download_prebuilt() ? {
|
||||
}
|
||||
|
||||
upd.log('Finding prebuilt executables from GitHub release..')
|
||||
resp := http.get('https://api.github.com/repos/vlang/vls/releases')?
|
||||
releases_json := json2.raw_decode(resp.body)?.arr()
|
||||
resp := http.get('https://api.github.com/repos/vlang/vls/releases')!
|
||||
releases_json := json2.raw_decode(resp.body)!.arr()
|
||||
if releases_json.len == 0 {
|
||||
return error('Unable to fetch latest VLS release data: No releases found.')
|
||||
}
|
||||
|
||||
latest_release := releases_json[0].as_map()
|
||||
assets := latest_release['assets']?.arr()
|
||||
latest_assets := latest_release['assets'] or { return }
|
||||
assets := latest_assets.arr()
|
||||
|
||||
mut checksum_asset_idx := -1
|
||||
mut exec_asset_idx := -1
|
||||
@ -164,7 +165,8 @@ fn (upd VlsUpdater) download_prebuilt() ? {
|
||||
|
||||
for asset_idx, raw_asset in assets {
|
||||
asset := raw_asset.as_map()
|
||||
match asset['name']?.str() {
|
||||
t_asset := asset['name'] or { return }
|
||||
match t_asset.str() {
|
||||
exp_asset_name {
|
||||
exec_asset_idx = asset_idx
|
||||
|
||||
@ -196,13 +198,15 @@ fn (upd VlsUpdater) download_prebuilt() ? {
|
||||
}
|
||||
|
||||
upd.log('Executable found for this system. Downloading...')
|
||||
upd.init_download_prebuilt()?
|
||||
http.download_file(exec_asset['browser_download_url']?.str(), exec_asset_file_path)?
|
||||
upd.init_download_prebuilt()!
|
||||
t_asset := exec_asset['browser_download_url'] or { return }
|
||||
http.download_file(t_asset.str(), exec_asset_file_path)!
|
||||
|
||||
checksum_file_path := os.join_path(vls_cache_folder, 'checksums.txt')
|
||||
checksum_file_asset := assets[checksum_asset_idx].as_map()
|
||||
http.download_file(checksum_file_asset['browser_download_url']?.str(), checksum_file_path)?
|
||||
checksums := os.read_file(checksum_file_path)?.split_into_lines()
|
||||
t_checksum_asset := checksum_file_asset['browser_download_url'] or { return }
|
||||
http.download_file(t_checksum_asset.str(), checksum_file_path)!
|
||||
checksums := os.read_file(checksum_file_path)!.split_into_lines()
|
||||
|
||||
upd.log('Verifying checksum...')
|
||||
for checksum_result in checksums {
|
||||
@ -217,7 +221,7 @@ fn (upd VlsUpdater) download_prebuilt() ? {
|
||||
}
|
||||
|
||||
new_exec_path := os.join_path(vls_bin_folder, exp_asset_name)
|
||||
os.cp(exec_asset_file_path, new_exec_path)?
|
||||
os.cp(exec_asset_file_path, new_exec_path)!
|
||||
upd.update_manifest(new_exec_path, false, asset_last_updated_at) or {
|
||||
upd.log('Unable to update config but the executable was updated successfully.')
|
||||
}
|
||||
@ -231,12 +235,12 @@ fn (upd VlsUpdater) print_new_vls_version(new_vls_exec_path string) {
|
||||
}
|
||||
}
|
||||
|
||||
fn calculate_checksum(file_path string) ?string {
|
||||
data := os.read_file(file_path)?
|
||||
fn calculate_checksum(file_path string) !string {
|
||||
data := os.read_file(file_path)!
|
||||
return sha256.hexhash(data)
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) compile_from_source() ? {
|
||||
fn (upd VlsUpdater) compile_from_source() ! {
|
||||
git := os.find_abs_path_of_executable('git') or { return error('Git not found.') }
|
||||
|
||||
if !os.exists(vls_src_folder) {
|
||||
@ -280,22 +284,22 @@ fn (upd VlsUpdater) compile_from_source() ? {
|
||||
upd.print_new_vls_version(exec_path)
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) find_ls_path() ?string {
|
||||
manifest := upd.manifest_config()?
|
||||
fn (upd VlsUpdater) find_ls_path() !string {
|
||||
manifest := upd.manifest_config()!
|
||||
if 'server_path' in manifest {
|
||||
server_path := manifest['server_path']?
|
||||
server_path := manifest['server_path'] or { return error('none') }
|
||||
if server_path is string {
|
||||
if server_path.len == 0 {
|
||||
return none
|
||||
return error('none')
|
||||
}
|
||||
|
||||
return server_path
|
||||
}
|
||||
}
|
||||
return none
|
||||
return error('none')
|
||||
}
|
||||
|
||||
fn (mut upd VlsUpdater) parse(mut fp flag.FlagParser) ? {
|
||||
fn (mut upd VlsUpdater) parse(mut fp flag.FlagParser) ! {
|
||||
is_json := fp.bool('json', ` `, false, 'Print the output as JSON.')
|
||||
if is_json {
|
||||
upd.output = .json
|
||||
@ -364,7 +368,7 @@ fn (mut upd VlsUpdater) parse(mut fp flag.FlagParser) ? {
|
||||
fp.allow_unknown_args()
|
||||
upd.args << fp.finalize() or { fp.remaining_parameters() }
|
||||
} else {
|
||||
fp.finalize()?
|
||||
fp.finalize()!
|
||||
}
|
||||
}
|
||||
|
||||
@ -436,23 +440,23 @@ fn (upd VlsUpdater) check_installation() {
|
||||
}
|
||||
}
|
||||
|
||||
fn (upd VlsUpdater) run(fp flag.FlagParser) ? {
|
||||
fn (upd VlsUpdater) run(fp flag.FlagParser) ! {
|
||||
if upd.is_check {
|
||||
upd.check_installation()
|
||||
} else if upd.setup_kind != .none_ {
|
||||
upd.check_or_create_vls_folder()?
|
||||
upd.check_or_create_vls_folder()!
|
||||
|
||||
match upd.update_source {
|
||||
.github_releases {
|
||||
upd.download_prebuilt() or {
|
||||
if err.code() == 100 {
|
||||
upd.compile_from_source()?
|
||||
upd.compile_from_source()!
|
||||
}
|
||||
return err
|
||||
}
|
||||
}
|
||||
.git_repo {
|
||||
upd.compile_from_source()?
|
||||
upd.compile_from_source()!
|
||||
}
|
||||
}
|
||||
} else if upd.pass_to_ls {
|
||||
|
Reference in New Issue
Block a user