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!