示例#1
0
文件: dbsh.go 项目: puspesh/cdfs
func Share(db *dropbox.Client, args []string) error {
	link, e := db.GetLink(mkabs(args[0]))
	if e != nil {
		return e
	}
	fmt.Println(link.URL)
	return nil
}
示例#2
0
文件: dbsh.go 项目: puspesh/cdfs
func Find(db *dropbox.Client, args []string) error {
	r, e := db.Search(Cwd, args[0], 0)
	if e != nil {
		return e
	}
	for _, m := range r {
		fmt.Println(m.Path)
	}
	return nil
}
示例#3
0
文件: dbsh.go 项目: puspesh/cdfs
func Cat(db *dropbox.Client, args []string) error {
	rc, e := db.GetFile(mkabs(args[0]))
	if e != nil {
		return e
	}
	defer rc.Close()
	if !strings.HasPrefix(rc.ContentType, "text/") {
		return fmt.Errorf("Not a content type you should cat: %s", rc.ContentType)
	}
	_, e = io.Copy(os.Stdout, rc)
	return e
}
示例#4
0
文件: dbsh.go 项目: puspesh/cdfs
func Ls(db *dropbox.Client, args []string) error {
	md, e := db.GetMetadata(Cwd, true)
	if e != nil {
		return e
	}
	w := tabwriter.NewWriter(os.Stdout, 0, 2, 1, ' ', 0)
	defer w.Flush()
	for _, f := range md.Contents {
		fmt.Fprintf(w, "%d\t%s\t%s\t\n", f.Bytes, f.ModTime().Format(time.Stamp), gpath.Base(f.Path))
	}
	return nil
}
示例#5
0
文件: dbsh.go 项目: puspesh/cdfs
func Whoami(db *dropbox.Client, args []string) error {
	ai, e := db.GetAccountInfo()
	if e != nil {
		return e
	}
	b, e := json.MarshalIndent(ai, "", "   ")
	if e != nil {
		return e
	}
	fmt.Println(string(b))
	return nil
}
示例#6
0
文件: dbsh.go 项目: puspesh/cdfs
func Cd(db *dropbox.Client, args []string) error {
	dest := args[0]
	if dest == ".." {
		Cwd = gpath.Dir(Cwd)
		return nil
	}
	dest = mkabs(dest)
	md, e := db.GetMetadata(dest, false)
	if e != nil {
		return e
	}
	if md.IsDir {
		Cwd = dest
		return nil
	}
	return fmt.Errorf("No such dir: %s", dest)
}
示例#7
0
文件: dbsh.go 项目: puspesh/cdfs
func tryCmd(c *dropbox.Client, cname string, args []string) error {
	if len(args) == 0 {
		return fmt.Errorf("Last argument needs to be a dropbox path.")
	}
	fname := args[len(args)-1]
	args = args[:len(args)-1]
	f, e := c.GetFile(mkabs(fname))
	if e != nil {
		return e
	}
	defer f.Close()
	cmd := exec.Command(cname, args...)
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	cmd.Stdin = f
	return cmd.Run()
}
示例#8
0
文件: dbsh.go 项目: puspesh/cdfs
func Get(db *dropbox.Client, args []string) error {
	fname := mkabs(args[0])
	destdir, e := os.Getwd()
	if e != nil {
		return e
	}
	destfile := gpath.Join(destdir, gpath.Base(fname))
	r, e := db.GetFile(fname)
	if e != nil {
		return e
	}
	defer r.Close()
	fmt.Printf("Saving to %s\n", destfile)
	dest, e := os.Create(destfile)
	if e != nil {
		return e
	}
	defer dest.Close()
	_, e = io.Copy(dest, r)
	return e
}
示例#9
0
文件: dbsh.go 项目: puspesh/cdfs
func Put(db *dropbox.Client, args []string) error {
	srcfile := args[0]
	if !gpath.IsAbs(srcfile) {
		srcdir, e := os.Getwd()
		if e != nil {
			return e
		}
		srcfile = gpath.Join(srcdir, srcfile)
	}
	src, e := os.Open(srcfile)
	if e != nil {
		return e
	}
	defer src.Close()
	fi, e := src.Stat()
	if e != nil {
		return e
	}
	destpath := gpath.Join(Cwd, gpath.Base(srcfile))
	fmt.Printf("Uploading to %s\n", destpath)
	_, e = db.AddFile(destpath, src, fi.Size())
	return e
}
示例#10
0
文件: dbsh.go 项目: puspesh/cdfs
func Mkdir(db *dropbox.Client, args []string) error {
	_, e := db.CreateDir(mkabs(args[0]))
	return e
}
示例#11
0
文件: dbsh.go 项目: puspesh/cdfs
func Rm(db *dropbox.Client, args []string) error {
	_, e := db.Delete(mkabs(args[0]))
	return e
}
示例#12
0
文件: dbsh.go 项目: puspesh/cdfs
func Cp(db *dropbox.Client, args []string) error {
	from, to := mkabs(args[0]), mkabs(args[1])
	_, e := db.Copy(from, to)
	return e
}