# frozen_string_literal: true

require 'neruda/emacs' require 'neruda/index' require 'neruda/utils' require 'neruda/org_file' require 'neruda/templater'

namespace :site do

desc 'Generates all index files'
task :index do
  index = Neruda::Index.new
  verbose = Rake::FileUtilsExt.verbose_flag
  if verbose
    index.write_all
    next
  end
  build = Thread.new do
    index.write_all(verbose: false)
  end
  Neruda::Utils.throbber(build, 'Generating indexes:')
  next if index.empty?
  Neruda::Config.write_org_lisp_config(with_tags: true)
end

desc 'Convert and customize all org files'
task :build, [:force?] => ['org-config.el', :index] do |_, args|
  args.with_defaults(:force? => false)
  build_html = Thread.new do
    rm_r 'tmp/timestamps', force: true if args[:force?]
    Neruda::Emacs.new(verbose: Rake::FileUtilsExt.verbose_flag).publish
  end
  begin
    Neruda::Utils.throbber(build_html, 'Building:')
  # :nocov:
  rescue RuntimeError
    warn 'Aborting'
    next
  end
  # :nocov:
  customize_html = Thread.new do
    pubfolder = Neruda::Config.settings['public_folder']
    Dir["#{pubfolder}/**/*.html"].each do |f|
      Neruda::Templater.customize_output(f)
    end
  end
  Neruda::Utils.throbber(customize_html, 'Customizing:')
end

desc 'Start a test server'
task :preview do
  require 'neruda/preview'
  Neruda.start_preview
end

end