Sha256: 4c9f6074811d1e8dc286d350d9447c3337d985ed129b6ffdebff5dbdfd3bcea7
Contents?: true
Size: 1.65 KB
Versions: 1
Compression:
Stored size: 1.65 KB
Contents
# frozen_string_literal: true require 'octokit' module GistUpdater # A content related to a gist file class Content # @param user [String] GitHub username # @param access_token [String] GitHub personal access token # @param gist_id [String] A gist id # @param file_path [String] A relative file path def initialize(user:, access_token:, gist_id:, file_path:) @user = user @access_token = access_token @gist_id = gist_id @file_path = file_path end # Update the content if needed # # @return [Sawyer::Resource] an updated resource # @return [NilClass] isnot updated def update_if_need if need_to_update? resource = update puts "Updated `#{file_path}` to #{resource.html_url}" elsif GistUpdater.debug puts "There is no update for `#{file_path}`." end pick_a_file(resource) end private attr_reader :user, :access_token, :gist_id, :file_path def client @client ||= Octokit::Client.new(login: user, access_token: access_token) end def need_to_update? @need_to_update ||= gist != local end def gist @gist ||= client.gist(gist_id).files[file_name].content end def local @local ||= File.read(file_path) end def pick_a_file(resource) files = resource&.files files[file_name] if files end # Update a Gist file # # @return [Sawyer::Resource] def update client.edit_gist( gist_id, files: { file_name => { 'content' => local } } ) end def file_name @file_name ||= File.basename(file_path) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gist_updater-0.4.6 | lib/gist_updater/content.rb |