time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

readShebang.js (549B)


      1 'use strict';
      2 
      3 const fs = require('fs');
      4 const shebangCommand = require('shebang-command');
      5 
      6 function readShebang(command) {
      7     // Read the first 150 bytes from the file
      8     const size = 150;
      9     const buffer = Buffer.alloc(size);
     10 
     11     let fd;
     12 
     13     try {
     14         fd = fs.openSync(command, 'r');
     15         fs.readSync(fd, buffer, 0, size, 0);
     16         fs.closeSync(fd);
     17     } catch (e) { /* Empty */ }
     18 
     19     // Attempt to extract shebang (null is returned if not a shebang)
     20     return shebangCommand(buffer.toString());
     21 }
     22 
     23 module.exports = readShebang;