puts "[params]" puts " [params.submoduleLinks]" def each_submodule(base_path) `cd #{base_path} && git submodule status`.lines do |line| hash, path = line[1..].split " " full_path = "#{base_path}/#{path}" url = `git config --file #{base_path}/.gitmodules --get 'submodule.#{path}.url'`.chomp.delete_suffix(".git") safe_name = full_path.gsub(/\/|-|_\./, "") if url =~ /dev.danilafe.com/ file_url = "#{url}/src/commit/#{hash}" else raise "Submodule URL #{url.dump} not in a known format!" end yield ({ :path => full_path, :url => file_url, :name => safe_name }) each_submodule(full_path) { |m| yield m } end end each_submodule(".") do |m| next unless m[:path].start_with? "./code/" puts " [params.submoduleLinks.#{m[:name].delete_prefix(".code")}]" puts " url = #{m[:url].dump}" puts " path = #{m[:path].delete_prefix("./code/").dump}" end