func DataPath() (string, error) {
	scope := gap.NewScope(gap.User, "charm")
	dataPath, err := scope.DataPath("")
	if err != nil {
		return "", err
	}
	return dataPath, nil
}
DataPath returns the Charm data path for the current user. This is where
Charm keys are stored.
package charm
import (
	"crypto/rsa"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"io/ioutil"
	"net"
	"os"
	"path/filepath"
	"regexp"
	"sync"
	"time"
	"github.com/meowgorithm/babyenv"
	"github.com/mitchellh/go-homedir"
	gap "github.com/muesli/go-app-paths"
	"github.com/muesli/sasquatch"
	"golang.org/x/crypto/ssh"
	"golang.org/x/crypto/ssh/agent"
)
var nameValidator = regexp.MustCompile("^[a-zA-Z0-9]{1,50}$")
var ErrMissingSSHAuth = errors.New("missing ssh auth")
var ErrNameTaken = errors.New("name already taken")
var ErrNameInvalid = errors.New("invalid name")
var ErrCouldNotUnlinkKey = errors.New("could not unlink key")
type ErrAuthFailed struct {
	Err error
}
func (e ErrAuthFailed) Error() string { return e.Err.Error() }
func (e ErrAuthFailed) Unwrap() error { return e.Err }
type Config struct {
	IDHost   string `env:"CHARM_ID_HOST" default:"id.charm.sh"`
	IDPort   int    `env:"CHARM_ID_PORT" default:"22"`
	BioHost  string `env:"CHARM_BIO_HOST" default:"https://bio.charm.sh"`
	BioPort  int    `env:"CHARM_BIO_PORT" default:"443"`
	GlowHost string `env:"CHARM_GLOW_HOST" default:"https://glow.charm.sh"`
	GlowPort int    `env:"CHARM_GLOW_PORT" default:"443"`
	JWTKey   string `env:"CHARM_JWT_KEY" default:""`
	Debug    bool   `env:"CHARM_DEBUG" default:"false"`
	Logfile  string `env:"CHARM_LOGFILE" default:""`
}
type Client struct {
	config               *Config
	auth                 *Auth
	authLock             *sync.Mutex
	sshConfig            *ssh.ClientConfig
	jwtPublicKey         *rsa.PublicKey
	plainTextEncryptKeys []*EncryptKey
	authKeyPaths         []string
	encryptKeyLock       *sync.Mutex
}
type User struct {
	CharmID   string    `json:"charm_id"`
	Name      string    `json:"name"`
	Email     string    `json:"email"`
	Bio       string    `json:"bio"`
	CreatedAt time.Time `json:"created_at"`
}
type Keys struct {
	ActiveKey int   `json:"active_key"`
	Keys      []Key `json:"keys"`
}