Skip to content

Commit

Permalink
Added auto generated display names for params and commands
Browse files Browse the repository at this point in the history
  • Loading branch information
manterfield committed Aug 17, 2024
1 parent 15705fb commit 2b6985b
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 15 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ require (
go.abhg.dev/goldmark/frontmatter v0.2.0
golang.org/x/exp v0.0.0-20240222234643-814bf88cf225
golang.org/x/sync v0.6.0
golang.org/x/text v0.14.0
)

require (
Expand Down Expand Up @@ -71,7 +72,6 @@ require (
go.opencensus.io v0.23.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/oauth2 v0.1.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.100.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
Expand Down
27 changes: 13 additions & 14 deletions internal/runner/slackcmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func SlackCommandRequest(flow *markdown.Flow, hopsMsg *nats.HopsMsg, matchError
hopsMsg.Data["trigger_id"].(string),
slack.ModalViewRequest{
Type: slack.VTModal,
Title: slack.NewTextBlockObject("plain_text", flow.ID, false, false),
Title: slack.NewTextBlockObject("plain_text", flow.DisplayName(), false, false),
Blocks: slack.Blocks{
BlockSet: blocks,
// slack.NewTextBlockObject() // We want the rendered slack markdown here
Expand Down Expand Up @@ -125,21 +125,20 @@ func CommandToSlackBlocks(command markdown.Command) ([]slack.Block, error) {

for _, p := range command {
name, param := p.Param()
displayName := p.DisplayName()

switch param.Type {
case "text", "string":
blocks = append(blocks, ParamToTextInputBlock(name, param))
blocks = append(blocks, ParamToTextInputBlock(name, displayName, param))
case "bool":
blocks = append(blocks, ParamToBooleanInputBlock(name, param))
blocks = append(blocks, ParamToBooleanInputBlock(name, displayName, param))
case "number":
blocks = append(blocks, ParamToNumberInputBlock(name, param))
blocks = append(blocks, ParamToNumberInputBlock(name, displayName, param))
default:
return nil, fmt.Errorf("unable to parse param '%s' - unknown type '%s'", name, param.Type)
}
}

// Add the submit button etc? - Need to ensure we're handling no params

return blocks, nil
}

Expand All @@ -152,17 +151,17 @@ func ParamBlockLabel(name string) *slack.TextBlockObject {
}
}

func ParamInputBlock(name string, param markdown.Param, elem slack.BlockElement) slack.Block {
func ParamInputBlock(name, displayName string, param markdown.Param, elem slack.BlockElement) slack.Block {
return slack.InputBlock{
BlockID: name,
Type: slack.MBTInput,
Label: ParamBlockLabel(name),
Label: ParamBlockLabel(displayName),
Element: elem,
Optional: !param.Required,
}
}

func ParamToNumberInputBlock(name string, param markdown.Param) slack.Block {
func ParamToNumberInputBlock(name, displayName string, param markdown.Param) slack.Block {
elem := slack.NumberInputBlockElement{
Type: slack.METNumber,
ActionID: name,
Expand All @@ -179,10 +178,10 @@ func ParamToNumberInputBlock(name string, param markdown.Param) slack.Block {
}
}

return ParamInputBlock(name, param, elem)
return ParamInputBlock(name, displayName, param, elem)
}

func ParamToBooleanInputBlock(name string, param markdown.Param) slack.Block {
func ParamToBooleanInputBlock(name, displayName string, param markdown.Param) slack.Block {
trueOption := &slack.OptionBlockObject{
Value: "true",
Text: &slack.TextBlockObject{
Expand Down Expand Up @@ -217,10 +216,10 @@ func ParamToBooleanInputBlock(name string, param markdown.Param) slack.Block {
elem.InitialOption = falseOption
}

return ParamInputBlock(name, param, elem)
return ParamInputBlock(name, displayName, param, elem)
}

func ParamToTextInputBlock(name string, param markdown.Param) slack.Block {
func ParamToTextInputBlock(name, displayName string, param markdown.Param) slack.Block {
elem := slack.PlainTextInputBlockElement{
Type: slack.METPlainTextInput,
Placeholder: nil,
Expand All @@ -233,7 +232,7 @@ func ParamToTextInputBlock(name string, param markdown.Param) slack.Block {
elem.InitialValue = defaultVal
}

return ParamInputBlock(name, param, elem)
return ParamInputBlock(name, displayName, param, elem)
}

func parseViewSubmissionCommand(payload map[string]any) (map[string]any, error) {
Expand Down
26 changes: 26 additions & 0 deletions markdown/flow.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import (
"github.com/yuin/goldmark/ast"
"github.com/zclconf/go-cty/cty/gocty"
"go.abhg.dev/goldmark/frontmatter"
"golang.org/x/text/cases"
"golang.org/x/text/language"
)

type (
Expand Down Expand Up @@ -239,6 +241,14 @@ func (f *Flow) ActionName() string {
return strings.ReplaceAll(f.ID, ".", "-")
}

func (f *Flow) DisplayName() string {
if strings.ToLower(f.fileName) == "index" {
return titleCase(f.dirName)
}

return titleCase(f.ID)
}

func (f *Flow) IfValue(evalCtx *hcl.EvalContext) (bool, error) {
if f.If == "" {
return true, nil
Expand All @@ -258,6 +268,14 @@ func (f *Flow) IfValue(evalCtx *hcl.EvalContext) (bool, error) {
return matches, nil
}

func (pi *ParamItem) DisplayName() string {
for name := range *pi {
return titleCase(name)
}

return ""
}

func (pi *ParamItem) Param() (string, Param) {
for name, p := range *pi {
if p.Type == "" {
Expand All @@ -269,3 +287,11 @@ func (pi *ParamItem) Param() (string, Param) {

return "", Param{}
}

var titleCaseReplacer = strings.NewReplacer("_", " ", ".", " ")

func titleCase(label string) string {
caser := cases.Title(language.BritishEnglish)
label = titleCaseReplacer.Replace(label)
return caser.String(label)
}

0 comments on commit 2b6985b

Please sign in to comment.