Class: UdbGen::GenExtPdfOptions
- Inherits:
-
SubcommandWithCommonOptions
- Object
- Subcommand
- SubcommandWithCommonOptions
- UdbGen::GenExtPdfOptions
- Includes:
- TTY::Exit, AdocHelpers, ExtDocHelpers, TemplateHelpers
- Defined in:
- lib/udb-gen/generators/ext_doc/generator.rb
Constant Summary collapse
- NAME =
"ext-doc"
Constants included from TemplateHelpers
Instance Attribute Summary
Attributes inherited from Subcommand
Instance Method Summary collapse
- #basename ⇒ Object
- #gen_adoc ⇒ Object
- #gen_pdf ⇒ Object
-
#initialize ⇒ GenExtPdfOptions
constructor
A new instance of GenExtPdfOptions.
- #run(argv) ⇒ Object
Methods included from AdocHelpers
#state_preamble_adoc, #state_revmark
Methods included from ExtDocHelpers
#all_versions, #company_name, #copyright_year, #doc_license_name, #doc_license_url, #revdate, #riscv_branded?, #sorted_contributors
Methods included from TemplateHelpers
#anchor_for, #convert_monospace_to_links, #link_name, #link_to, #partial, #resolve_intermediate_links
Methods inherited from SubcommandWithCommonOptions
#cfg_arch, #resolve_cfg_arg, #resolver
Constructor Details
#initialize ⇒ GenExtPdfOptions
Returns a new instance of GenExtPdfOptions.
26 27 28 |
# File 'lib/udb-gen/generators/ext_doc/generator.rb', line 26 def initialize super(name: NAME, desc: "Create documentation for an extension") end |
Instance Method Details
#basename ⇒ Object
129 130 131 |
# File 'lib/udb-gen/generators/ext_doc/generator.rb', line 129 def basename params[:output_basename].nil? ? params[:extension][0] : params[:output_basename] end |
#gen_adoc ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
# File 'lib/udb-gen/generators/ext_doc/generator.rb', line 133 def gen_adoc ext_reqs = T.let([], T::Array[Udb::ExtensionRequirement]) Udb.log_level = Udb::LogLevel.deserialize(params[:debug]) params[:extension].each do |ext_req_str| ext_name, req = ext_req_str.split("@") ext = cfg_arch.extension(ext_name) exit_with(:data_err, "No extension named '#{ext_name}'\n") if ext.nil? req = case req when nil ">=0" when "latest" "=#{T.must(ext).versions.max}" else "=#{req}" end ext_reqs << cfg_arch.extension_requirement(ext_name, req) end primary_ext = ext_reqs.fetch(0).extension max_version = ext_reqs.fetch(0)..max template_path = Pathname.new(Gem.loaded_specs["udb-gen"].full_gem_path) / "templates" / "ext_doc" / "ext_pdf.adoc.erb" gen_filename = params[:output_dir] / "#{basename}.adoc" erb = ERB.new(template_path.read, trim_mode: "-") erb.filename = template_path.to_s FileUtils.mkdir_p params[:output_dir] File.write gen_filename, resolve_intermediate_links(cfg_arch, convert_monospace_to_links(cfg_arch, erb.result(binding))) end |
#gen_pdf ⇒ Object
167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
# File 'lib/udb-gen/generators/ext_doc/generator.rb', line 167 def gen_pdf gen_adoc adoc_filename = params[:output_dir] / "#{basename}.adoc" pdf_filename = params[:output_dir] / "#{basename}.pdf" Udb.logger.info "Running asciidoctor-pdf" cmd = [ "asciidoctor-pdf", "-w", "-v", "-a toc", "-a compress", "-a pdf-theme=#{params[:theme]}", "-a pdf-fontsdir=#{params[:fonts]}", "-a imagesdir=#{params[:images]}", "-r asciidoctor-diagram", "-r idl_highlighter", "-a wavedrom=#{Udb.repo_root}/node_modules/.bin/wavedrom-cli", "-o #{pdf_filename}", adoc_filename ].join(" ") Udb.logger.debug cmd system cmd puts "SUCCESS! Wrote result to #{pdf_filename}" end |
#run(argv) ⇒ Object
197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 |
# File 'lib/udb-gen/generators/ext_doc/generator.rb', line 197 def run(argv) parse(argv) if params[:help] print help exit_with(:success) end if params.errors.any? exit_with(:usage_error, "#{params.errors.summary}\n\n#{help}") end unless params.remaining.empty? exit_with(:usage_error, "Unknown arguments: #{params.remaining}\n") end gen_pdf exit_with(:success) end |