func (cmd *Push) updateRoutes(app models.Application, appParams models.AppParams, appParamsFromContext models.AppParams) error { defaultRouteAcceptable := len(app.Routes) == 0 routeDefined := appParams.Domains != nil || !appParams.IsHostEmpty() || appParams.IsNoHostnameTrue() switch { case appParams.NoRoute: if len(app.Routes) == 0 { cmd.ui.Say(T("App {{.AppName}} is a worker, skipping route creation", map[string]interface{}{"AppName": terminal.EntityNameColor(app.Name)})) } else { err := cmd.routeActor.UnbindAll(app) if err != nil { return err } } case len(appParams.Routes) > 0: for _, manifestRoute := range appParams.Routes { err := cmd.actor.MapManifestRoute(manifestRoute.Route, app, appParamsFromContext) if err != nil { return err } } case (routeDefined || defaultRouteAcceptable) && appParams.Domains == nil: domain, err := cmd.findDomain(nil) if err != nil { return err } appParams.UseRandomPort = isTCP(domain) err = cmd.processDomainsAndBindRoutes(appParams, app, domain) if err != nil { return err } case routeDefined || defaultRouteAcceptable: for _, d := range appParams.Domains { domain, err := cmd.findDomain(&d) if err != nil { return err } appParams.UseRandomPort = isTCP(domain) err = cmd.processDomainsAndBindRoutes(appParams, app, domain) if err != nil { return err } } } return nil }
func (cmd *Push) processDomainsAndBindRoutes( appParams models.AppParams, app models.Application, domain models.DomainFields, ) error { if appParams.IsHostEmpty() { err := cmd.createAndBindRoute( nil, appParams.UseRandomRoute, appParams.UseRandomPort, app, appParams.IsNoHostnameTrue(), domain, appParams.RoutePath, ) if err != nil { return err } } else { for _, host := range appParams.Hosts { err := cmd.createAndBindRoute( &host, appParams.UseRandomRoute, appParams.UseRandomPort, app, appParams.IsNoHostnameTrue(), domain, appParams.RoutePath, ) if err != nil { return err } } } return nil }