ci: add staticcheck job
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
cătălin 2022-06-28 15:09:00 +02:00
commit e7a9ddc460
No known key found for this signature in database
GPG key ID: C378F1E869F05A95
3 changed files with 27 additions and 21 deletions

View file

@ -4,6 +4,11 @@ type: docker
name: default name: default
steps: steps:
- name: staticcheck
image: golang:1.18.3-alpine3.16
commands:
- go install honnef.co/go/tools/cmd/staticcheck@latest
- staticcheck
- name: build - name: build
image: plugins/docker image: plugins/docker
settings: settings:
@ -11,6 +16,8 @@ steps:
from_secret: DOCKER_USERNAME from_secret: DOCKER_USERNAME
password: password:
from_secret: DOCKER_PASSWORD from_secret: DOCKER_PASSWORD
repo: 185504a9/fsu repo: 185504a9/sfu
tags: latest tags: latest
target: run_prod target: run_prod
depends_on:
- staticcheck

View file

@ -10,7 +10,7 @@ import (
) )
func downloadFile(w http.ResponseWriter, req *http.Request, fileName string) { func downloadFile(w http.ResponseWriter, req *http.Request, fileName string) {
Info.Println(fmt.Sprintf("server: will download %v", fileName)) Info.Printf("server: will download %v\n", fileName)
file, err := os.Open(fmt.Sprintf("%v/%v", SFU_FILES_DIR, fileName)) file, err := os.Open(fmt.Sprintf("%v/%v", SFU_FILES_DIR, fileName))
if err != nil { if err != nil {
Error.Println(err) Error.Println(err)
@ -34,9 +34,9 @@ func fileExists(fileName string) bool {
} }
func deleteFile(w http.ResponseWriter, req *http.Request, fileName string) { func deleteFile(w http.ResponseWriter, req *http.Request, fileName string) {
Info.Println(fmt.Sprintf("server: will delete %v", fileName)) Info.Printf("server: will delete %v\n", fileName)
if !fileExists(fileName) { if !fileExists(fileName) {
Error.Println(fmt.Sprintf("%v does not exist", fileName)) Error.Printf("%v does not exist\n", fileName)
http.Error(w, "File not found", http.StatusNotFound) http.Error(w, "File not found", http.StatusNotFound)
return return
} }
@ -59,12 +59,12 @@ func uploadFile(w http.ResponseWriter, req *http.Request) {
fileExists := fileExists(fileHeader.Filename) fileExists := fileExists(fileHeader.Filename)
forceOverwrite := req.FormValue("force") forceOverwrite := req.FormValue("force")
if fileExists && forceOverwrite != "true" { if fileExists && forceOverwrite != "true" {
Error.Println(fmt.Sprintf("file %v already exists", fileHeader.Filename)) Error.Printf("file %v already exists\n", fileHeader.Filename)
http.Error(w, "File already exists", http.StatusConflict) http.Error(w, "File already exists", http.StatusConflict)
return return
} }
if !fileExists || (forceOverwrite == "true" && fileExists) { if !fileExists || (forceOverwrite == "true" && fileExists) {
Info.Println(fmt.Sprintf("server: will upload %v", fileHeader.Filename)) Info.Printf("server: will upload %v\n", fileHeader.Filename)
out, err := os.Create(fmt.Sprintf("%v/%v", SFU_FILES_DIR, fileHeader.Filename)) out, err := os.Create(fmt.Sprintf("%v/%v", SFU_FILES_DIR, fileHeader.Filename))
if err != nil { if err != nil {
Error.Println(err) Error.Println(err)
@ -83,15 +83,14 @@ func uploadFile(w http.ResponseWriter, req *http.Request) {
return return
} }
http.Error(w, "internal server error", http.StatusInternalServerError) http.Error(w, "internal server error", http.StatusInternalServerError)
return
} }
func listFiles(w http.ResponseWriter, req *http.Request) { func listFiles(w http.ResponseWriter, req *http.Request) {
Info.Println(fmt.Sprintf("server: will list uploaded files on %v", SFU_FILES_DIR)) Info.Printf("server: will list uploaded files on %v\n", SFU_FILES_DIR)
files, err := ioutil.ReadDir(SFU_FILES_DIR) files, err := ioutil.ReadDir(SFU_FILES_DIR)
if err != nil { if err != nil {
Warning.Println(fmt.Sprintf("%v does not exist", SFU_FILES_DIR)) Warning.Printf("%v does not exist\n", SFU_FILES_DIR)
Info.Println(fmt.Sprintf("will create %v", SFU_FILES_DIR)) Info.Printf("will create %v\n", SFU_FILES_DIR)
_ = os.Mkdir(SFU_FILES_DIR, os.ModePerm) _ = os.Mkdir(SFU_FILES_DIR, os.ModePerm)
} }
fmt.Fprint(w, "<html><body><ol>") fmt.Fprint(w, "<html><body><ol>")

20
main.go
View file

@ -12,10 +12,10 @@ var SFU_FILES_DIR string = getEnvvar("SFU_FILES_DIR")
var SFU_PORT string = getEnvvar("SFU_PORT") var SFU_PORT string = getEnvvar("SFU_PORT")
func getEnvvar(envvar_name string) string { func getEnvvar(envvar_name string) string {
Info.Printf("getting envvar %v", envvar_name) Info.Printf("getting envvar %v\n", envvar_name)
envvar_value, isSet := os.LookupEnv(envvar_name) envvar_value, isSet := os.LookupEnv(envvar_name)
if !isSet { if !isSet {
Error.Println(fmt.Sprintf("%v is not set", envvar_name)) Error.Printf("%v is not set\n", envvar_name)
os.Exit(1) os.Exit(1)
} }
return envvar_value return envvar_value
@ -33,9 +33,9 @@ func emptyArray(s []string) []string {
func routeFiles(w http.ResponseWriter, r *http.Request) { func routeFiles(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path path := r.URL.Path
Info.Println(fmt.Sprintf("received %v on %v", r.Method, path)) Info.Printf("received %v on %v", r.Method, path)
paths := emptyArray(strings.Split(path, "/")) paths := emptyArray(strings.Split(path, "/"))
Info.Println(fmt.Sprintf("paths %v", paths)) Info.Printf("paths %v\n", paths)
switch len(paths) { switch len(paths) {
case 1: case 1:
switch r.Method { switch r.Method {
@ -45,8 +45,8 @@ func routeFiles(w http.ResponseWriter, r *http.Request) {
uploadFile(w, r) uploadFile(w, r)
default: default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
Warning.Println(fmt.Sprintf("%v not allowed", r.Method)) Warning.Printf("%v not allowed\n", r.Method)
Error.Println(fmt.Sprintf("will return %v", http.StatusMethodNotAllowed)) Error.Printf("will return %v\n", http.StatusMethodNotAllowed)
} }
return return
case 2: case 2:
@ -57,8 +57,8 @@ func routeFiles(w http.ResponseWriter, r *http.Request) {
deleteFile(w, r, paths[1]) deleteFile(w, r, paths[1])
default: default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed) http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
Warning.Println(fmt.Sprintf("%v not allowed", r.Method)) Warning.Printf("%v not allowed\n", r.Method)
Error.Println(fmt.Sprintf("will return %v", http.StatusMethodNotAllowed)) Error.Printf("will return %v\n", http.StatusMethodNotAllowed)
} }
default: default:
http.Error(w, "Not found", http.StatusNotFound) http.Error(w, "Not found", http.StatusNotFound)
@ -87,10 +87,10 @@ func main() {
mux := http.NewServeMux() mux := http.NewServeMux()
mux.HandleFunc("/", route) mux.HandleFunc("/", route)
port := fmt.Sprintf(":%v", SFU_PORT) port := fmt.Sprintf(":%v", SFU_PORT)
Info.Println(fmt.Sprintf("running SFU on port %v", port)) Info.Printf("running SFU on port %v\n", port)
err := http.ListenAndServe(port, mux) err := http.ListenAndServe(port, mux)
if err != nil { if err != nil {
Error.Println(fmt.Sprintf("%v port may not be available", port)) Error.Printf("%v port may not be available\n", port)
os.Exit(1) os.Exit(1)
} }
} }