class Travis::Client::Repository
def active?
def active? # TODO remove once active is properly synced and exposed by api return active unless active.nil? last_build_id? end
def admin?(user = session.user)
def admin?(user = session.user) user.admin_access? self end
def branch(name)
def branch(name) attributes['branches'] ||= {} attributes['branches'][name] ||= begin build = attributes['last_on_branch'].detect { |b| b.commit.branch == name.to_s } if attributes['last_on_branch'] build || session.get("/repos/#{id}/branches/#{name}")['branch'] end end
def branches
def branches last_on_branch.map { |b| { b.commit.branch => b } }.inject(:merge) end
def build(number)
def build(number) builds(:number => number.to_s).first end
def builds(params = nil)
def builds(params = nil) return each_build unless params session.find_many(Build, params.merge(:repository_id => id)) end
def caches(params = {})
def caches(params = {}) session.get("/repos/#{id}/caches", params)['caches'] end
def delete_caches(params = {})
def delete_caches(params = {}) session.delete("/repos/#{id}/caches", params)['caches'] end
def disable
def disable set_hook(false) end
def each_build(params = nil, &block)
def each_build(params = nil, &block) return enum_for(__method__, params) unless block_given? params ||= {} chunk = builds(params) until chunk.empty? chunk.each(&block) number = chunk.last.number chunk = number == '1' ? [] : builds(params.merge(:after_number => number)) end self end
def enable
def enable set_hook(true) end
def encrypt(value)
def encrypt(value) key.encrypt(value) end
def env_vars
def env_vars attributes['env_vars'] ||= EnvVar::List.new(self) end
def initialize(*)
def initialize(*) super attributes['active'] = attributes['private'] = attributes['admin'] = nil end
def job(number)
def job(number) build_number = number.to_s[/^\d+/] or return nil build = build(build_number) or return nil job = build.jobs.detect { |j| j.number == number } if number != build_number job ||= build.jobs.first if build and build.jobs.size == 1 job end
def last_build
def last_build return unless last_build_id attributes['last_build'] ||= begin last_build = session.find_one(Build, last_build_id) last_build.number = last_build_number last_build.state = last_build_state last_build.duration = last_build_duration last_build.started_at = last_build_started_at last_build.finished_at = last_build_finished_at last_build.repository_id = id last_build end end
def last_on_branch(name = nil)
def last_on_branch(name = nil) return branch(name) if name attributes['last_on_branch'] ||= session.get('branches', :repository_id => id)['branches'] end
def member?
def member? session.user.repositories.include? self end
def name
def name slug[/[^\/]+$/] end
def owner
def owner session.account(owner_name) end
def owner_name
def owner_name slug[/^[^\/]+/] end
def public_key
def public_key attributes["public_key"] ||= begin payload = session.get_raw("/repos/#{id}/key") Key.new(payload.fetch('key'), payload['fingerprint']) end end
def public_key=(key)
def public_key=(key) # ignored end
def pull?(user = session.user)
def pull?(user = session.user) user.pull_access? self end
def push?(user = session.user)
def push?(user = session.user) user.push_access? self end
def pusher_channels
def pusher_channels attributes['pusher_channels'] ||= if session.private_channels? ["user-#{session.user.id}", "repo-#{id}"] else ["common"] end end
def recent_builds
def recent_builds builds({}) end
def requests
def requests attributes['requests'] ||= session.find_many(Request, :repository_id => id) end
def set_hook(flag)
def set_hook(flag) result = session.put_raw('/hooks/', :hook => { :id => id, :active => flag }) result['result'] end
def settings
def settings attributes['settings'] ||= begin settings = session.get("/repos/#{id}/settings")['settings'] settings.repository = self settings end rescue Travis::Client::NotFound raise Travis::Client::Error, "not allowed to access settings" end
def state
def state last_build_state end