diff --git a/package.json b/package.json index fe04927..de45fa6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "etl-cli", - "version": "0.1.7", + "version": "0.1.8", "description": "", "main": "index.js", "scripts": { diff --git a/targets/files.js b/targets/files.js index dd279b3..871ec13 100644 --- a/targets/files.js +++ b/targets/files.js @@ -7,11 +7,16 @@ const renameAsync = Bluebird.promisify(fs.rename); const utimesAsync = Bluebird.promisify(fs.utimes); const fstream = require('fstream'); const convert = require('./lib/convert'); +const path = require('path'); +const os = require('os'); module.exports = async function(stream, argv) { const filter_files = argv.filter_files && new RegExp(argv.filter_files); - const target_dir = argv.target_dir; + let target_dir = argv.target_dir; if (!target_dir) throw 'Not target_dir'; + if (target_dir.startsWith('~')) { + target_dir = path.join(os.homedir(), target_dir.slice(1)); + } let files = new Set([]); @@ -20,7 +25,7 @@ module.exports = async function(stream, argv) { return stream; }) .pipe(etl.map(argv.concurrency || 1, async d => { - const Key = `${target_dir}/${d.filename}`; + const Key = path.join(target_dir, d.filename); if (files.has(Key)) return { message: 'skipping', Key }; if (filter_files && !filter_files.test(Key)) return { message: 'ignoring', Key };