package util

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"path/filepath"
)

func ReadFromFile(fileName string) (io.Reader, error) {
	switch fileName {
	case "":
		return nil, fmt.Errorf("no file name")
	case "-":
		return os.Stdin, nil
	default:
		return os.Open(fileName)
	}
}

func DownloadFile(filePath string, url string) error {
	// Get the data
	resp, err := http.Get(url)
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	err = os.MkdirAll(filepath.Dir(filePath), os.ModePerm)
	if err != nil {
		return err
	}

	// Create the file
	out, err := os.Create(filePath)
	if err != nil {
		return err
	}
	defer out.Close()

	// Write the body to file
	_, err = io.Copy(out, resp.Body)
	return err
}
