|  | #!/usr/bin/env node | 
        
          |  |  | 
        
          |  | var cordova_util = require('cordova/src/util'); | 
        
          |  | var projectRoot = cordova_util.isCordova(process.cwd()); | 
        
          |  | var projectXml = cordova_util.projectConfig(projectRoot); | 
        
          |  | var projectConfig = new cordova_util.config_parser(projectXml); | 
        
          |  | var projectPlatforms = cordova_util.listPlatforms(projectRoot); | 
        
          |  | projectConfig.name(); | 
        
          |  |  | 
        
          |  | var fs = require ('fs'); | 
        
          |  |  | 
        
          |  | var platformDir = { | 
        
          |  | ios: { | 
        
          |  | icon: "{$projectName}/Resources/icons", | 
        
          |  | splash: "{$projectName}/Resources/splash", | 
        
          |  | nameMap: { | 
        
          |  |  | 
        
          |  | // iOS >= 7 Settings icon | 
        
          |  | // iOS <= 6.1 Small icon for Spotlight search results and Settings (recommended) iPhone | 
        
          |  | "icon-29.png": "icon-small.png", | 
        
          |  | "icon-29-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS >= 7 Spotlight search results icon (recommended) | 
        
          |  | "icon-40.png": "icon-40.png", | 
        
          |  | "icon-40-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 Small icon for Spotlight search results and Settings (recommended) iPad | 
        
          |  | "icon-50.png": "icon-50.png", | 
        
          |  | "icon-50-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 App icon (required) iPhone | 
        
          |  | "icon-57.png": "icon.png", | 
        
          |  | "icon-57-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS >= 7 App icon (required) iPhone | 
        
          |  | "icon-60.png": "icon-60.png", | 
        
          |  | "icon-60-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 App icon (required) iPad | 
        
          |  | "icon-72.png": "icon-72.png", | 
        
          |  | "icon-72-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // iOS 7 App icon (required) iPad | 
        
          |  | "icon-76.png": "icon-76.png", | 
        
          |  | "icon-76-2x.png": "[email protected]", | 
        
          |  |  | 
        
          |  | // "screen-iphone-landscape.png": "Default~iphone.png", | 
        
          |  | "screen-ipad-portrait.png": "Default-Portrait~ipad.png", | 
        
          |  | "screen-ipad-portrait-2x.png": "Default-Portrait@2x~ipad.png", | 
        
          |  |  | 
        
          |  | "screen-ipad-landscape-2x.png": "Default-Landscape@2x~ipad.png", | 
        
          |  | "screen-ipad-landscape.png": "Default-Landscape~ipad.png", | 
        
          |  |  | 
        
          |  | "screen-iphone-portrait.png": "Default~iphone.png", | 
        
          |  | "screen-iphone-portrait-2x.png": "Default@2x~iphone.png", | 
        
          |  | "screen-iphone-portrait-568h-2x.png": "Default-568h@2x~iphone.png" | 
        
          |  | } | 
        
          |  | }, | 
        
          |  | android: { | 
        
          |  | icon:"res/drawable-{$density}", | 
        
          |  | splash:"res/drawable-{$density}", | 
        
          |  | nameMap: { | 
        
          |  | "icon-36-ldpi.png": "icon.png", | 
        
          |  | "icon-48-mdpi.png": "icon.png", | 
        
          |  | "icon-72-hdpi.png": "icon.png", | 
        
          |  | "icon-96-xhdpi.png": "icon.png", | 
        
          |  | "screen-ldpi-portrait.png": "ic_launcher.png", | 
        
          |  | "screen-mdpi-portrait.png": "ic_launcher.png", | 
        
          |  | "screen-hdpi-portrait.png": "ic_launcher.png", | 
        
          |  | "screen-xhdpi-portrait.png": "ic_launcher.png" | 
        
          |  | } | 
        
          |  | }, | 
        
          |  | blackberry10: {}, | 
        
          |  | wp7: {}, | 
        
          |  | wp8: {} | 
        
          |  | } | 
        
          |  |  | 
        
          |  | function copyAsset (scope, node) { | 
        
          |  |  | 
        
          |  | var platform = node.attrib['gap:platform']; | 
        
          |  | var density  = node.attrib['gap:density']; | 
        
          |  | var assetDirTmpl = platformDir[platform] && platformDir[platform][scope]; | 
        
          |  |  | 
        
          |  | if (!assetDirTmpl) { | 
        
          |  | throw new Error('Platform and density not supported: ' + platform + ', ' + density); | 
        
          |  | } | 
        
          |  |  | 
        
          |  | var dict = { | 
        
          |  | projectName: projectConfig.name(), | 
        
          |  | density: density | 
        
          |  | }; | 
        
          |  |  | 
        
          |  | var assetDir = assetDirTmpl.replace(/{\$([^}]+)}/, function (match, p1) { | 
        
          |  | return dict[p1]; | 
        
          |  | }); | 
        
          |  |  | 
        
          |  | var srcPath = 'www/'+node.attrib.src; | 
        
          |  | var fileName = srcPath.match(/[^\/]+$/)[0]; | 
        
          |  | if (platformDir[platform] && platformDir[platform].nameMap && platformDir[platform].nameMap[fileName]) { | 
        
          |  | fileName = platformDir[platform].nameMap[fileName]; | 
        
          |  | } else { | 
        
          |  | throw new Error('Unknown icon name for platform ' + platform); | 
        
          |  | } | 
        
          |  | var dstPath = 'platforms/'+platform+'/'+assetDir+'/'+fileName; | 
        
          |  |  | 
        
          |  | console.log ('copying from '+srcPath+' to the '+dstPath); | 
        
          |  | // so, here we start to copy asset | 
        
          |  | fs.stat (srcPath, function (err, stats) { | 
        
          |  | if (err) { | 
        
          |  | throw err; | 
        
          |  | } | 
        
          |  | var r = fs.createReadStream(srcPath); | 
        
          |  | r.on ('open', function () { | 
        
          |  | r.pause(); | 
        
          |  | var w = fs.createWriteStream(dstPath); | 
        
          |  | w.on ('open', function () { | 
        
          |  | r.pipe(w); | 
        
          |  | r.resume(); | 
        
          |  | }); | 
        
          |  | w.on ('error', function() { | 
        
          |  | throw new Error('Cannot write file'); | 
        
          |  | }) | 
        
          |  | }); | 
        
          |  | r.on ('error', function() { | 
        
          |  | throw new Error('Cannot read file'); | 
        
          |  | }); | 
        
          |  | }); | 
        
          |  | } | 
        
          |  |  | 
        
          |  | projectConfig.doc.findall('icon').map(function (node) { | 
        
          |  | if (/\/$/.test(node.attrib['src']) && node.attrib['gap:platform'] === undefined && node.attrib['gap:density'] === undefined) { | 
        
          |  |  | 
        
          |  | if (~projectPlatforms.indexOf('android')) { | 
        
          |  | // Android | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'android', src: node.attrib.src + 'android/icon-36-ldpi.png', 'gap:density': 'ldpi' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'android', src: node.attrib.src + 'android/icon-48-mdpi.png', 'gap:density': 'mdpi' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'android', src: node.attrib.src + 'android/icon-72-hdpi.png', 'gap:density': 'hdpi' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'android', src: node.attrib.src + 'android/icon-96-xhdpi.png', 'gap:density': 'xhdpi' } }); | 
        
          |  | } | 
        
          |  |  | 
        
          |  | if (~projectPlatforms.indexOf('ios')) { | 
        
          |  | // iOS >= 7 Settings icon | 
        
          |  | // iOS <= 6.1 Small icon for Spotlight search results and Settings (recommended) iPhone | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-29.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-29-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS >= 7 Spotlight search results icon (recommended) | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-40.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-40-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 Small icon for Spotlight search results and Settings (recommended) iPad | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-50.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-50-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 App icon (required) iPhone | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-57.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-57-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS >= 7 App icon (required) iPhone | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-60.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-60-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS <= 6.1 App icon (required) iPad | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-72.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-72-2x.png' } }); | 
        
          |  |  | 
        
          |  | // iOS 7 App icon (required) iPad | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-76.png' } }); | 
        
          |  | copyAsset('icon', { attrib: { 'gap:platform': 'ios', src: node.attrib.src + 'ios/icon-76-2x.png' } }); | 
        
          |  | } | 
        
          |  |  | 
        
          |  | } else { | 
        
          |  | copyAsset ('icon', node); | 
        
          |  | } | 
        
          |  | }); | 
        
          |  |  | 
        
          |  | projectConfig.doc.findall('*').filter(function (node) { | 
        
          |  | return (node.tag == 'gap:splash'); | 
        
          |  | }).map(function (node) { | 
        
          |  | copyAsset ('splash', node); | 
        
          |  | }); | 
  
(Sorry for late reply, didn't get any notifications...)
@kunik Are you sure that the file has the executable bit set?