Sha256: aee0c061c4a138c5e7e6e4ab7217d75168aa1e556cddff5d1378c411a74a89ad

Contents?: true

Size: 1.18 KB

Versions: 53

Compression:

Stored size: 1.18 KB

Contents

module CC
  module Analyzer
    class Filesystem

      def initialize(root)
        @root = root
      end

      def exist?(path)
        File.exist?(path_for(path))
      end

      def source_buffer_for(path)
        SourceBuffer.new(path, read_path(path))
      end

      def read_path(path)
        File.read(path_for(path))
      end

      def write_path(path, content)
        File.write(path_for(path), content)
        File.chown(root_uid, root_gid, path_for(path))
      end

      def any?(&block)
        file_paths.any?(&block)
      end

      def files_matching(globs)
        Dir.chdir(@root) do
          globs.map do |glob|
            Dir.glob(glob)
          end.flatten.sort.uniq
        end
      end

      private

      def file_paths
        @file_paths ||= Dir.chdir(@root) do
          `find . -type f -print0`.strip.split("\0").map do |path|
            path.sub(/^\.\//, "")
          end
        end
      end

      def path_for(path)
        File.join(@root, path)
      end

      def root_uid
        root_stat.uid
      end

      def root_gid
        root_stat.gid
      end

      def root_stat
        @root_stat ||= File.stat(@root)
      end
    end
  end
end

Version data entries

53 entries across 53 versions & 1 rubygems

Version Path
codeclimate-0.9.7 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.6 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.5 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.4 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.3 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.2 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.1 lib/cc/analyzer/filesystem.rb
codeclimate-0.9.0 lib/cc/analyzer/filesystem.rb
codeclimate-0.8.1 lib/cc/analyzer/filesystem.rb
codeclimate-0.8.0 lib/cc/analyzer/filesystem.rb
codeclimate-0.7.2 lib/cc/analyzer/filesystem.rb
codeclimate-0.7.0 lib/cc/analyzer/filesystem.rb
codeclimate-0.6.4 lib/cc/analyzer/filesystem.rb
codeclimate-0.6.3 lib/cc/analyzer/filesystem.rb
codeclimate-0.6.2 lib/cc/analyzer/filesystem.rb
codeclimate-0.6.1 lib/cc/analyzer/filesystem.rb
codeclimate-0.6.0 lib/cc/analyzer/filesystem.rb
codeclimate-0.5.0 lib/cc/analyzer/filesystem.rb
codeclimate-0.4.4 lib/cc/analyzer/filesystem.rb
codeclimate-0.4.3 lib/cc/analyzer/filesystem.rb