diff --git a/flist.v b/flist.v index 7cc0173..644c5a8 100644 --- a/flist.v +++ b/flist.v @@ -5,8 +5,8 @@ import json import x.json2 const token_file = os.join_path(os.home_dir(), '.config', 'tfhubtoken') - -const token_dir = os.join_path(os.home_dir(), '.config') +const docker_username_file = os.join_path(os.home_dir(), '.config', 'dockerusername') +const config_dir = os.join_path(os.home_dir(), '.config') const binary_location = $if windows { 'C:\\Program Files\\flist\\flist.exe' @@ -176,7 +176,7 @@ fn login() { if !token_exists { $if windows { - os.mkdir_all(token_dir) or { panic(err) } + os.mkdir_all(config_dir) or { panic(err) } } tfhub_token := os.input('Please enter your tfhub token: ') os.write_file(token_file, tfhub_token) or { panic(err) } @@ -185,7 +185,20 @@ fn login() { info_message('Your Flist Hub token is already saved.') } - result := os.system('${docker_cmd} login') + mut result := 0 + + $if macos { + mut dockername_exists := os.exists(docker_username_file) + + if !dockername_exists { + docker_username := os.input('Please enter your Docker username: ') + os.write_file(docker_username_file, docker_username) or { panic(err) } + success_message('Docker username saved in ' + docker_username_file) + result = os.system('${docker_cmd} login -u ${docker_username}') + } + } $else { + result = os.system('${docker_cmd} login') + } if result == 0 { info_message('\nYou are already logged in to Docker.') @@ -202,6 +215,13 @@ fn logout() { info_message('Your Flist Hub Token was already not present.') } + if os.exists(docker_username_file) { + os.rm(docker_username_file) or { panic(err) } + success_message('Your Docker username has been removed from the config folder.') + } else { + info_message('Your Docker username was already not present in the config folder.') + } + exit_code := os.system('${docker_cmd} logout') if exit_code != 0 { error_message('Failed to log out from Docker Hub.') @@ -271,9 +291,17 @@ fn get_docker_credential_auto() !string { } fn push(tag string) { - docker_user := get_docker_credential() or { - error_message('Failed to get Docker username: ${err}') - exit(1) + mut docker_user := '' + $if macos { + docker_user = os.read_file(docker_username_file) or { + error_message("No Docker username found. Please run 'flist login' first.") + exit(1) + } + } $else { + docker_user = get_docker_credential() or { + error_message('Failed to get Docker username: ${err}') + exit(1) + } } info_message('Docker username: ${docker_user}')