(ch *cmdutil.Helper)
| 257 | } |
| 258 | |
| 259 | func DeployCmd(ch *cmdutil.Helper) *cobra.Command { |
| 260 | opts := &DeployOpts{ |
| 261 | ProdVersion: "latest", |
| 262 | } |
| 263 | |
| 264 | deployCmd := &cobra.Command{ |
| 265 | Use: "deploy [<path>]", |
| 266 | Short: "Deploy project to Rill Cloud by using a Rill Managed Git repo", |
| 267 | RunE: func(cmd *cobra.Command, args []string) error { |
| 268 | if len(args) > 0 { |
| 269 | opts.GitPath = args[0] |
| 270 | } |
| 271 | opts.Managed = true |
| 272 | err := opts.ValidateAndApplyDefaults(cmd.Context(), ch) |
| 273 | if err != nil { |
| 274 | return err |
| 275 | } |
| 276 | return DeployWithUploadFlow(cmd.Context(), ch, opts) |
| 277 | }, |
| 278 | } |
| 279 | |
| 280 | deployCmd.Flags().SortFlags = false |
| 281 | deployCmd.Flags().StringVar(&opts.GitPath, "path", ".", "Path to project repository (default: current directory)") // This can also be a remote .git URL (undocumented feature) |
| 282 | deployCmd.Flags().StringVar(&opts.SubPath, "subpath", "", "Relative path to project in the repository (for monorepos)") |
| 283 | deployCmd.Flags().StringVar(&ch.Org, "org", ch.Org, "Org to deploy project in") |
| 284 | deployCmd.Flags().StringVar(&opts.Name, "project", "", "Project name (default: Git repo name)") |
| 285 | deployCmd.Flags().StringVar(&opts.Description, "description", "", "Project description") |
| 286 | deployCmd.Flags().BoolVar(&opts.Public, "public", false, "Make dashboards publicly accessible") |
| 287 | deployCmd.Flags().StringVar(&opts.Provisioner, "provisioner", "", "Project provisioner") |
| 288 | deployCmd.Flags().StringVar(&opts.PrimaryBranch, "primary-branch", "", "Git branch to deploy from (default: the default Git branch)") |
| 289 | deployCmd.Flags().IntVar(&opts.Slots, "prod-slots", local.DefaultProdSlots(ch), "Slots to allocate for production deployments") |
| 290 | deployCmd.Flags().IntVar(&opts.DevSlots, "dev-slots", local.DefaultDevSlots(ch), "Slots to allocate for dev deployments") |
| 291 | deployCmd.Flags().BoolVar(&opts.PushEnv, "push-env", true, "Push local .env file to Rill Cloud") |
| 292 | if !ch.IsDev() { |
| 293 | if err := deployCmd.Flags().MarkHidden("prod-slots"); err != nil { |
| 294 | panic(err) |
| 295 | } |
| 296 | if err := deployCmd.Flags().MarkHidden("dev-slots"); err != nil { |
| 297 | panic(err) |
| 298 | } |
| 299 | } |
| 300 | |
| 301 | deployCmd.Flags().BoolVar(&opts.SkipDeploy, "skip-deploy", false, "Skip the runtime deployment step (for testing only)") |
| 302 | if !ch.IsDev() { |
| 303 | err := deployCmd.Flags().MarkHidden("skip-deploy") |
| 304 | if err != nil { |
| 305 | panic(err) |
| 306 | } |
| 307 | } |
| 308 | |
| 309 | return deployCmd |
| 310 | } |
| 311 | |
| 312 | func ValidateLocalProject(ch *cmdutil.Helper, localGitPath, subPath string) (string, string, error) { |
| 313 | var localProjectPath string |
no test coverage detected