npmdc 0.3.2 → 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
  SHA1:
3
- metadata.gz: 8a56c417f7018f76df103bb2e55ffdf8a336a95e
4
- data.tar.gz: 113c029da152241b908c6f6cdc19fd860871ec1f
3
+ metadata.gz: 112fb0c5efc03f50a0870591e6f3067dbe634425
4
+ data.tar.gz: d361a763ceef587dc76fe1ef4d0c15d044e400b0
5
5
  SHA512:
6
- metadata.gz: 7b801894de357bbcdc00431b9c83530d6b9f6087feddd1db8da84a1b0d0d03ccc4d35f66f8bc61cfbb8361882e381b5ccdd89091111e056341b47899e72adb49
7
- data.tar.gz: a10d71f989b3ace2c97bc9babba12778e3a6e174c3424d90021cfa095d8881efa6703679438cb73f356a905d5f0aab1cd3d0890664a3ce32b6a3a310620c64f4
6
+ metadata.gz: f381341d64a7b6742671efb6ceea4ac9ad703620dd9bdf57b51a3495d6cd299365e505f2ba14f2c5750bc09ae7c123d011305e04985ab003d525b695b9e211fa
7
+ data.tar.gz: c4b5f138919774d106b1d4fa897c7176933dc0446c1822111b037ade6ee534584707b9cbe03916e7054a341ebe3681b9d62a626b744225235eed6a0c415fc5c3
data/CHANGELOG.md CHANGED
@@ -92,3 +92,14 @@ Thanks to @palkan !
92
92
  Thanks to @sponomarev !
93
93
 
94
94
  * Added support for environment-based configuration
95
+
96
+
97
+ ### 0.4.0
98
+
99
+ * Added support for "non-version" strings defined as packages version
100
+
101
+ * Added output warnings for unprocessable cases
102
+
103
+ Thanks to @sponomarev !
104
+
105
+ * Added `abort_on_failure` option
data/README.md CHANGED
@@ -37,11 +37,12 @@ Or install it yourself as:
37
37
 
38
38
  ```ruby
39
39
  YourApp::Application.configure do
40
- config.npmdc.path = "/path/to/your/frontend/code/dir" # `Rails.root` by default
41
- config.npmdc.format = "doc" # `short`, `doc`, `progress`. `short` by default
42
- config.npmdc.color = false # `true` by default
43
- config.npmdc.types = ["dependencies"] # `["dependencies", "devDependencies"]` by default
44
- config.npmdc.environments = ["development"] # `development` only by default
40
+ config.npmdc.path = "/path/to/your/frontend/code/dir" # `Rails.root` by default
41
+ config.npmdc.format = "doc" # `short`, `doc`, `progress`. `short` by default
42
+ config.npmdc.color = false # `true` by default
43
+ config.npmdc.types = ["dependencies"] # `["dependencies", "devDependencies"]` by default
44
+ config.npmdc.environments = ["development"] # `development` only by default
45
+ config.npmdc.abort_on_failure = true # 'false' by default
45
46
  end
46
47
  ```
47
48
 
data/lib/npmdc/checker.rb CHANGED
@@ -15,9 +15,11 @@ module Npmdc
15
15
  def initialize(options)
16
16
  @path = options.fetch('path', Npmdc.config.path)
17
17
  @types = options.fetch('types', Npmdc.config.types)
18
+ @abort_on_failure = options.fetch('abort_on_failure', Npmdc.config.abort_on_failure)
18
19
  @formatter = Npmdc::Formatter.(options)
19
20
  @dependencies_count = 0
20
21
  @missing_dependencies = Set.new
22
+ @suspicious_dependencies = Set.new
21
23
  end
22
24
 
23
25
  delegate [
@@ -26,30 +28,29 @@ module Npmdc
26
28
  ] => :formatter
27
29
 
28
30
  def call
29
- begin
30
- success = false
31
- package_json_data = package_json(path)
32
- @types.each do |dep|
33
- check_dependencies(package_json_data[dep], dep) if package_json_data[dep]
34
- end
31
+ package_json_data = package_json(path)
32
+ @types.each do |dep|
33
+ check_dependencies(package_json_data[dep], dep) if package_json_data[dep]
34
+ end
35
35
 
36
- rescue CheckerError => e
37
- error_output(e)
38
- else
39
- success = true unless !@missing_dependencies.empty?
40
- ensure
41
- if !@missing_dependencies.empty?
42
- output("Following dependencies required by your package.json file are missing or not installed properly:")
43
- @missing_dependencies.each do |dep|
44
- output(" * #{dep}")
45
- end
46
- output("\nRun `npm install` to install #{@missing_dependencies.size} missing packages.", :warn)
47
- elsif success
48
- output("Checked #{@dependencies_count} packages. Everything is ok.", :success)
49
- end
36
+ if !@missing_dependencies.empty?
37
+ raise(MissedDependencyError, dependencies: @missing_dependencies)
50
38
  end
51
39
 
52
- success
40
+ result_stats = "Checked #{@dependencies_count} packages. " +
41
+ "Warnings: #{@suspicious_dependencies.count}. " +
42
+ "Errors: #{@missing_dependencies.count}. " +
43
+ "Everything is ok."
44
+
45
+ output(result_stats, :success)
46
+
47
+ true
48
+ rescue CheckerError => e
49
+ error_output(e)
50
+
51
+ exit(1) if @abort_on_failure && e.class.critical?
52
+
53
+ false
53
54
  end
