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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8cd69188501d192b24e691c1e39f4f234ddaafe83d438563c866fb23c0cc9d14
4
- data.tar.gz: 3adda87794ca9d802fb13d30cb084eba8d8320fb6653b75f21e85c3350f8178f
3
+ metadata.gz: 24cac3d82b1d43e2442215768b8537b1f09f6a5fbaf5ddcd2d7ff9956ed363c1
4
+ data.tar.gz: 229cec236efa8bc3a7b8bf1bbe2fc5e1c974168aceec2420b386656f731de1b2
5
5
  SHA512:
6
- metadata.gz: ebbf384b886c6c981f46493a7e34a4b99aeb9d1d56a1c0b28ee40ea93778365d30a9b49fbf562745c9f96629f22f54434c7eb5726fd77480b3aa754e113f4e76
7
- data.tar.gz: 287c969e76e59265d4edba74c5ddeaf46016832e444eeab66248aa27dfe637cc4e7132390deeb6e536e8a1a876b4c291c7bbda77f946b7662b1103247eeb63a8
6
+ metadata.gz: ed7a4eefbed3e5b8682fcf0181a47778d6292d40827ad5441820080a6c9a64c16a32798adcad3b71b316fa7cf3bc7f29d56ddd5a972ae35cca446209dbb41765
7
+ data.tar.gz: 7ac1613c439b7dcf2d44a5b782612fbceb55e77702077dc30e79372094c9194e703c60fc6cc430e87083b8d6d62a384f68dbbd627b23845d7ac151d1c3f2be35
@@ -17,4 +17,4 @@ script:
17
17
  - bundle exec rspec
18
18
  - bundle exec rubocop
19
19
  after_script:
20
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
20
+ - ./cc-test-reporter after-build --debug --exit-code $TRAVIS_TEST_RESULT
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cleanup_vendor (0.3.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.18.5)
54
+ simplecov (0.17.1)
54
55
  docile (~> 1.1)
55
- simplecov-html (~> 0.11)
56
- simplecov-html (0.12.2)
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.18.5)
73
+ simplecov (~> 0.17.1)
72
74
 
73
75
  BUNDLED WITH
74
76
  1.17.3
@@ -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.18.5'
32
+ spec.add_development_dependency 'simplecov', '~> 0.17.1'
33
33
  end
@@ -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 DIR', 'Match on this directory') do |dir|
32
+ opts.on('-d', '--directory PATTERN', 'Match on directory') do |pattern|
33
33
  options[:directories] ||= []
34
- options[:directories] << dir
34
+ options[:directories] << pattern
35
35
  end
36
36
 
37
- opts.on('-x', '--extension EXT', 'Match on extension') do |ext|
38
- options[:extensions] ||= []
39
- options[:extensions] << ext
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
@@ -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 << collect_summary(p) if opts[: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
- file_opts, dir_opts = get_options(opts)
35
- filtered = Set.new
35
+ files, directories, filtered = get_options(opts)
36
36
 
37
- dir_entries(dir) do |path|
38
- next if skip_path?(path, filtered)
39
- next unless match_file?(path, file_opts) || match_directory?(path, dir_opts)
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
- file_opts = transform_options(options, :filenames, :extensions)
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 :transform_options
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CleanupVendor
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -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
- - .circleci
50
- - .config
51
- - .git
52
- - .github
53
- - .idea
54
- - .yardoc
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.3.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.18.5
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.18.5
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