Skip to content

Commit

Permalink
Show matching variables, sorting #23
Browse files Browse the repository at this point in the history
  • Loading branch information
jhotmann committed May 7, 2020
1 parent b12f77b commit 0f4aac7
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 29 deletions.
72 changes: 44 additions & 28 deletions lib/ui.js
Original file line number Diff line number Diff line change
@@ -1,34 +1,33 @@
const clipboardy = require('clipboardy');
const opn = require('opn');
// const os = require('os');
const os = require('os');
const path = require('path');
// const pathExists = require('path-exists');
const pathExists = require('path-exists');
const rename = require('../rename');
const term = require('terminal-kit').terminal;
// const traverse = require('traverse');
const traverse = require('traverse');
const yargs = require('yargs');
const yargsOptions = require('./yargsOptions');

// const defaultData = require('../lib/data');
// let userData;
// if (pathExists.sync(os.homedir() + '/.rename/userData.js')) {
// userData = require(os.homedir() + '/.rename/userData.js');
// } else {
// userData = function() { return {}; };
// }
// let fo = path.parse(__filename);
// let defaultVars = defaultData(fo);
// let userVars = userData(fo);
// let allData = Object.assign(defaultVars, userVars);
// console.dir(allData);
// let variableNames = traverse.paths(allData).map(p => {
// console.dir(p);
// if (p.length === 1 && typeof allData[p[0]] !== "object") {
// return p[0];
// } else if (p.length > 1) {
// return p.join('.');
// }
// }).filter(p => p !== undefined);
const defaultData = require('../lib/data');
let userData;
if (pathExists.sync(os.homedir() + '/.rename/userData.js')) {
userData = require(os.homedir() + '/.rename/userData.js');
} else {
userData = function() { return {}; };
}
let fo = path.parse(__filename);
let defaultVars = defaultData(fo);
let userVars = userData(fo);
let allData = Object.assign(defaultVars, userVars);
let variableNames = traverse.paths(allData).map(p => {
console.dir(p);
if (p.length === 1 && typeof allData[p[0]] !== "object") {
return p[0];
} else if (p.length > 1) {
return p.join('.');
}
}).filter(p => p !== undefined);

let TIMEOUT;
let REFRESH = true;
Expand Down Expand Up @@ -58,11 +57,7 @@ term.on('key', function (name, matches, data) {

term.fullscreen(true);
term('rename ');
term.saveCursor();
let helpText = 'Rename-CLI v' + require('../package.json').version + ' Type CTRL-H to view online help';
let helpTextX = (term.width / 2) - (helpText.length / 2);
term.moveTo(helpTextX, term.height, helpText);
term.restoreCursor();
setHelpText();

let inputField = term.inputField({cancelable: true},
function (error, input) {
Expand All @@ -77,6 +72,13 @@ let inputField = term.inputField({cancelable: true},
);

function updateCommands() {
let variableMatch = inputField.getInput().match('{{\\s*([A-z.]*)$');
if (variableMatch) {
let matchingVars = variableNames.filter(v => v.startsWith(variableMatch[1])).join(', ');
setHelpText('Variables: ' + matchingVars);
} else {
setHelpText();
}
term.saveCursor();
term.eraseArea(1, 2, term.width, term.height - 2);
term.moveTo(1, 3, 'working...');
Expand Down Expand Up @@ -136,3 +138,17 @@ function inputSubmitted(input) {
}
});
}

function setHelpText(helpText, center) {
if (helpText === undefined) {
helpText = 'Rename-CLI v' + require('../package.json').version + ' Type CTRL-H to view online help';
center = true;
}
term.saveCursor();
let helpTextX;
if (center && helpText.length < term.width) helpTextX = (term.width / 2) - (helpText.length / 2);
else helpTextX = 1;
helpText = truncate(helpText);
term.moveTo(helpTextX, term.height).eraseLine().moveTo(helpTextX, term.height, helpText);
term.restoreCursor();
}
4 changes: 4 additions & 0 deletions lib/yargsOptions.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ module.exports = {
boolean: true,
describe: 'Do not rename directories',
showInUi: true
}, 'sort': {
boolean: false,
describe: 'Sort files before renaming. Parameter: alphabet (default), date-create (most recent first), date-modified (most recent first), size (biggest first). Include the word reverse before or after to reverse the order.',
showInUi: true
}, 'p': {
alias: 'prompt',
boolean: true,
Expand Down
15 changes: 14 additions & 1 deletion rename.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,21 @@ function getOperations(files, newFileName, options) {
fileObj.options = options;
fileObj = replaceVariables(fileObj);
if (!options.noTrim) fileObj.newName = fileObj.newName.trim();

let stats = fs.statSync(fullPath, true);
fileObj.size = stats.size;
fileObj.dateCreate = stats.birthtimeMs;
fileObj.dateModify = stats.mtimeMs;
return fileObj;
}).filter(f => f !== undefined);

if (options.sort) {
if (options.sort.includes('date-create')) fileObjects = fileObjects.sort((a,b) => { return b.dateCreate - a.dateCreate; });
else if (options.sort.includes('date-modify')) fileObjects = fileObjects.sort((a,b) => { return b.dateModify - a.dateModify; });
else if (options.sort.includes('size')) fileObjects = fileObjects.sort((a,b) => { return b.size - a.size; });
if (options.sort.includes('reverse')) fileObjects.reverse();
}

// Add indices
if (!options.noIndex) {
let counts = {};
Expand Down Expand Up @@ -152,7 +164,8 @@ function argvToOptions(argv) {
noMove: (argv.nomove ? true : false),
createDirs: (argv.createdirs ? true : false),
noExt: (argv.noext ? true : false),
noUndo: (argv.noundo ? true : false)
noUndo: (argv.noundo ? true : false),
sort: (argv.sort ? argv.sort : false)
};
if (options.noMove && options.createDirs) options.createDirs = false;
return options;
Expand Down

0 comments on commit 0f4aac7

Please sign in to comment.