aboutsummaryrefslogtreecommitdiff
path: root/weed-fs/src/cmd
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2012-08-23 20:56:09 -0700
committerChris Lu <chris.lu@gmail.com>2012-08-23 20:56:09 -0700
commit0121f35c12e9a89b09044bf02ec5a39d6ae0bce9 (patch)
treecb846daa68c9d22853e115b0cc9fda78c40789e6 /weed-fs/src/cmd
parent0109cc0e30df35a13c775c209b09f41bd4d661fe (diff)
downloadseaweedfs-0121f35c12e9a89b09044bf02ec5a39d6ae0bce9.tar.xz
seaweedfs-0121f35c12e9a89b09044bf02ec5a39d6ae0bce9.zip
starting a shell
Diffstat (limited to 'weed-fs/src/cmd')
-rw-r--r--weed-fs/src/cmd/weed/shell.go54
-rw-r--r--weed-fs/src/cmd/weed/weed.go39
2 files changed, 77 insertions, 16 deletions
diff --git a/weed-fs/src/cmd/weed/shell.go b/weed-fs/src/cmd/weed/shell.go
new file mode 100644
index 000000000..78a4b9eb1
--- /dev/null
+++ b/weed-fs/src/cmd/weed/shell.go
@@ -0,0 +1,54 @@
+package main
+
+import (
+ "bufio"
+ "os"
+ "fmt"
+)
+
+func init() {
+ cmdShell.Run = runShell // break init cycle
+}
+
+var cmdShell = &Command{
+ UsageLine: "shell",
+ Short: "run interactive commands, now just echo",
+ Long: `run interactive commands.
+
+ `,
+}
+
+var (
+)
+
+func runShell(command *Command, args []string) bool {
+ r := bufio.NewReader(os.Stdin)
+ o := bufio.NewWriter(os.Stdout)
+ e := bufio.NewWriter(os.Stderr)
+ prompt := func () {
+ o.WriteString("> ")
+ o.Flush()
+ };
+ readLine := func () string {
+ ret, err := r.ReadString('\n')
+ if err != nil {
+ fmt.Fprint(e,err);
+ os.Exit(1)
+ }
+ return ret
+ }
+ execCmd := func (cmd string) int {
+ if cmd != "" {
+ o.WriteString(cmd)
+ }
+ return 0
+ }
+
+ cmd := ""
+ for {
+ prompt()
+ cmd = readLine()
+ execCmd(cmd)
+ }
+ return true
+}
diff --git a/weed-fs/src/cmd/weed/weed.go b/weed-fs/src/cmd/weed/weed.go
index 72ce4c09c..a6f857023 100644
--- a/weed-fs/src/cmd/weed/weed.go
+++ b/weed-fs/src/cmd/weed/weed.go
@@ -1,12 +1,12 @@
package main
import (
- "encoding/json"
+ "encoding/json"
"flag"
"fmt"
- "net/http"
"io"
"log"
+ "net/http"
"os"
"strings"
"sync"
@@ -22,7 +22,8 @@ var port *int
var commands = []*Command{
cmdFix,
cmdMaster,
- cmdUpload,
+ cmdUpload,
+ cmdShell,
cmdVersion,
cmdVolume,
}
@@ -50,6 +51,12 @@ func main() {
if args[0] == "help" {
help(args[1:])
+ for _, cmd := range commands {
+ if cmd.Name() == args[1] && cmd.Run != nil {
+ fmt.Fprintf(os.Stderr, "Default Parameters:\n")
+ cmd.Flag.PrintDefaults()
+ }
+ }
return
}
@@ -59,10 +66,10 @@ func main() {
cmd.Flag.Parse(args[1:])
args = cmd.Flag.Args()
if !cmd.Run(cmd, args) {
+ fmt.Fprintf(os.Stderr, "\n")
+ cmd.Flag.Usage()
fmt.Fprintf(os.Stderr, "Default Parameters:\n")
cmd.Flag.PrintDefaults()
- fmt.Fprintf(os.Stderr, "\n")
- cmd.Flag.Usage()
}
exit()
return
@@ -173,15 +180,15 @@ func exitIfErrors() {
}
}
func writeJson(w http.ResponseWriter, r *http.Request, obj interface{}) {
- w.Header().Set("Content-Type", "application/javascript")
- bytes, _ := json.Marshal(obj)
- callback := r.FormValue("callback")
- if callback == "" {
- w.Write(bytes)
- } else {
- w.Write([]uint8(callback))
- w.Write([]uint8("("))
- fmt.Fprint(w, string(bytes))
- w.Write([]uint8(")"))
- }
+ w.Header().Set("Content-Type", "application/javascript")
+ bytes, _ := json.Marshal(obj)
+ callback := r.FormValue("callback")
+ if callback == "" {
+ w.Write(bytes)
+ } else {
+ w.Write([]uint8(callback))
+ w.Write([]uint8("("))
+ fmt.Fprint(w, string(bytes))
+ w.Write([]uint8(")"))
+ }
}