only if host flag supplied for writefreely binary, writeas unaffectedpull/36/head
@@ -42,7 +42,7 @@ func NewClient(c *cli.Context, authRequired bool) (*writeas.Client, error) { | |||
} | |||
client.UserAgent = config.UserAgent(c) | |||
// TODO: load user into var shared across the app | |||
u, _ := config.LoadUser(config.UserDataDir(c.App.ExtraInfo()["configDir"])) | |||
u, _ := config.LoadUser(c) | |||
if u != nil { | |||
client.SetToken(u.AccessToken) | |||
} else if authRequired { | |||
@@ -235,7 +235,7 @@ func DoLogIn(c *cli.Context, username, password string) error { | |||
return err | |||
} | |||
err = config.SaveUser(config.UserDataDir(c.App.ExtraInfo()["configDir"]), u) | |||
err = config.SaveUser(c, u) | |||
if err != nil { | |||
return err | |||
} | |||
@@ -25,7 +25,7 @@ func CmdPull(c *cli.Context) error { | |||
} | |||
// Create posts directory if needed | |||
if cfg.Posts.Directory == "" { | |||
syncSetUp(c.App.ExtraInfo()["configDir"], cfg) | |||
syncSetUp(c, cfg) | |||
} | |||
// Fetch posts | |||
@@ -79,10 +79,10 @@ func CmdPull(c *cli.Context) error { | |||
return nil | |||
} | |||
func syncSetUp(path string, cfg *config.UserConfig) error { | |||
func syncSetUp(c *cli.Context, cfg *config.UserConfig) error { | |||
// Get user information and fail early (before we make the user do | |||
// anything), if we're going to | |||
u, err := config.LoadUser(config.UserDataDir(path)) | |||
u, err := config.LoadUser(c) | |||
if err != nil { | |||
return err | |||
} | |||
@@ -118,7 +118,7 @@ func syncSetUp(path string, cfg *config.UserConfig) error { | |||
// Save preference | |||
cfg.Posts.Directory = dir | |||
err = config.SaveConfig(config.UserDataDir(path), cfg) | |||
err = config.SaveConfig(config.UserDataDir(c.App.ExtraInfo()["configDir"]), cfg) | |||
if err != nil { | |||
if config.Debug() { | |||
log.Errorln("Unable to save config: %s", err) | |||
@@ -6,12 +6,11 @@ import ( | |||
"github.com/writeas/writeas-cli/api" | |||
"github.com/writeas/writeas-cli/commands" | |||
"github.com/writeas/writeas-cli/config" | |||
"github.com/writeas/writeas-cli/log" | |||
cli "gopkg.in/urfave/cli.v1" | |||
) | |||
func main() { | |||
initialize(appInfo["configDir"]) | |||
config.DirMustExist(appInfo["configDir"]) | |||
cli.VersionFlag = cli.BoolFlag{ | |||
Name: "version, V", | |||
Usage: "print the version", | |||
@@ -249,18 +248,3 @@ OPTIONS: | |||
` | |||
app.Run(os.Args) | |||
} | |||
func initialize(dataDirName string) { | |||
// Ensure we have a data directory to use | |||
if !config.DataDirExists(dataDirName) { | |||
err := config.CreateDataDir(dataDirName) | |||
if err != nil { | |||
if config.Debug() { | |||
panic(err) | |||
} else { | |||
log.Errorln("Error creating data directory: %s", err) | |||
return | |||
} | |||
} | |||
} | |||
} |
@@ -5,12 +5,11 @@ import ( | |||
"github.com/writeas/writeas-cli/commands" | |||
"github.com/writeas/writeas-cli/config" | |||
"github.com/writeas/writeas-cli/log" | |||
cli "gopkg.in/urfave/cli.v1" | |||
) | |||
func main() { | |||
initialize(appInfo["configDir"]) | |||
config.DirMustExist(appInfo["configDir"]) | |||
cli.VersionFlag = cli.BoolFlag{ | |||
Name: "version, V", | |||
Usage: "print the version", | |||
@@ -248,18 +247,3 @@ OPTIONS: | |||
` | |||
app.Run(os.Args) | |||
} | |||
func initialize(dataDirName string) { | |||
// Ensure we have a data directory to use | |||
if !config.DataDirExists(dataDirName) { | |||
err := config.CreateDataDir(dataDirName) | |||
if err != nil { | |||
if config.Debug() { | |||
panic(err) | |||
} else { | |||
log.Errorln("Error creating data directory: %s", err) | |||
return | |||
} | |||
} | |||
} | |||
} |
@@ -71,7 +71,7 @@ func CmdDelete(c *cli.Context) error { | |||
return cli.NewExitError("usage: writeas delete <postId> [<token>]", 1) | |||
} | |||
u, _ := config.LoadUser(config.UserDataDir(c.App.ExtraInfo()["configDir"])) | |||
u, _ := config.LoadUser(c) | |||
if token == "" { | |||
// Search for the token locally | |||
token = api.TokenFromID(c, friendlyID) | |||
@@ -107,7 +107,7 @@ func CmdUpdate(c *cli.Context) error { | |||
return cli.NewExitError("usage: writeas update <postId> [<token>]", 1) | |||
} | |||
u, _ := config.LoadUser(config.UserDataDir(c.App.ExtraInfo()["configDir"])) | |||
u, _ := config.LoadUser(c) | |||
if token == "" { | |||
// Search for the token locally | |||
token = api.TokenFromID(c, friendlyID) | |||
@@ -186,7 +186,7 @@ func CmdListPosts(c *cli.Context) error { | |||
fmt.Fprintf(tw, "unsynced\t%s\t%s\t\n", getPostURL(c, p.ID), p.EditToken) | |||
} | |||
} | |||
u, _ := config.LoadUser(config.UserDataDir(c.App.ExtraInfo()["configDir"])) | |||
u, _ := config.LoadUser(c) | |||
if u != nil { | |||
remotePosts, err := api.GetUserPosts(c) | |||
if err != nil { | |||
@@ -302,7 +302,7 @@ func CmdClaim(c *cli.Context) error { | |||
func CmdAuth(c *cli.Context) error { | |||
// Check configuration | |||
u, err := config.LoadUser(config.UserDataDir(c.App.ExtraInfo()["configDir"])) | |||
u, err := config.LoadUser(c) | |||
if err != nil { | |||
return cli.NewExitError(fmt.Sprintf("couldn't load config: %v", err), 1) | |||
} | |||
@@ -5,16 +5,34 @@ import ( | |||
"path/filepath" | |||
"github.com/writeas/writeas-cli/fileutils" | |||
"github.com/writeas/writeas-cli/log" | |||
) | |||
func UserDataDir(dataDirName string) string { | |||
return filepath.Join(parentDataDir(), dataDirName) | |||
} | |||
func DataDirExists(dataDirName string) bool { | |||
return fileutils.Exists(UserDataDir(dataDirName)) | |||
func dataDirExists(dataDirName string) bool { | |||
return fileutils.Exists(dataDirName) | |||
} | |||
func CreateDataDir(dataDirName string) error { | |||
return os.Mkdir(UserDataDir(dataDirName), 0700) | |||
func createDataDir(dataDirName string) error { | |||
return os.Mkdir(dataDirName, 0700) | |||
} | |||
// DirMustExist checks for a directory, creates it if not found and either | |||
// panics or logs and error depending on the status of Debug | |||
func DirMustExist(dataDirName string) { | |||
// Ensure we have a data directory to use | |||
if !dataDirExists(dataDirName) { | |||
err := createDataDir(dataDirName) | |||
if err != nil { | |||
if Debug() { | |||
panic(err) | |||
} else { | |||
log.Errorln("Error creating data directory: %s", err) | |||
return | |||
} | |||
} | |||
} | |||
} |
@@ -7,12 +7,17 @@ import ( | |||
writeas "github.com/writeas/go-writeas/v2" | |||
"github.com/writeas/writeas-cli/fileutils" | |||
"gopkg.in/urfave/cli.v1" | |||
) | |||
const UserFile = "user.json" | |||
func LoadUser(dataDir string) (*writeas.AuthUser, error) { | |||
fname := filepath.Join(dataDir, UserFile) | |||
func LoadUser(c *cli.Context) (*writeas.AuthUser, error) { | |||
dir, err := userHostDir(c) | |||
if err != nil { | |||
return nil, err | |||
} | |||
fname := filepath.Join(dir, UserFile) | |||
userJSON, err := ioutil.ReadFile(fname) | |||
if err != nil { | |||
if !fileutils.Exists(fname) { | |||
@@ -31,17 +36,31 @@ func LoadUser(dataDir string) (*writeas.AuthUser, error) { | |||
return u, nil | |||
} | |||
func SaveUser(dataDir string, u *writeas.AuthUser) error { | |||
func SaveUser(c *cli.Context, u *writeas.AuthUser) error { | |||
// Marshal struct into pretty-printed JSON | |||
userJSON, err := json.MarshalIndent(u, "", " ") | |||
if err != nil { | |||
return err | |||
} | |||
dir, err := userHostDir(c) | |||
if err != nil { | |||
return err | |||
} | |||
DirMustExist(dir) | |||
// Save file | |||
err = ioutil.WriteFile(filepath.Join(dataDir, UserFile), userJSON, 0600) | |||
err = ioutil.WriteFile(filepath.Join(dir, UserFile), userJSON, 0600) | |||
if err != nil { | |||
return err | |||
} | |||
return nil | |||
} | |||
func userHostDir(c *cli.Context) (string, error) { | |||
dataDir := UserDataDir(c.App.ExtraInfo()["configDir"]) | |||
hostDir, err := HostDirectory(c) | |||
if err != nil { | |||
return "", err | |||
} | |||
return filepath.Join(dataDir, hostDir), nil | |||
} |