@@ -55,6 +55,7 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/pdf/.*_extension\.pdf} => proc { |tname|
5555 config_name = Pathname . new ( tname ) . relative_path_from ( "#{ $root} /gen/ext_pdf_doc" ) . to_s . split ( "/" ) [ 0 ]
5656 ext_name = Pathname . new ( tname ) . basename ( ".pdf" ) . to_s . split ( "_" ) [ 0 ..-2 ] . join ( "_" )
5757 [
58+ ENV [ "THEME" ] ,
5859 "#{ $root} /ext/docs-resources/themes/riscv-pdf.yml" ,
5960 "#{ $root} /gen/ext_pdf_doc/#{ config_name } /adoc/#{ ext_name } _extension.adoc"
6061 ]
@@ -70,7 +71,7 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/pdf/.*_extension\.pdf} => proc { |tname|
7071 "-v" ,
7172 "-a toc" ,
7273 "-a compress" ,
73- "-a pdf-theme=#{ $root } /ext/docs-resources/themes/riscv-pdf.yml " ,
74+ "-a pdf-theme=#{ ENV [ 'THEME' ] } " ,
7475 "-a pdf-fontsdir=#{ $root} /ext/docs-resources/fonts" ,
7576 "-a imagesdir=#{ $root} /ext/docs-resources/images" ,
7677 "-r asciidoctor-diagram" ,
@@ -128,7 +129,7 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/adoc/.*_extension\.adoc} => proc { |tname|
128129} do |t |
129130 config_name = Pathname . new ( t . name ) . relative_path_from ( "#{ $root} /gen/ext_pdf_doc" ) . to_s . split ( "/" ) [ 0 ]
130131
131- cfg_arch = cfg_arch_for ( "_" )
132+ cfg_arch = cfg_arch_for ( config_name )
132133
133134 ext_name = Pathname . new ( t . name ) . basename ( ".adoc" ) . to_s . split ( "_" ) [ 0 ..-2 ] . join ( "_" )
134135
@@ -143,11 +144,13 @@ rule %r{#{$root}/gen/ext_pdf_doc/.*/adoc/.*_extension\.adoc} => proc { |tname|
143144 ext . versions
144145 else
145146 vs = ext . versions . select do |ext_ver |
146- version_strs . include? ( ext_ver . version_spec . to_s )
147+ version_strs . any? { | v | v != "latest" && ext_ver . version_spec == VersionSpec . new ( v ) }
147148 end
148149 vs << ext . max_version if version_strs . include? ( "latest" )
149150 vs . uniq
150151 end
152+ raise "No version matches #{ ENV [ 'VERSION' ] } " if versions . empty?
153+
151154 max_version = versions . max { |a , b | a . version <=> b . version }
152155 FileUtils . mkdir_p File . dirname ( t . name )
153156 File . write t . name , AsciidocUtils . resolve_links ( cfg_arch . find_replace_links ( erb . result ( binding ) ) )
@@ -164,29 +167,36 @@ namespace :gen do
164167 * EXT - The extension name
165168 * CFG - The config name, required only when an overlay is required
166169 * VERSION - A list of versions to include. May also be "all" or "latest".
170+ * THEME - path to an AsciidocPDF theme file. If not set, will use default RVI theme.
167171
168172 Examples:
169173
170- ./do gen:ext_pdf EXT=Xqci CFG=qc_iu VERSION=latest
174+ ./do gen:ext_pdf EXT=Xqci CFG=qc_iu VERSION=latest THEME=cfgs/qc_iu/qc_theme.yaml
171175 ./do gen:ext_pdf EXT=B VERSION=all
172176 ./do gen:ext_pdf EXT=B VERSION=1.0.0
173177 ./do gen:ext_pdf EXT=B VERSION=1.0.0,1.1.0
174178
175179 DESC
176- task :ext_pdf , [ :extension ] do | _t , args |
180+ task :ext_pdf do
177181 raise ArgumentError , "Missing required argument EXT" if ENV [ "EXT" ] . nil?
178182
179183 extension = ENV [ "EXT" ]
180184 cfg = ENV [ "CFG" ]
181185 version = ENV [ "VERSION" ]
186+ ENV [ "THEME" ] =
187+ if ENV [ "THEME" ] . nil?
188+ "#{ $root} /ext/docs-resources/themes/riscv-pdf.yml"
189+ else
190+ Pathname . new ( ENV [ "THEME" ] ) . realpath . to_s
191+ end
182192
183193 versions = version . split ( "," )
184194 raise ArgumentError , "Nothing else should be specified with 'all'" if versions . include? ( "all" ) && versions . size > 1
185195
186196 if cfg . nil?
187197 Rake ::Task [ $root / "gen" / "ext_pdf_doc" / "_" / "pdf" / "#{ extension } _extension.pdf" ] . invoke
188198 else
189- Rake ::Task [ $root / "gen" / "ext_pdf_doc" / cfg / "pdf" / "#{ extension } _extension.pdf" ] . invoke ( args )
199+ Rake ::Task [ $root / "gen" / "ext_pdf_doc" / cfg / "pdf" / "#{ extension } _extension.pdf" ] . invoke
190200 end
191201 end
192202
0 commit comments