소스 검색

store/load user with host specific sub folder

only if host flag supplied for writefreely binary, writeas unaffected
pull/36/head
Rob Loranger 5 년 전
부모
커밋
d6c4b2c392
No known key found for this signature in database GPG 키 ID: D6F1633A4F0903B8
7개의 변경된 파일57개의 추가작업 그리고 52개의 파일을 삭제
  1. +2
    -2
      api/api.go
  2. +4
    -4
      api/sync.go
  3. +1
    -17
      cmd/wf/main.go
  4. +1
    -17
      cmd/writeas/main.go
  5. +4
    -4
      commands/commands.go
  6. +22
    -4
      config/directories.go
  7. +23
    -4
      config/user.go

+ 2
- 2
api/api.go 파일 보기

@@ -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
}


+ 4
- 4
api/sync.go 파일 보기

@@ -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)


+ 1
- 17
cmd/wf/main.go 파일 보기

@@ -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
}
}
}
}

+ 1
- 17
cmd/writeas/main.go 파일 보기

@@ -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
}
}
}
}

+ 4
- 4
commands/commands.go 파일 보기

@@ -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)
}


+ 22
- 4
config/directories.go 파일 보기

@@ -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
}
}
}
}

+ 23
- 4
config/user.go 파일 보기

@@ -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
}

불러오는 중...
취소
저장