-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwebsite_docs.go
71 lines (61 loc) · 1.99 KB
/
website_docs.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
Copyright 2024 The Vitess Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package release
import (
"context"
tea "github.com/charmbracelet/bubbletea"
"vitess.io/vitess-releaser/go/interactive/ui"
"vitess.io/vitess-releaser/go/releaser"
"vitess.io/vitess-releaser/go/releaser/release"
"vitess.io/vitess-releaser/go/releaser/steps"
)
func WebsiteDocumentationItem(ctx context.Context) *ui.MenuItem {
state := releaser.UnwrapState(ctx)
act := websiteDocumentationAct
return &ui.MenuItem{
State: state,
Name: steps.WebsiteDocumentation,
Act: act,
Update: websiteDocumentationUpdate,
IsDone: state.Issue.WebsiteDocumentation,
}
}
type websiteDocumentationMsg []string
func websiteDocumentationUpdate(mi *ui.MenuItem, msg tea.Msg) (*ui.MenuItem, tea.Cmd) {
switch msg := msg.(type) {
case websiteDocumentationMsg:
return mi, ui.PushDialog(&ui.DoneDialog{
StepName: mi.Name,
Title: steps.WebsiteDocumentation,
Message: msg,
IsDone: mi.IsDone,
})
case ui.DoneDialogAction:
if string(msg) != mi.Name {
return mi, nil
}
mi.State.Issue.WebsiteDocumentation = !mi.State.Issue.WebsiteDocumentation
mi.IsDone = !mi.IsDone
pl, fn := mi.State.UploadIssue()
return mi, tea.Batch(func() tea.Msg {
fn()
return tea.Msg("")
}, ui.PushDialog(ui.NewProgressDialog("Updating the Release Issue", pl)))
}
return mi, nil
}
func websiteDocumentationAct(mi *ui.MenuItem) (*ui.MenuItem, tea.Cmd) {
return mi, func() tea.Msg {
return websiteDocumentationMsg(release.WebsiteDocs(mi.State))
}
}