Rev 12 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
#!/usr/bin/env tclsh
# $Id: create-project.in 19 2024-10-02 07:44:13Z nishi $
package require tdom
foreach path [glob "@@PREFIX@@/lib/koakuma/utility/*.tcl"] {
source $path
}
set dothis ""
foreach arg $argv {
if { [string range "$arg" 0 0] == "-" } {
if { "$arg" == "-h" || "$arg" == "--help" } {
puts "Usage: $argv0 \[-u username\] \[-p password\] \[-R rpc_url\]"
puts "You can set the environment variable `KOAKUMA_RPC' to override default RPC URL."
puts "Default: http://127.0.0.1/koakuma/rpc"
exit 0
} elseif { "$arg" == "-u" } {
set dothis "set-username"
} elseif { "$arg" == "-p" } {
set dothis "set-password"
} elseif { "$arg" == "-R" } {
set dothis "set-rpc"
}
} else {
if { "$dothis" == "set-username" } {
::rpc::set-username "$arg"
} elseif { "$dothis" == "set-password" } {
::rpc::set-password "$arg"
} elseif { "$dothis" == "set-rpc" } {
set RPC_URL "$arg"
}
set dothis ""
}
}
dom createNodeCmd -tagName "name" -jsonType NONE elementNode keyName
dom createNodeCmd -tagName "description" -jsonType NONE elementNode keyDescription
dom createNodeCmd -tagName "vcs" -jsonType NONE elementNode keyVCS
dom createNodeCmd -tagName "url" -jsonType NONE elementNode keyURL
dom createNodeCmd -jsonType STRING textNode valueString
set doc [dom createDocumentNode]
proc ask_for {show var} {
upvar 1 $var $var
puts -nonewline "$show: "
flush stdout
set $var "[gets stdin]"
}
ask_for "Name" name
ask_for "Description" description
ask_for "VCS" vcs
puts "Example URL for CVS: pserver://anon:@cvs.nishi.boats/cvs/nishi@tewi"
puts "Example URL for CVS: ssh://anoncvs:anoncvs@cvs.nishi.boats/cvs/nishi@tewi"
ask_for "VCS URL" url
$doc appendFromScript {
keyName {valueString "$name"}
keyDescription {valueString "$description"}
keyVCS {valueString "$vcs"}
keyURL {valueString "$url"}
}
set result [::rpc::send "/create-project" "[$doc asJSON]"]
if { [lindex $result 0] == 200 } {
} else {
set doc [dom parse -json "[lindex $result 1]"]
puts "Error: [$doc selectNodes "string(/error)"]"
}