Beispiel #1
0
func editConfigAction(ctx *cli.Context) {
	cfg := config.DefaultsCfgFile
	if args := ctx.Args(); len(args) > 0 {
		cfg = args[0] + ".yaml"
	}

	if err := config.Edit(cfg, "vi"); err != nil {
		common.OSErrf(err.Error())
	}
}
Beispiel #2
0
func rb(ctx *cli.Context) error {

	if len(ctx.Args()) == 0 {
		return errors.Errorf("The ReviewBoard service requires at least one arguement, the review ID")
	}

	// Make sure we have a config before posting
	serviceName := ctx.String("config")
	var cfgNeedsEdit bool
	rbCfg, err := config.Service(serviceName)
	if err != nil {
		fmt.Printf("no configuration found for %q\n", serviceName)
		cfgNeedsEdit = true
	} else if err := validateRbCfg(rbCfg); err != nil {
		fmt.Printf("%q configuration file is not valid: %v\n", serviceName, err)
		cfgNeedsEdit = true
	}
	if cfgNeedsEdit {
		// TODO(waigani) send and check a typed error
		var edit string
		fmt.Printf("Would you like to configure %s now? n/Y: ", serviceName)
		fmt.Scanln(&edit)

		switch edit {
		case "n", "N":
			return errors.New("aborted")
		case "y", "Y", "":
			return config.Edit(config.ServicesCfgFile, "vi") // TODO(waigani) use default editor
		default:
			return errors.Trace(err)
		}
		return nil
	}

	opts := review.Options{
		Files:      ctx.Args()[1:],
		Diff:       ctx.Bool("diff"),
		SaveToFile: ctx.String("save"),
		KeepAll:    ctx.Bool("keep-all"),
	}

	issues, err := review.Review(opts)
	if err != nil {
		return errors.Trace(err)
	}
	reviewID := ctx.Args()[0]

	fmt.Println("Posting review to reviewboard ...")

	return errors.Trace(postToRB(reviewID, rbCfg, issues))
}