move command handling to cmd package
parent
1309a2f478
commit
83405d2e4b
4
Makefile
4
Makefile
|
@ -17,9 +17,9 @@ BUILD_VERSION=dev-$(BUILD_DATE)-$(BUILD_REV)
|
||||||
all: build test
|
all: build test
|
||||||
|
|
||||||
imposm3: $(GOFILES) $(PROTOFILES)
|
imposm3: $(GOFILES) $(PROTOFILES)
|
||||||
@sed -i='' 's/buildVersion = ".*"/buildVersion = "$(BUILD_VERSION)"/' version.go
|
@sed -i='' 's/buildVersion = ".*"/buildVersion = "$(BUILD_VERSION)"/' cmd/version.go
|
||||||
go build $(GOLDFLAGS)
|
go build $(GOLDFLAGS)
|
||||||
@sed -i='' 's/buildVersion = ".*"/buildVersion = ""/' version.go
|
@sed -i='' 's/buildVersion = ".*"/buildVersion = ""/' cmd/version.go
|
||||||
|
|
||||||
build: imposm3
|
build: imposm3
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,110 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"imposm3/cache"
|
||||||
|
golog "log"
|
||||||
|
"os"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"imposm3/cache/query"
|
||||||
|
"imposm3/config"
|
||||||
|
"imposm3/diff"
|
||||||
|
"imposm3/geom/limit"
|
||||||
|
"imposm3/import_"
|
||||||
|
"imposm3/logging"
|
||||||
|
"imposm3/stats"
|
||||||
|
)
|
||||||
|
|
||||||
|
var log = logging.NewLogger("")
|
||||||
|
|
||||||
|
func PrintCmds() {
|
||||||
|
fmt.Fprintf(os.Stderr, "Usage: %s COMMAND [args]\n\n", os.Args[0])
|
||||||
|
fmt.Println("Available commands:")
|
||||||
|
fmt.Println("\timport")
|
||||||
|
fmt.Println("\tdiff")
|
||||||
|
fmt.Println("\tquery-cache")
|
||||||
|
fmt.Println("\tversion")
|
||||||
|
}
|
||||||
|
|
||||||
|
func Main(usage func()) {
|
||||||
|
golog.SetFlags(golog.LstdFlags | golog.Lshortfile)
|
||||||
|
if os.Getenv("GOMAXPROCS") == "" {
|
||||||
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(os.Args) <= 1 {
|
||||||
|
usage()
|
||||||
|
logging.Shutdown()
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch os.Args[1] {
|
||||||
|
case "import":
|
||||||
|
config.ParseImport(os.Args[2:])
|
||||||
|
if config.BaseOptions.Httpprofile != "" {
|
||||||
|
stats.StartHttpPProf(config.BaseOptions.Httpprofile)
|
||||||
|
}
|
||||||
|
import_.Import()
|
||||||
|
case "diff":
|
||||||
|
config.ParseDiffImport(os.Args[2:])
|
||||||
|
|
||||||
|
if config.BaseOptions.Httpprofile != "" {
|
||||||
|
stats.StartHttpPProf(config.BaseOptions.Httpprofile)
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.BaseOptions.Quiet {
|
||||||
|
logging.SetQuiet(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
var geometryLimiter *limit.Limiter
|
||||||
|
if config.BaseOptions.LimitTo != "" {
|
||||||
|
var err error
|
||||||
|
step := log.StartStep("Reading limitto geometries")
|
||||||
|
geometryLimiter, err = limit.NewFromGeoJsonWithBuffered(
|
||||||
|
config.BaseOptions.LimitTo,
|
||||||
|
config.BaseOptions.LimitToCacheBuffer,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
log.StopStep(step)
|
||||||
|
}
|
||||||
|
osmCache := cache.NewOSMCache(config.BaseOptions.CacheDir)
|
||||||
|
err := osmCache.Open()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("osm cache: ", err)
|
||||||
|
}
|
||||||
|
defer osmCache.Close()
|
||||||
|
|
||||||
|
diffCache := cache.NewDiffCache(config.BaseOptions.CacheDir)
|
||||||
|
err = diffCache.Open()
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal("diff cache: ", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, oscFile := range config.DiffFlags.Args() {
|
||||||
|
err := diff.Update(oscFile, geometryLimiter, nil, osmCache, diffCache, false)
|
||||||
|
if err != nil {
|
||||||
|
osmCache.Close()
|
||||||
|
diffCache.Close()
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// explicitly Close since os.Exit prevents defers
|
||||||
|
osmCache.Close()
|
||||||
|
diffCache.Close()
|
||||||
|
|
||||||
|
case "query-cache":
|
||||||
|
query.Query(os.Args[2:])
|
||||||
|
case "version":
|
||||||
|
fmt.Println(Version)
|
||||||
|
os.Exit(0)
|
||||||
|
default:
|
||||||
|
usage()
|
||||||
|
log.Fatalf("invalid command: '%s'", os.Args[1])
|
||||||
|
}
|
||||||
|
logging.Shutdown()
|
||||||
|
os.Exit(0)
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package cmd
|
||||||
|
|
||||||
|
var Version string
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// buidVersion gets replaced during build
|
||||||
|
var BuildVersion = ""
|
||||||
|
Version = "0.1"
|
||||||
|
Version += BuildVersion
|
||||||
|
}
|
109
imposm3.go
109
imposm3.go
|
@ -1,114 +1,9 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"imposm3/cmd"
|
||||||
"imposm3/cache"
|
|
||||||
golog "log"
|
|
||||||
"os"
|
|
||||||
"runtime"
|
|
||||||
|
|
||||||
"imposm3/cache/query"
|
|
||||||
"imposm3/config"
|
|
||||||
"imposm3/diff"
|
|
||||||
"imposm3/geom/limit"
|
|
||||||
"imposm3/import_"
|
|
||||||
"imposm3/logging"
|
|
||||||
"imposm3/stats"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logging.NewLogger("")
|
|
||||||
|
|
||||||
func PrintCmds() {
|
|
||||||
fmt.Fprintf(os.Stderr, "Usage: %s COMMAND [args]\n\n", os.Args[0])
|
|
||||||
fmt.Println("Available commands:")
|
|
||||||
fmt.Println("\timport")
|
|
||||||
fmt.Println("\tdiff")
|
|
||||||
fmt.Println("\tquery-cache")
|
|
||||||
fmt.Println("\tversion")
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
Main(PrintCmds)
|
cmd.Main(cmd.PrintCmds)
|
||||||
}
|
|
||||||
|
|
||||||
func Main(usage func()) {
|
|
||||||
golog.SetFlags(golog.LstdFlags | golog.Lshortfile)
|
|
||||||
if os.Getenv("GOMAXPROCS") == "" {
|
|
||||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(os.Args) <= 1 {
|
|
||||||
usage()
|
|
||||||
logging.Shutdown()
|
|
||||||
os.Exit(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
switch os.Args[1] {
|
|
||||||
case "import":
|
|
||||||
config.ParseImport(os.Args[2:])
|
|
||||||
if config.BaseOptions.Httpprofile != "" {
|
|
||||||
stats.StartHttpPProf(config.BaseOptions.Httpprofile)
|
|
||||||
}
|
|
||||||
import_.Import()
|
|
||||||
case "diff":
|
|
||||||
config.ParseDiffImport(os.Args[2:])
|
|
||||||
|
|
||||||
if config.BaseOptions.Httpprofile != "" {
|
|
||||||
stats.StartHttpPProf(config.BaseOptions.Httpprofile)
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.BaseOptions.Quiet {
|
|
||||||
logging.SetQuiet(true)
|
|
||||||
}
|
|
||||||
|
|
||||||
var geometryLimiter *limit.Limiter
|
|
||||||
if config.BaseOptions.LimitTo != "" {
|
|
||||||
var err error
|
|
||||||
step := log.StartStep("Reading limitto geometries")
|
|
||||||
geometryLimiter, err = limit.NewFromGeoJsonWithBuffered(
|
|
||||||
config.BaseOptions.LimitTo,
|
|
||||||
config.BaseOptions.LimitToCacheBuffer,
|
|
||||||
)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
log.StopStep(step)
|
|
||||||
}
|
|
||||||
osmCache := cache.NewOSMCache(config.BaseOptions.CacheDir)
|
|
||||||
err := osmCache.Open()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("osm cache: ", err)
|
|
||||||
}
|
|
||||||
defer osmCache.Close()
|
|
||||||
|
|
||||||
diffCache := cache.NewDiffCache(config.BaseOptions.CacheDir)
|
|
||||||
err = diffCache.Open()
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("diff cache: ", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, oscFile := range config.DiffFlags.Args() {
|
|
||||||
err := diff.Update(oscFile, geometryLimiter, nil, osmCache, diffCache, false)
|
|
||||||
if err != nil {
|
|
||||||
osmCache.Close()
|
|
||||||
diffCache.Close()
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// explicitly Close since os.Exit prevents defers
|
|
||||||
osmCache.Close()
|
|
||||||
diffCache.Close()
|
|
||||||
|
|
||||||
case "query-cache":
|
|
||||||
query.Query(os.Args[2:])
|
|
||||||
case "version":
|
|
||||||
fmt.Println(imposmVersion)
|
|
||||||
os.Exit(0)
|
|
||||||
default:
|
|
||||||
usage()
|
|
||||||
log.Fatalf("invalid command: '%s'", os.Args[1])
|
|
||||||
}
|
|
||||||
logging.Shutdown()
|
|
||||||
os.Exit(0)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
10
version.go
10
version.go
|
@ -1,10 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
var imposmVersion string
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
// buidVersion gets replaced during build
|
|
||||||
var buildVersion = ""
|
|
||||||
imposmVersion = "0.1"
|
|
||||||
imposmVersion += buildVersion
|
|
||||||
}
|
|
Loading…
Reference in New Issue