• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

astronomer / astro-cli / 23d6d326-ef83-487f-9901-f16bd900b13d

25 Nov 2025 12:02PM UTC coverage: 33.132% (-5.5%) from 38.64%
23d6d326-ef83-487f-9901-f16bd900b13d

push

circleci

web-flow
feat: add runtime version validation for remote client deployments (#1983)

76 of 80 new or added lines in 4 files covered. (95.0%)

3547 existing lines in 30 files now uncovered.

20844 of 62912 relevant lines covered (33.13%)

8.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/software/utils/utils.go
1
package utils
2

3
import (
4
        "fmt"
5

6
        "github.com/astronomer/astro-cli/pkg/input"
7
)
8

9
const (
10
        defaultPaginationOptions      = "f. first p. previous n. next q. quit\n> "
11
        paginationWithoutNextOptions  = "f. first p. previous q. quit\n> "
12
        paginationWithNextQuitOptions = "n. next q. quit\n> "
13
)
14

15
type PaginationOptions struct {
16
        CursorID   string
17
        PageSize   int
18
        Quit       bool
19
        PageNumber int
20
}
21

22
// PromptPaginatedOption Show pagination option based on page size and total record
UNCOV
23
func PromptPaginatedOption(previousCursorID, nextCursorID string, take, totalRecord, pageNumber int, lastPage bool) PaginationOptions {
×
UNCOV
24
        for {
×
UNCOV
25
                pageSize := Abs(take)
×
UNCOV
26
                gotoOptionMessage := defaultPaginationOptions
×
UNCOV
27
                gotoOptions := make(map[string]PaginationOptions)
×
UNCOV
28
                gotoOptions["f"] = PaginationOptions{CursorID: "", PageSize: pageSize, Quit: false, PageNumber: 0}
×
UNCOV
29
                gotoOptions["p"] = PaginationOptions{CursorID: previousCursorID, PageSize: -pageSize, Quit: false, PageNumber: pageNumber - 1}
×
UNCOV
30
                gotoOptions["n"] = PaginationOptions{CursorID: nextCursorID, PageSize: pageSize, Quit: false, PageNumber: pageNumber + 1}
×
UNCOV
31
                gotoOptions["q"] = PaginationOptions{CursorID: "", PageSize: 0, Quit: true, PageNumber: 0}
×
UNCOV
32

×
UNCOV
33
                if totalRecord < pageSize || lastPage {
×
UNCOV
34
                        delete(gotoOptions, "n")
×
UNCOV
35
                        gotoOptionMessage = paginationWithoutNextOptions
×
UNCOV
36
                }
×
37

UNCOV
38
                if pageNumber == 0 {
×
UNCOV
39
                        delete(gotoOptions, "p")
×
UNCOV
40
                        delete(gotoOptions, "f")
×
UNCOV
41
                        gotoOptionMessage = paginationWithNextQuitOptions
×
UNCOV
42
                }
×
43

UNCOV
44
                in := input.Text("\n\nPlease select one of the following options\n" + gotoOptionMessage)
×
UNCOV
45
                value, found := gotoOptions[in]
×
UNCOV
46
                if found {
×
UNCOV
47
                        return value
×
UNCOV
48
                }
×
49
                fmt.Print("\nInvalid option")
×
50
        }
51
}
52

UNCOV
53
func Abs(n int) int {
×
UNCOV
54
        if n < 0 {
×
UNCOV
55
                return -n
×
UNCOV
56
        }
×
UNCOV
57
        return n
×
58
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc