Sha256: 14708b0a6d1a19e2eba222cf7691859bf01f6dba0d982906ed39ac09f0163f65

Contents?: true

Size: 1.5 KB

Versions: 17

Compression:

Stored size: 1.5 KB

Contents

module Inch
  class Config
    # Stores the configuration for an individual single codebase
    class Codebase
      attr_reader :included_files
      attr_reader :excluded_files

      YAML_FILE = ".inch.yml"

      def initialize(included = nil, excluded = nil)
        @included_files = included || []
        @excluded_files = excluded || []
      end

      # Returns the contents of +dir+/.inch.yml, if present.
      # Returns nil otherwise.
      #
      # @param dir [String]
      # @return [Hash,nil]
      def self.yaml(dir)
        yaml_file = File.join(dir, YAML_FILE)
        YAML.load(File.read(yaml_file)) if File.exist?(yaml_file)
      end

      def update(&block)
        instance_eval(&block)
      end

      def update_via_yaml(dir)
        if yaml = self.class.yaml(dir)
          Dir.chdir(dir) do
            update_files yaml["files"]
          end
        end
      end

      def include_files(*files)
        @included_files.concat(files).flatten!
      end

      def exclude_files(*files)
        @excluded_files.concat(files).flatten!
      end

      private

      def expand_files(files)
        files.map do |f|
          case f
          when String
            f =~ /[\*\{]/ ? Dir[f] : f
          else
            f
          end
        end.flatten
      end

      def update_files(files)
        return if files.nil?
        include_files expand_files(files["included"]) if files["included"]
        exclude_files expand_files(files["excluded"]) if files["excluded"]
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
inch-0.5.0.rc3 lib/inch/config/codebase.rb
inch-0.5.0.rc2 lib/inch/config/codebase.rb
inch-0.5.0.rc1 lib/inch/config/codebase.rb
inch-0.4.6 lib/inch/config/codebase.rb
inch-0.4.5 lib/inch/config/codebase.rb
inch-0.4.4 lib/inch/config/codebase.rb
inch-0.4.4.rc4 lib/inch/config/codebase.rb
inch-0.4.4.rc3 lib/inch/config/codebase.rb
inch-0.4.4.rc2 lib/inch/config/codebase.rb
inch-0.4.4.rc1 lib/inch/config/codebase.rb
inch-0.4.3 lib/inch/config/codebase.rb
inch-0.4.3.rc2 lib/inch/config/codebase.rb
inch-0.4.3.rc1 lib/inch/config/codebase.rb
inch-0.4.2 lib/inch/config/codebase.rb
inch-0.4.1 lib/inch/config/codebase.rb
inch-0.4.0 lib/inch/config/codebase.rb
inch-0.4.0.rc3 lib/inch/config/codebase.rb