mirror of
https://github.com/sbrow/envr.git
synced 2026-06-27 10:38:33 -04:00
This means, fewer dependencies, a smaller binary, and more secure data. BREAKING CHANGE: The encryption format of databases has changed. Age encryption is no longer supported, and no automatic migration path was implemented.
55 lines
1.1 KiB
Odin
55 lines
1.1 KiB
Odin
package main
|
|
|
|
import "core:fmt"
|
|
|
|
cmd_init :: proc(cmd: ^Command) {
|
|
force := has_flag(cmd, "force") || has_flag(cmd, "f")
|
|
|
|
_, cfg_exists := load_config()
|
|
if cfg_exists && !force {
|
|
fmt.println("You have already initialized envr.")
|
|
fmt.println("Run again with the --force flag if you want to reinitialize.")
|
|
return
|
|
}
|
|
|
|
keys, ok := find_ssh_private_keys()
|
|
if !ok {
|
|
return
|
|
}
|
|
|
|
if len(keys) == 0 {
|
|
fmt.println("No ssh-ed25519 keys found in ~/.ssh")
|
|
fmt.println("Generate one with: ssh-keygen -t ed25519")
|
|
return
|
|
}
|
|
|
|
selected, result := multi_select("Select SSH private keys:", keys[:])
|
|
if result == .Cancel {
|
|
fmt.println("\x1b[2mCancelled.\x1b[0m")
|
|
return
|
|
}
|
|
|
|
selected_paths := make([dynamic]string, 0, min(1, len(keys) / 2))
|
|
for i in 0 ..< len(keys) {
|
|
if selected[i] {
|
|
append(&selected_paths, keys[i])
|
|
}
|
|
}
|
|
|
|
if len(selected_paths) == 0 {
|
|
fmt.println("No SSH keys selected - Config not created")
|
|
return
|
|
}
|
|
|
|
cfg := new_config(selected_paths[:])
|
|
if !save_config(cfg, force = force) {
|
|
return
|
|
}
|
|
|
|
fmt.printf(
|
|
"Config initialized with %d SSH key(s). You are ready to use envr.\n",
|
|
len(selected_paths),
|
|
)
|
|
}
|
|
|