From 56f6584f41eb9977280d594cee77be9372712fac Mon Sep 17 00:00:00 2001 From: Christian Meilke Date: Thu, 29 Sep 2016 14:52:53 +0200 Subject: [PATCH 1/3] Skipping unknown channels --- bin/slackcat | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/slackcat b/bin/slackcat index 7700c92..6c66c45 100755 --- a/bin/slackcat +++ b/bin/slackcat @@ -115,7 +115,9 @@ end ## translate destination names into slack ids channels = opts[:channels].split(/[\s,]+/).map do |name| - slack.channels.find { |channel| channel['name'] == name }.fetch('id') + channel = slack.channels.find { |channel| channel['name'] == name } + puts "skipping channel #{name}: not available (maybe use -g for group?)" unless channel + channel.fetch('id') if channel end groups = opts[:groups].split(/[\s,]+/).map do |name| From dab285a0d146b5df6306d362873f1347a7258bcb Mon Sep 17 00:00:00 2001 From: Christian Meilke Date: Thu, 29 Sep 2016 15:08:58 +0200 Subject: [PATCH 2/3] Skipping unknown channels (now working) --- bin/slackcat | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bin/slackcat b/bin/slackcat index 6c66c45..69c5bba 100755 --- a/bin/slackcat +++ b/bin/slackcat @@ -116,9 +116,14 @@ end ## translate destination names into slack ids channels = opts[:channels].split(/[\s,]+/).map do |name| channel = slack.channels.find { |channel| channel['name'] == name } - puts "skipping channel #{name}: not available (maybe use -g for group?)" unless channel - channel.fetch('id') if channel + if channel + channel.fetch('id') + else + puts "skipping channel #{name}: not available (maybe use -g for group?)" + nil + end end +channels = channels.compact groups = opts[:groups].split(/[\s,]+/).map do |name| slack.groups.find { |group| group['name'] == name }.fetch('id') From 3cabaf5ddd05a1e935875684b2a366ae43248435 Mon Sep 17 00:00:00 2001 From: Christian Meilke Date: Thu, 29 Sep 2016 15:31:54 +0200 Subject: [PATCH 3/3] Skipping unknown channels (improved) --- bin/slackcat | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/bin/slackcat b/bin/slackcat index 69c5bba..7388142 100755 --- a/bin/slackcat +++ b/bin/slackcat @@ -22,6 +22,10 @@ class Slackcat @channels ||= get_objects('channels.list', 'channels') end + def channel_by(name) + channels().find { |channel| channel['name'] == name } + end + def groups @groups ||= get_objects('groups.list', 'groups') end @@ -114,16 +118,16 @@ if opts.values_at(:channels, :groups, :users).all?(&:empty?) end ## translate destination names into slack ids -channels = opts[:channels].split(/[\s,]+/).map do |name| - channel = slack.channels.find { |channel| channel['name'] == name } - if channel - channel.fetch('id') - else - puts "skipping channel #{name}: not available (maybe use -g for group?)" - nil - end +individual_channel_names = opts[:channels].split(/[\s,]+/) +existing_channel_names = individual_channel_names.select {|name| slack.channel_by(name)} + +(individual_channel_names - existing_channel_names).each do |name| + puts "skipping channel #{name}: not available (maybe use -g for group?)" +end + +channels = existing_channel_names.map do |name| + slack.channel_by(name).fetch('id') end -channels = channels.compact groups = opts[:groups].split(/[\s,]+/).map do |name| slack.groups.find { |group| group['name'] == name }.fetch('id')