54
55
 
55
56
  private
@@ -84,7 +85,13 @@ module Npmdc
84
85
 
85
86
  deps.each_key do |dep|
86
87
  @dependencies_count += 1
87
- check_dependency(dep, deps[dep])
88
+
89
+ if SemanticRange.valid_range(deps[dep])
90
+ check_dependency(dep, deps[dep])
91
+ else
92
+ @suspicious_dependencies << "#{dep}@#{deps[dep]}"
93
+ dep_output("npmdc cannot check package '#{dep}' (#{deps[dep]})", :warn)
94
+ end
88
95
  end
89
96
 
90
97
  check_finish_output
data/lib/npmdc/config.rb CHANGED
@@ -3,7 +3,8 @@ module Npmdc
3
3
  DEPEPENDENCY_TYPES = %w(dependencies devDependencies).freeze
4
4
  ENVIRONMENTS = %w(development).freeze
5
5
 
6
- attr_accessor :color, :format, :output, :types, :environments
6
+ attr_accessor :color, :format, :output, :types, :environments,
7
+ :abort_on_failure
7
8
  attr_writer :path
8
9
 
9
10
  def initialize
@@ -12,6 +13,7 @@ module Npmdc
12
13
  @output = STDOUT
13
14
  @types = DEPEPENDENCY_TYPES
14
15
  @environments = ENVIRONMENTS
16
+ @abort_on_failure = false
15
17
  end
16
18
 
17
19
  def path
data/lib/npmdc/errors.rb CHANGED
@@ -14,10 +14,27 @@ module Npmdc
14
14
  end
15
15
  end
16
16
 
17
- class CheckerError < Error; end
18
17
  class ConfigurationError < Error; end
19
18
 
19
+ class CheckerError < Error
20
+ @critical = false
21
+
22
+ class << self
23
+ def critical?
24
+ @critical
25
+ end
26
+
27
+ private
28
+
29
+ def define_critical!
30
+ @critical = true
31
+ end
32
+ end
33
+ end
34
+
20
35
  class NoNodeModulesError < CheckerError
36
+ define_critical!
37
+
21
38
  def banner
22
39
  path = options.fetch(:path)
23
40
  [
@@ -28,6 +45,8 @@ module Npmdc
28
45
  end
29
46
 
30
47
  class WrongPathError < CheckerError
48
+ define_critical!
49
+
31
50
  def banner
32
51
  directory = options.fetch(:directory)
33
52
  "There is no '#{directory}' directory."
@@ -42,12 +61,35 @@ module Npmdc
42
61
  end
43
62
 
44
63
  class JsonParseError < CheckerError
64
+ define_critical!
65
+
45
66
  def banner
46
67
  path = options.fetch(:path)
47
68
  "Can't parse JSON file #{path}"
48
69
  end
49
70
  end
50
71
 
72
+ class MissedDependencyError < CheckerError
73
+ define_critical!
74
+
75
+ def banner
76
+ deps = options.fetch(:dependencies)
77
+
78
+ [
79
+ "Following dependencies required by your package.json file are"\
80
+ " missing or not installed properly:"
81
+ ] + msgs(deps) <<
82
+ [
83
+ "\nRun `npm install` to install #{deps.size} missing packages.", :warn
84
+ ]
85
+ end
86
+
87
+ private
88
+
89
+ def msgs(dependencies)
90
+ dependencies.map { |d| " * #{d}"}
91
+ end
92
+ end
51
93
 
52
94
  class UnknownFormatter < ConfigurationError
53
95
  def banner
@@ -9,8 +9,10 @@ module Npmdc
9
9
  @output.puts color_message(" ✓ #{dep}", status)
10
10
  when :failure
11
11
  @output.puts color_message(" ✗ #{dep}", status)
12
+ when :warn
13
+ @output.puts color_message(" ! #{dep}", status)
12
14
  end
13
15
  end
14
16
  end
15
17
  end
16
- end
18
+ end
@@ -9,6 +9,8 @@ module Npmdc
9
9
  @output.print color_message(".", status)
10
10
  when :failure
11
11
  @output.print color_message("F", status)
12
+ when :warn
13
+ @output.print color_message("W", status)
12
14
  end
13
15
  end
14
16
 
@@ -17,4 +19,4 @@ module Npmdc
17
19
  end
18
20
  end
19
21
  end
20
- end
22
+ end
data/lib/npmdc/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Npmdc
2
- VERSION = '0.3.2'
2
+ VERSION = '0.4.0'
3
3
  end
data/lib/npmdc.rb CHANGED
@@ -8,9 +8,7 @@ module Npmdc
8
8
  Npmdc::Checker.new(options).call
9
9
 
10
10
  rescue Npmdc::Errors::ConfigurationError => e
11
- Npmdc.config.output.puts e.banner
12
-
13
- false
11
+ abort(e.banner)
14
12
  end
15
13
 
16
14
  def config
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: npmdc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Kashkevich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-27 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  requirements: []
184
184
  rubyforge_project:
185
- rubygems_version: 2.4.5
185
+ rubygems_version: 2.5.1
186
186
  signing_key:
187
187
  specification_version: 4
188
188
  summary: Check for missed dependencies of NPM packages.