Last active
September 13, 2018 14:07
-
-
Save foozmeat/82f177d60d5dfc7fc518 to your computer and use it in GitHub Desktop.
squirt: upload a file to a slack channel from the cli
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
require 'json' | |
if ARGV.length < 3 then | |
puts "Usage: squirt <filename> <channel> <comment>" | |
exit | |
end | |
token = "" | |
if token == "" then | |
puts "Get an API token at https://api.slack.com/web#basics and enter it above" | |
exit | |
end | |
filename = ARGV[0] | |
channel = ARGV[1] | |
comment = ARGV[2] | |
# get channel list | |
channel_raw_data = `curl -s -F token=#{token} https://slack.com/api/channels.list` | |
channel_data = JSON.parse(channel_raw_data) | |
#find channel ID for channel name | |
channel_id = channel_data["channels"].map {|c| c['id'] if c['name']==channel}.compact.first | |
if not channel_id then | |
puts "Channel ID not found" | |
exit 1 | |
end | |
output = `curl -s -F file=@#{filename} -F channels=#{channel_id} -F initial_comment=\"#{comment}\" -F token=#{token} https://slack.com/api/files.upload` | |
result = JSON.parse(output) | |
if not result['ok'] then | |
puts "Upload failed: #{result['error']}" | |
exit 1 | |
end |
wish I could submit a PR for a gist :) some filenames (eg anything with spaces) were being slightly munged as they pass through, so I added shell escaping: https://gist.github.com/arches/83799b98d2fff056d5c8
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
SquirtJS: https://gist.github.com/lmarkus/85fdab8c47d0962bf5d3
😁