Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
91 changes: 77 additions & 14 deletions launch.hexa
Original file line number Diff line number Diff line change
Expand Up @@ -88,34 +88,97 @@ if cmd == "help" || cmd == "-h" || cmd == "--help" {

} else if cmd == "module" {
let mod_dir = base + "/modules"
let org = "need-singularity"
// all known modules: local (modules/) + top-level (anima-*)
let local_mods = ["decoder", "daemon", "monitor"]
let ext_mods = ["agent", "body", "eeg", "engines", "hexad", "measurement", "physics", "speak", "tools"]

if arg1 == "" || arg1 == "list" {
println("modules:")
let mods = ["decoder", "daemon", "monitor"]
println("")
// local modules
let i = 0
while i < mods.len() {
let name = mods[i]
while i < local_mods.len() {
let name = local_mods[i]
let enabled = file_exists(mod_dir + "/" + name)
let status = if enabled { "enabled" } else { "disabled" }
println(" " + name + " [" + status + "]")
let disabled = file_exists(mod_dir + "/." + name + ".disabled")
let status = if enabled { "enabled " } else { if disabled { "disabled" } else { "missing " } }
println(" " + name + " [" + status + "] modules/" + name)
i = i + 1
}
// external modules (anima-*)
i = 0
while i < ext_mods.len() {
let name = ext_mods[i]
let dir = base + "/anima-" + name
let installed = file_exists(dir)
let status = if installed { "installed" } else { "not installed" }
let count = if installed { exec("find " + dir + " -name '*.hexa' 2>/dev/null | wc -l") } else { "0" }
println(" " + name + " [" + status + "] anima-" + name + "/ (" + count + " .hexa)")
i = i + 1
}
println("")
println(" anima module enable <name>")
println(" anima module disable <name>")
println(" anima module get <name> 다운로드")
println(" anima module enable <name> 활성화")
println(" anima module disable <name> 비활성화")
println(" anima module remove <name> 삭제")

} else if arg1 == "get" {
if arg2 == "" {
println("usage: anima module get <name>")
println(" available: agent body eeg engines hexad measurement physics speak tools")
} else {
let target = base + "/anima-" + arg2
if file_exists(target) {
println(arg2 + " already installed at " + target)
} else {
let repo = "https://github.com/" + org + "/anima-" + arg2 + ".git"
println("downloading " + arg2 + " ...")
let result = exec("git clone --depth 1 " + repo + " " + target + " 2>&1")
if file_exists(target) {
let count = exec("find " + target + " -name '*.hexa' | wc -l")
println(arg2 + " installed (" + count + " .hexa)")
} else {
println("failed: " + result)
}
}
}

} else if arg1 == "enable" {
if arg2 == "" { println("usage: anima module enable <decoder|daemon|monitor>") }
if arg2 == "" { println("usage: anima module enable <name>") }
else {
exec("mkdir -p " + mod_dir + "/" + arg2)
println(arg2 + " enabled")
let disabled = mod_dir + "/." + arg2 + ".disabled"
if file_exists(disabled) {
exec("mv " + disabled + " " + mod_dir + "/" + arg2)
println(arg2 + " enabled")
} else {
exec("mkdir -p " + mod_dir + "/" + arg2)
println(arg2 + " enabled")
}
}

} else if arg1 == "disable" {
if arg2 == "" { println("usage: anima module disable <decoder|daemon|monitor>") }
if arg2 == "" { println("usage: anima module disable <name>") }
else {
exec("mv " + mod_dir + "/" + arg2 + " " + mod_dir + "/." + arg2 + ".disabled 2>/dev/null")
println(arg2 + " disabled")
let target = mod_dir + "/" + arg2
if file_exists(target) {
exec("mv " + target + " " + mod_dir + "/." + arg2 + ".disabled")
println(arg2 + " disabled")
} else { println(arg2 + " not found in modules/") }
}

} else if arg1 == "remove" {
if arg2 == "" { println("usage: anima module remove <name>") }
else {
let target = base + "/anima-" + arg2
if file_exists(target) {
exec("rm -rf " + target)
println(arg2 + " removed")
} else { println(arg2 + " not installed") }
}

} else {
println("usage: anima module [list|enable|disable] [name]")
println("usage: anima module [list|get|enable|disable|remove] [name]")
}

// ─── disconnect ───
Expand Down
Loading