cleanup_vendor 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Gemfile.lock +7 -5
- data/cleanup_vendor.gemspec +1 -1
- data/exe/cleanup_vendor +5 -10
- data/lib/cleanup_vendor.rb +10 -47
- data/lib/cleanup_vendor/path.rb +34 -0
- data/lib/cleanup_vendor/version.rb +1 -1
- data/lib/defaults.yml +27 -53
- metadata +4 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 24cac3d82b1d43e2442215768b8537b1f09f6a5fbaf5ddcd2d7ff9956ed363c1
         | 
| 4 | 
            +
              data.tar.gz: 229cec236efa8bc3a7b8bf1bbe2fc5e1c974168aceec2420b386656f731de1b2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ed7a4eefbed3e5b8682fcf0181a47778d6292d40827ad5441820080a6c9a64c16a32798adcad3b71b316fa7cf3bc7f29d56ddd5a972ae35cca446209dbb41765
         | 
| 7 | 
            +
              data.tar.gz: 7ac1613c439b7dcf2d44a5b782612fbceb55e77702077dc30e79372094c9194e703c60fc6cc430e87083b8d6d62a384f68dbbd627b23845d7ac151d1c3f2be35
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                cleanup_vendor (0. | 
| 4 | 
            +
                cleanup_vendor (0.4.0)
         | 
| 5 5 |  | 
| 6 6 | 
             
            GEM
         | 
| 7 7 | 
             
              remote: https://rubygems.org/
         | 
| @@ -13,6 +13,7 @@ GEM | |
| 13 13 | 
             
                docile (1.3.2)
         | 
| 14 14 | 
             
                gem-release (2.1.1)
         | 
| 15 15 | 
             
                jaro_winkler (1.5.4)
         | 
| 16 | 
            +
                json (2.3.0)
         | 
| 16 17 | 
             
                method_source (0.9.2)
         | 
| 17 18 | 
             
                parallel (1.19.1)
         | 
| 18 19 | 
             
                parser (2.7.0.4)
         | 
| @@ -50,10 +51,11 @@ GEM | |
| 50 51 | 
             
                  ruby-progressbar (~> 1.7)
         | 
| 51 52 | 
             
                  unicode-display_width (>= 1.4.0, < 1.7)
         | 
| 52 53 | 
             
                ruby-progressbar (1.10.1)
         | 
| 53 | 
            -
                simplecov (0. | 
| 54 | 
            +
                simplecov (0.17.1)
         | 
| 54 55 | 
             
                  docile (~> 1.1)
         | 
| 55 | 
            -
                   | 
| 56 | 
            -
             | 
| 56 | 
            +
                  json (>= 1.8, < 3)
         | 
| 57 | 
            +
                  simplecov-html (~> 0.10.0)
         | 
| 58 | 
            +
                simplecov-html (0.10.2)
         | 
| 57 59 | 
             
                unicode-display_width (1.6.1)
         | 
| 58 60 | 
             
                yard (0.9.24)
         | 
| 59 61 |  | 
| @@ -68,7 +70,7 @@ DEPENDENCIES | |
| 68 70 | 
             
              pry-doc (~> 1.0)
         | 
| 69 71 | 
             
              rspec (~> 3.0)
         | 
| 70 72 | 
             
              rubocop (~> 0.80.1)
         | 
| 71 | 
            -
              simplecov (~> 0. | 
| 73 | 
            +
              simplecov (~> 0.17.1)
         | 
| 72 74 |  | 
| 73 75 | 
             
            BUNDLED WITH
         | 
| 74 76 | 
             
               1.17.3
         | 
    
        data/cleanup_vendor.gemspec
    CHANGED
    
    | @@ -29,5 +29,5 @@ Gem::Specification.new do |spec| | |
| 29 29 | 
             
              spec.add_development_dependency 'pry-doc', '~> 1.0'
         | 
| 30 30 | 
             
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 31 31 | 
             
              spec.add_development_dependency 'rubocop', '~> 0.80.1'
         | 
| 32 | 
            -
              spec.add_development_dependency 'simplecov', '~> 0. | 
| 32 | 
            +
              spec.add_development_dependency 'simplecov', '~> 0.17.1'
         | 
| 33 33 | 
             
            end
         | 
    
        data/exe/cleanup_vendor
    CHANGED
    
    | @@ -29,19 +29,14 @@ opt_parser = OptionParser.new do |opts| | |
| 29 29 | 
             
                options[:summary] = s
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 | 
            -
              opts.on('-d', '--directory  | 
| 32 | 
            +
              opts.on('-d', '--directory PATTERN', 'Match on directory') do |pattern|
         | 
| 33 33 | 
             
                options[:directories] ||= []
         | 
| 34 | 
            -
                options[:directories] <<  | 
| 34 | 
            +
                options[:directories] << pattern
         | 
| 35 35 | 
             
              end
         | 
| 36 36 |  | 
| 37 | 
            -
              opts.on('- | 
| 38 | 
            -
                options[: | 
| 39 | 
            -
                options[: | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
             | 
| 42 | 
            -
              opts.on('-f', '--file FILE', 'Match on these filenames') do |file|
         | 
| 43 | 
            -
                options[:filenames] ||= []
         | 
| 44 | 
            -
                options[:filenames] << file
         | 
| 37 | 
            +
              opts.on('-f', '--extension PATTERN', 'Match on file') do |pattern|
         | 
| 38 | 
            +
                options[:files] ||= []
         | 
| 39 | 
            +
                options[:files] << pattern
         | 
| 45 40 | 
             
              end
         | 
| 46 41 |  | 
| 47 42 | 
             
              opts.on_tail('-h', '--help', 'Show this message') do
         | 
    
        data/lib/cleanup_vendor.rb
    CHANGED
    
    | @@ -1,9 +1,9 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require 'pathname'
         | 
| 4 3 | 
             
            require 'yaml'
         | 
| 5 4 |  | 
| 6 5 | 
             
            require 'cleanup_vendor/version'
         | 
| 6 | 
            +
            require 'cleanup_vendor/path'
         | 
| 7 7 |  | 
| 8 8 | 
             
            module CleanupVendor
         | 
| 9 9 | 
             
              class Error < StandardError; end
         | 
| @@ -16,7 +16,7 @@ module CleanupVendor | |
| 16 16 | 
             
                  summary = []
         | 
| 17 17 |  | 
| 18 18 | 
             
                  filter(dir, DEFAULTS.merge(opts)) do |p|
         | 
| 19 | 
            -
                    summary <<  | 
| 19 | 
            +
                    summary << p.summary if opts[:summary]
         | 
| 20 20 |  | 
| 21 21 | 
             
                    print_verbose(p) if opts[:verbose]
         | 
| 22 22 | 
             
                    print_path(p) if opts[:print0]
         | 
| @@ -27,72 +27,35 @@ module CleanupVendor | |
| 27 27 | 
             
                  print_summary(summary) if opts[:summary]
         | 
| 28 28 | 
             
                end
         | 
| 29 29 |  | 
| 30 | 
            +
                # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
         | 
| 30 31 | 
             
                def filter(dir, opts = {})
         | 
| 31 32 | 
             
                  raise Error, 'Not a directory' unless File.directory?(dir.to_s)
         | 
| 32 33 | 
             
                  return to_enum(:filter, dir, opts) unless block_given?
         | 
| 33 34 |  | 
| 34 | 
            -
                   | 
| 35 | 
            -
                  filtered = Set.new
         | 
| 35 | 
            +
                  files, directories, filtered = get_options(opts)
         | 
| 36 36 |  | 
| 37 | 
            -
                   | 
| 38 | 
            -
                    next if  | 
| 39 | 
            -
                    next unless  | 
| 37 | 
            +
                  Path.new(dir).recursive_entries do |path|
         | 
| 38 | 
            +
                    next if path.include?(filtered)
         | 
| 39 | 
            +
                    next unless path.file? && path.match?(files) || path.directory? && path.match?(directories)
         | 
| 40 40 |  | 
| 41 41 | 
             
                    filtered << path
         | 
| 42 42 | 
             
                    yield(path)
         | 
| 43 43 | 
             
                  end
         | 
| 44 44 | 
             
                end
         | 
| 45 | 
            -
             | 
| 46 | 
            -
                def skip_path?(path, filtered)
         | 
| 47 | 
            -
                  path.basename.to_s == '.' || path.descend.any? { |p| filtered.include?(p) }
         | 
| 48 | 
            -
                end
         | 
| 49 | 
            -
                private :skip_path?
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                def match_file?(path, filenames: [], extensions: [])
         | 
| 52 | 
            -
                  return unless path.file?
         | 
| 53 | 
            -
             | 
| 54 | 
            -
                  filenames.include?(path.basename.to_s) || extensions.include?(path.extname.delete('.'))
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
                private :match_file?
         | 
| 57 | 
            -
             | 
| 58 | 
            -
                def match_directory?(path, directories: [], top_level_directories: [])
         | 
| 59 | 
            -
                  return unless path.directory?
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                  basename = path.basename.to_s
         | 
| 62 | 
            -
                  directories.include?(basename) || top_level_directories.include?(basename) && path.parent.glob('*.gemspec').any?
         | 
| 63 | 
            -
                end
         | 
| 64 | 
            -
                private :match_directory?
         | 
| 45 | 
            +
                # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
         | 
| 65 46 |  | 
| 66 47 | 
             
                def get_options(options)
         | 
| 67 | 
            -
                   | 
| 68 | 
            -
                  dir_opts = transform_options(options, :directories, :top_level_directories)
         | 
| 69 | 
            -
                  [file_opts, dir_opts]
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
                private :get_options
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                def transform_options(options, *keys)
         | 
| 74 | 
            -
                  options.slice(*keys).transform_values do |v|
         | 
| 48 | 
            +
                  options.values_at(:files, :directories, :filtered).map do |v|
         | 
| 75 49 | 
             
                    (v || []).to_set
         | 
| 76 50 | 
             
                  end
         | 
| 77 51 | 
             
                end
         | 
| 78 | 
            -
                private : | 
| 79 | 
            -
             | 
| 80 | 
            -
                def dir_entries(dir, &block)
         | 
| 81 | 
            -
                  Pathname.new(dir).glob('**/*', File::FNM_DOTMATCH, &block)
         | 
| 82 | 
            -
                end
         | 
| 83 | 
            -
                private :dir_entries
         | 
| 52 | 
            +
                private :get_options
         | 
| 84 53 |  | 
| 85 54 | 
             
                def format_summary(prefix, number)
         | 
| 86 55 | 
             
                  "\t#{prefix}\t#{number.to_s.rjust(20)}"
         | 
| 87 56 | 
             
                end
         | 
| 88 57 | 
             
                private :format_summary
         | 
| 89 58 |  | 
| 90 | 
            -
                def collect_summary(path)
         | 
| 91 | 
            -
                  files = path.file? ? [path] : dir_entries(path).reject { |p| p.basename.to_s == '.' }
         | 
| 92 | 
            -
                  files.map(&:stat)
         | 
| 93 | 
            -
                end
         | 
| 94 | 
            -
                private :collect_summary
         | 
| 95 | 
            -
             | 
| 96 59 | 
             
                def print_verbose(path)
         | 
| 97 60 | 
             
                  $stderr.puts "Removing #{path}..."
         | 
| 98 61 | 
             
                end
         | 
| @@ -0,0 +1,34 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'pathname'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module CleanupVendor
         | 
| 6 | 
            +
              class Path < ::Pathname
         | 
| 7 | 
            +
                def recursive_entries
         | 
| 8 | 
            +
                  return to_enum(:recursive_entries) unless block_given?
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  glob('**/*', File::FNM_DOTMATCH) do |path|
         | 
| 11 | 
            +
                    yield(Path.new(path)) unless path == self
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
                end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def match?(patterns)
         | 
| 16 | 
            +
                  patterns.any? do |p|
         | 
| 17 | 
            +
                    p.start_with?('**') && fnmatch?(p, File::FNM_EXTGLOB) || basename.fnmatch?(p, File::FNM_EXTGLOB) && gem_level?
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def gem_level?
         | 
| 22 | 
            +
                  @gem_level ||= parent.glob('*.gemspec').any?
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                def include?(enum)
         | 
| 26 | 
            +
                  descend.any? { |p| enum.include?(p) }
         | 
| 27 | 
            +
                end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                def summary
         | 
| 30 | 
            +
                  entries = [self] + recursive_entries.to_a
         | 
| 31 | 
            +
                  entries.map(&:stat)
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
            end
         | 
    
        data/lib/defaults.yml
    CHANGED
    
    | @@ -1,54 +1,28 @@ | |
| 1 | 
            -
            extensions:
         | 
| 2 | 
            -
              - c
         | 
| 3 | 
            -
              - cpp
         | 
| 4 | 
            -
              - gcov
         | 
| 5 | 
            -
              - gem
         | 
| 6 | 
            -
              - h
         | 
| 7 | 
            -
              - hpp
         | 
| 8 | 
            -
              - java
         | 
| 9 | 
            -
              - log
         | 
| 10 | 
            -
              - markdown
         | 
| 11 | 
            -
              - md
         | 
| 12 | 
            -
              - mk
         | 
| 13 | 
            -
              - o
         | 
| 14 | 
            -
              - orig
         | 
| 15 | 
            -
              - rdoc
         | 
| 16 | 
            -
              - txt
         | 
| 17 | 
            -
            filenames:
         | 
| 18 | 
            -
              - .DS_Store
         | 
| 19 | 
            -
              - .appveyor.yml
         | 
| 20 | 
            -
              - .byebug_history
         | 
| 21 | 
            -
              - .codeclimate.yml
         | 
| 22 | 
            -
              - .dockerignore
         | 
| 23 | 
            -
              - .gitignore
         | 
| 24 | 
            -
              - .gitkeep
         | 
| 25 | 
            -
              - .gitmodules
         | 
| 26 | 
            -
              - .hound.yml
         | 
| 27 | 
            -
              - .keep
         | 
| 28 | 
            -
              - .npmignore
         | 
| 29 | 
            -
              - .rspec
         | 
| 30 | 
            -
              - .rspec_status
         | 
| 31 | 
            -
              - .rubocop.yml
         | 
| 32 | 
            -
              - .ruby-gemset
         | 
| 33 | 
            -
              - .ruby-version
         | 
| 34 | 
            -
              - .rvmrc
         | 
| 35 | 
            -
              - .travis.yml
         | 
| 36 | 
            -
              - .yardopts
         | 
| 37 | 
            -
              - CHANGELOG
         | 
| 38 | 
            -
              - LICENSE
         | 
| 39 | 
            -
              - MIT-LICENSE
         | 
| 40 | 
            -
              - Makefile
         | 
| 41 | 
            -
              - NEWS
         | 
| 42 | 
            -
              - README
         | 
| 43 | 
            -
              - TAGS
         | 
| 44 | 
            -
              - TODO
         | 
| 45 | 
            -
              - gem_make.out
         | 
| 46 | 
            -
            top_level_directories:
         | 
| 47 | 
            -
              - spec
         | 
| 48 1 | 
             
            directories:
         | 
| 49 | 
            -
              -  | 
| 50 | 
            -
              -  | 
| 51 | 
            -
              -  | 
| 52 | 
            -
              -  | 
| 53 | 
            -
              -  | 
| 54 | 
            -
              -  | 
| 2 | 
            +
              - "spec"
         | 
| 3 | 
            +
              - "coverage"
         | 
| 4 | 
            +
              - "**/.circleci"
         | 
| 5 | 
            +
              - "**/.config"
         | 
| 6 | 
            +
              - "**/.{git,github}"
         | 
| 7 | 
            +
              - "**/.idea"
         | 
| 8 | 
            +
              - "**/.{npm,yarn}"
         | 
| 9 | 
            +
              - "**/.yardoc"
         | 
| 10 | 
            +
            files:
         | 
| 11 | 
            +
              - "**/.DS_Store"
         | 
| 12 | 
            +
              - "**/*.{c,cpp,h,hpp,java,log,markdown,md,mk,o,orig,rdoc,txt}"
         | 
| 13 | 
            +
              - "**/gem_make.out"
         | 
| 14 | 
            +
              - "**/Makefile"
         | 
| 15 | 
            +
              - "**/TAGS"
         | 
| 16 | 
            +
              - "**/*.{gcov,gem}"
         | 
| 17 | 
            +
              - "**/*.{log,markdown,md,rdoc,txt,yardopts}"
         | 
| 18 | 
            +
              - "**/*.{bak,orig}"
         | 
| 19 | 
            +
              - "**/{CHANGELOG,LICENSE,MIT-LICENSE,NEWS,README,TODO}"
         | 
| 20 | 
            +
              - "**/.{gitkeep,gitignore,gitmodules}"
         | 
| 21 | 
            +
              - "**/.keep"
         | 
| 22 | 
            +
              - "**/{Dockerfile,.dockerignore}"
         | 
| 23 | 
            +
              - "**/.{appveyor,codeclimate,hound,travis}.yml"
         | 
| 24 | 
            +
              - "**/.{ruby-gemset,ruby-version,rvm}"
         | 
| 25 | 
            +
              - "**/.{rspec,rspec_status}"
         | 
| 26 | 
            +
              - "**/.npmignore"
         | 
| 27 | 
            +
              - "**/.rubocop.yml"
         | 
| 28 | 
            +
              - "**/.byebug_history"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: cleanup_vendor
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - KARASZI István
         | 
| @@ -100,14 +100,14 @@ dependencies: | |
| 100 100 | 
             
                requirements:
         | 
| 101 101 | 
             
                - - "~>"
         | 
| 102 102 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: 0. | 
| 103 | 
            +
                    version: 0.17.1
         | 
| 104 104 | 
             
              type: :development
         | 
| 105 105 | 
             
              prerelease: false
         | 
| 106 106 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 107 | 
             
                requirements:
         | 
| 108 108 | 
             
                - - "~>"
         | 
| 109 109 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: 0. | 
| 110 | 
            +
                    version: 0.17.1
         | 
| 111 111 | 
             
            description: Removes unnecessary files which are not required in production environment.
         | 
| 112 112 | 
             
            email:
         | 
| 113 113 | 
             
            - github@spam.raszi.hu
         | 
| @@ -129,6 +129,7 @@ files: | |
| 129 129 | 
             
            - cleanup_vendor.gemspec
         | 
| 130 130 | 
             
            - exe/cleanup_vendor
         | 
| 131 131 | 
             
            - lib/cleanup_vendor.rb
         | 
| 132 | 
            +
            - lib/cleanup_vendor/path.rb
         | 
| 132 133 | 
             
            - lib/cleanup_vendor/version.rb
         | 
| 133 134 | 
             
            - lib/defaults.yml
         | 
| 134 135 | 
             
            homepage: https://github.com/raszi/cleanup_vendor
         |