Sha256: 577b3801c36a669c0a980deb20fbbe99e7762912a87927bacce3486dfc8e1564

Contents?: true

Size: 1.35 KB

Versions: 6

Compression:

Stored size: 1.35 KB

Contents

# frozen_string_literal: true

require_relative '../helpers/os_helper'
require_relative '../github/api_interface'
require_relative '../github/gist'

module Geet
  module Services
    class CreateGist
      include Geet::Helpers::OsHelper

      API_TOKEN_KEY = 'GITHUB_API_TOKEN'
      DEFAULT_GIT_CLIENT = Geet::Utils::GitClient.new

      def initialize(out: $stdout)
        @out = out

        api_token = extract_env_api_token
        @api_interface = Geet::Github::ApiInterface.new(api_token)
      end

      # options:
      #   :description
      #   :publik:      defaults to false
      #   :open_browser defaults to true
      #
      def execute(full_filename, stdin: false, description: nil, publik: false, open_browser: false)
        content = stdin ? $stdin.read : IO.read(full_filename)

        gist_access = publik ? 'public' : 'private'
        @out.puts "Creating a #{gist_access} gist..."

        filename = File.basename(full_filename)
        gist = Geet::Github::Gist.create(filename, content, @api_interface, description: description, publik: publik)

        if open_browser
          open_file_with_default_application(gist.link)
        else
          @out.puts "Gist address: #{gist.link}"
        end
      end

      private

      def extract_env_api_token
        ENV[API_TOKEN_KEY] || raise("#{API_TOKEN_KEY} not set!")
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
geet-0.22.0 lib/geet/services/create_gist.rb
geet-0.21.0 lib/geet/services/create_gist.rb
geet-0.19.0 lib/geet/services/create_gist.rb
geet-0.18.0 lib/geet/services/create_gist.rb
geet-0.17.0 lib/geet/services/create_gist.rb
geet-0.16.0 lib/geet/services/create_gist.rb