package main import ( "flag" "fmt" "log" "net/http" "path/filepath" "strconv" ) func dev(fs http.Handler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { w.Header().Set("cache-control", "no-cache") w.Header().Set("X-dev-by", "Dmitry") fs.ServeHTTP(w, r) } } func main() { portPtr := flag.Int("port", 8080, "port number") dirPtr := flag.String("dir", ".", "directory of static files") flag.Parse() path, err := filepath.Abs(*dirPtr) if err != nil { log.Fatal(err) } port := strconv.Itoa(*portPtr) fs := http.FileServer(http.Dir(path)) http.Handle("/", dev(fs)) fmt.Printf("Static server for %s has started on http://localhost:%s\n", path, port) fmt.Println("Press Ctrl+C for shutdown") log.Fatal(http.ListenAndServe(":"+port, nil)) }