status filter
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package domain
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
|
||||
@@ -11,6 +13,14 @@ import (
|
||||
func Run() {
|
||||
ui := NewUI() // Instantiate UI
|
||||
|
||||
// Parse flags
|
||||
includeStatusFlag := flag.String("status", "", "Filter issues by status (comma-separated names or IDs)")
|
||||
excludeStatusFlag := flag.String("exclude-status", "", "Exclude issues by status (comma-separated names or IDs)")
|
||||
flag.Usage = func() {
|
||||
ui.PrintUsage(os.Args[0])
|
||||
}
|
||||
flag.Parse()
|
||||
|
||||
// Load .env file
|
||||
err := godotenv.Load()
|
||||
if err != nil && !os.IsNotExist(err) {
|
||||
@@ -27,9 +37,22 @@ func Run() {
|
||||
apiKey := ""
|
||||
|
||||
// Try to get values from config file first
|
||||
var includeStatuses []string
|
||||
var excludeStatuses []string
|
||||
|
||||
if config != nil {
|
||||
baseURL = config.Host
|
||||
apiKey = config.Token
|
||||
includeStatuses = config.IncludeStatuses
|
||||
excludeStatuses = config.ExcludeStatuses
|
||||
}
|
||||
|
||||
// Flag overrides config file
|
||||
if *includeStatusFlag != "" {
|
||||
includeStatuses = strings.Split(*includeStatusFlag, ",")
|
||||
}
|
||||
if *excludeStatusFlag != "" {
|
||||
excludeStatuses = strings.Split(*excludeStatusFlag, ",")
|
||||
}
|
||||
|
||||
// Environment variables override config file
|
||||
@@ -43,8 +66,14 @@ func Run() {
|
||||
var projectID string
|
||||
|
||||
// projectID must be provided as a command-line argument, or list projects
|
||||
if len(os.Args) > 1 {
|
||||
projectID = os.Args[1]
|
||||
if flag.NArg() > 0 {
|
||||
projectID = flag.Arg(0)
|
||||
// Check for misplaced flags
|
||||
for i := 1; i < flag.NArg(); i++ {
|
||||
if strings.HasPrefix(flag.Arg(i), "-") {
|
||||
ui.PrintError("Error: flags must come BEFORE the project ID. Found misplaced flag: %s\n", flag.Arg(i))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
projects, err := model.FetchAllProjects(baseURL, apiKey)
|
||||
if err != nil {
|
||||
@@ -70,12 +99,15 @@ func Run() {
|
||||
ui.PrintError("Error fetching issues: %v\n", err)
|
||||
}
|
||||
|
||||
ui.PrintTotalIssuesFetched(len(issues))
|
||||
// Apply filtering
|
||||
filteredIssues := model.FilterIssues(issues, includeStatuses, excludeStatuses)
|
||||
|
||||
roots := model.BuildTree(issues) // Corrected call
|
||||
ui.PrintTotalIssuesFetched(len(filteredIssues))
|
||||
|
||||
roots := model.BuildTree(filteredIssues) // Corrected call
|
||||
ui.PrintIssueTreeHeader(len(roots))
|
||||
model.PrintTree(roots, "", false) // Corrected call
|
||||
|
||||
// Print summary
|
||||
ui.PrintSummary(len(issues), len(roots))
|
||||
ui.PrintSummary(len(filteredIssues), len(roots))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user