Skip to content
This repository was archived by the owner on Sep 15, 2024. It is now read-only.

Commit 5c7397c

Browse files
committed
Initial commit
0 parents  commit 5c7397c

File tree

11 files changed

+1010
-0
lines changed

11 files changed

+1010
-0
lines changed

.gitignore

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
*~
2+
.env
3+
.*.sw[a-p]
4+
.DS_Store
5+
**/mocks/*.go
6+
cmd/oslatlong/oslatlong*
7+
dist/
8+
9+
## From https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
10+
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
11+
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
12+
13+
# User-specific stuff
14+
.idea/**/workspace.xml
15+
.idea/**/tasks.xml
16+
.idea/**/usage.statistics.xml
17+
.idea/**/dictionaries
18+
.idea/**/shelf
19+
20+
# Generated files
21+
.idea/**/contentModel.xml
22+
23+
# Sensitive or high-churn files
24+
.idea/**/dataSources/
25+
.idea/**/dataSources.ids
26+
.idea/**/dataSources.local.xml
27+
.idea/**/sqlDataSources.xml
28+
.idea/**/dynamic.xml
29+
.idea/**/uiDesigner.xml
30+
.idea/**/dbnavigator.xml
31+
32+
# Additional metadata
33+
.idea/**/$*
34+
35+
# Annoying plugins
36+
.idea/aws.xml

.idea/.gitignore

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

+10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/Build_and_Run.xml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/oslatlong/main.go

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package main
2+
3+
import (
4+
"github.com/oogali/oslatlong/cmd"
5+
)
6+
7+
func main() {
8+
cmd.Execute()
9+
}

cmd/root.go

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package cmd
2+
3+
import (
4+
"fmt"
5+
"os"
6+
7+
"github.com/rs/zerolog"
8+
"github.com/rs/zerolog/log"
9+
"github.com/spf13/cobra"
10+
"github.com/spf13/viper"
11+
"github.com/yuriizinets/go-nominatim"
12+
)
13+
14+
var (
15+
cfgFile string
16+
17+
rootCmd = &cobra.Command{
18+
Use: "oslatlong",
19+
Short: "OSM Nominatum-backed Geocoder",
20+
Run: func(cmd *cobra.Command, args []string) {
21+
queries := args
22+
if len(queries) == 0 {
23+
cmd.Help()
24+
}
25+
26+
maxResults := viper.GetInt("max-results")
27+
28+
for _, q := range queries {
29+
n := nominatim.Nominatim{}
30+
31+
results, err := n.Search(nominatim.SearchParameters{
32+
Query: q,
33+
})
34+
35+
if err != nil {
36+
log.Panic().Err(err).Msg("could not perform search")
37+
}
38+
39+
if maxResults > 0 && len(results) > maxResults {
40+
results = results[0:maxResults]
41+
}
42+
43+
for _, result := range results {
44+
fmt.Printf("%s | (%s, %s)\n", q, result.LatStr, result.LngStr)
45+
}
46+
}
47+
48+
},
49+
}
50+
)
51+
52+
func init() {
53+
cobra.OnInitialize(initConfig)
54+
55+
rootCmd.PersistentFlags().BoolP("debug", "", false, "Enable debug logging")
56+
viper.BindPFlag("debug", rootCmd.PersistentFlags().Lookup("debug"))
57+
viper.BindEnv("debug", "DEBUG")
58+
59+
rootCmd.PersistentFlags().IntP("max-results", "n", 0, "Maximum number of results to return")
60+
viper.BindPFlag("max-results", rootCmd.PersistentFlags().Lookup("max-results"))
61+
62+
rootCmd.PersistentFlags().IntP("show-query", "s", 0, "Prefix results with query")
63+
viper.BindPFlag("show-query", rootCmd.PersistentFlags().Lookup("show-query"))
64+
}
65+
66+
func initConfig() {
67+
logLevel := zerolog.InfoLevel
68+
if viper.GetBool("debug") {
69+
logLevel = zerolog.DebugLevel
70+
}
71+
zerolog.SetGlobalLevel(logLevel)
72+
}
73+
74+
func Execute() {
75+
if err := rootCmd.Execute(); err != nil {
76+
fmt.Fprintln(os.Stderr, err)
77+
os.Exit(1)
78+
}
79+
}

go.mod

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
module github.com/oogali/oslatlong
2+
3+
go 1.17
4+
5+
require (
6+
github.com/rs/zerolog v1.26.1
7+
github.com/spf13/cobra v1.3.0
8+
github.com/spf13/viper v1.10.1
9+
github.com/yuriizinets/go-nominatim v1.3.0
10+
)
11+
12+
require (
13+
github.com/fsnotify/fsnotify v1.5.1 // indirect
14+
github.com/hashicorp/hcl v1.0.0 // indirect
15+
github.com/inconshreveable/mousetrap v1.0.0 // indirect
16+
github.com/magiconair/properties v1.8.5 // indirect
17+
github.com/mitchellh/mapstructure v1.4.3 // indirect
18+
github.com/pelletier/go-toml v1.9.4 // indirect
19+
github.com/spf13/afero v1.6.0 // indirect
20+
github.com/spf13/cast v1.4.1 // indirect
21+
github.com/spf13/jwalterweatherman v1.1.0 // indirect
22+
github.com/spf13/pflag v1.0.5 // indirect
23+
github.com/subosito/gotenv v1.2.0 // indirect
24+
golang.org/x/sys v0.0.0-20211210111614-af8b64212486 // indirect
25+
golang.org/x/text v0.3.7 // indirect
26+
gopkg.in/ini.v1 v1.66.2 // indirect
27+
gopkg.in/yaml.v2 v2.4.0 // indirect
28+
)

0 commit comments

Comments
 (0)