diff --git a/.vscode/launch.json b/.vscode/launch.json index 7c6193c..1dfe2f1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "program": "${workspaceFolder}/main.go", "env": { "GO_SCAN_SCANNER": "utsushi:esci:usb:/sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0", - "GO_SCAN_OUTPUTDIRECTORY": "/tmp", + "GO_SCAN_OUTPUTDIRECTORY": "/tmp/scans", "GO_SCAN_ARGUMENTS": "--jpeg-quality 100 --mode Color --scan-area ISO/A4/Portrait --resolution 600" } } diff --git a/log/log.go b/log/log.go index 9ce4b46..7bf3c65 100644 --- a/log/log.go +++ b/log/log.go @@ -2,6 +2,7 @@ package log import ( "fmt" + "os" "velvettear/go-scan/util/date" ) @@ -22,6 +23,11 @@ func Error(logMessage string, logExtras ...string) { trace(3, logMessage, logExtras...) } +func Fatal(logMessage string, logExtras ...string) { + trace(4, logMessage, logExtras...) + os.Exit(1) +} + // unexported functions func trace(logLevel int, logMessage string, logExtras ...string) { if len(logMessage) == 0 { @@ -46,6 +52,8 @@ func trace(logLevel int, logMessage string, logExtras ...string) { func getPrefixForLogLevel(loglevel int) string { switch loglevel { + case 4: + return "fatal" case 3: return "error" case 2: diff --git a/main.go b/main.go index 745e4cf..9af1eff 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "net/http" + "os" "os/exec" "strconv" "strings" @@ -33,7 +34,7 @@ func startServer() { log.Info("starting server '" + serverAddress + "'...") error := http.ListenAndServe(serverAddress, nil) if error != nil { - log.Error("an error occured starting the server", error.Error()) + log.Fatal("an error occured starting the server", error.Error()) } } @@ -144,6 +145,10 @@ func generateScanName(filename string) string { if !strings.HasSuffix(filename, ".png") { filename += ".png" } + error := os.MkdirAll(configuration.ScannerConfig.OutputDirectory, 0755) + if error != nil { + log.Fatal("an error occurred creating the output directory", error.Error()) + } return configuration.ScannerConfig.OutputDirectory + filename }