0.2.2 ā€¢ Published 8 years ago

grunt-electron-redhat-installer v0.2.2

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

grunt-electron-redhat-installer Version Build Status Dependency Status

Create a Red Hat package for your Electron app.

šŸšØ This package has been renamed to grunt-electron-installer-redhat! šŸšØ

Requirements

This tool requires rpmbuild to build the .rpm package. On Fedora you can do something like this:

$ sudo dnf install rpm-build

While on Ubuntu you'll need to do this instead:

$ sudo apt-get install rpm

Getting Started

This plugin requires Grunt ~0.4.0

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-electron-redhat-installer --save-dev

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

grunt.loadNpmTasks('grunt-electron-redhat-installer');

This plugin was designed to work with Grunt 0.4.x. If you're still using grunt v0.3.x it's strongly recommended that you upgrade, but in case you can't please use v0.3.2.

Installer task

Run this task with the grunt electron-redhat-installer command.

Task targets, files and options may be specified according to the grunt Configuring tasks guide.

Usage

Say your app lives in path/to/app, and has a structure like this:

$ tree path/to/app/ -L 2
path/to/app/
ā”œā”€ā”€ LICENSE
ā”œā”€ā”€ index.js
ā”œā”€ā”€ main
ā”‚Ā Ā  ā”œā”€ā”€ index.js
ā”‚Ā Ā  ā””ā”€ā”€ squirrel.js
ā”œā”€ā”€ node_modules
ā”‚Ā Ā  ā”œā”€ā”€ fs-plus
ā”‚Ā Ā  ā””ā”€ā”€ yargs
ā”œā”€ā”€ package.json
ā””ā”€ā”€ renderer
    ā”œā”€ā”€ index.css
    ā”œā”€ā”€ index.html
    ā””ā”€ā”€ index.js

To create a .rpm package from your app, the configuration for your task would look like this:

'electron-redhat-installer': {
  app: {
    options: {
      arch: 'x86_64'
    },
    src: 'path/to/app/',
    dest: 'path/to/out/'
  }
}

The task will try to extract all necessary information from your package.json, and then generate your package at path/to/out.

You can also create different packages for different architectures, while manually overriding certain options:

'electron-redhat-installer': {
  options: {
    productName: 'Foo',
    productDescription: 'Bar baz qux.',
    categories: [
      'Utility'
    ],
    rename: function (dest, src) {
      return dest + '<%= name %>-<%= version %>-<%= revision %>.<%= arch %>.rpm';
    }
  },

  linux32: {
    options: {
      arch: 'x86'
    },
    src: 'path/to/linux32/',
    dest: 'path/to/out/linux32/'
  },

  linux64: {
    options: {
      arch: 'x86_64'
    },
    src: 'path/to/linux64/',
    dest: 'path/to/out/linux64/'
  }
}

Options

src

Type: String Default: undefined

Path to the folder that contains your built Electron application.

dest

Type: String Default: undefined

Path to the folder that will contain your Red Hat installer.

options.name

Type: String Default: package.name

Name of the package (e.g. atom), used in the Name field of the spec file.

Check out the Fedora Naming Guidelines.

options.productName

Type: String Default: package.productName || package.name

Name of the application (e.g. Atom), used in the Name field of the desktop specification.

options.genericName

Type: String Default: package.genericName || package.productName || package.name

Generic name of the application (e.g. Text Editor), used in the GenericName field of the desktop specification.

options.description

Type: String Default: package.description

Short description of the application, used in the Summary field of the spec file.

options.productDescription

Type: String Default: package.productDescription || package.description

Long description of the application, used in the %description tag of the spec file.

options.version

Type: String Default: package.version

Version number of the package, used in the Version field of the spec file.

options.revision

Type: String Default: package.revision

Revision number of the package, used in the Release field of the spec file.

options.license

Type: String Default: package.license

License of the package, used in the License field of the spec file.

options.group

Type: String Default: undefined

Group of the package, used in the Group field of the spec file.

options.arch

Type: String Default: undefined

Machine architecture the package is targeted to, used to set the --target option.

options.requires

Type: Array[String] Default: ['lsb']

Packages that are required when the program starts, used in the Requires field of the spec file.

options.homepage

Type: String Default: package.homepage || package.author.url

URL of the homepage for the package, used in the Homepage field of the control specification.

options.bin

Type: String Default: package.name

Relative path to the executable that will act as binary for the application, used in the Exec field of the desktop specification.

The generated package will contain a symlink /usr/bin/<%= options.name %> pointing to the path provided here.

For example, providing this configuration:

{
  options: {
    name: 'foo',
    bin: 'resources/cli/launcher.sh'
  },
  src: '...',
  dest: '...'
}

Will create a package with the following symlink:

usr/bin/foo@ -> ../share/foo/resources/cli/launcher/sh

And a desktop specification with the following Exec key:

Exec=foo %U

options.icon

Type: String Default: undefined

Path to the image that will act as icon for the application, used in the Icon field of the desktop specification.

options.categories

Type: Array[String] Default: []

Categories in which the application should be shown in a menu, used in the Categories field of the desktop specification.

For possible values check out the Desktop Menu Specification.

options.rename

Type: Function Default: function (dest, src) { return dest + src; }

Function that renames all files generated by the task just before putting them in your dest folder.

Meta

Contributors

License

Copyright (c) 2015 Daniel Perez Alvarez (unindented.org). This is free software, and may be redistributed under the terms specified in the LICENSE file.

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

9 years ago

0.1.0

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago