Sha256: 6a90ddc7d75cc446a0dc23e66271288a90996908ea02d2593e95cae5b5c68f47

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

module Md2site
  require "yaml"

  class StatusFile
    attr_accessor :baseurl, :fname, :fpath, :last_datetime, :last_contents_path, :path

    def initialize(path, baseurl, mes)
      @path = path
      @baseurl = baseurl
      @mes = mes

      mes.add_exitcode("EXIT_CODE_CANNOT_ANALYZE_YAMLFILE")
      mes.add_exitcode("EXIT_CODE_CANNOT_DUMP_TO_YAML")

      content = get_statusfile(@path)

      if content && !content.strip.empty?
        obj = Filex::Filex.load_yaml(content, @mes)
        @baseurl = obj[:baseurl]
        @fname = obj[:fname]
        @fpath = obj[:path]
        @last_datetime = obj[:last_datetime]
        @last_contents_path = obj[:last_contents_path]
      else
        @baseurl = @baseurl
        @fname = nil
        @fpath = nil
        @last_datetime = nil
        @last_contents_path = nil
      end
    end

    def output(path, content)
      File.open(path, "w") do |ofile|
        ofile.puts(content)
        ofile.flush
      end
    end

    def update
      hs = { baseurl: @baseurl, fname: @fname, path: @fpath, last_datetime: @last_datetime, last_contents_path: @last_contents_path }
      begin
        content = YAML.dump(hs)
      rescue Error => e
        @mes.output_exception(e)
        exit(@mes.ec("EXIT_CODE_CANNOT_DUMP_TO_YAML"))
      end

      return unless content

      @mes.exc_file_write(@path) { output(@path, content) }
    end

    def get_statusfile(path)
      unless path
        raise
      end

      content = nil
      if File.exist?(path)
        @mes.exc_file_read(path) { content = File.read(path) }
      end
      content
    end

    def pint
      @mes.output_info("baseurl=#{@baseurl}")
      @mes.output_info("fname=#{@fname}")
      @mes.output_info("fpath=#{@fpath}")
      @mes.output_info("last_datetime=#{@last_datetime}")
      @mes.output_info("last_contents_path=#{@last_contents_path}")
      @mes.output_info("path=#{@path}")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
md2site-0.1.2 lib/md2site/statusfile.rb