diff --git a/config/config.go b/config/config.go index d7ae418..a5d6114 100644 --- a/config/config.go +++ b/config/config.go @@ -11,6 +11,7 @@ import ( type Config struct { CacheDir string `json:"cachedir"` + DiffDir string `json:"diffdir"` Connection string `json:"connection"` MappingFile string `json:"mapping"` LimitTo string `json:"limitto"` @@ -37,6 +38,7 @@ var DiffFlags = flag.NewFlagSet("diff", flag.ExitOnError) type _BaseOptions struct { Connection string CacheDir string + DiffDir string MappingFile string Srid int LimitTo string @@ -101,6 +103,14 @@ func (o *_BaseOptions) updateFromConfig() error { if o.CacheDir == defaultCacheDir { o.CacheDir = conf.CacheDir } + if o.DiffDir == "" { + if conf.DiffDir == "" { + // use CacheDir for backwards compatibility + o.DiffDir = o.CacheDir + } else { + o.DiffDir = conf.DiffDir + } + } return nil } @@ -133,6 +143,7 @@ var ImportOptions = _ImportOptions{} func addBaseFlags(flags *flag.FlagSet) { flags.StringVar(&BaseOptions.Connection, "connection", "", "connection parameters") flags.StringVar(&BaseOptions.CacheDir, "cachedir", defaultCacheDir, "cache directory") + flags.StringVar(&BaseOptions.DiffDir, "diffdir", "", "diff directory for last.state.txt") flags.StringVar(&BaseOptions.MappingFile, "mapping", "", "mapping file") flags.IntVar(&BaseOptions.Srid, "srid", defaultSrid, "srs id") flags.StringVar(&BaseOptions.LimitTo, "limitto", "", "limit to geometries") diff --git a/diff/process.go b/diff/process.go index a7a4eaf..7f5154b 100644 --- a/diff/process.go +++ b/diff/process.go @@ -29,7 +29,7 @@ func Update(oscFile string, geometryLimiter *limit.Limiter, expireor expire.Expi if err != nil { return err } - lastState, err := diffstate.ParseLastState(config.BaseOptions.CacheDir) + lastState, err := diffstate.ParseLastState(config.BaseOptions.DiffDir) if err != nil { log.Warn(err) } @@ -300,7 +300,7 @@ For: if lastState != nil { state.Url = lastState.Url } - err = diffstate.WriteLastState(config.BaseOptions.CacheDir, state) + err = diffstate.WriteLastState(config.BaseOptions.DiffDir, state) if err != nil { log.Warn(err) // warn only } diff --git a/import_/import.go b/import_/import.go index 1f334e4..cc0f656 100644 --- a/import_/import.go +++ b/import_/import.go @@ -4,6 +4,7 @@ Package import_ provides the import sub command initial imports. package import_ import ( + "os" "path" "imposm3/cache" @@ -119,7 +120,11 @@ func Import() { log.StopStep(step) diffstate := state.FromPbf(pbfFile) if diffstate != nil { - diffstate.WriteToFile(path.Join(config.BaseOptions.CacheDir, "last.state.txt")) + os.MkdirAll(config.BaseOptions.DiffDir, 0755) + err := diffstate.WriteToFile(path.Join(config.BaseOptions.DiffDir, "last.state.txt")) + if err != nil { + log.Print("error writing last.state.txt: ", err) + } } }