fastlane-plugin-lizard 1.0.1 → 1.0.2
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d021d0376a3f95325bb7091c80ddcb8212e8763b
|
4
|
+
data.tar.gz: '0830d4bd674dba3ecb576c3f1fb5f24f6b04ea6c'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 066f6e46bd86d04f569576a517ca4986edf6dfe7270067f2625fe7f3ea40bce0d25e35f8dd6bc29a319fc9b1ac3e20f3583793b6d45836b69b621cd306cc2fd3
|
7
|
+
data.tar.gz: 69cf3138e8ace4ebbf2b5f64da973ef5a752f55456c03cf65c5bd92099dfcc2c2df0872da2bf555cc8d42142b61573755adda082362c3bafac2ddd938b11343e
|
@@ -2,10 +2,14 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
class LizardAction < Action
|
4
4
|
def self.run(params)
|
5
|
-
if `which lizard`.to_s.empty?
|
5
|
+
if params[:executable].nil? && `which lizard`.to_s.empty?
|
6
6
|
UI.user_error!("You have to install lizard using `[sudo] pip install lizard` or specify the executable path with the `:executable` option.")
|
7
7
|
end
|
8
8
|
|
9
|
+
if params[:executable] && !File.exist?(params[:executable])
|
10
|
+
UI.user_error!("The custom executable at '#{params[:executable]}' does not exist.")
|
11
|
+
end
|
12
|
+
|
9
13
|
command = forming_command(params)
|
10
14
|
|
11
15
|
if params[:show_warnings]
|
@@ -24,8 +28,7 @@ module Fastlane
|
|
24
28
|
command = []
|
25
29
|
command << 'lizard' unless params[:executable]
|
26
30
|
command << "python #{params[:executable]}" if params[:executable]
|
27
|
-
command << params[:
|
28
|
-
command << "-l #{params[:language]}" if params[:language]
|
31
|
+
command << params[:language].split(",").map { |l| "-l #{l.strip}" }.join(" ") if params[:language]
|
29
32
|
command << "--#{params[:export_type]}" if params[:export_type]
|
30
33
|
command << "-C #{params[:ccn]}" if params[:ccn] # stands for cyclomatic complexity number
|
31
34
|
command << "-L #{params[:length]}" if params[:length]
|
@@ -36,6 +39,7 @@ module Fastlane
|
|
36
39
|
command << "-E #{params[:extensions]}" if params[:extensions]
|
37
40
|
command << "-s #{params[:sorting]}" if params[:sorting]
|
38
41
|
command << "-W #{params[:whitelist]}" if params[:whitelist]
|
42
|
+
command << params[:source_folder].to_s if params[:source_folder]
|
39
43
|
command << "> #{params[:report_file].shellescape}" if params[:report_file]
|
40
44
|
|
41
45
|
return command
|
@@ -81,7 +85,7 @@ module Fastlane
|
|
81
85
|
optional: true),
|
82
86
|
FastlaneCore::ConfigItem.new(key: :language,
|
83
87
|
env_name: "FL_LIZARD_LANGUAGE",
|
84
|
-
description: "List the programming languages you want to analyze",
|
88
|
+
description: "List the programming languages you want to analyze, e.g. 'swift,objectivec'",
|
85
89
|
default_value: "swift",
|
86
90
|
optional: true),
|
87
91
|
FastlaneCore::ConfigItem.new(key: :export_type,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-lizard
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Moses Liao
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- README.md
|
133
133
|
- lib/fastlane/plugin/lizard.rb
|
134
134
|
- lib/fastlane/plugin/lizard/actions/lizard_action.rb
|
135
|
-
- lib/fastlane/plugin/lizard/actions/swiftlint_example.rb
|
136
135
|
- lib/fastlane/plugin/lizard/helper/lizard_helper.rb
|
137
136
|
- lib/fastlane/plugin/lizard/version.rb
|
138
137
|
homepage: https://github.com/liaogz82/fastlane-plugin-lizard
|
@@ -1,166 +0,0 @@
|
|
1
|
-
module Fastlane
|
2
|
-
module Actions
|
3
|
-
class SwiftlintAction < Action
|
4
|
-
def self.run(params)
|
5
|
-
if `which swiftlint`.to_s.length == 0 && params[:executable].nil? && !Helper.test?
|
6
|
-
UI.user_error!("You have to install swiftlint using `brew install swiftlint` or specify the executable path with the `:executable` option.")
|
7
|
-
end
|
8
|
-
|
9
|
-
version = swiftlint_version(executable: params[:executable])
|
10
|
-
if params[:mode] == :autocorrect and version < Gem::Version.new('0.5.0') and !Helper.test?
|
11
|
-
UI.user_error!("Your version of swiftlint (#{version}) does not support autocorrect mode.\nUpdate swiftlint using `brew update && brew upgrade swiftlint`")
|
12
|
-
end
|
13
|
-
|
14
|
-
command = (params[:executable] || "swiftlint").dup
|
15
|
-
command << " #{params[:mode]}"
|
16
|
-
command << supported_option_switch(params, :strict, "0.9.2", true)
|
17
|
-
command << " --config #{params[:config_file].shellescape}" if params[:config_file]
|
18
|
-
command << " --reporter #{params[:reporter]}" if params[:reporter]
|
19
|
-
command << supported_option_switch(params, :quiet, "0.9.0", true)
|
20
|
-
|
21
|
-
if params[:files]
|
22
|
-
if version < Gem::Version.new('0.5.1')
|
23
|
-
UI.user_error!("Your version of swiftlint (#{version}) does not support list of files as input.\nUpdate swiftlint using `brew update && brew upgrade swiftlint`")
|
24
|
-
end
|
25
|
-
|
26
|
-
files = params[:files].map.with_index(0) { |f, i| "SCRIPT_INPUT_FILE_#{i}=#{f.shellescape}" }.join(" ")
|
27
|
-
command = command.prepend("SCRIPT_INPUT_FILE_COUNT=#{params[:files].count} #{files} ")
|
28
|
-
command << " --use-script-input-files"
|
29
|
-
end
|
30
|
-
|
31
|
-
command << " > #{params[:output_file].shellescape}" if params[:output_file]
|
32
|
-
|
33
|
-
begin
|
34
|
-
Actions.sh(command)
|
35
|
-
rescue
|
36
|
-
handle_swiftlint_error(params[:ignore_exit_status], $?.exitstatus)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Get current SwiftLint version
|
41
|
-
def self.swiftlint_version(executable: nil)
|
42
|
-
binary = executable || 'swiftlint'
|
43
|
-
Gem::Version.new(`#{binary} version`.chomp)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Return "--option" switch if option is on and current SwiftLint version is greater or equal than min version.
|
47
|
-
# Return "" otherwise.
|
48
|
-
def self.supported_option_switch(params, option, min_version, can_ignore = false)
|
49
|
-
return "" unless params[option]
|
50
|
-
version = swiftlint_version(executable: params[:executable])
|
51
|
-
if version < Gem::Version.new(min_version)
|
52
|
-
message = "Your version of swiftlint (#{version}) does not support '--#{option}' option.\nUpdate swiftlint to #{min_version} or above using `brew update && brew upgrade swiftlint`"
|
53
|
-
message += "\nThe option will be ignored." if can_ignore
|
54
|
-
can_ignore ? UI.important(message) : UI.user_error!(message)
|
55
|
-
""
|
56
|
-
else
|
57
|
-
" --#{option}"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
#####################################################
|
62
|
-
# @!group Documentation
|
63
|
-
#####################################################
|
64
|
-
|
65
|
-
def self.description
|
66
|
-
"Run swift code validation using Lizard"
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.details
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.available_options
|
73
|
-
[
|
74
|
-
FastlaneCore::ConfigItem.new(key: :mode,
|
75
|
-
description: "SwiftLint mode: :lint or :autocorrect",
|
76
|
-
is_string: false,
|
77
|
-
default_value: :lint,
|
78
|
-
optional: true),
|
79
|
-
FastlaneCore::ConfigItem.new(key: :output_file,
|
80
|
-
description: 'Path to output SwiftLint result',
|
81
|
-
optional: true),
|
82
|
-
FastlaneCore::ConfigItem.new(key: :config_file,
|
83
|
-
description: 'Custom configuration file of SwiftLint',
|
84
|
-
optional: true),
|
85
|
-
FastlaneCore::ConfigItem.new(key: :strict,
|
86
|
-
description: 'Fail on warnings? (true/false)',
|
87
|
-
default_value: false,
|
88
|
-
is_string: false,
|
89
|
-
optional: true),
|
90
|
-
FastlaneCore::ConfigItem.new(key: :files,
|
91
|
-
description: 'List of files to process',
|
92
|
-
is_string: false,
|
93
|
-
optional: true),
|
94
|
-
FastlaneCore::ConfigItem.new(key: :ignore_exit_status,
|
95
|
-
description: "Ignore the exit status of the SwiftLint command, so that serious violations \
|
96
|
-
don't fail the build (true/false)",
|
97
|
-
default_value: false,
|
98
|
-
is_string: false,
|
99
|
-
optional: true),
|
100
|
-
FastlaneCore::ConfigItem.new(key: :reporter,
|
101
|
-
description: 'Choose output reporter',
|
102
|
-
is_string: true,
|
103
|
-
optional: true),
|
104
|
-
FastlaneCore::ConfigItem.new(key: :quiet,
|
105
|
-
description: "Don't print status logs like 'Linting <file>' & 'Done linting'",
|
106
|
-
default_value: false,
|
107
|
-
is_string: false,
|
108
|
-
optional: true),
|
109
|
-
FastlaneCore::ConfigItem.new(key: :executable,
|
110
|
-
description: "Path to the `swiftlint` executable on your machine",
|
111
|
-
is_string: true,
|
112
|
-
optional: true)
|
113
|
-
]
|
114
|
-
end
|
115
|
-
|
116
|
-
def self.output
|
117
|
-
end
|
118
|
-
|
119
|
-
def self.return_value
|
120
|
-
end
|
121
|
-
|
122
|
-
def self.authors
|
123
|
-
["KrauseFx"]
|
124
|
-
end
|
125
|
-
|
126
|
-
def self.is_supported?(platform)
|
127
|
-
[:ios, :mac].include?(platform)
|
128
|
-
end
|
129
|
-
|
130
|
-
def self.example_code
|
131
|
-
[
|
132
|
-
'swiftlint(
|
133
|
-
mode: :lint, # SwiftLint mode: :lint (default) or :autocorrect
|
134
|
-
output_file: "swiftlint.result.json", # The path of the output file (optional)
|
135
|
-
config_file: ".swiftlint-ci.yml", # The path of the configuration file (optional)
|
136
|
-
files: [ # List of files to process (optional)
|
137
|
-
"AppDelegate.swift",
|
138
|
-
"path/to/project/Model.swift"
|
139
|
-
],
|
140
|
-
ignore_exit_status: true # Allow fastlane to continue even if SwiftLint returns a non-zero exit status
|
141
|
-
)'
|
142
|
-
]
|
143
|
-
end
|
144
|
-
|
145
|
-
def self.category
|
146
|
-
:testing
|
147
|
-
end
|
148
|
-
|
149
|
-
def self.handle_swiftlint_error(ignore_exit_status, exit_status)
|
150
|
-
if ignore_exit_status
|
151
|
-
failure_suffix = 'which would normally fail the build.'
|
152
|
-
secondary_message = 'fastlane will continue because the `ignore_exit_status` option was used! 🙈'
|
153
|
-
else
|
154
|
-
failure_suffix = 'which represents a failure.'
|
155
|
-
secondary_message = 'If you want fastlane to continue anyway, use the `ignore_exit_status` option. 🙈'
|
156
|
-
end
|
157
|
-
|
158
|
-
UI.important("")
|
159
|
-
UI.important("SwiftLint finished with exit code #{exit_status}, #{failure_suffix}")
|
160
|
-
UI.important(secondary_message)
|
161
|
-
UI.important("")
|
162
|
-
UI.user_error!("SwiftLint finished with errors (exit code: #{exit_status})") unless ignore_exit_status
|
163
|
-
end
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|