diff --git a/package.json b/package.json index f77c4409..58c4b8b4 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "async": "^2.0.0-rc.6", "body-parser": "^1.15.0", "cli": "^1.0.0", - "download": "^5.0.2", + "download": "^6.1.0", "express": "^4.13.4", "fs-extra": "^0.30.0", "jimp": "^0.2.21", diff --git a/renderer/tasks/rename.js b/renderer/tasks/rename.js index 928a2997..a4b9bdcb 100644 --- a/renderer/tasks/rename.js +++ b/renderer/tasks/rename.js @@ -2,6 +2,7 @@ const fs = require('fs-extra'); const path = require('path'); +const url = require('url'); const async = require('async'); /** @@ -18,7 +19,7 @@ module.exports = function(project) { // iterate over each file and create rename(move) callback for (let asset of project.assets) { - let src = path.join( project.workpath, asset.src.substring( asset.src.lastIndexOf('/') + 1 )); + let src = path.join( project.workpath, path.basename(url.parse(asset.src).pathname)); let dst = path.join( project.workpath, asset.name ); if (src === dst) continue; diff --git a/test/renderer/tasks/rename.js b/test/renderer/tasks/rename.js index 501c7b89..10c8a6e3 100644 --- a/test/renderer/tasks/rename.js +++ b/test/renderer/tasks/rename.js @@ -21,6 +21,7 @@ describe('Task: rename', () => { beforeEach(() => { fs.writeFileSync( path.join('test', 'file1src') ); fs.writeFileSync( path.join('test', 'file2src') ); + fs.writeFileSync( path.join('test', 'file3src') ); project = { workpath: 'test', @@ -30,6 +31,9 @@ describe('Task: rename', () => { }, { src: 'url/file2src', name: 'file2dst' + }, { + src: 'url/file3src?q=test', + name: 'file3dst' }] } }); @@ -37,14 +41,17 @@ describe('Task: rename', () => { afterEach(() => { fs.removeSync( path.join('test', 'file1src') ); fs.removeSync( path.join('test', 'file2src') ); + fs.removeSync( path.join('test', 'file3src') ); fs.removeSync( path.join('test', 'file1dst') ); fs.removeSync( path.join('test', 'file2dst') ); + fs.removeSync( path.join('test', 'file3dst') ); }) it('should rename each asset file to asset.name', (done) => { rename(project).should.be.fulfilled.then(() => { path.join('test', 'file1dst').should.be.a.path(); path.join('test', 'file2dst').should.be.a.path(); + path.join('test', 'file3dst').should.be.a.path(); }).should.notify(done); }); @@ -54,6 +61,7 @@ describe('Task: rename', () => { rename(project).should.be.fulfilled.then(() => { path.join('test', 'file1src').should.be.a.path(); path.join('test', 'file2dst').should.be.a.path(); + path.join('test', 'file3dst').should.be.a.path(); }).should.notify(done); }); @@ -63,6 +71,7 @@ describe('Task: rename', () => { rename(project).should.be.fulfilled.then(() => { path.join('test', 'file1dst').should.be.a.path(); path.join('test', 'file2dst').should.be.a.path(); + path.join('test', 'file3dst').should.be.a.path(); }).should.notify(done); }); });