Browse Source

Merge branch 'feature/TypeCommands' of keybase://team/dxb_.rudi9719/kbtui

pull/1/head
Gregory Rudolph 5 years ago
parent
commit
6c3c7e3b20
  1. 12
      build.go
  2. 9
      cmdHelp.go
  3. 32
      mage.go
  4. 3
      tcmdAutoReact.go
  5. 25
      tcmdShowReactions.go
  6. 1
      types.go

12
build.go

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
// +build ignore
package main
import (
"github.com/magefile/mage/mage"
"os"
)
func main() {
os.Exit(mage.Main())
}

9
cmdHelp.go

@ -5,6 +5,7 @@ package main @@ -5,6 +5,7 @@ package main
import (
"fmt"
"sort"
"strings"
)
func init() {
@ -20,11 +21,19 @@ func init() { @@ -20,11 +21,19 @@ func init() {
func cmdHelp(cmd []string) {
var helpText string
var tCommands []string
if len(cmd) == 1 {
sort.Strings(baseCommands)
for _, c := range baseCommands {
helpText = fmt.Sprintf("%s%s%s\t\t%s\n", helpText, cmdPrefix, c, commands[c].Description)
}
if len(typeCommands) > 0 {
for c, _ := range typeCommands {
tCommands = append(tCommands, typeCommands[c].Name)
}
sort.Strings(tCommands)
helpText = fmt.Sprintf("%s\nThe following Type Commands are currently loaded: %s", helpText, strings.Join(tCommands, ", "))
}
}
printToView("Chat", helpText)
}

32
mage.go

@ -0,0 +1,32 @@ @@ -0,0 +1,32 @@
// +build mage
package main
import (
"github.com/magefile/mage/sh"
)
// Build kbtui with just the basic commands.
func Build() {
sh.Run("go", "build")
}
// Build kbtui with the basic commands, and the ShowReactions "TypeCommand".
// The ShowReactions TypeCommand will print a message in the feed window when
// a reaction is received in the current conversation.
func BuildShowReactions() {
sh.Run("go", "build", "-tags", "showreactionscmd")
}
// Build kbtui with the basec commands, and the AutoReact "TypeCommand".
// The AutoReact TypeCommand will automatically react to every message
// received in the current conversation. This gets pretty annoying, and
// is not recommended.
func BuildAutoReact() {
sh.Run("go", "build", "-tags", "autoreactcmd")
}
// Build kbtui with all Commands and TypeCommands enabled.
func BuildAllCommands() {
sh.Run("go", "build", "-tags", "type_commands")
}

3
tcmdAutoReact.go

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
// +build ignore
// +ignore
// +build type_commands autoreactcmd
package main
@ -10,6 +10,7 @@ import ( @@ -10,6 +10,7 @@ import (
func init() {
command := TypeCommand{
Cmd: []string{"text"},
Name: "AutoReact",
Description: "Automatically reacts to every incoming message with an emoji",
Exec: tcmdAutoReact,
}

25
tcmdShowReactions.go

@ -0,0 +1,25 @@ @@ -0,0 +1,25 @@
// +ignore
// +build type_commands showreactionscmd
package main
import (
"fmt"
"samhofi.us/x/keybase"
)
func init() {
command := TypeCommand{
Cmd: []string{"reaction"},
Name: "ShowReactions",
Description: "Prints a message in the feed any time a reaction is received",
Exec: tcmdShowReactions,
}
RegisterTypeCommand(command)
}
func tcmdShowReactions(m keybase.ChatAPI) {
printToView("Feed", fmt.Sprintf("%s reacted to %d with %s", m.Msg.Sender.Username, m.Msg.Content.Reaction.M, m.Msg.Content.Reaction.B))
}

1
types.go

@ -13,6 +13,7 @@ type Command struct { @@ -13,6 +13,7 @@ type Command struct {
// TypeCommand outlines a command that reacts on message type
type TypeCommand struct {
Cmd []string // Message types that trigger this command
Name string // The name of this command
Description string // A short description of the command
Exec func(keybase.ChatAPI) // A function that takes a raw chat message as input
}

Loading…
Cancel
Save