package main import ( "fmt" "os" "gitea.yves-biener.de/yves-biener/gitwarrior/internal/gitea" "gitea.yves-biener.de/yves-biener/gitwarrior/internal/gitw" "gitea.yves-biener.de/yves-biener/gitwarrior/internal/taskwarrior" ) func main() { // TODO: server url may be also be derived from the git configuration? server := gitea.NewGitea("https://gitea.yves-biener.de") repository, err := gitw.Discover() if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } repository, err = server.VerifyRepository(repository) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } fmt.Printf("%#v\n", repository) fmt.Println("---") issue, err := server.GetIssue(repository, 1) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } milestone, err := server.GetMilestone(repository, 1) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } comments, err := server.GetComments(repository) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } fmt.Printf("%#v\n", issue) fmt.Println("---") fmt.Printf("%#v\n", milestone) fmt.Println("---") for _, comment := range comments { // NOTE: filter comments to only include comments which are related to the current issue // Order them by their Id's as that's the order they are in the issue (most likely) if comment.Issue_url == issue.Html_url { fmt.Printf("%#v\n", comment) } } var filter taskwarrior.Filter filter.IncludeProjects("notes") tasks, err := taskwarrior.GetTasks(filter) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } for _, task := range tasks { fmt.Printf("%#v\n", task) } fmt.Println("---") filter.Reset() filter.IncludeIds(1, 2, 3) tasks, err = taskwarrior.GetTasks(filter) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(-1) } for _, task := range tasks { fmt.Printf("%#v\n", task) } fmt.Println("---") // NOTE: this can be used to add / modify tasks // var update_tasks []taskwarrior.Task // task := taskwarrior.NewTask( // "This is a test task from gitwarrior", // "gitwarrior", // "issue", // ) // update_tasks = append(update_tasks, task) // taskwarrior.UpdateTasks(update_tasks) // necessary configurations (see config file gitw.json) // - access code for gitea // - configuration for taskwarrior settings? // cli actions and parameters // - action: diff (i.e. what has changed between the current state of the taskwarrior tasks and the git issues / milestones) // - action: status (are there changes between the taskwarrior tasks and the gitea issues / milestones, that would require a sync) // - action: sync (synch diffs between taskwarrior tasks and gitea issues / milestones) // - parameter: --dry-run (do only show changes that would be applied but do not apply them) }