minicomp/wax_tasks

View on GitHub
lib/wax_tasks/site.rb

Summary

Maintainability
A
55 mins
Test Coverage
C
73%
# frozen_string_literal: true

#
module WaxTasks
  #
  class Site
    attr_reader :config

    #
    #
    def initialize(config = nil)
      @config = WaxTasks::Config.new(config || WaxTasks.config_from_file)
    end

    #
    #
    def collections
      @config.collections
    end

    #
    #
    def clobber(name)
      collection = @config.find_collection name
      raise WaxTasks::Error::InvalidCollection if collection.nil?

      collection.clobber_pages
      collection.clobber_derivatives

      @config.self.fetch('search', {}).each do |_name, search|
        next unless search.key? 'index'
        index = Utils.safe_join @config.source, search['index']
        next unless File.exist? index
        puts Rainbow("Removing search index #{index}").cyan
        FileUtils.rm index
      end

      puts Rainbow("\nDone ✔").green
    end

    #
    #
    def generate_pages(name)
      result     = 0
      collection = @config.find_collection name
      raise WaxTasks::Error::InvalidCollection if collection.nil?

      collection.records_from_metadata.each do |record|
        result += record.write_to_page(collection.page_source)
      end

      puts Rainbow("#{result} pages were generated to #{collection.page_source}.").cyan
      puts Rainbow("\nDone ✔").green
    end

    #
    #
    def generate_static_search(name)
      search_config = @config.search name
      index = WaxTasks::Index.new(search_config)

      puts Rainbow("Generating #{name} search index to #{index.path}").cyan
      index.write_to @config.source

      puts Rainbow("\nDone ✔").green
    end

    #
    #
    def generate_derivatives(name, type)
      collection = @config.find_collection name
      raise WaxTasks::Error::InvalidCollection if collection.nil?
      raise WaxTasks::Error::InvalidConfig unless %w[iiif simple].include? type

      records = case type
                when 'iiif'
                  collection.write_iiif_derivatives
                when 'simple'
                  collection.write_simple_derivatives
                end

      collection.update_metadata records
      puts Rainbow("\nDone ✔").green
    end
  end
end