Skip to content

Commit 83ae496

Browse files
Merge pull request #128 from vitessio/change-vtop-process
Improve vtop release process by creating the Release PR first
2 parents 248e510 + 36af148 commit 83ae496

12 files changed

+533
-96
lines changed

go/interactive/main_menu.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ func MainScreen(ctx context.Context, state *releaser.State) {
8080
release.TagReleaseItem(ctx),
8181
release.JavaReleaseItem(ctx),
8282
release.VtopCreateReleasePRMenuItem(ctx),
83-
release.VtopManualUpdateItem(ctx),
8483
release.ReleaseNotesOnMainItem(ctx),
8584
release.BackToDevModeItem(ctx),
8685
mergeBlogPostPRMenuItem(ctx),
@@ -89,8 +88,11 @@ func MainScreen(ctx context.Context, state *releaser.State) {
8988
dockerImagesItem(ctx),
9089
release.CloseMilestoneItem(ctx),
9190
simpleMenuItem(ctx, "ReleaseArtifacts", releaselogic.CheckArtifacts(state), steps.ReleaseArtifacts, false),
91+
release.VtopMergeReleasePRItem(ctx),
92+
release.VtopTagReleaseMenuItem(ctx),
93+
release.VtopBackToDevModeItem(ctx),
94+
release.VtopManualUpdateItem(ctx),
9295
)
93-
releaseMenu.Sequential = true
9496

9597
postReleaseMenu := ui.NewMenu(
9698
ctx,
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
Copyright 2024 The Vitess Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package release
18+
19+
import (
20+
"context"
21+
22+
tea "github.com/charmbracelet/bubbletea"
23+
"github.com/vitessio/vitess-releaser/go/interactive/ui"
24+
"github.com/vitessio/vitess-releaser/go/releaser"
25+
"github.com/vitessio/vitess-releaser/go/releaser/release"
26+
"github.com/vitessio/vitess-releaser/go/releaser/steps"
27+
)
28+
29+
func VtopBackToDevModeItem(ctx context.Context) *ui.MenuItem {
30+
state := releaser.UnwrapState(ctx)
31+
act := vtopBackToDevAct
32+
if state.Issue.VtopBackToDevMode.Done {
33+
act = nil
34+
}
35+
return &ui.MenuItem{
36+
State: state,
37+
Name: steps.VtopBackToDev,
38+
Act: act,
39+
Update: vtopBackToDevUpdate,
40+
IsDone: state.Issue.VtopBackToDevMode.Done,
41+
Info: state.Issue.VtopBackToDevMode.URL,
42+
43+
Ignore: state.VtOpRelease.Release == "",
44+
}
45+
}
46+
47+
type vtopBackToDevUrl string
48+
49+
func vtopBackToDevUpdate(mi *ui.MenuItem, msg tea.Msg) (*ui.MenuItem, tea.Cmd) {
50+
_, ok := msg.(vtopBackToDevUrl)
51+
if !ok {
52+
return mi, nil
53+
}
54+
55+
mi.IsDone = mi.State.Issue.VtopBackToDevMode.Done
56+
mi.Info = mi.State.Issue.VtopBackToDevMode.URL
57+
return mi, nil
58+
}
59+
60+
func vtopBackToDevAct(mi *ui.MenuItem) (*ui.MenuItem, tea.Cmd) {
61+
pl, act := release.VtopBackToDev(mi.State)
62+
return mi, tea.Batch(func() tea.Msg {
63+
return vtopBackToDevUrl(act())
64+
}, ui.PushDialog(ui.NewProgressDialog(steps.VtopBackToDev, pl)))
65+
}

go/interactive/release/vtop_create_release_pr.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package release
1818

1919
import (
2020
"context"
21-
"strings"
2221

2322
tea "github.com/charmbracelet/bubbletea"
2423
"github.com/vitessio/vitess-releaser/go/interactive/ui"
@@ -39,7 +38,7 @@ func VtopCreateReleasePRMenuItem(ctx context.Context) *ui.MenuItem {
3938
Act: act,
4039
Update: vtopCreateReleasePRUpdate,
4140
IsDone: state.Issue.VtopCreateReleasePR.Done,
42-
Info: strings.Join(state.Issue.VtopCreateReleasePR.URLs, " | "),
41+
Info: state.Issue.VtopCreateReleasePR.URL,
4342

4443
Ignore: state.VtOpRelease.Release == "",
4544
}
@@ -54,7 +53,7 @@ func vtopCreateReleasePRUpdate(mi *ui.MenuItem, msg tea.Msg) (*ui.MenuItem, tea.
5453
}
5554

5655
mi.IsDone = mi.State.Issue.VtopCreateReleasePR.Done
57-
mi.Info = strings.Join(mi.State.Issue.VtopCreateReleasePR.URLs, " | ")
56+
mi.Info = mi.State.Issue.VtopCreateReleasePR.URL
5857
return mi, nil
5958
}
6059

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/*
2+
Copyright 2024 The Vitess Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package release
18+
19+
import (
20+
"context"
21+
22+
tea "github.com/charmbracelet/bubbletea"
23+
"github.com/vitessio/vitess-releaser/go/interactive/ui"
24+
"github.com/vitessio/vitess-releaser/go/releaser"
25+
"github.com/vitessio/vitess-releaser/go/releaser/release"
26+
"github.com/vitessio/vitess-releaser/go/releaser/steps"
27+
)
28+
29+
func VtopMergeReleasePRItem(ctx context.Context) *ui.MenuItem {
30+
state := releaser.UnwrapState(ctx)
31+
act := vtopMergeReleasePRAct
32+
if state.Issue.VtopMergeReleasePR.Done {
33+
act = nil
34+
}
35+
36+
info := "Run this step once the Release Pull Request was created."
37+
if state.Issue.VtopCreateReleasePR.URL != "" {
38+
info = state.Issue.VtopCreateReleasePR.URL
39+
}
40+
41+
return &ui.MenuItem{
42+
State: state,
43+
Name: steps.VtopMergeReleasePR,
44+
Act: act,
45+
Update: vtopMergeReleasePRUpdate,
46+
IsDone: state.Issue.VtopMergeReleasePR.Done,
47+
Info: info,
48+
49+
Ignore: state.VtOpRelease.Release == "",
50+
}
51+
}
52+
53+
type vtopMergeReleasePRUrl string
54+
55+
func vtopMergeReleasePRUpdate(mi *ui.MenuItem, msg tea.Msg) (*ui.MenuItem, tea.Cmd) {
56+
_, ok := msg.(vtopMergeReleasePRUrl)
57+
if !ok {
58+
return mi, nil
59+
}
60+
61+
mi.IsDone = mi.State.Issue.VtopMergeReleasePR.Done
62+
mi.Info = mi.State.Issue.VtopMergeReleasePR.URL
63+
return mi, nil
64+
}
65+
66+
func vtopMergeReleasePRAct(mi *ui.MenuItem) (*ui.MenuItem, tea.Cmd) {
67+
if mi.State.Issue.VtopCreateReleasePR.URL == "" {
68+
return mi, nil
69+
}
70+
71+
pl, act := release.VtopMergeReleasePR(mi.State)
72+
return mi, tea.Batch(func() tea.Msg {
73+
return vtopMergeReleasePRUrl(act())
74+
}, ui.PushDialog(ui.NewProgressDialog(steps.VtopMergeReleasePR, pl)))
75+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
Copyright 2024 The Vitess Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package release
18+
19+
import (
20+
"context"
21+
22+
tea "github.com/charmbracelet/bubbletea"
23+
"github.com/vitessio/vitess-releaser/go/interactive/ui"
24+
"github.com/vitessio/vitess-releaser/go/releaser"
25+
"github.com/vitessio/vitess-releaser/go/releaser/release"
26+
"github.com/vitessio/vitess-releaser/go/releaser/steps"
27+
)
28+
29+
func VtopTagReleaseMenuItem(ctx context.Context) *ui.MenuItem {
30+
state := releaser.UnwrapState(ctx)
31+
act := vtopTagReleaseAct
32+
if state.Issue.VtopTagRelease.Done {
33+
act = nil
34+
}
35+
return &ui.MenuItem{
36+
State: state,
37+
Name: steps.VtopTagRelease,
38+
Act: act,
39+
Update: vtopTagReleaseUpdate,
40+
IsDone: state.Issue.VtopTagRelease.Done,
41+
Info: state.Issue.VtopTagRelease.URL,
42+
43+
Ignore: state.VtOpRelease.Release == "",
44+
}
45+
}
46+
47+
type vtopTagReleaseUrl string
48+
49+
func vtopTagReleaseUpdate(mi *ui.MenuItem, msg tea.Msg) (*ui.MenuItem, tea.Cmd) {
50+
_, ok := msg.(vtopTagReleaseUrl)
51+
if !ok {
52+
return mi, nil
53+
}
54+
55+
mi.IsDone = mi.State.Issue.VtopTagRelease.Done
56+
mi.Info = mi.State.Issue.VtopTagRelease.URL
57+
return mi, nil
58+
}
59+
60+
func vtopTagReleaseAct(mi *ui.MenuItem) (*ui.MenuItem, tea.Cmd) {
61+
pl, act := release.VtopTagRelease(mi.State)
62+
return mi, tea.Batch(func() tea.Msg {
63+
return vtopTagReleaseUrl(act())
64+
}, ui.PushDialog(ui.NewProgressDialog(steps.VtopTagRelease, pl)))
65+
}

0 commit comments

Comments
 (0)