Nullifying Precipitation Machine

    ntr

    0.0.2 • Public • Published

    Node Task Runner

    Install

    npm install ntr

    Example

    Make like build system in node.js.

     
    var path = require('path');
     
    var ntr = require('ntr');
     
    var cfiles = ['file_a.c','file_b.c'];
     
    ntr()
      .env({gcc : '/usr/bin/gcc',cflags : '-Wall '})
      .add('somelib.a',cfiles,compileLib)
      .add('main.hex',['somelib.a','arduino.a'],compileLib)
      .add(cfiles,compileFile)
      .done(function(err){
        if(err)
          console.log(err);    
        console.log('done')
      });
     
    function toO(f){
      return path.basename(f,path.extname(f)) + '.o';
    }
     
    function exec(cmd,callback){
      console.log(cmd);
      callback();
      // execute cmd string on OS when done run callback;
    }
     
    function compileLib(next){
      // this.deps => ['file_a.c','file_b.c']
      // this.name = 'somelib.a'
      // this.env = {gcc : '/usr/bin/gcc',cflags : '-Wall '}
     
      var cmd = [this.env.gcc,this.env.cflags,'-o',this.name].concat(this.deps.map(toO).join(' ')).join(' ');
      // cmd => /usr/bin/gcc -Wall -o somelib.a file_a.o file_b.o
      exec(cmd,next);
    }
     
    function compileFile(next){
      // this.deps => [];
      // this.name = 'file_a.c'
      var cmd = [this.env.gcc,this.env.cflags,'-o', toO(this.name),this.name ].join(' ');
      // cmd => /usr/bin/gcc -Wall -o file_a.o this.name
      exec(cmd,next);
    }
     

    Install

    npm i ntr

    DownloadsWeekly Downloads

    2

    Version

    0.0.2

    License

    BSD-2-Clause

    Last publish

    Collaborators

    • adammagaluk