Make path and homedir related logic more robust
Add ability to pass OONI_HOME environment variable
This commit is contained in:
parent
e0ac7b337b
commit
c620bc9726
|
@ -6,6 +6,7 @@ import (
|
||||||
ooni "github.com/ooni/probe-cli"
|
ooni "github.com/ooni/probe-cli"
|
||||||
"github.com/ooni/probe-cli/internal/log/handlers/batch"
|
"github.com/ooni/probe-cli/internal/log/handlers/batch"
|
||||||
"github.com/ooni/probe-cli/internal/log/handlers/cli"
|
"github.com/ooni/probe-cli/internal/log/handlers/cli"
|
||||||
|
"github.com/ooni/probe-cli/utils"
|
||||||
"github.com/prometheus/common/version"
|
"github.com/prometheus/common/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -38,7 +39,7 @@ func init() {
|
||||||
Init = func() (*ooni.Context, error) {
|
Init = func() (*ooni.Context, error) {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
homePath, err := ooni.GetOONIHome()
|
homePath, err := utils.GetOONIHome()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,13 +5,13 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
homedir "github.com/mitchellh/go-homedir"
|
"github.com/ooni/probe-cli/utils/homedir"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"gopkg.in/AlecAivazis/survey.v1"
|
"gopkg.in/AlecAivazis/survey.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// HomePath returns the path to the OONI Home
|
// HomePath returns the path to the OONI Home
|
||||||
func HomePath() (string, error) {
|
func homePath() (string, error) {
|
||||||
home, err := homedir.Dir()
|
home, err := homedir.Dir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
@ -20,8 +20,11 @@ func HomePath() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// HomeExists returns true if a legacy home exists
|
// HomeExists returns true if a legacy home exists
|
||||||
func HomeExists() (bool, error) {
|
func homeExists() (bool, error) {
|
||||||
home, err := HomePath()
|
home, err := homePath()
|
||||||
|
if err == homedir.ErrNoHomeDir {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
@ -33,7 +36,7 @@ func HomeExists() (bool, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// BackupHome the legacy home directory
|
// BackupHome the legacy home directory
|
||||||
func BackupHome() error {
|
func backupHome() error {
|
||||||
home, err := homedir.Dir()
|
home, err := homedir.Dir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "backing up home")
|
return errors.Wrap(err, "backing up home")
|
||||||
|
@ -48,14 +51,14 @@ func BackupHome() error {
|
||||||
|
|
||||||
// MaybeMigrateHome prompts the user if we should backup the legacy home
|
// MaybeMigrateHome prompts the user if we should backup the legacy home
|
||||||
func MaybeMigrateHome() error {
|
func MaybeMigrateHome() error {
|
||||||
exists, err := HomeExists()
|
exists, err := homeExists()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if !exists {
|
if !exists {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
home, err := HomePath()
|
home, err := homePath()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -72,7 +75,7 @@ func MaybeMigrateHome() error {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logf("Backing up ~/.ooni to ~/.ooni-legacy")
|
logf("Backing up ~/.ooni to ~/.ooni-legacy")
|
||||||
if err := BackupHome(); err != nil {
|
if err := backupHome(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,7 @@ type Controller struct {
|
||||||
msmtPath string // XXX maybe we can drop this and just use a temporary file
|
msmtPath string // XXX maybe we can drop this and just use a temporary file
|
||||||
}
|
}
|
||||||
|
|
||||||
func getCaBundlePath() {
|
func getCaBundlePath() string {
|
||||||
path := os.Getenv("SSL_CERT_FILE")
|
path := os.Getenv("SSL_CERT_FILE")
|
||||||
if path != "" {
|
if path != "" {
|
||||||
return path
|
return path
|
||||||
|
|
14
ooni.go
14
ooni.go
|
@ -9,7 +9,6 @@ import (
|
||||||
|
|
||||||
"github.com/apex/log"
|
"github.com/apex/log"
|
||||||
"github.com/jmoiron/sqlx"
|
"github.com/jmoiron/sqlx"
|
||||||
homedir "github.com/mitchellh/go-homedir"
|
|
||||||
"github.com/ooni/probe-cli/config"
|
"github.com/ooni/probe-cli/config"
|
||||||
"github.com/ooni/probe-cli/internal/database"
|
"github.com/ooni/probe-cli/internal/database"
|
||||||
"github.com/ooni/probe-cli/internal/legacy"
|
"github.com/ooni/probe-cli/internal/legacy"
|
||||||
|
@ -124,17 +123,6 @@ func NewContext(configPath string, homePath string) *Context {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetOONIHome returns the path to the OONI Home
|
|
||||||
func GetOONIHome() (string, error) {
|
|
||||||
home, err := homedir.Dir()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
path := filepath.Join(home, ".ooni")
|
|
||||||
return path, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Config for the OONI Probe installation
|
// Config for the OONI Probe installation
|
||||||
type Config struct {
|
type Config struct {
|
||||||
// Private settings
|
// Private settings
|
||||||
|
@ -179,7 +167,7 @@ func (c *Config) Unlock() {
|
||||||
|
|
||||||
// Default config settings
|
// Default config settings
|
||||||
func (c *Config) Default() error {
|
func (c *Config) Default() error {
|
||||||
home, err := GetOONIHome()
|
home, err := utils.GetOONIHome()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/ooni/probe-cli/utils/homedir"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RequiredDirs returns the required ooni home directories
|
// RequiredDirs returns the required ooni home directories
|
||||||
|
@ -46,3 +48,18 @@ func MakeResultsDir(home string, name string, ts time.Time) (string, error) {
|
||||||
}
|
}
|
||||||
return p, nil
|
return p, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetOONIHome returns the path to the OONI Home
|
||||||
|
func GetOONIHome() (string, error) {
|
||||||
|
if ooniHome := os.Getenv("OONI_HOME"); ooniHome != "" {
|
||||||
|
return ooniHome, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
home, err := homedir.Dir()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
|
||||||
|
path := filepath.Join(home, ".ooni")
|
||||||
|
return path, nil
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user