added ls function
This commit is contained in:
parent
aadf417ad0
commit
3628e4f733
96
flist.v
96
flist.v
@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
import net.http
|
import net.http
|
||||||
import term
|
import term
|
||||||
|
import json
|
||||||
|
|
||||||
const (
|
const (
|
||||||
token_file = os.join_path(os.home_dir(), '.config', 'tfhubtoken')
|
token_file = os.join_path(os.home_dir(), '.config', 'tfhubtoken')
|
||||||
@ -11,6 +12,18 @@ const (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
struct FlistItem {
|
||||||
|
name string
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Payload {
|
||||||
|
username string
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Response {
|
||||||
|
payload Payload
|
||||||
|
}
|
||||||
|
|
||||||
fn error_message(msg string) {
|
fn error_message(msg string) {
|
||||||
println(term.bold(term.red('Error: ')) + msg)
|
println(term.bold(term.red('Error: ')) + msg)
|
||||||
println(term.yellow('Run \'flist help\' for usage information.'))
|
println(term.yellow('Run \'flist help\' for usage information.'))
|
||||||
@ -146,7 +159,6 @@ fn push(tag string) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add Content-Type header
|
|
||||||
config.header.add_custom('Content-Type', 'application/x-www-form-urlencoded') or {
|
config.header.add_custom('Content-Type', 'application/x-www-form-urlencoded') or {
|
||||||
eprintln('Add custom failed: $err')
|
eprintln('Add custom failed: $err')
|
||||||
exit(1)
|
exit(1)
|
||||||
@ -166,7 +178,6 @@ fn push(tag string) {
|
|||||||
eprintln(response.body)
|
eprintln(response.body)
|
||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete(flist_name string) {
|
fn delete(flist_name string) {
|
||||||
@ -221,6 +232,84 @@ fn rename(flist_name string, new_flist_name string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_hub_username(tfhub_token string) ?string {
|
||||||
|
url := 'https://hub.grid.tf/api/flist/me'
|
||||||
|
|
||||||
|
config := http.FetchConfig{
|
||||||
|
url: url
|
||||||
|
method: .get
|
||||||
|
header: http.new_header(
|
||||||
|
key: .authorization
|
||||||
|
value: 'bearer $tfhub_token'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
response := http.fetch(config) or {
|
||||||
|
error_message('Failed to fetch hub username: $err')
|
||||||
|
return none
|
||||||
|
}
|
||||||
|
|
||||||
|
if response.status_code != 200 {
|
||||||
|
error_message('Failed to fetch hub username. Status code: $response.status_code')
|
||||||
|
return none
|
||||||
|
}
|
||||||
|
|
||||||
|
parsed_response := json.decode(Response, response.body) or {
|
||||||
|
error_message('Failed to parse JSON response: $err')
|
||||||
|
return none
|
||||||
|
}
|
||||||
|
|
||||||
|
if parsed_response.payload.username != '' {
|
||||||
|
return parsed_response.payload.username
|
||||||
|
}
|
||||||
|
|
||||||
|
error_message('Username not found in response')
|
||||||
|
return none
|
||||||
|
}
|
||||||
|
|
||||||
|
fn ls() {
|
||||||
|
tfhub_token := os.read_file(token_file) or {
|
||||||
|
error_message('No token found. Please run \'flist login\' first.')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
hub_user := get_hub_username(tfhub_token) or {
|
||||||
|
error_message('Failed to get hub username')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
url := 'https://hub.grid.tf/api/flist/$hub_user'
|
||||||
|
|
||||||
|
config := http.FetchConfig{
|
||||||
|
url: url
|
||||||
|
method: .get
|
||||||
|
header: http.new_header(
|
||||||
|
key: .authorization
|
||||||
|
value: 'bearer $tfhub_token'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
response := http.fetch(config) or {
|
||||||
|
error_message('Failed to fetch data: $err')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if response.status_code != 200 {
|
||||||
|
error_message('Failed to fetch data. Status code: $response.status_code')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
data := json.decode([]FlistItem, response.body) or {
|
||||||
|
error_message('Failed to parse JSON: $err')
|
||||||
|
exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
println('Flists for user $hub_user:')
|
||||||
|
for item in data {
|
||||||
|
println(item.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn help() {
|
fn help() {
|
||||||
println(term.bold(term.green('\n Welcome to the Flist CLI!')))
|
println(term.bold(term.green('\n Welcome to the Flist CLI!')))
|
||||||
println('This tool turns Dockerfiles and Docker images directly into Flist on the TF Flist Hub, passing by the Docker Hub.\n')
|
println('This tool turns Dockerfiles and Docker images directly into Flist on the TF Flist Hub, passing by the Docker Hub.\n')
|
||||||
@ -232,6 +321,7 @@ fn help() {
|
|||||||
println(term.blue(' push ') + '- Build and push a Docker image to Docker Hub, then convert and push it as an flist to Flist Hub')
|
println(term.blue(' push ') + '- Build and push a Docker image to Docker Hub, then convert and push it as an flist to Flist Hub')
|
||||||
println(term.blue(' delete ') + '- Delete an flist from Flist Hub')
|
println(term.blue(' delete ') + '- Delete an flist from Flist Hub')
|
||||||
println(term.blue(' rename ') + '- Rename an flist in Flist Hub')
|
println(term.blue(' rename ') + '- Rename an flist in Flist Hub')
|
||||||
|
println(term.blue(' ls ') + '- List all flists of the current user')
|
||||||
println(term.blue(' help ') + '- Display this help message\n')
|
println(term.blue(' help ') + '- Display this help message\n')
|
||||||
println(term.bold('Usage:'))
|
println(term.bold('Usage:'))
|
||||||
println(' flist install')
|
println(' flist install')
|
||||||
@ -241,6 +331,7 @@ fn help() {
|
|||||||
println(' flist push <image>:<tag>')
|
println(' flist push <image>:<tag>')
|
||||||
println(' flist delete <flist_name>')
|
println(' flist delete <flist_name>')
|
||||||
println(' flist rename <flist_name> <new_flist_name>')
|
println(' flist rename <flist_name> <new_flist_name>')
|
||||||
|
println(' flist ls')
|
||||||
println(' flist help')
|
println(' flist help')
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,6 +370,7 @@ fn main() {
|
|||||||
exit(1)
|
exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
'ls' { ls() }
|
||||||
'help' { help() }
|
'help' { help() }
|
||||||
else {
|
else {
|
||||||
error_message('Unknown command: ' + os.args[1])
|
error_message('Unknown command: ' + os.args[1])
|
||||||
|
Loading…
Reference in New Issue
Block a user