Skip to content

Commit

Permalink
Fix compatibility with the latest version of ek package
Browse files Browse the repository at this point in the history
  • Loading branch information
andyone committed Oct 21, 2024
1 parent 772c83b commit a1c046a
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 66 deletions.
118 changes: 55 additions & 63 deletions cli/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"os/exec"
"strings"

"github.com/essentialkaos/ek/v13/errors"
"github.com/essentialkaos/ek/v13/fmtc"
"github.com/essentialkaos/ek/v13/fmtutil"
"github.com/essentialkaos/ek/v13/fsutil"
Expand Down Expand Up @@ -234,7 +235,7 @@ func Init(gitRev string, gomod []byte) {

if !errs.IsEmpty() {
terminal.Error("Options parsing errors:")
terminal.Error(errs.String())
terminal.Error(errs.Error("- "))
os.Exit(1)
}

Expand All @@ -261,13 +262,20 @@ func Init(gitRev string, gomod []byte) {
os.Exit(0)
}

checkPermissions()
loadGlobalConfig()
validateGlobalConfig()
loadRepoConfigs()
validateRepoConfigs()
configureRepoCache()
configureSignalHandlers()
err := errors.Chain(
checkPermissions,
loadGlobalConfig,
validateGlobalConfig,
loadRepoConfigs,
validateRepoConfigs,
configureRepoCache,
configureSignalHandlers,
)

if err != nil {
terminal.Error(err.Error())
shutdown(1)
}

ok := process(args)

Expand Down Expand Up @@ -324,33 +332,34 @@ func configureUI() {
}

// checkPermissions checks that user has enough permissions
func checkPermissions() {
func checkPermissions() error {
curUser, err := system.CurrentUser()

if err != nil {
terminal.Error("Can't get info about current user: %v", err)
shutdown(1)
return fmt.Errorf("Can't get info about current user: %w", err)
}

if !curUser.IsRoot() {
terminal.Error("This app requires superuser (root) privileges")
shutdown(1)
return fmt.Errorf("This app requires superuser (root) privileges")
}

return nil
}

// loadGlobalConfig loads global configuration file
func loadGlobalConfig() {
func loadGlobalConfig() error {
err := knf.Global(CONFIG_FILE)

if err != nil {
terminal.Error(err.Error())
shutdown(1)
return fmt.Errorf("Can't load global coniguration: %w", err)
}

return nil
}

// validateGlobalConfig validates global configuration file properties
func validateGlobalConfig() {
validators := []*knf.Validator{
func validateGlobalConfig() error {
validators := knf.Validators{
{STORAGE_DATA, knfv.Set, nil},
{STORAGE_CACHE, knfv.Set, nil},
{LOG_DIR, knfv.Set, nil},
Expand All @@ -369,26 +378,20 @@ func validateGlobalConfig() {

errs := knf.Validate(validators)

if len(errs) == 0 {
return
}

terminal.Error("Errors while global configuration file validation:")

for _, err := range errs {
terminal.Error(" - %v", err)
if !errs.IsEmpty() {
return fmt.Errorf("Error while global configuration file validation: %w", errs.First())
}

shutdown(1)
return nil
}

// loadRepoConfigs loads repositories configuration files
func loadRepoConfigs() {
func loadRepoConfigs() error {
filter := fsutil.ListingFilter{MatchPatterns: []string{"*.knf"}}
configFiles := fsutil.List(CONFIG_DIR, false, filter)

if len(configFiles) == 0 {
return
return nil
}

fsutil.ListToAbsolute(CONFIG_DIR, configFiles)
Expand All @@ -399,59 +402,49 @@ func loadRepoConfigs() {
cfg, err := knf.Read(cf)

if err != nil {
terminal.Error(err.Error())
shutdown(1)
return err
}

configs[cfg.GetS(REPOSITORY_NAME)] = cfg
}

return nil
}

// validateRepoConfigs validates repositories configuration files
func validateRepoConfigs() {
var hasErrors bool

func validateRepoConfigs() error {
for _, cfg := range configs {
validators := []*knf.Validator{
validators := knf.Validators{
{PERMISSIONS_USER, knfs.User, nil},
{PERMISSIONS_GROUP, knfs.Group, nil},
{REPOSITORY_NAME, knfr.Regexp, repoNamePattern},
}

if cfg.HasProp(SIGN_KEY) {
validators = append(validators,
&knf.Validator{SIGN_KEY, knff.Perms, "FR"},
&knf.Validator{SIGN_KEY, knff.FileMode, os.FileMode(0600)},
)
}
validators = validators.AddIf(
cfg.HasProp(SIGN_KEY),
knf.Validators{
{SIGN_KEY, knff.Perms, "FR"},
{SIGN_KEY, knff.FileMode, os.FileMode(0600)},
},
)

errs := cfg.Validate(validators)

if len(errs) == 0 {
if errs.IsEmpty() {
continue
}

hasErrors = true

terminal.Error(
"Errors while repository configuration file validation (%s):",
cfg.File(),
return fmt.Errorf(
"Error while repository configuration file validation (%s): %w",
cfg.File(), errs.First(),
)

for _, err := range errs {
terminal.Error(" - %v", err)
}
}

if hasErrors {
shutdown(1)
}
return nil
}

// configureRepoCache configures cache for repository data
func configureRepoCache() {
var hasErrors bool

func configureRepoCache() error {
cacheDir := knf.GetS(STORAGE_CACHE)

for repo := range configs {
Expand All @@ -461,24 +454,23 @@ func configureRepoCache() {
err := os.Mkdir(repoCacheDir, 0700)

if err != nil {
terminal.Error(err.Error())
hasErrors = true
return err
}
}
}

if hasErrors {
shutdown(1)
}
return nil
}

// configureSignalHandlers configures handlers for signals
func configureSignalHandlers() {
func configureSignalHandlers() error {
signal.Handlers{
signal.QUIT: sigHandler,
signal.TERM: sigHandler,
signal.INT: sigHandler,
}.TrackAsync()

return nil
}

// getPrimaryRepoName returns primary repository name
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ require (

require (
github.com/DataDog/zstd v1.5.6 // indirect
github.com/cloudflare/circl v1.4.0 // indirect
github.com/cloudflare/circl v1.5.0 // indirect
github.com/essentialkaos/depsy v1.3.1 // indirect
github.com/essentialkaos/go-linenoise/v3 v3.6.1 // indirect
github.com/kr/pretty v0.3.1 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0k
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY=
github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys=
github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down

0 comments on commit a1c046a

Please sign in to comment.