Sha256: bbedf658e33fb8ab906528eaa758ed7c5371b48d061f98e28ae3966735366159

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

# encoding: utf-8
require 'fedux_org_stdlib/require_files'
require_library %w{ fileutils launchy }

require 'fedux_org_stdlib/logging/logger'
require 'fedux_org_stdlib/project/logger'
require 'fedux_org_stdlib/project/generators/taskjuggler'


module FeduxOrgStdlib
  module Project
    class Report

      attr_reader :directory, :file

      private

      attr_reader :output_file, :plan, :output_directory, :generator

      public

      def initialize(
        plan:, 
        output_file:,
        generator: FeduxOrgStdlib::Project::Generators::Taskjuggler.new
      )
        @plan             = plan
        @output_directory = File.dirname(output_file)
        @output_file      = output_file
        @generator        = generator
      end

      def generate
        prepare_environment

        if output_file_does_not_exist? or plan_is_newer_than_output_file?
          generator.generate_report(output_directory, plan) 
        else
          FeduxOrgStdlib::Project.logger.warn "No need to re-generate report. The plan file \"#{plan.to_s}\" is NOT newer than output \"#{@output_file}\"."
        end
      end

      def open
        Launchy.open(output_file)
      end

      private

      def prepare_environment
        FileUtils.mkdir_p output_directory
      end

      def output_file_does_not_exist?
        !File.exists? output_file
      end

      def plan_is_newer_than_output_file?
        plan.needs_to_be_compiled? output_file
      end
    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fedux_org-stdlib-0.6.5 lib/fedux_org_stdlib/project/report.rb
fedux_org-stdlib-0.6.4 lib/fedux_org_stdlib/project/report.rb
fedux_org-stdlib-0.6.3 lib/fedux_org_stdlib/project/report.rb