fix(pkg/storage/logfile): create logfile if not exists

This commit is contained in:
Markus Pesch 2019-09-29 18:29:06 +02:00
parent ea83d43cd6
commit a7722e028a
Signed by: volker.raschek
GPG Key ID: 852BCC170D81A982
4 changed files with 44 additions and 7 deletions

View File

@ -4,6 +4,7 @@ import (
"encoding/csv" "encoding/csv"
"fmt" "fmt"
"os" "os"
"path/filepath"
"strconv" "strconv"
"time" "time"
@ -16,8 +17,19 @@ type csvLogfile struct {
} }
func (cl *csvLogfile) Read() ([]*types.MeasuredValue, error) { func (cl *csvLogfile) Read() ([]*types.MeasuredValue, error) {
if _, err := os.Stat(cl.logfile); os.IsNotExist(err) { if _, err := os.Stat(cl.logfile); os.IsNotExist(err) {
return nil, fmt.Errorf("%v: %v", errorLogfileNotFound, cl.logfile) if _, err := os.Stat(filepath.Dir(cl.logfile)); os.IsNotExist(err) {
if err := os.MkdirAll(filepath.Dir(cl.logfile), 0755); err != nil {
return nil, fmt.Errorf("%v: %v", errorDirectoryCreate, filepath.Dir(cl.logfile))
}
}
f, err := os.Create(cl.logfile)
if err != nil {
return nil, fmt.Errorf("%v: %v", errorLogfileCreate, cl.logfile)
}
f.Close()
} }
f, err := os.Open(cl.logfile) f, err := os.Open(cl.logfile)

View File

@ -3,6 +3,8 @@ package logfile
import "errors" import "errors"
var ( var (
errorDirectoryCreate = errors.New("Can not create directory")
errorLogfileCreate = errors.New("Can not create logfile") errorLogfileCreate = errors.New("Can not create logfile")
errorLogfileDecode = errors.New("Can not decode from reader") errorLogfileDecode = errors.New("Can not decode from reader")
errorLogfileEncode = errors.New("Can not encode from writer") errorLogfileEncode = errors.New("Can not encode from writer")
@ -13,10 +15,6 @@ var (
errorLogfileUnmarshal = errors.New("Can not unmarshal values") errorLogfileUnmarshal = errors.New("Can not unmarshal values")
errorLogfileWrite = errors.New("Can not write with given writer") errorLogfileWrite = errors.New("Can not write with given writer")
errorParseFloat = errors.New("Can not parse float")
errorParseMeasurementUnit = errors.New("Can not parse mesaurement unit")
errorParseTime = errors.New("Can not parse time")
errorNoValidHumidityID = errors.New("No valid humidity id detected or available") errorNoValidHumidityID = errors.New("No valid humidity id detected or available")
errorNoValidMesuredValue = errors.New("No mesured value detected or available") errorNoValidMesuredValue = errors.New("No mesured value detected or available")
errorNoValidSensorID = errors.New("No sensor id detected or available") errorNoValidSensorID = errors.New("No sensor id detected or available")
@ -24,5 +22,9 @@ var (
errorNoValidTime = errors.New("No time detected or available") errorNoValidTime = errors.New("No time detected or available")
errorNoValidTimePeriods = errors.New("No valid time periods") errorNoValidTimePeriods = errors.New("No valid time periods")
errorParseFloat = errors.New("Can not parse float")
errorParseMeasurementUnit = errors.New("Can not parse mesaurement unit")
errorParseTime = errors.New("Can not parse time")
errorTypeSwitch = errors.New("Can not detect type via type switch") errorTypeSwitch = errors.New("Can not detect type via type switch")
) )

View File

@ -16,7 +16,18 @@ type jsonLogfile struct {
func (jl *jsonLogfile) Read() ([]*types.MeasuredValue, error) { func (jl *jsonLogfile) Read() ([]*types.MeasuredValue, error) {
if _, err := os.Stat(jl.logfile); os.IsNotExist(err) { if _, err := os.Stat(jl.logfile); os.IsNotExist(err) {
return nil, fmt.Errorf("%v: %v", errorLogfileNotFound, jl.logfile) if _, err := os.Stat(filepath.Dir(jl.logfile)); os.IsNotExist(err) {
if err := os.MkdirAll(filepath.Dir(jl.logfile), 0755); err != nil {
return nil, fmt.Errorf("%v: %v", errorDirectoryCreate, filepath.Dir(jl.logfile))
}
}
f, err := os.Create(jl.logfile)
if err != nil {
return nil, fmt.Errorf("%v: %v", errorLogfileCreate, jl.logfile)
}
f.WriteString("{}")
f.Close()
} }
f, err := os.Open(jl.logfile) f, err := os.Open(jl.logfile)

View File

@ -4,6 +4,7 @@ import (
"encoding/xml" "encoding/xml"
"fmt" "fmt"
"os" "os"
"path/filepath"
"github.com/go-flucky/flucky/pkg/types" "github.com/go-flucky/flucky/pkg/types"
) )
@ -17,8 +18,19 @@ func (xl *xmlLogfile) GetLogfile() string {
} }
func (xl *xmlLogfile) Read() ([]*types.MeasuredValue, error) { func (xl *xmlLogfile) Read() ([]*types.MeasuredValue, error) {
if _, err := os.Stat(xl.logfile); os.IsNotExist(err) { if _, err := os.Stat(xl.logfile); os.IsNotExist(err) {
return nil, fmt.Errorf("%v: %v", errorLogfileNotFound, xl.logfile) if _, err := os.Stat(filepath.Dir(xl.logfile)); os.IsNotExist(err) {
if err := os.MkdirAll(filepath.Dir(xl.logfile), 0755); err != nil {
return nil, fmt.Errorf("%v: %v", errorDirectoryCreate, filepath.Dir(xl.logfile))
}
}
f, err := os.Create(xl.logfile)
if err != nil {
return nil, fmt.Errorf("%v: %v", errorLogfileCreate, xl.logfile)
}
f.Close()
} }
f, err := os.Open(xl.logfile) f, err := os.Open(xl.logfile)