diff --git a/apps/makeosc/src/main.js b/apps/makeosc/src/main.js index f14f960..4931cc5 100755 --- a/apps/makeosc/src/main.js +++ b/apps/makeosc/src/main.js @@ -13,8 +13,11 @@ program.addOption(new Option('--address
', 'OSC address').makeOptionMan program.addOption(new Option('--args ', 'osc args').default([])); program.addOption(new Option('--slip', 'slip encode message').default(false)); program.addOption(new Option('--types ', 'osc arg types').choices(['s', 'i', 'f', 'b']).default([])); +program.addOption( + new Option('-f --format ', 'output format').choices(['bytes', 'json', 'f', 'b']).default('bytes') +); program.action((options) => { - const { address, args, types } = options; + const { address, args, types, format } = options; const typedArgs = args?.map((rawArg, index) => { const argType = types[index] || 's'; @@ -25,16 +28,20 @@ program.action((options) => { }; }); - let oscMsgBuffer = osc.messageToBuffer({ + const oscMsg = { address, args: typedArgs, - }); + }; - if (options.slip) { - oscMsgBuffer = slip.encode(oscMsgBuffer); + if (format === 'json') { + process.stdout.write(JSON.stringify(oscMsg)); + } else if (format === 'bytes') { + let oscMsgBuffer = osc.messageToBuffer(oscMsg); + if (options.slip) { + oscMsgBuffer = slip.encode(oscMsgBuffer); + } + process.stdout.write(oscMsgBuffer); } - - process.stdout.write(oscMsgBuffer); }); program.parse();