var fs = require('fs');
/*!
* add 1 to suffix number
* @param {String} name file basename
* @return {String} name with addition
*/
var addOne = function (name) {
name = name.split( '_' );
var n = Number( name.pop()) + 1;
name.push( n );
return name.join( '_' );
};
/*!
* detect if name has a number suffix after '_'
* (example: picture_5.jpg)
* @param {string} name basename to examinate
* @return {Boolean|Number} if has not suffix: false, else: name with addition
*/
var hasSuffix = function (name) {
var suffix, splitted;
if (!isNaN( name )) {
return false;
} else {
splitted = name.split( '_' );
if (splitted.length > 1) {
suffix = splitted.pop();
if (isNaN( suffix )) {
return false;
} else {
return addOne( name );
}
} else {
return false;
}
}
};
/*!
* separate basename from file path and send it to rename
* @param {String} route route of the file
* @return {String} new name
*/
var newName = function ( route ) {
// get filename
route = route.split( '/' );
var filename = route.pop();
var splitted = filename.split( '.' );
var basename = splitted.shift();
var ext = splitted.join( '.' );
var suffix = hasSuffix( basename );
// check if filefileName has suffix
if (suffix) {
basename = suffix;
} else {
basename = basename + '_1';
}
filename = [basename, ext].join( '.' );
route.push( filename );
return route.join('/');
};
/*!
* detects if file route exist and send it to rename
* @param {String} route file path
* @return {String} unique path
*/
var finalName = function (route) {
if (fs.existsSync( route )) {
return finalName( newName( route ));
} else {
return route;
}
};
module.exports = finalName;