add the pm command to survey cli

use command context to store app service
This commit is contained in:
Robin Olsen
2026-02-25 21:57:30 +01:00
parent 4c0fff0750
commit d83422104b
4 changed files with 43 additions and 13 deletions

View File

@@ -4,6 +4,7 @@ import (
"context"
"github.com/LazyBachelor/LazyPM/cmd/survey/tasks"
issuesCmd "github.com/LazyBachelor/LazyPM/internal/commands/issues"
surveyCmd "github.com/LazyBachelor/LazyPM/internal/commands/survey"
"github.com/LazyBachelor/LazyPM/internal/service"
"github.com/LazyBachelor/LazyPM/pkg/repl"
@@ -15,6 +16,14 @@ import (
func main() {
ctx := context.Background()
app, cleanup, err := initializeServices(ctx)
if err != nil {
return
}
defer cleanup()
surveyCmd.SetApp(app)
issuesCmd.SetApp(app)
if err := fang.Execute(ctx, surveyCmd.RootCmd,
fang.WithColorSchemeFunc(fang.AnsiColorScheme)); err != nil {
@@ -33,6 +42,7 @@ func init() {
surveyCmd.RootCmd.AddCommand(surveyCmd.StatusCmd)
surveyCmd.RootCmd.AddCommand(surveyCmd.ListTasksCmd)
surveyCmd.RootCmd.AddCommand(surveyCmd.ListInterfacesCmd)
surveyCmd.RootCmd.AddCommand(issuesCmd.RootCmd)
task.RegisterTask("create_issue", func(app *service.App) task.Tasker {
return tasks.NewCreateIssueTask(app)

View File

@@ -13,15 +13,9 @@ import (
)
func runStartCmd(cmd *cobra.Command, args []string) error {
app := surveyCmd.AppFromContext(cmd.Context())
interfaces := initInterfaces()
svc, cleanup, err := initializeServices(cmd.Context())
if err != nil {
return returnIfUserQuit(err, "failed to initialize services")
}
defer cleanup()
surveyTasks := initTasks(svc)
surveyTasks := initTasks(app)
if cmd.Flags().Changed("interface") {
if _, ok := interfaces[surveyCmd.InterfaceType]; !ok {

View File

@@ -31,6 +31,7 @@ type Flags struct {
// RootCmd is the base command for the CLI application.
var RootCmd = &cobra.Command{
Use: "pm",
Short: "Project Management CLI",
Long: `Project Management CLI for managing issues and tasks.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {

View File

@@ -1,13 +1,14 @@
package surveyCmd
import (
"context"
"github.com/LazyBachelor/LazyPM/internal/service"
"github.com/spf13/cobra"
)
// RootCmd is the base command for the survey CLI.
var RootCmd = &cobra.Command{
Use: "survey",
Long: `Project Management Interface Survey
const appKey string = "app"
const long string = `Project Management Interface Survey
Thank you for participating in our survey!
@@ -15,7 +16,31 @@ We are gathering data on how users interact with different task management inter
This survey will present you with a series of tasks to complete using various interfaces, including command-line, web-based, and terminal user interfaces.
Please answer the questions honestly and to the best of your ability.
Your responses will be kept confidential and used solely for research purposes.`}
Your responses will be kept confidential and used solely for research purposes.`
var app *service.App
// RootCmd is the base command for the survey CLI.
var RootCmd = &cobra.Command{
Use: "survey",
Long: long,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
if app != nil {
cmd.SetContext(context.WithValue(cmd.Context(), appKey, app))
}
},
}
func SetApp(application *service.App) {
app = application
}
func AppFromContext(ctx context.Context) *service.App {
if a, ok := ctx.Value(appKey).(*service.App); ok {
return a
}
return app
}
func init() {
RootCmd.CompletionOptions.DisableDefaultCmd = true