package main import ( "flag" "fmt" "io" "net/http" "os" "path" ) func download(url, filename string) (err error) { fmt.Println("Downloading ", url, " to ", filename) resp, err := http.Get(url) if err != nil { return } defer resp.Body.Close() f, err := os.Create(filename) if err != nil { return } defer f.Close() _, err = io.Copy(f, resp.Body) return } func main() { pUrl := flag.String("url", "", "URL to be processed") flag.Parse() url := *pUrl if url == "" { fmt.Fprintf(os.Stderr, "Error: empty URL!\n") return } filename := path.Base(url) fmt.Println("Checking if " + filename + " exists ...") if _, err := os.Stat(filename); os.IsNotExist(err) { err := download(url, filename) if err != nil { panic(err) } fmt.Println(filename + " saved!") } else { fmt.Println(filename + " already exists!") } }