summaryrefslogtreecommitdiffstats
path: root/cmd/platform/channelargs.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2016-12-06 10:49:34 -0500
committerGitHub <noreply@github.com>2016-12-06 10:49:34 -0500
commit026553e4f87bfc647a5c03129752e30fc523fa07 (patch)
treed5403c760151c0fa26fc6d020f7f4326ea9d6f8a /cmd/platform/channelargs.go
parentdcf11a14d8363c79ab62aefca46834d6daa615ab (diff)
downloadchat-026553e4f87bfc647a5c03129752e30fc523fa07.tar.gz
chat-026553e4f87bfc647a5c03129752e30fc523fa07.tar.bz2
chat-026553e4f87bfc647a5c03129752e30fc523fa07.zip
Improving command line interface (#4689)
Diffstat (limited to 'cmd/platform/channelargs.go')
-rw-r--r--cmd/platform/channelargs.go59
1 files changed, 59 insertions, 0 deletions
diff --git a/cmd/platform/channelargs.go b/cmd/platform/channelargs.go
new file mode 100644
index 000000000..136d73fd2
--- /dev/null
+++ b/cmd/platform/channelargs.go
@@ -0,0 +1,59 @@
+// Copyright (c) 2016 Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+package main
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/mattermost/platform/api"
+ "github.com/mattermost/platform/model"
+)
+
+const CHANNEL_ARG_SEPARATOR = ":"
+
+func getChannelsFromChannelArgs(channelArgs []string) []*model.Channel {
+ channels := make([]*model.Channel, 0, len(channelArgs))
+ for _, channelArg := range channelArgs {
+ channel := getChannelFromChannelArg(channelArg)
+ channels = append(channels, channel)
+ }
+ return channels
+}
+
+func parseChannelArg(channelArg string) (string, string) {
+ result := strings.SplitN(channelArg, CHANNEL_ARG_SEPARATOR, 2)
+ if len(result) == 1 {
+ return "", channelArg
+ }
+ return result[0], result[1]
+}
+
+func getChannelFromChannelArg(channelArg string) *model.Channel {
+ teamArg, channelPart := parseChannelArg(channelArg)
+ if teamArg == "" && channelPart == "" {
+ return nil
+ }
+
+ var channel *model.Channel
+ if teamArg != "" {
+ team := getTeamFromTeamArg(teamArg)
+ if team == nil {
+ return nil
+ }
+
+ if result := <-api.Srv.Store.Channel().GetByNameIncludeDeleted(team.Id, channelPart); result.Err == nil {
+ channel = result.Data.(*model.Channel)
+ } else {
+ fmt.Println(result.Err.Error())
+ }
+ }
+
+ if channel == nil {
+ if result := <-api.Srv.Store.Channel().Get(channelPart); result.Err == nil {
+ channel = result.Data.(*model.Channel)
+ }
+ }
+
+ return channel
+}