diff --git a/cmd/jquery/main.go b/cmd/jquery/main.go index c8c0a97..11d33bf 100644 --- a/cmd/jquery/main.go +++ b/cmd/jquery/main.go @@ -92,6 +92,16 @@ func main() { return } + // Handle the --print-filter flag + if flags.PrintFilter != 0 { + filter, err := client.GetFilter(flags.PrintFilter) + if err != nil { + log.Fatalf("Error retrieving filter: %v", err) + } + fmt.Printf("%s\n", filter.Jql) + return + } + // Build JQL query from flags builder := jira.NewQueryBuilder() jqlQuery := builder.BuildJQLQuery(flags, searchTerms) diff --git a/config/flags.go b/config/flags.go index 8e32316..6421a70 100644 --- a/config/flags.go +++ b/config/flags.go @@ -26,6 +26,7 @@ type Flags struct { ListProjects bool `long:"list-projects" description:"List all visible projects for current user"` ListUsers bool `long:"list-users" description:"List all users in Jira"` ListFilters bool `long:"list-filters" description:"List all saved filters in Jira"` + PrintFilter int `long:"print-filter" description:"Print the JQL query of a Jira filter by ID"` Version bool `short:"v" long:"version" description:"Show the version"` } diff --git a/internal/jira/client.go b/internal/jira/client.go index 1917ae7..f633d2a 100644 --- a/internal/jira/client.go +++ b/internal/jira/client.go @@ -206,3 +206,12 @@ func (c *Client) GetAllFilters() (*FilterList, error) { return NewFilterList(filters.Values, response.MaxResults, response.Total), nil } + +// GetFilter retrieves an existing Filter from Jira using the apiClient. +func (c *Client) GetFilter(id int) (*cloud.Filter, error) { + filter, _, err := c.apiClient.Filter.Get(context.Background(), id) + if err != nil { + return nil, err + } + return filter, nil +}