code: func binaryCopy(ctx context.Context, c *cli.Context, from, to string, deleteSource bool, store storer) error {
  	if from == "" || to == "" {
  		op := "copy"
  		if deleteSource {
  			op = "move"
  		}
  		return errors.Errorf("Usage: %s %s from to", c.App.Name, op)
  	}
  
  	switch {
  	case fsutil.IsFile(from) && fsutil.IsFile(to):
  		// copying from on file to another file is not supported
  		return errors.New("ambiquity detected. Only from or to can be a file")
  	case store.Exists(ctx, from+Suffix) && store.Exists(ctx, to+Suffix):
  		// copying from one secret to another secret is not supported
  		return errors.New("ambiquity detected. Either from or to must be a file")
  	case fsutil.IsFile(from) && !fsutil.IsFile(to):
  		return binaryCopyFromFileToStore(ctx, from, to, deleteSource, store)
  	case !fsutil.IsFile(from):
  		return binaryCopyFromStoreToFile(ctx, from, to, deleteSource, store)
  	default:
  		return errors.Errorf("ambiquity detected. Unhandled case. Please report a bug")
  	}
  }
docs: // binaryCopy implements the control flow for copy and move. We support two
  // workflows:
  // 1. From the filesystem to the store
  // 2. From the store to the filesystem
  //
  // Copying secrets in the store must be done through the regular copy command