module EacLauncher module Git class Base < ::EacLauncher::Path module Subrepo def subrepo_status(subrepo_path) s = execute!('subrepo', 'status', subrepo_path.gsub(%r{\A/}, '')) raise s.strip.to_s if s.include?('is not a subrepo') r = subrepo_status_parse_output(s) raise "Empty subrepo status for |#{s}|\n" unless r.any? r end private def subrepo_status_parse_output(s) r = {}.with_indifferent_access s.each_line do |l| m = /\A([^\:]+)\:(.*)\z/.match(l.strip) next unless m && m[2].present? r[m[1].strip] = m[2].strip end r end end end end end