Sha256: 070a244d6aebdea37d19a46f2ddf5243b1e967c0dae5d12a5bba5be5488de810
Contents?: true
Size: 1.48 KB
Versions: 3
Compression:
Stored size: 1.48 KB
Contents
module CronForGithub class Ping NAMESPACE = 'cron_for_github' BASE = 'master' RESERVED_REFS = %w( tags gh-pages master branches trunk feature develop release hotfix ) def ping(params) client = Client.new slug = decide_slug(params[:slug]) head_ref = decide_head_ref(params[:base]) cron_ref = decide_cron_ref(params[:namespace], __method__) latest_sha = client.latest_sha(slug, head_ref) client.create_ref(slug, cron_ref, latest_sha) end def decide_slug(text) text end def decide_head_ref(text) text = BASE if !text || text.empty? "heads/#{text}" end def decide_cron_ref(text, caller = nil) "#{decide_cron_ref_prefix(text, caller)}#{SecureRandom.uuid}" end def clear(params) client = Client.new slug = decide_slug(params[:slug]) cron_ref_prefix = decide_cron_ref_prefix(params[:namespace]) cron_refs = client.refs(slug, cron_ref_prefix) cron_refs .each do |clear_ref| client.delete_ref(slug, clear_ref) end end def decide_cron_ref_prefix(text, caller = nil) if caller != :ping && RESERVED_REFS.include?(text) fail ReservedNamespaceError, \ %("#{text}" is reserved. List: #{RESERVED_REFS.join(', ')}) end text = NAMESPACE if !text || text.empty? "heads/#{text}/" end def logger ::CronForGithub.logger end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
cron_for_github-2.0.1 | lib/cron_for_github/ping.rb |
cron_for_github-2.0.0 | lib/cron_for_github/ping.rb |
cron_for_github-1.0.0 | lib/cron_for_github/ping.rb |