Merge pull request #1173 from smallstep/fix-1047

Create context for automatic RAs
This commit is contained in:
Mariano Cano 2022-11-09 17:27:57 -08:00 committed by GitHub
commit a800ffe447
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -121,7 +121,13 @@ func appAction(ctx *cli.Context) error {
// Allow custom contexts.
if caCtx := ctx.String("context"); caCtx != "" {
if err := step.Contexts().SetCurrent(caCtx); err != nil {
if _, ok := step.Contexts().Get(caCtx); ok {
if err := step.Contexts().SetCurrent(caCtx); err != nil {
return err
}
} else if token == "" {
return fmt.Errorf("context %q not found", caCtx)
} else if err := createContext(caCtx); err != nil {
return err
}
}
@ -234,6 +240,26 @@ To get a linked authority token:
return nil
}
// createContext creates a new context using the given name for the context,
// authority and profile.
func createContext(name string) error {
if err := step.Contexts().Add(&step.Context{
Name: name, Authority: name, Profile: name,
}); err != nil {
return fmt.Errorf("error adding context: %w", err)
}
if err := step.Contexts().SaveCurrent(name); err != nil {
return fmt.Errorf("error saving context: %w", err)
}
if err := step.Contexts().SetCurrent(name); err != nil {
return fmt.Errorf("error setting context: %w", err)
}
if err := os.MkdirAll(step.Path(), 0700); err != nil {
return fmt.Errorf("error creating directory: %w", err)
}
return nil
}
// fatal writes the passed error on the standard error and exits with the exit
// code 1. If the environment variable STEPDEBUG is set to 1 it shows the
// stack trace of the error.