the base
This commit is contained in:
93
cli/compile_upload.vsh
Executable file
93
cli/compile_upload.vsh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env -S v run
|
||||
|
||||
import os
|
||||
|
||||
fn get_platform_id() string {
|
||||
os_name := os.user_os()
|
||||
arch := os.uname().machine
|
||||
|
||||
return match os_name {
|
||||
'linux' {
|
||||
match arch {
|
||||
'aarch64', 'arm64' { 'linux-arm64' }
|
||||
'x86_64' { 'linux-i64' }
|
||||
else { 'unknown' }
|
||||
}
|
||||
}
|
||||
'macos' {
|
||||
match arch {
|
||||
'arm64' { 'macos-arm64' }
|
||||
'x86_64' { 'macos-i64' }
|
||||
else { 'unknown' }
|
||||
}
|
||||
}
|
||||
else {
|
||||
'unknown'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn read_secrets() ! {
|
||||
secret_file := os.join_path(os.home_dir(), 'code/git.ourworld.tf/despiegk/hero_secrets/mysecrets.sh')
|
||||
if os.exists(secret_file) {
|
||||
println('Reading secrets from ${secret_file}')
|
||||
content := os.read_file(secret_file)!
|
||||
lines := content.split('\n')
|
||||
for line in lines {
|
||||
if line.contains('export') {
|
||||
parts := line.replace('export ', '').split('=')
|
||||
if parts.len == 2 {
|
||||
key := parts[0].trim_space()
|
||||
value := parts[1].trim_space().trim('"').trim("'")
|
||||
os.setenv(key, value, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn s3_configure() ! {
|
||||
read_secrets()!
|
||||
|
||||
// Check if environment variables are set
|
||||
s3keyid := os.getenv_opt('S3KEYID') or { return error('S3KEYID is not set') }
|
||||
s3appid := os.getenv_opt('S3APPID') or { return error('S3APPID is not set') }
|
||||
|
||||
// Create rclone config file
|
||||
rclone_dir := os.join_path(os.home_dir(), '.config/rclone')
|
||||
os.mkdir_all(rclone_dir) or { return error('Failed to create rclone directory: ${err}') }
|
||||
|
||||
rclone_conf := os.join_path(rclone_dir, 'rclone.conf')
|
||||
config_content := '[b2]
|
||||
type = b2
|
||||
account = ${s3keyid}
|
||||
key = ${s3appid}
|
||||
hard_delete = true'
|
||||
|
||||
os.write_file(rclone_conf, config_content) or { return error('Failed to write rclone config: ${err}') }
|
||||
|
||||
println('made S3 config on: ${rclone_conf}')
|
||||
content := os.read_file(rclone_conf) or { return error('Failed to read rclone config: ${err}') }
|
||||
println(content)
|
||||
}
|
||||
|
||||
fn hero_upload() ! {
|
||||
hero_path := os.find_abs_path_of_executable('hero') or { return error("Error: 'hero' command not found in PATH") }
|
||||
|
||||
s3_configure()!
|
||||
|
||||
platform_id := get_platform_id()
|
||||
rclone_conf := os.join_path(os.home_dir(), '.config/rclone/rclone.conf')
|
||||
|
||||
println('Uploading hero binary for platform: ${platform_id}')
|
||||
|
||||
// List contents
|
||||
os.execute_or_panic('rclone --config="${rclone_conf}" lsl b2:threefold/${platform_id}/')
|
||||
|
||||
// Copy hero binary
|
||||
os.execute_or_panic('rclone --config="${rclone_conf}" copy "${hero_path}" b2:threefold/${platform_id}/')
|
||||
}
|
||||
|
||||
fn main() {
|
||||
hero_upload() or { eprintln(err) exit(1) }
|
||||
}
|
||||
Reference in New Issue
Block a user