# frozen_string_literal: true require_relative '../../tasks_utils' namespace :apipie_dsl do desc 'Generate static documentation' if ApipieDSL.configuration.rails? task :static, [:version, :include_json] => :environment do |_task, args| ApipieDSL::TasksUtils.with_loaded_documentation do args.with_defaults( version: ApipieDSL.configuration.default_version, include_json: false ) include_json = %w[1 true].include?(args[:include_json]) out = ENV['OUT'] || File.join(::Rails.root, ApipieDSL.configuration.doc_path, 'dsldoc') subdir = File.basename(out) ApipieDSL::TasksUtils.copy_jscss(out) ApipieDSL.configuration.version_in_url = false ([nil] + ApipieDSL.configuration.languages).each do |lang| I18n.locale = lang || ApipieDSL.configuration.default_locale ApipieDSL.url_prefix = "../#{subdir}" doc = ApipieDSL.docs(args[:version], nil, nil, lang) doc[:docs][:link_extension] = "#{ApipieDSL::TasksUtils.lang_ext(lang)}.html" ApipieDSL::TasksUtils.generate_one_page(out, doc, lang) ApipieDSL::TasksUtils.generate_plain_page(out, doc, lang) ApipieDSL.configuration.sections.each do |section| ApipieDSL.url_prefix = "../#{subdir}" doc = ApipieDSL.docs(args[:version], nil, nil, lang, section) doc[:docs][:link_extension] = "#{ApipieDSL::TasksUtils.lang_ext(lang)}.html" ApipieDSL::TasksUtils.generate_index_page(out, doc, include_json, false, lang, section) ApipieDSL.url_prefix = "../../#{subdir}" section_out = "#{out}/#{section}" ApipieDSL::TasksUtils.generate_class_pages(args[:version], section_out, doc, include_json, lang, section) ApipieDSL.url_prefix = "../../../#{subdir}" ApipieDSL::TasksUtils.generate_method_pages(args[:version], section_out, doc, include_json, lang, section) end ApipieDSL.url_prefix = "../#{subdir}" ApipieDSL::TasksUtils.generate_help_page(out, doc, false, lang) end end end else task :static, [:version, :include_json] do |_task, args| ApipieDSL::TasksUtils.with_loaded_documentation do args.with_defaults( version: ApipieDSL.configuration.default_version, include_json: false ) include_json = %w[1 true].include?(args[:include_json]) out = ENV['OUT'] || File.join(Rake.original_dir, ApipieDSL.configuration.doc_path, 'dsldoc') subdir = File.basename(out) ApipieDSL::TasksUtils.copy_jscss(out) ApipieDSL.configuration.version_in_url = false ([nil] + ApipieDSL.configuration.languages).each do |lang| I18n.locale = lang || ApipieDSL.configuration.default_locale ApipieDSL.url_prefix = "../#{subdir}" doc = ApipieDSL.docs(args[:version], nil, nil, lang) doc[:docs][:link_extension] = "#{ApipieDSL::TasksUtils.lang_ext(lang)}.html" ApipieDSL::TasksUtils.generate_one_page(out, doc, lang) ApipieDSL::TasksUtils.generate_plain_page(out, doc, lang) ApipieDSL.configuration.sections.each do |section| ApipieDSL.url_prefix = "../#{subdir}" doc = ApipieDSL.docs(args[:version], nil, nil, lang, section) doc[:docs][:link_extension] = "#{ApipieDSL::TasksUtils.lang_ext(lang)}.html" ApipieDSL::TasksUtils.generate_index_page(out, doc, include_json, false, lang, section) ApipieDSL.url_prefix = "../../#{subdir}" section_out = "#{out}/#{section}" ApipieDSL::TasksUtils.generate_class_pages(args[:version], section_out, doc, include_json, lang, section) ApipieDSL.url_prefix = "../../../#{subdir}" ApipieDSL::TasksUtils.generate_method_pages(args[:version], section_out, doc, include_json, lang, section) end ApipieDSL.url_prefix = "../#{subdir}" ApipieDSL::TasksUtils.generate_help_page(out, doc, false, lang) end end end end end