+
+ # Register URLs for git-annex keys
+ unless (uribase = ENV['ANNEX_URI_BASE'].to_s.chomp("/")).empty?
+ Open3.popen2("git", "-c", "core.bare=false", "annex", "registerurl") do
+ |stdin, stdout, result|
+ @items.each do |item|
+ next if item.raw_filename.nil?
+
+ l = File.readlink(item.raw_filename)
+ next unless l =~ %r{/annex/objects/}
+
+ key = File.basename(l)
+
+ # Find output reps corresponding to this key, if any
+ item.reps.each do |rep|
+ next unless
+ FileUtils.identical?(item.raw_filename, rep.raw_path)
+
+ loop do
+ STDOUT.write(stdout.read_nonblock(100))
+ rescue EOFError, IO::WaitReadable
+ break
+ end
+
+ stdin.printf("%s %s%s\n", key, uribase, rep.path)
+ end
+ rescue Errno::EINVAL
+ end
+
+ stdin.close
+ loop do
+ STDOUT.write(stdout.readpartial(100))
+ rescue EOFError
+ break
+ end
+
+ unless (rc = result.value).success?
+ printf("git annex registerurl failed: %s\n", rc.to_s)
+ end
+ end
+ end
+end
+
+compile '/**/index.lst' do
+ layout '/listing.erb'
+ layout '/default.xml'
+ layout '/default.xsl'
+ filter :relativize_paths, type: :xml
+ filter :xhtml_compat
+ filter :remove_wj
+ write item.identifier.without_ext + ".xhtml"