Class: Hub::Context::GithubProject

Inherits:
Struct
  • Object
show all
Defined in:
lib/hub/context.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ GithubProject

Returns a new instance of GithubProject.



261
262
263
264
265
266
# File 'lib/hub/context.rb', line 261

def initialize(*args)
  super
  self.name = self.name.tr(' ', '-')
  self.host ||= (local_repo || LocalRepo).default_host
  self.host = host.sub(/^ssh\./i, '') if 'ssh.github.com' == host.downcase
end

Instance Attribute Details

#repo_dataObject

Returns the value of attribute repo_data.



259
260
261
# File 'lib/hub/context.rb', line 259

def repo_data
  @repo_data
end

Class Method Details

.from_url(url, local_repo) ⇒ Object



252
253
254
255
256
257
# File 'lib/hub/context.rb', line 252

def self.from_url(url, local_repo)
  if local_repo.known_host?(url.host)
    _, owner, name = url.path.split('/', 4)
    GithubProject.new(local_repo, owner, name.sub(/\.git$/, ''), url.host)
  end
end

Instance Method Details

#==(other) ⇒ Object



283
284
285
# File 'lib/hub/context.rb', line 283

def ==(other)
  name_with_owner == other.name_with_owner
end

#git_url(options = {}) ⇒ Object



308
309
310
311
312
313
# File 'lib/hub/context.rb', line 308

def git_url(options = {})
  if options[:https] then "https://#{host}/"
  elsif options[:private] or private? then "git@#{host}:"
  else "git://#{host}/"
  end + name_with_owner + '.git'
end

#name_with_ownerObject



279
280
281
# File 'lib/hub/context.rb', line 279

def name_with_owner
  "#{owner}/#{name}"
end

#owned_by(new_owner) ⇒ Object



273
274
275
276
277
# File 'lib/hub/context.rb', line 273

def owned_by(new_owner)
  new_project = dup
  new_project.owner = new_owner
  new_project
end

#private?Boolean

Returns:

  • (Boolean)


268
269
270
271
# File 'lib/hub/context.rb', line 268

def private?
  repo_data ? repo_data.fetch('private') :
    host != (local_repo || LocalRepo).main_host
end

#remoteObject



287
288
289
# File 'lib/hub/context.rb', line 287

def remote
  local_repo.remotes.find { |r| r.project == self }
end

#web_url(path = nil, protocol_config = nil) ⇒ Object



291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
# File 'lib/hub/context.rb', line 291

def web_url(path = nil, protocol_config = nil)
  project_name = name_with_owner
  if project_name.sub!(/\.wiki$/, '')
    unless '/wiki' == path
      path = if path =~ %r{^/commits/} then '/_history'
             else path.to_s.sub(/\w+/, '_\0')
             end
      path = '/wiki' + path
    end
  end
  '%s://%s/%s' % [
    protocol_config ? protocol_config.call(host) : 'https',
    host,
    project_name + path.to_s
  ]
end