gulp-debian
Version:
Gulp plug-in to create a Debian package
141 lines (116 loc) • 5.53 kB
Markdown
### gulp-debian
> :tropical_drink: Gulp plug-in to create a Debian package.
<!-- We need new CI
[](https://travis-ci.org/stpettersens/gulp-debian)
-->
[](https://github.com/feross/standard)
[](http://npmjs.com/package/gulp-debian)
<!-- David DM seems to be gone
[](https://david-dm.org/stpettersens/gulp-debian) [](https://david-dm.org/stpettersens/gulp-debian?type=dev)
-->
** Please note that this project [did not use](https://github.com/stpettersens/gulp-debian/issues/19) [semantic versioning](https://semver.org) prior to v1.0.0. It will be adopted as of that version. **
##### Install
$ npm install --save-dev gulp-debian
##### Usage
Define package in-line:
```js
'use strict'
const gulp = require('gulp')
const deb = require('gulp-debian')
gulp.task('default', function (done) {
return gulp.src(['demo.sh','blob.bin'])
.pipe(deb({
package: 'demo',
version: '0.1-2',
section: 'base',
priority: 'optional',
architecture: 'i386',
maintainer: 'Mr. Apt <apt@nowhere.tld>',
description: 'A dummy package\n Long description starts here...',
preinst: [ 'echo "hello from dummy package"' ],
postinst: [ 'cat -n /opt/demo/.npmignore' ],
prerm: [ 'cat -n /opt/demo/.npmignore' ],
postrm: [ 'echo "bye from dummy package"' ],
conffiles: 'configs/dir',
changelog: [
{
version: '0.1-2',
distribution: 'unstable',
urgency: 'low',
date: new Date('2016-12-24T12:40:10'),
changes: [
'Added another feature.',
'Fixed feature X.'
]
},
{
version: '0.1-1',
distribution: 'unstable',
urgency: 'low',
date: '2016-12-23T11:24:00',
changes: [
'First release.'
]
}
],
_target: 'opt/demo',
_out: 'dist',
_copyright: 'path/to/copyright',
_clean: true,
_verbose: true
}))
done()
})
```
Alternatively, you can define your package in an external [JSON file](demo_0.1-2_i386.json):
```js
gulp.task('default', function (done) {
return gulp.src(['demo.sh', 'blob.bin'])
.pipe(deb('demo_0.1-2_i386.json'))
done()
})
```
You can also use a YAML file to define your package. Just convert it to an Object first using
the [js-yaml](https://github.com/nodeca/js-yaml) module (`npm install --save js-yaml`):
```js
const YAML = require('js-yaml')
const fs = require('fs')
gulp.task('default', function (done) {
return gulp.src(['demo.sh', 'blob.bin'])
.pipe(deb(YAML.load(fs.readFileSync('demo_0.1-2_i386.yml').toString())))
done()
})
```
##### Options
* Options: Object containing properties for a Debian file and the following parameters:
* preinst: String with a path to script or array of commands to run for the package's *pre-install* script (optional).
* postint: String with a path to script or array of commmands to run for the package's *post-install* script (optional).
* prerm: String with a path to script or array of commands to run for the package's *pre-remove* script (optional).
* postrm: String with a path to script or array of commmands to run for the package's *post-remove* script (optional).
* conffiles: string - path to the directory with configs. All configs must be placed from this directory in subdirectories starting from root folder (optional).
* changelog: Array of versions and their changes to write to the package's *changelog* (optional, but recommended). Options are:
* version: String for version with changes.
* distribution: String for version distribution.
* urgency: String for version urgency.
* date: Date object or String in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) notation for version date.
* changes: Array of changes made.
* _target: string - The installation target for the created Debian package (mandatory).
* _out: string - The target directory to create the Debian package in (mandatory).
* _copyright: string - The path to plain copyright file (functionally optional, but mandatory in [Debian policy](https://www.debian.org/doc/debian-policy/#copyright-information)).
This should be **mandatory** in packages you intend to publish, but for testing purposes
this can omitted for testing stage packages.
* _clean: boolean - If true, removes the temporary directory created in the target directory with the same structure than the Debian package.
* _verbose: boolean - Verbose output from dpkg-deb utility (optional; true if omitted).
(or)
* String containing filename for external JSON file defining package.
##### Contributors
* [Sam Saint-Pettersen](https://github.com/stpettersens)
* [Oliver Skånberg-Tippen](https://github.com/oskanberg)
* [Olaf Radicke](https://github.com/OlafRadicke)
* [Míguel Ángel Mulero Martínez](https://github.com/McGiverGim)
* [Alexey Lukomsky](https://github.com/lucomsky)
* [haslinghuis](https://github.com/haslinghuis)
* [Dominic Clifton](https://github.com/hydra)
* [Gregory Marco](https://github.com/CatturaGreg)
##### License
[MIT](https://opensource.org/licenses/MIT)