fastlane-plugin-number_of_swift_lines 0.2.2 → 0.2.3
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: 0b0114eb4e4903ff288f3fc97fd64953ee9837db
|
4
|
+
data.tar.gz: b527d7b88ce41afe9ae19a8b61c584f679552bcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b15bc5040c379739bda57986da6302af4281d78f63eb3a943d287ccbc7c515c666e21c2840f539cb377f9290e1db0a33d80b535b73d7a3df9ff9e13d4dd57ccd
|
7
|
+
data.tar.gz: 30b0e8a2952b06ba0baf08ff294d6450080b99c88d363ee85fadd5abf7c3701b25bab495736753deafe3a23078eda980a056c6b3616b0be45d46eea2674e5ee5
|
@@ -4,6 +4,8 @@ module Fastlane
|
|
4
4
|
NUMBER_OF_SWIFT_LINES_IN_LARGEST_FILES = :NUMBER_OF_SWIFT_LINES_IN_LARGEST_FILES
|
5
5
|
NUMBER_OF_SWIFT_FILES = :NUMBER_OF_SWIFT_FILES
|
6
6
|
NUMBER_OF_SWIFT_LINES = :NUMBER_OF_SWIFT_LINES
|
7
|
+
NUMBER_OF_SWIFT_TEST_FILES_LINES = :NUMBER_OF_SWIFT_TEST_FILES_LINES
|
8
|
+
TEST_PROD_CODE_RATIO = :TEST_PROD_CODE_RATIO
|
7
9
|
end
|
8
10
|
|
9
11
|
class NumberOfSwiftLinesAction < Action
|
@@ -13,10 +15,14 @@ module Fastlane
|
|
13
15
|
number_of_largest_files = params[:largest_files_cap]
|
14
16
|
show_ascii = params[:enable_ascii_art]
|
15
17
|
exclude_regex = params[:files_exclude_regex]
|
18
|
+
include_regex = params[:test_files_include_regex]
|
19
|
+
#skip_empty = params[:skip_empty_lines]
|
16
20
|
|
17
21
|
find_command = "find . -name \"*.swift\" | egrep -v \"#{exclude_regex}\""
|
22
|
+
find_command_tests = "find . -name \"*.swift\" | egrep \"#{include_regex}\""
|
18
23
|
#find_command = "find . -name '*.swift' -not -path '*/Tests/*' -not -path '*/Pods/*' -not -path '*/Carthage/*' -print0"
|
19
24
|
UI.message(find_command)
|
25
|
+
UI.message(find_command_tests)
|
20
26
|
|
21
27
|
swift_files = `#{find_command}`
|
22
28
|
if swift_files.empty?
|
@@ -24,33 +30,52 @@ module Fastlane
|
|
24
30
|
exit 1
|
25
31
|
end
|
26
32
|
|
33
|
+
test_files = `#{find_command_tests}`
|
34
|
+
number_of_lines_test_files = "0\n"
|
35
|
+
if test_files.empty?
|
36
|
+
UI.message("WARNING: No test files found :(")
|
37
|
+
else
|
38
|
+
number_of_lines_test_files = `echo '#{test_files}' | tr '\\n' '\\0' | xargs -0 wc -l | tail -1 | awk '{print $1}'`
|
39
|
+
end
|
40
|
+
|
41
|
+
# | xargs -0 awk 'NF > 0' | wc -l
|
27
42
|
number_of_files = `echo '#{swift_files}' | wc -l | awk '{print $1}'`
|
28
43
|
number_of_lines = `echo '#{swift_files}' | tr '\\n' '\\0' | xargs -0 wc -l | tail -1 | awk '{print $1}'`
|
29
44
|
largest_files = `echo '#{swift_files}' | tr '\\n' '\\0' | xargs -0 wc -l | sort -n | tail -'#{number_of_largest_files.to_s}' | head -'#{(number_of_largest_files-1).to_s}'`
|
30
45
|
number_of_lines_largest_file = `echo '#{swift_files}' | tr '\\n' '\\0' | xargs -0 wc -l | sort -n | tail -2 | head -1 | awk '{print $1}'`
|
31
46
|
|
47
|
+
test_production_code_ratio = number_of_lines_test_files.to_f / number_of_lines.to_f
|
48
|
+
test_production_code_ratio_str = test_production_code_ratio.round(2).to_s
|
49
|
+
|
32
50
|
ascii_message = ""
|
33
51
|
if show_ascii == true then
|
34
52
|
a = Artii::Base.new :font => 'univers'
|
35
|
-
ascii_message =
|
53
|
+
ascii_message = ""
|
54
|
+
ascii_message += a.asciify(number_of_lines_largest_file)
|
36
55
|
ascii_message += a.asciify(number_of_files)
|
37
56
|
ascii_message += a.asciify(number_of_lines)
|
57
|
+
ascii_message += a.asciify(number_of_lines_test_files)
|
58
|
+
ascii_message += a.asciify(test_production_code_ratio_str.to_s)
|
38
59
|
end
|
39
60
|
|
40
61
|
UI.message("\n\n" + "The " + number_of_largest_files.to_s + " largest files in ascending order:\n\n" + largest_files \
|
41
62
|
+ "\n\nNumber of lines in the largest swift file:\t" + number_of_lines_largest_file \
|
42
63
|
+ "Total number of swift files:\t\t\t" + number_of_files \
|
43
|
-
+ "Total number of swift lines of code:\t\t" + number_of_lines
|
44
|
-
+
|
64
|
+
+ "Total number of swift lines of code:\t\t" + number_of_lines \
|
65
|
+
+ "Total number of swift lines in test files:\t" + number_of_lines_test_files \
|
66
|
+
+ "Testing / Production code ratio:\t\t" + test_production_code_ratio_str.to_s + "\n\n\n"\
|
67
|
+
+ ascii_message + "\n")
|
45
68
|
|
46
69
|
Actions.lane_context[SharedValues::NUMBER_OF_SWIFT_LINES_IN_LARGEST_FILES] = number_of_lines_largest_file
|
47
70
|
Actions.lane_context[SharedValues::NUMBER_OF_SWIFT_FILES] = number_of_files
|
48
71
|
Actions.lane_context[SharedValues::NUMBER_OF_SWIFT_LINES] = number_of_lines
|
72
|
+
Actions.lane_context[SharedValues::NUMBER_OF_SWIFT_TEST_FILES_LINES] = number_of_lines_test_files
|
73
|
+
Actions.lane_context[SharedValues::TEST_PROD_CODE_RATIO] = test_production_code_ratio_str.to_s
|
49
74
|
|
50
75
|
end
|
51
76
|
|
52
77
|
def self.description
|
53
|
-
"Outputs the total number of lines of swift code, number of swift files, and a list of the largest swift files
|
78
|
+
"Outputs the total number of lines of swift code, number of swift files, and a list of the largest swift files, and some other useful statistics"
|
54
79
|
end
|
55
80
|
|
56
81
|
def self.authors
|
@@ -60,15 +85,18 @@ module Fastlane
|
|
60
85
|
def self.return_value
|
61
86
|
# If your method provides a return value, you can describe here what it does
|
62
87
|
[
|
63
|
-
['NUMBER_OF_SWIFT_LINES_IN_LARGEST_FILES', 'The number of lines in the largets swift file'],
|
64
|
-
['NUMBER_OF_SWIFT_FILES', 'The total number of swift files'],
|
65
|
-
['NUMBER_OF_SWIFT_LINES', 'The total number of swift lines in all swift files']
|
88
|
+
['NUMBER_OF_SWIFT_LINES_IN_LARGEST_FILES', 'The number of lines in the largets swift file, excluding testing files'],
|
89
|
+
['NUMBER_OF_SWIFT_FILES', 'The total number of swift files, excluding testing files'],
|
90
|
+
['NUMBER_OF_SWIFT_LINES', 'The total number of swift lines in all prodcution code swift files'],
|
91
|
+
['NUMBER_OF_SWIFT_TEST_FILES_LINES', 'The total number of swift lines in all testing swift files'],
|
92
|
+
['TEST_PROD_CODE_RATIO', 'The ratio between testing and production code in all swift files']
|
66
93
|
]
|
67
94
|
end
|
68
95
|
|
69
96
|
def self.details
|
70
97
|
# Optional:
|
71
|
-
"
|
98
|
+
"Outputs the total number of lines of swift code, number of swift files, and a list of the largest swift files, and some other useful statistics. \
|
99
|
+
Default optinos, excludes unit & UI testing swift files and outputs the statistics in ASCII art :)"
|
72
100
|
end
|
73
101
|
|
74
102
|
def self.available_options
|
@@ -87,11 +115,25 @@ module Fastlane
|
|
87
115
|
default_value: true,
|
88
116
|
type: [TrueClass, FalseClass]),
|
89
117
|
|
118
|
+
# FastlaneCore::ConfigItem.new(key: :skip_empty_lines,
|
119
|
+
# env_name: "SKIP_EMPTY_LINES",
|
120
|
+
# description: "If enabled, does not include empty lines in the statistics",
|
121
|
+
# optional: true,
|
122
|
+
# default_value: true,
|
123
|
+
# type: [TrueClass, FalseClass]),
|
124
|
+
|
90
125
|
FastlaneCore::ConfigItem.new(key: :files_exclude_regex,
|
91
126
|
env_name: "FILES_EXCLUDE_REGEX",
|
92
127
|
description: "Regex string used with grep to exclude files from the list of all swift files",
|
93
128
|
optional: true,
|
94
|
-
default_value: "(/
|
129
|
+
default_value: "(/Test|/Pods|/Carthage)",
|
130
|
+
type: String),
|
131
|
+
|
132
|
+
FastlaneCore::ConfigItem.new(key: :test_files_include_regex,
|
133
|
+
env_name: "TEST_FILES_INCLUDE_REGEX",
|
134
|
+
description: "Regex string used with grep when searching for test files",
|
135
|
+
optional: true,
|
136
|
+
default_value: "/Test",
|
95
137
|
type: String)
|
96
138
|
]
|
97
139
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-number_of_swift_lines
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dennis Charmington
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: artii
|
@@ -168,8 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
168
168
|
version: '0'
|
169
169
|
requirements: []
|
170
170
|
rubyforge_project:
|
171
|
-
rubygems_version: 2.
|
171
|
+
rubygems_version: 2.5.2
|
172
172
|
signing_key:
|
173
173
|
specification_version: 4
|
174
|
-
summary: Outputs the total number of swift lines
|
174
|
+
summary: Outputs the total number of swift lines and other useful statistics
|
175
175
|
test_files: []
|