ficsit-cli-flake/cli/context.go

59 lines
1.2 KiB
Go
Raw Normal View History

2021-12-02 04:00:33 +00:00
package cli
2022-04-14 01:27:39 +00:00
import (
"github.com/Khan/genqlient/graphql"
"github.com/pkg/errors"
2022-10-14 16:11:16 +00:00
2022-04-14 01:27:39 +00:00
"github.com/satisfactorymodding/ficsit-cli/ficsit"
)
2021-12-02 04:00:33 +00:00
type GlobalContext struct {
Installations *Installations
Profiles *Profiles
2022-04-14 01:27:39 +00:00
APIClient graphql.Client
2021-12-02 04:00:33 +00:00
}
var globalContext *GlobalContext
2022-10-14 16:11:16 +00:00
func InitCLI(apiOnly bool) (*GlobalContext, error) {
2021-12-02 04:00:33 +00:00
if globalContext != nil {
return globalContext, nil
}
2022-10-14 16:11:16 +00:00
if !apiOnly {
profiles, err := InitProfiles()
if err != nil {
return nil, errors.Wrap(err, "failed to initialize profiles")
}
installations, err := InitInstallations()
if err != nil {
return nil, errors.Wrap(err, "failed to initialize installations")
}
globalContext = &GlobalContext{
Installations: installations,
Profiles: profiles,
APIClient: ficsit.InitAPI(),
}
} else {
globalContext = &GlobalContext{
APIClient: ficsit.InitAPI(),
}
2021-12-02 04:00:33 +00:00
}
2022-10-14 16:11:16 +00:00
return globalContext, nil
2021-12-02 04:00:33 +00:00
}
func (g *GlobalContext) Save() error {
if err := g.Installations.Save(); err != nil {
return errors.Wrap(err, "failed to save installations")
2021-12-02 04:00:33 +00:00
}
if err := g.Profiles.Save(); err != nil {
return errors.Wrap(err, "failed to save profiles")
2021-12-02 04:00:33 +00:00
}
return nil
}