Module: GitHelpers::GitSubmodules

Included in:
GitDir
Defined in:
lib/git_helpers/submodules.rb

Instance Method Summary collapse

Instance Method Details

#foreach(commited: true, modified: true, untracked: true, recursive: false, &b) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/git_helpers/submodules.rb', line 3

def foreach(commited: true, modified: true, untracked: true, recursive: false, &b)
  r=[]
  st=status
  st[:paths].each do |k,v|
    sub=v[:submodule]
    if sub
      sub_commited=v[:sub_commited]
      sub_modified=v[:sub_modified]
      sub_untracked=v[:sub_untracked]
      if (commited && sub_commited or modified && sub_modified or untracked && sub_untracked)
        b.call(k, v) if b
        r << k
      end

      if recursive
        # Dir.chdir(k) do
        #   rec=GitDir.new.foreach(commited: commited, modified: modified, untracked: untracked, recursive: true, &b)
        #   r+=rec
        # end
        GitDir.new(k).with_dir do |g|
          rec=g.foreach(commited: commited, modified: modified, untracked: untracked, recursive: true, &b)
          r+=rec.map {|sub| g.reldir+sub}
        end
      end
    end
  end
  r
end