astrails/safe

View on GitHub
lib/astrails/safe/source.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Astrails
  module Safe
    class Source < Stream

      attr_accessor :id
      def initialize(id, config)
        @id, @config = id.to_s, config
      end

      def timestamp
        Time.now.strftime("%y%m%d-%H%M")
      end

      def kind
        self.class.human_name
      end

      def filename
        @filename ||= expand(":kind-:id.:timestamp")
      end

      def backup
        return @backup if @backup
        @backup = Backup.new(
          :id        => @id,
          :kind      => kind,
          :extension => extension,
          :command   => command,
          :timestamp => timestamp
        )
        # can't do this in the initializer hash above since
        # filename() calls expand() which requires @backup
        # FIXME: move expansion to the backup (last step in ctor) assign :tags here
        @backup.filename = filename
        @backup
      end

      protected

      def self.human_name
        name.split('::').last.downcase
      end

    end
  end
end