parent
909daa39c9
commit
2c2f38deb6
@ -1,47 +1,61 @@
|
||||
module.exports.Upload = async function Upload (keymap, target, right = false) {
|
||||
await build(right);
|
||||
const Inquirer = require('inquirer');
|
||||
|
||||
const { Echo, Exec, IdentifyKeyboard } = require('./util');
|
||||
|
||||
async function Upload (keymap, path, right = false) {
|
||||
await Build(keymap, path, right);
|
||||
|
||||
let board;
|
||||
while (board == null) {
|
||||
board = IdentifyKeyboard();
|
||||
board = IdentifyKeyboard(undefined, path);
|
||||
if (board == null) {
|
||||
Echo(`Put your keyboard in flash mode`);
|
||||
}
|
||||
}
|
||||
if (board.length > 1) {
|
||||
const answer = await Inquirer.prompt({
|
||||
name: 'path',
|
||||
type: 'list',
|
||||
message: `Select a the keyboard's ${right ? 'right' : 'left'} half`,
|
||||
choices: board.map(board => ({
|
||||
name: `${board.name} (${board.path})`,
|
||||
value: board.path
|
||||
}))
|
||||
});
|
||||
board = board.find(board => board.path === answer.path);
|
||||
} else if (board.length === 1) {
|
||||
board = board[0];
|
||||
}
|
||||
|
||||
Echo(`Building for ${board.name}`);
|
||||
await flash(right, board);
|
||||
Echo(`Building for ${board.name} (${board.path})`);
|
||||
await Flash(keymap, board.path, right);
|
||||
}
|
||||
module.exports.Upload = Upload;
|
||||
|
||||
module.exports.Build = async function Build (right = false) {
|
||||
async function Build (keymap, path, right = false) {
|
||||
Echo(`Building ${right ? 'right' : 'left'}`);
|
||||
await Exec(`make ergodox_infinity-${KEYMAP} ${right ? 'MASTER=right' : ''}`);
|
||||
await Exec(`make ergodox_infinity-${keymap} ${right ? 'MASTER=right' : ''}`);
|
||||
await Exec(`make ergodox_infinity-${keymap}-.build/ergodox_infinity_${keymap}.bin ${right ? 'MASTER=right' : ''}`);
|
||||
Echo(`Built ${right ? 'right' : 'left'}`, '');
|
||||
}
|
||||
module.exports.Build = Build;
|
||||
|
||||
module.exports.Flash = function Flash (right = false, board) {
|
||||
function Flash (keymap, path, right = false) {
|
||||
return new Promise(async resolve => {
|
||||
Echo(`Flashing ${right ? 'right' : 'left'}`);
|
||||
try {
|
||||
await Exec(`make ergodox_infinity-${KEYMAP}-dfu-util ${right ? 'MASTER=right' : ''}`);
|
||||
} catch (err) {
|
||||
if (err.message && err.message.includes(`More than one DFU capable USB device found`)) {
|
||||
Echo(`QMK flash failed!`);
|
||||
Echo(`Flashing manually with dfu-util`);
|
||||
|
||||
await Exec(`dfu-util --device ${board.id} -D .build/ergodox_infinity_default.bin`);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
// make infinity-<keymap>-.build/ergodox_infinity_<keymap>.bin
|
||||
// await Exec(`make ergodox_infinity-${keymap}-dfu-util ${right ? 'MASTER=right' : ''}`);
|
||||
await Exec(`dfu-util --path ${path} -D .build/ergodox_infinity_default.bin`);
|
||||
Echo(`Flashed ${right ? 'right' : 'left'}`, '');
|
||||
|
||||
// while (IdentifyKeyboard()) {
|
||||
// while (IdentifyKeyboard(board.path)) {
|
||||
// Echo(`Unplug your keyboard!`);
|
||||
// }
|
||||
// TODO: Check to see if the script is done. If it is, then don't require an unplug
|
||||
// TODO: Make this actually look for the keyboard to be unplugged
|
||||
Echo(`Unplug your keyboard! (you have 15 seconds to do so)`);
|
||||
setTimeout(() => resolve(), 15000);
|
||||
// Echo(`Unplug your keyboard! (you have 15 seconds to do so)`);
|
||||
// setTimeout(() => resolve(), 15000);
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
module.exports.Flash = Flash;
|
||||
|
@ -1,29 +1,39 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
const { execSync, exec } = require('child_process');
|
||||
const Commander = require('commander');
|
||||
|
||||
const { Echo, Exec, IdentifyKeyboard } = require('./util');
|
||||
const { Upload } = require('./commands');
|
||||
|
||||
const KEYMAP = process.env.KEYMAP || 'default';
|
||||
const LEFT_TARGET = process.env.LEFT;
|
||||
const RIGHT_TARGET = process.env.RIGHT;
|
||||
|
||||
(async () => {
|
||||
Echo(`Keymap: ${KEYMAP}`);
|
||||
if (!process.cwd().endsWith('/qmk_firmware')) {
|
||||
process.chdir(`${__dirname}/../`)
|
||||
console.log(process.cwd());
|
||||
}
|
||||
|
||||
Commander
|
||||
.option('-m --keymap [name]', 'Keymap name', 'default')
|
||||
.option('-p --path [path]', 'DFU device path')
|
||||
.option('--half [half]', 'Which half to program (left, right)')
|
||||
.parse(process.argv);
|
||||
|
||||
if (process.env.LEFT || process.env.RIGHT) {
|
||||
if (process.env.LEFT) {
|
||||
await Upload(KEYMAP);
|
||||
}
|
||||
(async () => {
|
||||
Echo(`Keymap: ${Commander.keymap}`);
|
||||
|
||||
if (process.env.RIGHT) {
|
||||
await Upload(KEYMAP, undefined, true);
|
||||
}
|
||||
if (Commander.half != null) {
|
||||
await Upload(Commander.keymap, Commander.path, Commander.half === 'right');
|
||||
} else {
|
||||
// Build both halves
|
||||
await Upload(KEYMAP);
|
||||
await Upload(Commander.keymap);
|
||||
|
||||
await Upload(KEYMAP, undefined, true);
|
||||
await Upload(Commander.keymap, undefined, true);
|
||||
}
|
||||
})();
|
||||
|
||||
process.on('unhandledRejection', err => {
|
||||
console.error(err);
|
||||
process.exit(1);
|
||||
});
|
||||
|
Loading…
Reference in new issue