diff --git a/cli/module_generate.go b/cli/module_generate.go index abb228f6a38..63561173a46 100644 --- a/cli/module_generate.go +++ b/cli/module_generate.go @@ -140,6 +140,7 @@ func (c *viamClient) generateModuleAction(cCtx *cli.Context, args generateModule s := spinner.New() var fatalError error + var registryURL string nonFatalError := false gArgs, err := getGlobalArgs(cCtx) if err != nil { @@ -162,7 +163,8 @@ func (c *viamClient) generateModuleAction(cCtx *cli.Context, args generateModule } s.Title("Creating module and generating manifest...") - if err = createModuleAndManifest(cCtx, c, *newModule, globalArgs); err != nil { + registryURL, err = createModuleAndManifest(cCtx, c, *newModule, globalArgs) + if err != nil { fatalError = err return } @@ -219,6 +221,9 @@ func (c *viamClient) generateModuleAction(cCtx *cli.Context, args generateModule cwd = "." } printf(cCtx.App.Writer, "Module successfully generated at %s%s%s", cwd, string(os.PathSeparator), newModule.ModuleName) + if registryURL != "" { + printf(cCtx.App.Writer, "You can view it here: %s", registryURL) + } return nil } @@ -811,18 +816,20 @@ func getLatestSDKTag(c *cli.Context, language string, globalArgs globalArgs) (st return version, nil } -func createModuleAndManifest(cCtx *cli.Context, c *viamClient, module modulegen.ModuleInputs, globalArgs globalArgs) error { +func createModuleAndManifest(cCtx *cli.Context, c *viamClient, module modulegen.ModuleInputs, globalArgs globalArgs) (string, error) { var moduleID moduleID + var registryURL string if module.RegisterOnApp { debugf(cCtx.App.Writer, globalArgs.Debug, "Registering module with Viam") moduleResponse, err := c.createModule(module.ModuleName, module.OrgID) if err != nil { - return errors.Wrap(err, "failed to register module") + return "", errors.Wrap(err, "failed to register module") } moduleID, err = parseModuleID(moduleResponse.GetModuleId()) if err != nil { - return errors.Wrap(err, "failed to parse module identifier") + return "", errors.Wrap(err, "failed to parse module identifier") } + registryURL = moduleResponse.GetUrl() } else { debugf(cCtx.App.Writer, globalArgs.Debug, "Creating a local-only module") moduleID.name = module.ModuleName @@ -830,9 +837,9 @@ func createModuleAndManifest(cCtx *cli.Context, c *viamClient, module modulegen. } err := renderManifest(cCtx, moduleID.String(), module, globalArgs) if err != nil { - return errors.Wrap(err, "failed to render manifest") + return "", errors.Wrap(err, "failed to render manifest") } - return nil + return registryURL, nil } // Create the README.md file. diff --git a/cli/module_generate_test.go b/cli/module_generate_test.go index d3f326f6b88..f4141b7d73d 100644 --- a/cli/module_generate_test.go +++ b/cli/module_generate_test.go @@ -205,7 +205,7 @@ func TestGenerateModuleAction(t *testing.T) { return &v1.StartBuildResponse{BuildId: "xyz123"}, nil }, }, map[string]any{}, "token") - err := createModuleAndManifest(cCtx, ac, testModule, globalArgs) + _, err := createModuleAndManifest(cCtx, ac, testModule, globalArgs) test.That(t, err, test.ShouldBeNil) })