# grinder 0.6.0

Grinder - a task based, dependency aware build system.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add 'grinder:0.6.0'
```
Published: 2014-09-24T03:12:12.333780Z
Expected archive SHA-256: 2f3b345b6c5d203c4fb69c989327294539244c50178e2c8c7d2228a0e101dc58

Available in cache; verification: upstream_checksum
## Direct dependencies
- args: >=0.12.0+2 <0.13.0
- quiver: >=0.18.0 <0.19.0

## Package README (untrusted upstream documentation)
# Grinder for Dart

A task based, dependency aware build system.

[![Build Status](https://drone.io/github.com/google/grinder.dart/status.png)](https://drone.io/github.com/google/grinder.dart/latest)
[![Build Status](https://travis-ci.org/google/grinder.dart.svg?branch=master)](https://travis-ci.org/google/grinder.dart)

### Breaking changes!

Warning: lots of breaking changes in v0.6! Please see the [changelog.md](https://github.com/google/grinder.dart/blob/master/changelog.md).

### Intro

A library and tool to drive a command-line build.

Grinder build files are entirely specified in Dart code. This allows you to
write and debug your build files with the same tools you use for the rest of
your project source.

Generally, a Grinder implementation will look something like this:

    void main([List<String> args]) {
      task('init', init);
      task('compile', compile, ['init']);
      task('deploy', deploy, ['compile']);
      task('docs', deploy, ['init']);
      task('all', null, ['deploy', 'docs']);

      startGrinder(args);
    }

    init(GrinderContext context) {
      context.log("I set things up");
    }

    ...

Tasks to run are specified on the command line. If a task has dependencies,
those dependent tasks are run before the specified task.

### Command-line usage
    usage: dart grinder.dart <options> target1 target2 ...

    valid options:
    -h, --help    show targets but don't build
    -d, --deps    display the dependencies of targets

or:

    pub run grind <args>

will run the `tool/grind.dart` script with the given arguments.

### API documentation

Documentation is available [here][docs].

### Disclaimer

This is not an official Google product.

[docs]: http://www.dartdocs.org/documentation/grinder/latest

## Changelog
# grinder.dart changes

## 0.6.0 (2014/09/22)

The convenience API is now more terse:
- the `defineTask()` method has been renamed to `task()`
- instead of named parameters, the `task()` function now uses optional positional parameters

Added two new entrypoint files in `bin/`: `grind.dart` and `grinder.dart`. These
let you run grinder via:

    pub run grinder test

They look for a cooresponding grinder script in the `tool` directory (`bin/grind.dart`
looks for `tool/grind.dart` and `bin/grinder.dart` looks for `tool/grinder.dart`).
If they find a cooresponding script they run it in a new Dart VM process. This
means that projects will no longer have to have a `grind.sh` script in the root
of each project.

PubTool's build methods now take an optional `workingDirectory` argument.

Removed `runSdkBinary` and `runSdkBinaryAsync`, and they are no longer needed.
Use `runProcess` and `runProcessAsync` instead.

The methods on `PubTools` and `Dart2jsTools` are now static - you no longer need
to create an instance to use them. `PubTools` renamed to `Pub` and `Dart2jsTools`
renamed to `Dart2js`. A new utility class for dartanalyzer - `Analyzer` created.

## 0.5.7 (2014/07/28)

- added `runProcessAsync()` and related async methods (such as `PubTools.buildAsync(...)`)
- removed duplicated stack traces when the build fails with exceptions
- throw an exception when running SDK binaries, and we are not able to locate the Dart SDK







 
