Sha256: b2d525c26f6b2dcd81e886c3a25d5292b7522e460662192f4b989e0ee6d1a9db

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

module Oxidized
  module Output
    # ruby's File class must be accessed with ::File to avoid name conflicts
    class File < Output
      require 'fileutils'

      attr_reader :commitref

      def initialize
        super
        @cfg = Oxidized.config.output.file
      end

      def setup
        return unless @cfg.empty?

        Oxidized.asetus.user.output.file.directory = ::File.join(Config::ROOT, 'configs')
        Oxidized.asetus.save :user
        raise NoConfig, "no output file config, edit #{Oxidized::Config.configfile}"
      end

      def store(node, outputs, opt = {})
        file = ::File.expand_path @cfg.directory
        file = ::File.join ::File.dirname(file), opt[:group] if opt[:group]
        FileUtils.mkdir_p file
        file = ::File.join file, node
        ::File.write(file, outputs.to_cfg)
        @commitref = file
      end

      def fetch(node, group)
        cfg_dir   = ::File.expand_path @cfg.directory
        node_name = node.name

        if group # group is explicitly defined by user
          cfg_dir = ::File.join ::File.dirname(cfg_dir), group
          ::File.read ::File.join(cfg_dir, node_name)
        elsif ::File.exist? ::File.join(cfg_dir, node_name) # node configuration file is stored on base directory
          ::File.read ::File.join(cfg_dir, node_name)
        else
          path = Dir.glob(::File.join(::File.dirname(cfg_dir), '**', node_name)).first # fetch node in all groups
          ::File.read path
        end
      rescue Errno::ENOENT
        nil
      end

      def version(_node, _group)
        # not supported
        []
      end

      def get_version(_node, _group, _oid)
        'not supported'
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oxidized-0.32.1 lib/oxidized/output/file.rb
oxidized-0.32.0 lib/oxidized/output/file.rb
oxidized-0.31.0 lib/oxidized/output/file.rb