1
0
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:
yuyi
2022-10-16 14:28:57 +08:00
committed by GitHub
parent 6e46933c55
commit f6844e9766
187 changed files with 1885 additions and 1874 deletions

View File

@ -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 {