Maestro Makes roku development easier, especially for experienced software engineers from other platforms
I believe that experienced developers from android, ios, c#, web, node, etc, should be able to be productive on a roku app in no more than a week, just as they would on any other platform. So I wrote maestro to make that possible.
Maestro is built to:
- Raise velocity
- Increase productivity
- Reduce learning
- Simply cross-skilling
- Make roku development more fun
- Produce roku apps that can be maintained by non roku developer
- Produce roku apps that can be unit tested easily
- Write code that can be tested and breakpoint debugged, outside of SG views (which are slow as hell, and prone to crashing when breakpoint debugging)
- Clone the sample project and follow the instructions there
Maestro-roku docs can be found here
Because of the way that maestro plugin generates certain files, ropm can will cause errors when you install maestro. You will have to include a script to fix any of these broken files, and run it after you ropm hook.
/* eslint-disable github/array-foreach */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable @typescript-eslint/no-require-imports */
const fs = require('fs-extra');
const path = require('path');
let sourceDir = path.join(__dirname, '..', 'src', 'components', 'roku_modules', 'maestro');
try {
fs.readdirSync(sourceDir).forEach(file => {
let filePath = path.join(sourceDir, file);
if (filePath.endsWith('Task.xml')) {
let text = fs.readFileSync(filePath, 'utf8');
let r = /\/roku_modules\/undefined/gim;
text = text.replace(r, '/roku_modules/maestro');
fs.writeFileSync(filePath, text);
}
});
} catch (e) {
}
Change your ropm task, as follows. in package.json, scripts:
"ropm": "node scripts/maestro-ropm-hook.js ropm copy",