Class: Grit::Submodule
- Inherits:
-
Object
- Object
- Grit::Submodule
- Defined in:
- lib/grit/submodule.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#mode ⇒ Object
readonly
Returns the value of attribute mode.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
-
.config(repo, ref = "master") ⇒ Object
The configuration information for the given
repo
repo
is the Reporef
is the committish (defaults to ‘master’). -
.create(repo, atts) ⇒ Object
Create a Submodule containing just the specified attributes
repo
is the Repoatts
is a Hash of instance variable data.
Instance Method Summary collapse
- #basename ⇒ Object
-
#create_initialize(repo, atts) ⇒ Object
Initializer for Submodule.create
repo
is the Repoatts
is a Hash of instance variable data. -
#inspect ⇒ Object
Pretty object inspection.
-
#url(ref) ⇒ Object
The url of this submodule
ref
is the committish that should be used to look up the url.
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
4 5 6 |
# File 'lib/grit/submodule.rb', line 4 def id @id end |
#mode ⇒ Object (readonly)
Returns the value of attribute mode.
5 6 7 |
# File 'lib/grit/submodule.rb', line 5 def mode @mode end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/grit/submodule.rb', line 6 def name @name end |
Class Method Details
.config(repo, ref = "master") ⇒ Object
The configuration information for the given repo
+repo+ is the Repo
+ref+ is the committish (defaults to 'master')
Returns a Hash of { <path:String> => { ‘url’ => <url:String>, ‘id’ => <id:String> } } Returns {} if no .gitmodules file was found
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/grit/submodule.rb', line 52 def self.config(repo, ref = "master") commit = repo.commit(ref) blob = commit.tree/'.gitmodules' return {} unless blob lines = blob.data.gsub(/\r\n?/, "\n" ).split("\n") config = {} current = nil lines.each do |line| if line =~ /^\[submodule "(.+)"\]$/ current = $1 config[current] = {} submodule = (commit.tree/current.strip) config[current]['id'] = submodule.id if submodule elsif line =~ /^\t(\w+) = (.+)$/ config[current][$1] = $2 if $1 == 'path' submodule = (commit.tree/$2.strip) config[current]['id'] = submodule.id if submodule end else # ignore end end config end |
.create(repo, atts) ⇒ Object
Create a Submodule containing just the specified attributes
+repo+ is the Repo
+atts+ is a Hash of instance variable data
Returns Grit::Submodule (unbaked)
13 14 15 |
# File 'lib/grit/submodule.rb', line 13 def self.create(repo, atts) self.allocate.create_initialize(repo, atts) end |
Instance Method Details
#basename ⇒ Object
83 84 85 |
# File 'lib/grit/submodule.rb', line 83 def basename File.basename(name) end |
#create_initialize(repo, atts) ⇒ Object
Initializer for Submodule.create
+repo+ is the Repo
+atts+ is a Hash of instance variable data
Returns Grit::Submodule
22 23 24 25 26 27 28 |
# File 'lib/grit/submodule.rb', line 22 def create_initialize(repo, atts) @repo = repo atts.each do |k, v| instance_variable_set("@#{k}".to_sym, v) end self end |
#inspect ⇒ Object
Pretty object inspection
88 89 90 |
# File 'lib/grit/submodule.rb', line 88 def inspect %Q{#<Grit::Submodule "#{@id}">} end |
#url(ref) ⇒ Object
The url of this submodule
+ref+ is the committish that should be used to look up the url
Returns String
34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/grit/submodule.rb', line 34 def url(ref) config = self.class.config(@repo, ref) lookup = config.keys.inject({}) do |acc, key| id = config[key]['id'] acc[id] = config[key]['url'] acc end lookup[@id] end |