117 lines
2.2 KiB
Go
117 lines
2.2 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
const AppName = "gogcli"
|
|
|
|
func Dir() (string, error) {
|
|
base, err := os.UserConfigDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(base, AppName), nil
|
|
}
|
|
|
|
func EnsureDir() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
return "", err
|
|
}
|
|
return dir, nil
|
|
}
|
|
|
|
// KeyringDir is where the keyring "file" backend stores encrypted entries.
|
|
//
|
|
// We keep this separate from the main config dir because the file backend creates
|
|
// one file per key.
|
|
func KeyringDir() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(dir, "keyring"), nil
|
|
}
|
|
|
|
func EnsureKeyringDir() (string, error) {
|
|
dir, err := KeyringDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
// keyring's file backend uses 0700 by default; match that.
|
|
if err := os.MkdirAll(dir, 0o700); err != nil {
|
|
return "", err
|
|
}
|
|
return dir, nil
|
|
}
|
|
|
|
func ClientCredentialsPath() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(dir, "credentials.json"), nil
|
|
}
|
|
|
|
func DriveDownloadsDir() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(dir, "drive-downloads"), nil
|
|
}
|
|
|
|
func EnsureDriveDownloadsDir() (string, error) {
|
|
dir, err := DriveDownloadsDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
return "", err
|
|
}
|
|
return dir, nil
|
|
}
|
|
|
|
func GmailAttachmentsDir() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(dir, "gmail-attachments"), nil
|
|
}
|
|
|
|
func EnsureGmailAttachmentsDir() (string, error) {
|
|
dir, err := GmailAttachmentsDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
return "", err
|
|
}
|
|
return dir, nil
|
|
}
|
|
|
|
func GmailWatchDir() (string, error) {
|
|
dir, err := Dir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return filepath.Join(dir, "state", "gmail-watch"), nil
|
|
}
|
|
|
|
func EnsureGmailWatchDir() (string, error) {
|
|
dir, err := GmailWatchDir()
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
if err := os.MkdirAll(dir, 0o755); err != nil {
|
|
return "", err
|
|
}
|
|
return dir, nil
|
|
}
|