send.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package cmd
  2. import (
  3. "github.com/claudiodangelis/qrcp/config"
  4. "github.com/claudiodangelis/qrcp/logger"
  5. "github.com/claudiodangelis/qrcp/payload"
  6. "github.com/claudiodangelis/qrcp/qr"
  7. "github.com/claudiodangelis/qrcp/server"
  8. "github.com/spf13/cobra"
  9. )
  10. func sendCmdFunc(command *cobra.Command, args []string) error {
  11. log := logger.New(quietFlag)
  12. payload, err := payload.FromArgs(args, zipFlag)
  13. if err != nil {
  14. return err
  15. }
  16. cfg, err := config.New(interfaceFlag, portFlag, pathFlag, fqdnFlag, keepaliveFlag, listallinterfacesFlag)
  17. if err != nil {
  18. return err
  19. }
  20. srv, err := server.New(&cfg)
  21. if err != nil {
  22. return err
  23. }
  24. // Sets the payload
  25. srv.Send(payload)
  26. log.Print("Scan the following URL with a QR reader to start the file transfer:")
  27. log.Print(srv.SendURL)
  28. qr.RenderString(srv.SendURL)
  29. if err := srv.Wait(); err != nil {
  30. return err
  31. }
  32. return nil
  33. }
  34. var sendCmd = &cobra.Command{
  35. Use: "send",
  36. Short: "Send a file(s) or directories from this host",
  37. Long: "Send a file(s) or directories from this host",
  38. Aliases: []string{"s"},
  39. Example: `# Send /path/file.gif. Webserver listens on a random port
  40. qrcp send /path/file.gif
  41. # Shorter version:
  42. qrcp /path/file.gif
  43. # Zip file1.gif and file2.gif, then send the zip package
  44. qrcp /path/file1.gif /path/file2.gif
  45. # Zip the content of directory, then send the zip package
  46. qrcp /path/directory
  47. # Send file.gif by creating a webserver on port 8080
  48. qrcp --port 8080 /path/file.gif
  49. `,
  50. Args: cobra.MinimumNArgs(1),
  51. RunE: sendCmdFunc,
  52. }