// +build !rm_basic_commands allcommands uploadcmd

package main

import (
	"fmt"
	"os"
	"strings"
)

func init() {
	command := Command{
		Cmd:         []string{"upload", "u"},
		Description: "$filePath $fileName - Upload file from absolute path with optional name",
		Help:        "",
		Exec:        cmdUploadFile,
	}

	RegisterCommand(command)
}

func cmdUploadFile(cmd []string) {
	if len(cmd) < 2 {
		printInfo(fmt.Sprintf("%s%s $filePath $fileName - Upload file from absolute path with optional name", config.Basics.CmdPrefix, cmd[0]))
		return
	}
	filePath := cmd[1]
	if !strings.HasPrefix(filePath, "/") {
		dir, err := os.Getwd()
		if err != nil {
			printError(fmt.Sprintf("There was an error determining path %+v", err))
		}
		filePath = fmt.Sprintf("%s/%s", dir, filePath)
	}
	var fileName string
	if len(cmd) == 3 {
		fileName = cmd[2]
	} else {
		fileName = ""
	}
	chat := k.NewChat(channel)
	_, err := chat.Upload(fileName, filePath)
	channelName := config.Colors.Message.LinkKeybase.stylize(channel.Name)
	fileNameStylized := config.Colors.Feed.File.stylize(filePath)
	if err != nil {
		printError(fmt.Sprintf("There was an error uploading %s to %s\n%+v", filePath, channel.Name, err))
	} else {
		printInfoF("Uploaded $TEXT to $TEXT", fileNameStylized, channelName)
	}
}