node package manager

grunt-semvercopy

Identifies and copies the contents of a folder named with Semantic Versioning

grunt-semvercopy

Identifies and copies the contents of a folder named with Semantic Versioning

This plugin requires Grunt ~0.4.1

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-semvercopy --save-dev

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

grunt.loadNpmTasks('grunt-semvercopy');

In your project's Gruntfile, add a section named semvercopy to the data object passed into grunt.initConfig(). semvercopy is a multi-task.

grunt.initConfig({
semvercopy: {
taskTarget: {
resources: {
name: "ResourceName",
range: "~1.1.1",
parentDirectory: "//NETWORK/Path/To/Parent/",
dest: './Destination/Path/'
}
}
},
})

Type: string

The name of the resource you would like to pull in.

Type: string

A valid SemVer range used to identify the max SemVer folder. See node-semver for supported ranges.

Type: string

The path to the parent directory of the SemVer named folders.

Type: string Default value: ./{name}/

The destination folder to copy the contents of the max SemVer folder.

You have an external dependency on a CoreAPI which is organized on disk into SemVer named folders.

You would like to copy the contents of version ~1.1 into your current project in the location ./resources/api/.

A possible gruntfile could look like -

grunt.initConfig({
semvercopy: {
development: {
resources: {
name: "CoreAPI",
range: "~1.1",
parentDirectory: "//NETWORK/CoreAPI/",
dest: './resources/api/'
}
}
},
})

When run, the contents of //NETWORK/CoreAPI/1.1.2/ will be copied into ./resources/api/.

Resources can either be place directly in the gruntfile config or configured from within a JSON file. When multiple resources are found, every resource is acted upon naive of others that have or will run.

Single Object

grunt.initConfig({
semvercopy: {
taskTarget: {
resources: {
name: "ResourceName",
range: "~1.1.1",
parentDirectory: "//NETWORK/Path/To/Parent/",
dest: 'Optional/Destination/Path'
}
}
},
})

Single JSON file

grunt.initConfig({
semvercopy: {
taskTarget: {
resourcesFiles: 'path/to/someFile.json'
}
},
})

Multiple Objects

grunt.initConfig({
semvercopy: {
taskTarget: {
resources: {
name: "ResourceName",
range: "~1.1.1",
parentDirectory: "//NETWORK/Path/To/Parent/",
dest: 'Optional/Destination/Path'
},{
name: "AnotherResourceName",
range: "~1.1.1",
parentDirectory: "//NETWORK/Path/To/AnotherParent/",
dest: 'AnotherOptional/Destination/Path'
}
}
},
})

Multiple JSON files

grunt.initConfig({
semvercopy: {
taskTarget: {
resourcesFiles: ['path/to/someFile.json', 'path/to/anotherFile.json']
}
},
})

In the above examples, resourceFiles are valid json files that contain the resources object/array.

Single Objects

{
"resources": {
"name": "ResourceName",
"range": "~1.1.1",
"parentDirectory": "//NETWORK/Path/To/Parent/"
}
}

Multiple Objects

{
"resources": [
{
"name": "ResourceName",
"range": "~1.1.1",
"parentDirectory": "//NETWORK/Path/To/Parent/"
},{
"name": "AnotherResourceName",
"range": "~1.1.1",
"parentDirectory": "//NETWORK/Path/To/AnotherParent/"
}
]
}

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Test your code using Grunt.

(Nothing yet)