diff --git a/kittens/transfer/main.go b/kittens/transfer/main.go index c1fb8d4b6..dbc2afcea 100644 --- a/kittens/transfer/main.go +++ b/kittens/transfer/main.go @@ -44,9 +44,6 @@ func read_bypass(loc string) (string, error) { } func main(cmd *cli.Command, opts *Options, args []string) (rc int, err error) { - if err != nil { - rc = 1 - } if opts.PermissionsBypass != "" { val, err := read_bypass(opts.PermissionsBypass) if err != nil { @@ -54,6 +51,17 @@ func main(cmd *cli.Command, opts *Options, args []string) (rc int, err error) { } opts.PermissionsBypass = strings.TrimSpace(val) } + if len(args) == 0 { + return 1, fmt.Errorf("Must specify at least one file to transfer") + } + if opts.Direction == "send" { + err = send_main(opts, args) + } else { + err = receive_main(opts, args) + } + if err != nil { + rc = 1 + } return } diff --git a/kittens/transfer/receive.go b/kittens/transfer/receive.go new file mode 100644 index 000000000..ac1ae9fef --- /dev/null +++ b/kittens/transfer/receive.go @@ -0,0 +1,14 @@ +// License: GPLv3 Copyright: 2023, Kovid Goyal, + +package transfer + +import ( + "fmt" +) + +var _ = fmt.Print + +func receive_main(opts *Options, args []string) (err error) { + + return +} diff --git a/kittens/transfer/send.go b/kittens/transfer/send.go new file mode 100644 index 000000000..d1d1a35fd --- /dev/null +++ b/kittens/transfer/send.go @@ -0,0 +1,18 @@ +// License: GPLv3 Copyright: 2023, Kovid Goyal, + +package transfer + +import ( + "fmt" +) + +var _ = fmt.Print + +func send_main(opts *Options, args []string) (err error) { + fmt.Println("Scanning files…") + files = files_for_send(opts, args) + fmt.Printf("Found %d files and directories, requesting transfer permission…", len(files)) + fmt.Println() + + return +} diff --git a/kittens/transfer/utils.go b/kittens/transfer/utils.go new file mode 100644 index 000000000..8b10759e1 --- /dev/null +++ b/kittens/transfer/utils.go @@ -0,0 +1,65 @@ +// License: GPLv3 Copyright: 2023, Kovid Goyal, + +package transfer + +import ( + "crypto/rand" + "encoding/hex" + "fmt" + "os" + "path/filepath" + "strings" + + "kitty/tools/utils" +) + +var _ = fmt.Print + +var global_cwd, global_home string + +func cwd_path() string { + if global_cwd == "" { + ans, _ := os.Getwd() + return ans + } + return global_cwd +} + +func home_path() string { + if global_home == "" { + return utils.Expanduser("~") + } + return global_home +} + +func abspath(path string, use_home ...bool) string { + var base string + if len(use_home) > 0 && use_home[0] { + base = home_path() + } else { + base = cwd_path() + } + return filepath.Join(base, path) +} + +func expand_home(path string) string { + if strings.HasPrefix(path, "~"+string(os.PathSeparator)) { + path = strings.TrimLeft(path[2:], string(os.PathSeparator)) + path = filepath.Join(home_path(), path) + } else if path == "~" { + path = home_path() + } + return path +} + +func random_id() string { + bytes := []byte{0, 0} + rand.Read(bytes) + return fmt.Sprintf("%x%s", os.Getpid(), hex.EncodeToString(bytes)) +} + +func run_with_paths(cwd, home string, f func()) { + global_cwd, global_home = cwd, home + defer func() { global_cwd, global_home = "", "" }() + f() +}