Com expect
, uma solução pode ser executada nas linhas de
#!/usr/bin/env expect
# or instead figure out a TCL getopt library
if {[llength $argv] != 3} {
puts stderr "Usage: $argv0 region app env"
exit 64
}
set aws_region [lindex $argv 0]
set aws_app [lindex $argv 1]
set aws_env [lindex $argv 2]
spawn -noecho eb init
set get_regions 1
while {$get_regions} {
expect {
# look for the "1) us-east-1 : US East (N. Virginia)"
# assign to what TCL calls an array
-re {([0-9]+). ([a-z0-9-]+) :} {
set region_to_num($expect_out(2,string)) $expect_out(1,string)
}
# how we break out of the loop, also array entry
# for "default" region if need be
-re {\(default is ([0-9]+)\)} {
set region_to_num(default) $expect_out(1,string)
set get_regions 0
}
}
}
# show what we got based on arguments and parse of eb output
puts "region=$aws_region region_num=$region_to_num($aws_region) env=$aws_env"
ou eu acho que você poderia encontrar ou escrever uma biblioteca expect
-like em JavaScript, mas isso poderia ser mais trabalho. O que quer que agrada sua fantasia ...