The best Grunt plugin ever.
This plugin requires Grunt ~0.4.2
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-credentials --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks('grunt-credentials');
In your project's Gruntfile, add a section named credentials
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
credentials: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
Type: Object
Default value: Undefined
An object containing mutliple providers. grunt-credentials uses providers to retrieve requested credential. A provider object typically looks like this:
providers:{
"my-provider":{
credentials:{"usr":"joeBlogs"}, //An object that contains your credentials
map:{ "github-username":"usr" } //An object that maps the provider's credential key to a standard key that you can specify. In this example, "github-username"
}
}
Type: String
Default value: Undefined
The path to the grunt config to set. When this task is called, grunt-credentials overwrites this grunt config item.
Type: Boolean
Default value: False
Expand is used to create an object within the specified config. If you're map is "amazing-username" and your config is "options.stackoverflow" then the grunt config item that will be set is options.stackoverflow.amazing-username
.
This is useful if you have multiple maps, as grunt-credentials will set all your mapped items to the specified config.
In this example, single grunt config items are set to the specified credentials
credentials:{
options:{
providers:{
"grunt-defaults":{
credentials:"<%= options.testDefaults %>",
map:{
"my-cred1":"cred1",
"my-cred2":"cred2"
}
},
"grunt-options":{
credentials:function(val){
grunt.log.writeln(val);
return grunt.option(val);
},
map:{
"my-cred1":"cred1",
"my-cred2":"cred2"
}
}
}
},
cred1:{
options:{
config:"options.my-credentials.my-cred1",
credential:"my-cred1"
}
},
cred2:{
options:{
config:"options.my-credentials.my-cred2",
credential:"my-cred2"
}
},
}
//grunt.config("options.my-credentials") ==
//{
// "my-cred1":"foo",
// "my-cred2":"bar"
//}
In this example, grunt-config will expand the configuration using the mapping specified
credentials:{
complexMap:{
options:{
providers:{
"grunt-defaults":{
credentials:"<%= options.testDefaults %>",
map:{
"my-cred1":"cred1",
"my-cred2":"cred2"
}
}
},
config:"options.my-credentials",
expand:true
}
}
}
//grunt.config("options.my-credentials") ==
//{
// "my-cred1":"foo",
// "my-cred2":"bar"
//}
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.
(Nothing yet)