bin/gistribute in gistribute-0.2 vs bin/gistribute in gistribute-0.3
- old
+ new
@@ -1,86 +1,6 @@
#!/usr/bin/env ruby
+# frozen_string_literal: true
-require "colorize"
-require "fileutils"
-require "json"
-require "open-uri"
+require "gistribute"
-# Print to STDOUT to clear line
-CLEAR = "\r\e[K"
-
-if %w[-v --version].include? ARGV.first
- puts "Gistribute #{File.read(File.expand_path("../../VERSION", __FILE__)).strip}"
- exit 0
-end
-
-print "Downloading data..."
-
-# The user can pass in either just the ID or the entire URL to the Gist.
-id = ARGV.first[/(^|\/)([[:xdigit:]]+)/, 2]
-
-begin
- gist = JSON.parse(URI.open("https://api.github.com/gists/#{id}").read)
-rescue OpenURI::HTTPError => msg
- print <<~EOS.red
- #{CLEAR}There was an error downloading the requested Gist.
- The error is as follows:
- EOS
- puts msg
-
- puts "The ID that was queried is:".red
- puts id
-
- exit -1
-end
-
-# The JSON data contains a lot of information. The information that is
-# relevant to this program is as follows:
-#
-# {
-# "html_url" => "Link to the Gist",
-# "description" => "The description for the Gist",
-#
-# "owner" => nil, # IF ANONYMOUS
-# "owner" => { # IF TIED TO A USER
-# "login" => "username"
-# },
-#
-# "files" => {
-# "filename of first file" => {
-# "content" => "entire contents of the file"
-# }
-# # Repeat the above for every file in the Gist.
-# }
-# }
-
-# Regular expression word wrap to keep lines less than 80 characters. Then
-# check to see if it's empty- if not, put newlines on each side so that it
-# will be padded when displayed in the output.
-desc = gist["description"].gsub(/(.{1,79})(\s+|\Z)/, "\\1\n").strip
-desc = "\n#{desc}\n" unless desc.empty?
-
-puts <<~EOS
- #{CLEAR}Finished downloading Gist from: #{gist["html_url"]}
- Gist uploaded by #{
- gist["owner"] ? "user #{gist["owner"]["login"]}" : "an anonymous user"
- }.
- #{desc}
- Beginning install...
-EOS
-
-gist["files"].each do |filename, data|
- metadata = filename.split("||").map &:strip
-
- # | as path separator in the Gist's file name, as Gist doesn't allow the
- # usage of /.
- path = metadata.last.gsub(/[~|]/, "|" => "/", "~" => Dir.home)
- # Default description is the name of the file.
- description = metadata.size == 1 ? File.basename(path) : metadata.first
-
- puts " #{"*".green} Installing #{description}..."
-
- # Handle directories that don't exist.
- FileUtils.mkdir_p File.dirname(path)
-
- File.write(path, data["content"])
-end
+Gistribute::CLI.new.run