README.md in mayday-0.0.1 vs README.md in mayday-0.1.0
- old
+ new
@@ -1,31 +1,43 @@
-Easily add custom warnings and errors to your Xcode project's build process.
+[![Gem Version](https://badge.fury.io/rb/mayday.svg)](http://badge.fury.io/rb/mayday)
+[![Build Status](https://travis-ci.org/marklarr/mayday.svg?branch=master)](https://travis-ci.org/marklarr/mayday)
-## Installation
- $ gem install mayday
+Easily add custom warnings and errors to your Xcode project's build process
+## Installation
+```sh
+$ gem install mayday
+```
+
## Usage
-Create a Maydayfile at the root of your project, defining your warnings and errors using `warning`, `error`, `warning_regex`, and `error_regex`.
+Create a Maydayfile
+```sh
+$ mayday init
+```
+
+Add some warning and error checks to that file
+
```ruby
# Maydayfile
# Required
xcode_proj "CoolApp.xcodeproj"
-# Required. This will most likely be the same name as your project.
-main_target "CoolApp"
# Use regular expressions to define errors or warnings on a line-by-line basis
+error_regex "Please remove Copyright boilerplate", /^\/\/ Copyright \(c\).*$/, :files => "*AppDelegate*"
+warning_regex "TODO", /^\/\/\s+TODO:.*$/
+```
-error_regex "Please remove Copyright boilerplate", /^\/\/ Copyright \(c\).*$/, :files => "*AppDelegate*", :exclude => "Fixtures/SomeDir/Excluded/*"
+You can do more advanced checks, too, with blocks
-warning_regex "TODO", /^\/\/\s+TODO:.*$/
+``` ruby
+# Maydayfile
-# Do more complicated checks or return dynamic messages via blocks
-warning :line do |line|
+warning :line, :exclude => "Fixtures/SomeDir/Excluded/*" do |line|
line.length > 120 ? "Length of line #{line.length} is longer than 120 characters!" : false
end
# You can get the whole file, too
error :file do |entire_file|
@@ -37,17 +49,26 @@
{ "1" => "File is #{number_of_code_or_comment_lines} lines long" }
else
false
end
end
-
```
-And then,
+When you're ready, run
- $ mayday
+```sh
+$ mayday
+```
+Next time you build your project, your errors and warnings will be flagged
+
+![Mayday warnings and errors in Xcode](https://raw.githubusercontent.com/marklarr/mayday/master/docs/example.jpg?token=760261__eyJzY29wZSI6IlJhd0Jsb2I6bWFya2xhcnIvbWF5ZGF5L21hc3Rlci9kb2NzL2V4YW1wbGUuanBnIiwiZXhwaXJlcyI6MTQxNDM5MDIxNH0%3D--e7969b95aea1bc76749ae9226d2ac5ffef0cf322)
+
+![Mayday warnings and errors in Xcode, inline](https://raw.githubusercontent.com/marklarr/mayday/master/docs/example_inline.jpg?token=760261__eyJzY29wZSI6IlJhd0Jsb2I6bWFya2xhcnIvbWF5ZGF5L21hc3Rlci9kb2NzL2V4YW1wbGVfaW5saW5lLmpwZyIsImV4cGlyZXMiOjE0MTQzOTAzMzh9--bc9abbe40843317e7b6a30a9521ebf6ae457ece2)
+
+Since Ruby is installed by default on OSX, the warnings and errors will work for anybody building your project, even if they don't have RVM, RubyGems, or mayday.
+
### Options
`warning`, `error`, `warning_regex`, and `error_regex` all accept an options hash with any of the following options
* `language` limits to files in the provided language. Accepts `"swift"` and `"objective-c"`.
@@ -59,22 +80,29 @@
## Benchmarking
You may be concerned about how much overhead this will add to your build process. To see how quickly your `mayday` checks execute, use
- $ mayday benchmark
+```sh
+$ mayday benchmark
+```
## Caveats
-* Since `mayday` uses [sourcify]() to write your custom `warning` and `errors` blocks to a build phase, all [gotchas in sourcify](https://github.com/ngty/sourcify#gotchas) apply to your blocks.
-* Generating efficient code to write into the build phase is difficult. `MayDay::ScriptGenerator#to_ruby` could definitely by optimized.
+* `mayday` uses [sourcify]() to write your custom `warning` and `errors` blocks to a build phase, all [gotchas in sourcify](https://github.com/ngty/sourcify#gotchas) apply to your blocks.
+* `mayday` copies your custom blocks, line for line, into a build phase, so all variables inside of them must be of local scope. Anything defined outside of a custom block will not be included in the build phase.
+* Gems cannot but used inside of custom blocks, only vanilla, system Ruby.
+* 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)
+* Generating efficient code to write into the build phase is difficult. The code generated by `MayDay::ScriptGenerator#to_ruby` could definitely be optimized.
## Uninstallation
- $ mayday down
+```sh
+$ mayday down
+```
## Contributing
-We'd love to see your ideas for improving this library! The best way to contribute is by submitting a pull request. We'll do our best to respond to your patch as soon as possible. You can also submit a [new Github issue](https://github.com/venmo/synx/issues/new) if you find bugs or have questions. :octocat:
+We'd love to see your ideas for improving this library! The best way to contribute is by submitting a pull request. We'll do our best to respond to your patch as soon as possible. You can also submit a [new GitHub issue](https://github.com/marklarr/mayday/issues/new) if you find bugs or have questions. :octocat:
Please make sure to follow our general coding style and add test coverage for new features!