mayday 0.1.1 → 0.1.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 +4 -4
- data/README.md +4 -1
- data/docs/Cookbook.md +46 -0
- data/lib/mayday/reader.rb +8 -0
- data/lib/mayday/script_generator.rb +5 -1
- data/lib/mayday/target_integrator.rb +1 -1
- data/lib/mayday/version.rb +1 -1
- data/mayday.gemspec +1 -1
- data/spec/fixtures/Maydayfile +5 -0
- data/spec/mayday/user_definitions_spec.rb +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54fd6eae0019921ad08a561b8608c07cc05434be
|
4
|
+
data.tar.gz: 8458b2fac4814310e1adf39f4c577218c5410a3b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16bae0fba41a1e56aba29ab7daed21d295cb9006c970adcadf5ebb8b87e6f3b34997c65666812af5b4647db3adfbf4315d939186e44a19876d8342b2a53be4da
|
7
|
+
data.tar.gz: ee96131376be5dabc33ec5dce2c823c2266616263e495b48dc2b5248868b880b4d0928be4579cc786eb4575c155a6f2398fe0d94e214d94d2ddcde3a52b4bcff
|
data/README.md
CHANGED
@@ -78,6 +78,10 @@ Since Ruby is installed by default on OSX, the warnings and errors will work for
|
|
78
78
|
* `exclusions` doesn't run on files that have an absolute path that matches the provided [globs](http://en.wikipedia.org/wiki/Glob_(programming)). Accepts an array.
|
79
79
|
* `warning :line, :exclude => ["*/Pods/*"] do ...` **Note, Pods are excluded by default by mayday**
|
80
80
|
|
81
|
+
## Cookbook
|
82
|
+
|
83
|
+
For some ideas on how to start using mayday, see the [cookbook](https://github.com/marklarr/mayday/blob/master/docs/Cookbook.md)
|
84
|
+
|
81
85
|
## Benchmarking
|
82
86
|
|
83
87
|
You may be concerned about how much overhead this will add to your build process. To see how quickly your `mayday` checks execute, use
|
@@ -94,7 +98,6 @@ $ mayday benchmark
|
|
94
98
|
* If your custom blocks have errors in them that aren't found until they're executed (which is done whenever you call `mayday`), the stack trace won't be very helpful in debugging (because there is no source map from the build phase back to your `Maydayfile` code)
|
95
99
|
* Generating efficient code to write into the build phase is difficult. The code generated by `MayDay::ScriptGenerator#to_ruby` could definitely be optimized.
|
96
100
|
|
97
|
-
|
98
101
|
## Uninstallation
|
99
102
|
|
100
103
|
```sh
|
data/docs/Cookbook.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
# Cookbook
|
2
|
+
|
3
|
+
The mayday cookbook contains common warning/error checks that are ready to use out-of-the-box and can be customized as you please.
|
4
|
+
|
5
|
+
* [Reminders](#reminders)
|
6
|
+
* [Lint](#lint)
|
7
|
+
|
8
|
+
## Reminders
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
# Warning for TODO comments
|
12
|
+
warning_regex 'TODO', /\s*\/\/\s*TODO:/
|
13
|
+
```
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
# Warning for FIXME comments
|
17
|
+
warning_regex 'FIXME', /\s*\/\/\s*FIXME:/
|
18
|
+
```
|
19
|
+
|
20
|
+
## Lint
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# Warning for lines that are more than 120 columns long
|
24
|
+
warning :line { |line| line.length > 120 ? "Line is #{line.length} columns long" : false }
|
25
|
+
```
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
# Warning for files that are more than 500 lines long
|
29
|
+
warning :file do |entire_file|
|
30
|
+
max_number_of_lines = 500
|
31
|
+
|
32
|
+
number_of_code_or_comment_lines = entire_file.split("\n").select { |line| line.strip.length > 0 }.count
|
33
|
+
if number_of_code_or_comment_lines > max_number_of_lines
|
34
|
+
# Map line numbers to errors
|
35
|
+
{ "1" => "File is #{number_of_code_or_comment_lines} lines long" }
|
36
|
+
else
|
37
|
+
false
|
38
|
+
end
|
39
|
+
end
|
40
|
+
```
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
# Warning for Copyright placed at the beginning of every file
|
44
|
+
warning_regex "Please remove Copyright boilerplate", /^\/\/ Copyright \(c\).*$/
|
45
|
+
```
|
46
|
+
|
data/lib/mayday/reader.rb
CHANGED
@@ -13,6 +13,11 @@ module Mayday
|
|
13
13
|
@script_generator = ScriptGenerator.new
|
14
14
|
end
|
15
15
|
|
16
|
+
def require(lib_name)
|
17
|
+
super
|
18
|
+
@script_generator.libs_to_require << lib_name
|
19
|
+
end
|
20
|
+
|
16
21
|
def to_target_integrator
|
17
22
|
instance_eval(@mayday_file.read, @mayday_file.path, 0)
|
18
23
|
validate_xcode_proj
|
@@ -23,14 +28,17 @@ module Mayday
|
|
23
28
|
real_xcodeproj_path = File.join(Pathname.new(@mayday_file.path).realpath.parent, xcode_proj_path)
|
24
29
|
@xcode_proj = Xcodeproj::Project.open(real_xcodeproj_path)
|
25
30
|
end
|
31
|
+
private :xcode_proj
|
26
32
|
|
27
33
|
def warning_regex(message, regex, options={})
|
28
34
|
abstract_flag_regex(Warning, message, regex, options)
|
29
35
|
end
|
36
|
+
private :warning_regex
|
30
37
|
|
31
38
|
def error_regex(message, regex, options={})
|
32
39
|
abstract_flag_regex(Error, message, regex, options)
|
33
40
|
end
|
41
|
+
private :error_regex
|
34
42
|
|
35
43
|
def validate_xcode_proj
|
36
44
|
unless @xcode_proj
|
@@ -6,16 +6,18 @@ require 'pathname'
|
|
6
6
|
module Mayday
|
7
7
|
class ScriptGenerator
|
8
8
|
|
9
|
-
attr_accessor :flags
|
9
|
+
attr_accessor :flags, :libs_to_require
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
self.flags = []
|
13
|
+
self.libs_to_require = []
|
13
14
|
end
|
14
15
|
|
15
16
|
def to_ruby(opts={})
|
16
17
|
opts[:exit_after] = true if opts[:exit_after] == nil;
|
17
18
|
opts[:output] = true if opts[:output] == nil;
|
18
19
|
|
20
|
+
require_lines = libs_to_require.map { |lib_to_require| "require '#{lib_to_require}'" }.join("\n")
|
19
21
|
function_defs = flags.map(&:function_def_string).join
|
20
22
|
exit_chunk = if opts[:exit_after]
|
21
23
|
<<-CODE
|
@@ -37,6 +39,8 @@ end
|
|
37
39
|
# encoding: utf-8
|
38
40
|
Encoding.default_external = "utf-8"
|
39
41
|
|
42
|
+
#{require_lines}
|
43
|
+
|
40
44
|
#{function_defs}
|
41
45
|
|
42
46
|
Dir[ENV["SRCROOT"] + "/**/*.{m,h,swift}"].each do |filename|
|
data/lib/mayday/version.rb
CHANGED
data/mayday.gemspec
CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'clamp', '~> 0.6.3'
|
27
27
|
spec.add_dependency 'colorize', '~> 0.7.3'
|
28
28
|
spec.add_dependency 'sourcify', '~> 0.6.0rc4'
|
29
|
-
spec.add_dependency 'xcodeproj', '~> 0.
|
29
|
+
spec.add_dependency 'xcodeproj', '~> 0.20'
|
30
30
|
end
|
data/spec/fixtures/Maydayfile
CHANGED
@@ -3,8 +3,8 @@ require 'spec_helper'
|
|
3
3
|
describe Mayday::UserDefinitions do
|
4
4
|
|
5
5
|
def parse_build_output(opts={})
|
6
|
-
extra_test_flags = opts[:test] ? "
|
7
|
-
output =`xcodebuild -project spec/test_fixtures/Fixtures/Fixtures.xcodeproj/ -scheme Fixtures -
|
6
|
+
extra_test_flags = opts[:test] ? "test" : ""
|
7
|
+
output =`xcodebuild -project spec/test_fixtures/Fixtures/Fixtures.xcodeproj/ -scheme Fixtures -sdk iphonesimulator #{extra_test_flags}`
|
8
8
|
exitstatus = $?.exitstatus
|
9
9
|
files_to_lines_to_warnings_hash = {}
|
10
10
|
output.split("\n").each do |line|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mayday
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Larsen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0.
|
117
|
+
version: '0.20'
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 0.
|
124
|
+
version: '0.20'
|
125
125
|
description: Custom warnings and errors
|
126
126
|
email:
|
127
127
|
- larse503@gmail.com
|
@@ -137,6 +137,7 @@ files:
|
|
137
137
|
- README.md
|
138
138
|
- Rakefile
|
139
139
|
- bin/mayday
|
140
|
+
- docs/Cookbook.md
|
140
141
|
- docs/example.jpg
|
141
142
|
- docs/example_inline.jpg
|
142
143
|
- lib/mayday.rb
|