Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion atmos.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ settings:
# Terminal settings for displaying content
terminal:
max_width: 120 # Maximum width for terminal output
pager: true # Pager setting for all terminal output
pager: false # Pager setting for all terminal output
unicode: true # Use unicode characters

syntax_highlighting:
Expand Down
1 change: 0 additions & 1 deletion cmd/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ var describeCmd = &cobra.Command{

func init() {
describeCmd.PersistentFlags().StringP("query", "q", "", "Query the results of an `atmos describe` command using `yq` expressions")
describeCmd.PersistentFlags().String("pager", "true", "Disable / Enable the paging user experience")

RootCmd.AddCommand(describeCmd)
}
8 changes: 1 addition & 7 deletions cmd/describe_affected.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,7 @@ func getRunnableDescribeAffectedCmd(
}
}

if cmd.Flags().Changed("pager") {
// TODO: update this post pr:https://github.com/cloudposse/atmos/pull/1174 is merged
props.CLIConfig.Settings.Terminal.Pager, err = cmd.Flags().GetString("pager")
if err != nil {
return err
}
}
// Global --pager flag is now handled in cfg.InitCliConfig

err = newDescribeAffectedExec(props.CLIConfig).Execute(&props)
return err
Expand Down
8 changes: 1 addition & 7 deletions cmd/describe_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,7 @@ var describeConfigCmd = &cobra.Command{
return err
}

if cmd.Flags().Changed("pager") {
// TODO: update this post pr:https://github.com/cloudposse/atmos/pull/1174 is merged
atmosConfig.Settings.Terminal.Pager, err = cmd.Flags().GetString("pager")
if err != nil {
return err
}
}
// Global --pager flag is now handled in cfg.InitCliConfig

err = e.NewDescribeConfig(&atmosConfig).ExecuteDescribeConfigCmd(query, format, "")
return err
Expand Down
7 changes: 1 addition & 6 deletions cmd/describe_dependents.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,7 @@ func getRunnableDescribeDependentsCmd(
return err
}

if cmd.Flags().Changed("pager") {
atmosConfig.Settings.Terminal.Pager, err = cmd.Flags().GetString("pager")
if err != nil {
return err
}
}
// Global --pager flag is now handled in cfg.InitCliConfig

describe.Component = args[0]
err = newDescribeDependentsExec(&atmosConfig).Execute(describe)
Expand Down
8 changes: 1 addition & 7 deletions cmd/describe_stacks.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,7 @@ func getRunnableDescribeStacksCmd(
return err
}

if cmd.Flags().Changed("pager") {
// TODO: update this post pr:https://github.com/cloudposse/atmos/pull/1174 is merged
atmosConfig.Settings.Terminal.Pager, err = cmd.Flags().GetString("pager")
if err != nil {
return err
}
}
// Global --pager flag is now handled in cfg.InitCliConfig

err = g.newDescribeStacksExec.Execute(&atmosConfig, describe)
return err
Expand Down
7 changes: 1 addition & 6 deletions cmd/describe_workflows.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,7 @@ func getRunnableDescribeWorkflowsCmd(
return err
}

pager, err := cmd.Flags().GetString("pager")
if err != nil {
return err
}

atmosConfig.Settings.Terminal.Pager = pager
// Global --pager flag is now handled in cfg.InitCliConfig
err = describeWorkflowsExec.Execute(&atmosConfig, describeWorkflowArgs)
return err
}
Expand Down
22 changes: 21 additions & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,9 @@
RootCmd.PersistentFlags().StringSlice("config", []string{}, "Paths to configuration files (comma-separated or repeated flag)")
RootCmd.PersistentFlags().StringSlice("config-path", []string{}, "Paths to configuration directories (comma-separated or repeated flag)")
RootCmd.PersistentFlags().Bool("no-color", false, "Disable color output")
RootCmd.PersistentFlags().String("pager", "", "Enable pager for output (--pager or --pager=true to enable, --pager=false to disable, --pager=less to use specific pager)")
// Set NoOptDefVal so --pager without value means "true"
RootCmd.PersistentFlags().Lookup("pager").NoOptDefVal = "true"
// Set custom usage template
err := templates.SetCustomUsageFunc(RootCmd)
if err != nil {
Expand Down Expand Up @@ -266,7 +269,24 @@
if err := oldUsageFunc(command); err != nil {
errUtils.CheckErrorPrintAndExit(err, "", "")
}
pager := pager.NewWithAtmosConfig(atmosConfig.Settings.Terminal.IsPagerEnabled())

// Check if pager should be enabled based on flag, env var, or config
pagerEnabled := atmosConfig.Settings.Terminal.IsPagerEnabled()

// Check if --pager flag was explicitly set
if pagerFlag, err := command.Flags().GetString("pager"); err == nil && pagerFlag != "" {
// Handle --pager flag values
if pagerFlag == "true" || pagerFlag == "on" || pagerFlag == "yes" || pagerFlag == "1" {
pagerEnabled = true
} else if pagerFlag == "false" || pagerFlag == "off" || pagerFlag == "no" || pagerFlag == "0" {
pagerEnabled = false
} else {
// Assume it's a pager command like "less" or "more"
pagerEnabled = true
}
}

pager := pager.NewWithAtmosConfig(pagerEnabled)
if err := pager.Run("Atmos CLI Help", buf.String()); err != nil {
log.Error("Failed to run pager", "error", err)
utils.OsExit(1)
Expand Down
6 changes: 6 additions & 0 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,15 @@ func setLogConfig(atmosConfig *schema.AtmosConfiguration) {
}
if flagKeyValue, ok := flagKeyValue["no-color"]; ok || flagKeyValue == "true" {
atmosConfig.Settings.Terminal.NoColor = true
atmosConfig.Settings.Terminal.Color = false
} else if flagKeyValue == "false" {
atmosConfig.Settings.Terminal.NoColor = false
}

// Handle --pager global flag
if v, ok := flagKeyValue["pager"]; ok {
atmosConfig.Settings.Terminal.Pager = v
}
}

// TODO: This function works well, but we should generally avoid implementing manual flag parsing,
Expand Down
Loading
Loading