gen-rack

Create VCV Rack modules from gen~ exports
Log | Files | Refs | README | LICENSE

builder.js (1404B)


      1 const maxApi = require('max-api');
      2 const fs = require('fs');
      3 
      4 maxApi.addHandlers({
      5     // Write the .cpp file
      6     create: async (name) => {
      7         let basedir = process.cwd() + '/../../../';  //  =>  /gen-rack
      8 
      9         // Replace GEN_RACK_DISPLAY_NAME with all lowercase name
     10         // Replace GEN_RACK_NAME with name with the first letter capitalized
     11         fs.readFile(basedir + 'src/modules/module.in', 'utf8', function (err, data) {
     12             if (err) {
     13                 maxApi.post('Error reading module.in.');
     14                 return;
     15             }
     16             let result = data.split('GEN_RACK_DISPLAY_NAME').join(name);
     17             result = result.split('GEN_RACK_NAME').join(name.charAt(0).toUpperCase() + name.slice(1));
     18 
     19             fs.writeFile(basedir + 'src/modules/' + name + '.cpp', result, 'utf8', function (err) {
     20                 if (err) {
     21                     maxApi.post('Error writing .cpp');
     22                 }
     23             });
     24         });
     25 
     26         let pluginFile = basedir + 'src/plugin.cpp';
     27         // line before end:
     28         // 'p->addModel(model' + name.charAt(0).toUpperCase() + name.slice(1) + ');';
     29 
     30         let headerFile = basedir + 'src/plugin.hpp';
     31         // 'extern Model* model' + name.charAt(0).toUpperCase() + name.slice(1) + ';';
     32         fs.appendFileSync(headerFile, 'extern Model* model' + name.charAt(0).toUpperCase() + name.slice(1) + ';\n');
     33     },
     34     
     35 });