Sha256: f5bf9b5ddec497c7599b0ddcf70ae728b3d54835af858df433ec96995ba17a9d

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

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

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
      #   :no_browse    defaults to false
      #
      def execute(full_filename, description: nil, publik: false, no_browse: false)
        content = 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 no_browse
          @out.puts "Gist address: #{gist.link}"
        else
          open_file_with_default_application(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

2 entries across 2 versions & 1 rubygems

Version Path
geet-0.3.3 lib/geet/services/create_gist.rb
geet-0.3.2 lib/geet/services/create_gist.rb