-
Notifications
You must be signed in to change notification settings - Fork 264
/
locations.go
80 lines (66 loc) · 2.29 KB
/
locations.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package db
import (
"os"
"path/filepath"
"github.com/turbot/steampipe/constants"
"github.com/turbot/steampipe/db/platform"
"github.com/turbot/steampipe/utils"
)
const ServiceExecutableRelativeLocation = "/db/12.1.0/postgres/bin/postgres"
func databaseInstanceDir() string {
loc := filepath.Join(constants.DatabaseDir(), constants.DatabaseVersion)
if _, err := os.Stat(loc); os.IsNotExist(err) {
err = os.MkdirAll(loc, 0755)
utils.FailOnErrorWithMessage(err, "could not create db version directory")
}
return loc
}
func getDatabaseLocation() string {
loc := filepath.Join(databaseInstanceDir(), "postgres")
if _, err := os.Stat(loc); os.IsNotExist(err) {
err = os.MkdirAll(loc, 0755)
utils.FailOnErrorWithMessage(err, "could not create postgres installation directory")
}
return loc
}
func getDatabaseLogDirectory() string {
loc := constants.LogDir()
if _, err := os.Stat(loc); os.IsNotExist(err) {
err = os.MkdirAll(loc, 0755)
utils.FailOnErrorWithMessage(err, "could not create postgres logging directory")
}
return loc
}
func getDataLocation() string {
loc := filepath.Join(databaseInstanceDir(), "data")
if _, err := os.Stat(loc); os.IsNotExist(err) {
err = os.MkdirAll(loc, 0755)
utils.FailOnErrorWithMessage(err, "could not create data directory")
}
return loc
}
func getInitDbBinaryExecutablePath() string {
return filepath.Join(getDatabaseLocation(), "bin", platform.Paths.InitDbExecutable)
}
func getPostgresBinaryExecutablePath() string {
return filepath.Join(getDatabaseLocation(), "bin", platform.Paths.PostgresExecutable)
}
func getDBSignatureLocation() string {
loc := filepath.Join(getDatabaseLocation(), "signature")
return loc
}
func getFDWBinaryLocation() string {
return filepath.Join(getDatabaseLocation(), "lib", "postgresql", "steampipe_postgres_fdw.so")
}
func getFDWSQLAndControlLocation() (string, string) {
base := filepath.Join(getDatabaseLocation(), "share", "postgresql", "extension")
sqlLocation := filepath.Join(base, "steampipe_postgres_fdw--1.0.sql")
controlLocation := filepath.Join(base, "steampipe_postgres_fdw.control")
return sqlLocation, controlLocation
}
func getPgHbaConfLocation() string {
return filepath.Join(getDataLocation(), "pg_hba.conf")
}
func getPasswordFileLocation() string {
return filepath.Join(getDatabaseLocation(), ".passwd")
}