@@ -32,6 +32,8 @@ task :generate do
3232 abort ( "Generating version data failed" ) unless success
3333 success = system "rake language_scores_data"
3434 abort ( "Generating language scores data failed" ) unless success
35+ success = system "rake codeowners_data"
36+ abort ( "Extracting codeowners" ) unless success
3537 success = system "jekyll build"
3638 abort ( "Generating site failed" ) unless success
3739 if ENV [ "CONTEXT" ] != 'production'
@@ -71,6 +73,7 @@ task :preview, :listen do |t, args|
7173 system "rake analytics_data"
7274 system "rake version_data"
7375 system "rake language_scores_data"
76+ system "rake codeowners_data"
7477 system "rake alerts_data"
7578 jekyllPid = Process . spawn ( { "OCTOPRESS_ENV" => "preview" } , "jekyll build -t --watch --incremental" )
7679 compassPid = Process . spawn ( "compass watch" )
@@ -128,3 +131,25 @@ task :language_scores_data do
128131 file . write ( JSON . generate ( remote_data ) )
129132 end
130133end
134+
135+ desc "Extract CODEOWNERS and output to _data/codeowners.json"
136+ task :codeowners_data do
137+ codeowners = [ ]
138+ File . readlines ( "CODEOWNERS" ) . each do |line |
139+ next if line . start_with? ( "#" ) || line . strip . empty?
140+ parts = line . split
141+ next if parts . length < 2
142+ owners = parts [ 1 ..-1 ]
143+ owners . each do |owner |
144+ owner = owner . delete_prefix ( '@' )
145+ next if owner . include? ( '/' )
146+ codeowners << owner unless codeowners . include? ( owner )
147+ end
148+ end
149+
150+ codeowners . sort!
151+
152+ File . open ( "#{ source_dir } /_data/codeowners.json" , "w" ) do |file |
153+ file . write ( JSON . generate ( codeowners ) )
154+ end
155+ end
0 commit comments