# grunt-passfail

> Run functions when your tasks complete or fail.

Latest version **0.1.2** (published 2013-07-30) · 0 weekly downloads

## Install

```sh
npm install grunt-passfail
pnpm add grunt-passfail
yarn add grunt-passfail
bun add grunt-passfail
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.2 |
| Published | 2013-07-30 |
| First published | 2013-07-29 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >= 0.8.0 |
| Dependencies | 0 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Sean Fridman |
| Maintainers | sfrdmn |
| Keywords | gruntplugin, pass, fail |

## Links

- npm: https://www.npmjs.com/package/grunt-passfail
- Repository: https://github.com/sean/grunt-passfail
- Issues: https://github.com/sean/grunt-passfail/issues
- npm.io page: https://npm.io/package/grunt-passfail

## Alternatives

- [@clerk/clerk-expo](https://npm.io/package/@clerk/clerk-expo.md) — 133.6K weekly downloads
- [@pothos/plugin-authz](https://npm.io/package/@pothos/plugin-authz.md) — 12.4K weekly downloads
- [@bounded-sh/client](https://npm.io/package/@bounded-sh/client.md) — 3.2K weekly downloads
- [@luigi-project/plugin-auth-oauth2](https://npm.io/package/@luigi-project/plugin-auth-oauth2.md) — 2.3K weekly downloads
- [@nocobase/plugin-verification](https://npm.io/package/@nocobase/plugin-verification.md) — 2.0K weekly downloads

## Recent versions

- 0.1.2 (latest) — 2013-07-30
- 0.1.1 — 2013-07-29
- 0.1.0 — 2013-07-29

## README

# grunt-passfail

> Run functions when your tasks complete or fail.

## Getting Started
This plugin requires Grunt `~0.4.1`

If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

```shell
npm install grunt-passfail --save-dev
```

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

```js
grunt.loadNpmTasks('grunt-passfail');
```

## The "passfail" task

### Overview
In your project's Gruntfile, add a section named `passfail` to the data object passed into `grunt.initConfig()`.

```js
grunt.initConfig({
  passfail: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      // Target-specific file lists and/or options go here.
    },
  },
})
```

### Options

All callbacks called in task context, giving you access to the "inside tasks" API:
[http://gruntjs.com/api/inside-tasks](http://gruntjs.com/api/inside-tasks)

Could be useful, for example, to run async logic with `this.async`

#### options.force
### read this!

Type: `Boolean`
Default value: `false`

Alias for the `--force` option on the command line. Defaults to false.
This plugin won't work without force, since it will presumably be the last task
run and will never be run if a previous task fails without --force set.

This is just a convenience so you don't have to supply `--force` all the time, but beware!
It'll force `--force` on all your tasks! force force :O

#### options.fail
Type: `Function`

A function to be run when at least one warning or error has occured anywhere
in the current task. Is passed the number of warnings and errors occurred.

`callback(warncount, errorcount)`

#### options.success
Type: `Function`

A function to be run when no errors nor warnings have occurred. Also, the options `ignoreWarn` and
`ignoreError` can be supplied to affect the condition on which `success` is callled.

#### options.error
Type: `Function`

A function to be run when at least one error has occurred in the current task. It is passed
the number of errors occurred.

`callback(errorcount)`

#### options.warn
Type: `Function`

A function to be run when at least one warning has occurred in the current task. It is passed
the number of warnings occurred.

`callback(warncount)`

### options.ignoreWarn
Type: `Boolean`
Default: `false`

If set to true, warnings will not affect whether the success function will be run.

### options.ignoreError
Type: `Boolean`
Default: `false`

If set to true, errors will not affect whether the success function will be run.

### Usage Examples

```js
grunt.initConfig({
  passfail: {
    options: {
      force: true
    },
    all: {
      success: function() {
        console.log("Cool :)")
      },
      fail: function() {
        console.log("Lame :'(")
      }
    }
  }
})
```

Here's an example using [SoX](http://sox.sourceforge.net/) to play an mp3

```js
var spawn = require('child_process').spawn;

grunt.initConfig({
  passfail: {
    options: {
      force: true
    },
    all: {
      success: function() {
        spawn('play', ['./success.mp3']).on('close', this.async());
      },
      fail: function() {
        spawn('play', ['./fail.mp3']).on('close', this.async());
      }
    }
  }
})
```

### Possible TODOs

- Use `this.requires` for success / fail checking?
- Allow customizable success and failure conditions?

## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).

---
_Source: https://npm.io/package/grunt-passfail · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
