Class: Travis::Client::Repository

Inherits:
Entity
  • Object
show all
Includes:
States
Defined in:
lib/travis/client/repository.rb

Defined Under Namespace

Classes: Key

Constant Summary

Constants included from States

States::STATES

Constants inherited from Entity

Entity::MAP

Instance Attribute Summary collapse

Attributes inherited from Entity

#attributes, #curry, #id, #session

Instance Method Summary collapse

Methods included from States

#canceled?, #color, #created?, #errored?, #failed?, #finished?, #green?, #passed?, #pending?, #queued?, #ready?, #received?, #red?, #running?, #started?, #unsuccessful?, #yellow?

Methods inherited from Entity

#[], #[]=, aka, #attribute_names, attributes, base_path, #cancelable?, cast_id, #complete?, has, has_singleton, id?, id_field, #include?, #inspect, inspect_info, #load, many, #missing?, one, preloadable, preloadable?, relations, #relations, #reload, #restartable?, subclass_for, subclasses, time, #to_h, #update_attributes, weak?

Constructor Details

#initializeRepository

Returns a new instance of Repository.



51
52
53
54
# File 'lib/travis/client/repository.rb', line 51

def initialize(*)
  super
  attributes['active'] = attributes['private'] = attributes['admin'] = nil
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



1
2
3
# File 'lib/travis/client/repository.rb', line 1

def description
  @description
end

#last_buildObject (readonly)



79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/travis/client/repository.rb', line 79

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

#slugObject (readonly)

Returns the value of attribute slug.



1
2
3
# File 'lib/travis/client/repository.rb', line 1

def slug
  @slug
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


206
207
208
209
210
211
# File 'lib/travis/client/repository.rb', line 206

def active?
  # TODO: remove once active is properly synced and exposed by api
  return active unless active.nil?

  last_build_id?
end

#admin?(user = session.user) ⇒ Boolean

Returns:

  • (Boolean)


213
214
215
# File 'lib/travis/client/repository.rb', line 213

def admin?(user = session.user)
  user.admin_access? self
end

#branch(name) ⇒ Object



118
119
120
121
122
123
124
125
126
127
128
# File 'lib/travis/client/repository.rb', line 118

def branch(name)
  attributes['branches']       ||= {}
  attributes['branches'][name] ||= begin
    if attributes['last_on_branch']
      build = attributes['last_on_branch'].detect do |b|
        b.commit.branch == name.to_s
      end
    end
    build || session.get("/repos/#{id}/branches/#{name}")['branch']
  end
end

#branchesObject



114
115
116
# File 'lib/travis/client/repository.rb', line 114

def branches
  last_on_branch.map { |b| { b.commit.branch => b } }.inject(:merge)
end

#build(number) ⇒ Object



100
101
102
# File 'lib/travis/client/repository.rb', line 100

def build(number)
  builds(number: number.to_s).first
end

#builds(params = nil) ⇒ Object



94
95
96
97
98
# File 'lib/travis/client/repository.rb', line 94

def builds(params = nil)
  return each_build unless params

  session.find_many(Build, params.merge(repository_id: id))
end

#caches(params = {}) ⇒ Object



198
199
200
# File 'lib/travis/client/repository.rb', line 198

def caches(params = {})
  session.get("/repos/#{id}/caches", params)['caches']
end

#delete_caches(params = {}) ⇒ Object



202
203
204
# File 'lib/travis/client/repository.rb', line 202

def delete_caches(params = {})
  session.delete("/repos/#{id}/caches", params)['caches']
end

#disableObject



156
157
158
# File 'lib/travis/client/repository.rb', line 156

def disable
  set_hook(false)
end

#each_build(params = nil, &block) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/travis/client/repository.rb', line 130

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

#enableObject



160
161
162
# File 'lib/travis/client/repository.rb', line 160

def enable
  set_hook(true)
end

#encrypt(value) ⇒ Object



74
75
76
# File 'lib/travis/client/repository.rb', line 74

def encrypt(value)
  key.encrypt(value)
end

#env_varsObject



225
226
227
# File 'lib/travis/client/repository.rb', line 225

def env_vars
  attributes['env_vars'] ||= EnvVar::List.new(self)
end

#job(number) ⇒ Object



143
144
145
146
147
148
149
# File 'lib/travis/client/repository.rb', line 143

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 && (build.jobs.size == 1)
  job
end

#last_on_branch(name = nil) ⇒ Object



108
109
110
111
112
# File 'lib/travis/client/repository.rb', line 108

def last_on_branch(name = nil)
  return branch(name) if name

  attributes['last_on_branch'] ||= session.get('branches', repository_id: id)['branches']
end

#member?Boolean

Returns:

  • (Boolean)


172
173
174
# File 'lib/travis/client/repository.rb', line 172

def member?
  session.user.repositories.include? self
end

#nameObject



63
64
65
# File 'lib/travis/client/repository.rb', line 63

def name
  slug[%r{[^/]+$}]
end

#ownerObject



180
181
182
# File 'lib/travis/client/repository.rb', line 180

def owner
  session.(owner_name)
end

#owner_nameObject



176
177
178
# File 'lib/travis/client/repository.rb', line 176

def owner_name
  slug[%r{^[^/]+}]
end

#public_keyObject Also known as: key



56
57
58
59
60
61
# File 'lib/travis/client/repository.rb', line 56

def public_key
  attributes['public_key'] ||= begin
    payload = session.get_raw("/repos/#{id}/key")
    Key.new(payload.fetch('key'), payload['fingerprint'])
  end
end

#public_key=(key) ⇒ Object Also known as: key=



67
68
69
# File 'lib/travis/client/repository.rb', line 67

def public_key=(key)
  # ignored
end

#pull?(user = session.user) ⇒ Boolean

Returns:

  • (Boolean)


221
222
223
# File 'lib/travis/client/repository.rb', line 221

def pull?(user = session.user)
  user.pull_access? self
end

#push?(user = session.user) ⇒ Boolean

Returns:

  • (Boolean)


217
218
219
# File 'lib/travis/client/repository.rb', line 217

def push?(user = session.user)
  user.push_access? self
end

#pusher_channelsObject



164
165
166
167
168
169
170
# File 'lib/travis/client/repository.rb', line 164

def pusher_channels
  attributes['pusher_channels'] ||= if session.private_channels?
                                      ["user-#{session.user.id}", "repo-#{id}"]
                                    else
                                      ['common']
                                    end
end

#recent_buildsObject



104
105
106
# File 'lib/travis/client/repository.rb', line 104

def recent_builds
  builds({})
end

#requestsObject



184
185
186
# File 'lib/travis/client/repository.rb', line 184

def requests
  attributes['requests'] ||= session.find_many(Request, repository_id: id)
end

#set_hook(flag) ⇒ Object



151
152
153
154
# File 'lib/travis/client/repository.rb', line 151

def set_hook(flag)
  result = session.put_raw('/hooks/', hook: { id:, active: flag })
  result['result']
end

#settingsObject



188
189
190
191
192
193
194
195
196
# File 'lib/travis/client/repository.rb', line 188

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