RedeployProject implements localv1connect.LocalServiceHandler.
(ctx context.Context, r *connect.Request[localv1.RedeployProjectRequest])
| 485 | |
| 486 | // RedeployProject implements localv1connect.LocalServiceHandler. |
| 487 | func (s *Server) RedeployProject(ctx context.Context, r *connect.Request[localv1.RedeployProjectRequest]) (*connect.Response[localv1.RedeployProjectResponse], error) { |
| 488 | // Get authenticated admin client |
| 489 | if !s.app.ch.IsAuthenticated() { |
| 490 | return nil, errors.New("must authenticate before performing this action") |
| 491 | } |
| 492 | c, err := s.app.ch.Client() |
| 493 | if err != nil { |
| 494 | return nil, err |
| 495 | } |
| 496 | |
| 497 | projResp, err := c.GetProjectByID(ctx, &adminv1.GetProjectByIDRequest{ |
| 498 | Id: r.Msg.ProjectId, |
| 499 | }) |
| 500 | if err != nil { |
| 501 | return nil, err |
| 502 | } |
| 503 | |
| 504 | // if the org is not same as the default org, switch to the org |
| 505 | if s.app.ch.Org != projResp.Project.OrgName { |
| 506 | err = s.app.ch.SetOrg(projResp.Project.OrgName) |
| 507 | if err != nil { |
| 508 | return nil, err |
| 509 | } |
| 510 | } |
| 511 | |
| 512 | if r.Msg.Rearchive { // old zip-and-ship, currently used only for testing until we figure out a good way to test using manged github repos |
| 513 | repo, release, err := s.app.Runtime.Repo(ctx, s.app.Instance.ID) |
| 514 | if err != nil { |
| 515 | return nil, err |
| 516 | } |
| 517 | defer release() |
| 518 | |
| 519 | assetID, err := cmdutil.UploadRepo(ctx, repo, s.app.ch, projResp.Project.OrgName, projResp.Project.Name) |
| 520 | if err != nil { |
| 521 | return nil, err |
| 522 | } |
| 523 | _, err = c.UpdateProject(ctx, &adminv1.UpdateProjectRequest{ |
| 524 | ArchiveAssetId: &assetID, |
| 525 | Org: projResp.Project.OrgName, |
| 526 | Project: projResp.Project.Name, |
| 527 | }) |
| 528 | if err != nil { |
| 529 | return nil, err |
| 530 | } |
| 531 | } else if r.Msg.Reupload { |
| 532 | if projResp.Project.ManagedGitId != "" { |
| 533 | // If rill-managed project then push to the repo based on org/project passed in. |
| 534 | err = s.app.ch.GitHelper(projResp.Project.OrgName, projResp.Project.Name, s.app.ProjectPath).PushToManagedRepo(ctx) |
| 535 | if err != nil { |
| 536 | return nil, err |
| 537 | } |
| 538 | } else if projResp.Project.ArchiveAssetId != "" || r.Msg.CreateManagedRepo { |
| 539 | // project was previously deployed using zip and ship, or we are overwriting another project already connected to github |
| 540 | gitBranch, err := currentGitBranch(s.app.ProjectPath) |
| 541 | if err != nil { |
| 542 | return nil, err |
| 543 | } |
| 544 | ghRepo, err := s.app.ch.GitHelper(projResp.Project.OrgName, projResp.Project.Name, s.app.ProjectPath).PushToNewManagedRepo(ctx, gitBranch) |
nothing calls this directly
no test coverage detected