| 'use strict'; |
| |
| const fs = require('fs'); |
| const shebangCommand = require('shebang-command'); |
| |
| function readShebang(command) { |
| // Read the first 150 bytes from the file |
| const size = 150; |
| let buffer; |
| |
| if (Buffer.alloc) { |
| // Node.js v4.5+ / v5.10+ |
| buffer = Buffer.alloc(size); |
| } else { |
| // Old Node.js API |
| buffer = new Buffer(size); |
| buffer.fill(0); // zero-fill |
| } |
| |
| let fd; |
| |
| try { |
| fd = fs.openSync(command, 'r'); |
| fs.readSync(fd, buffer, 0, size, 0); |
| fs.closeSync(fd); |
| } catch (e) { /* Empty */ } |
| |
| // Attempt to extract shebang (null is returned if not a shebang) |
| return shebangCommand(buffer.toString()); |
| } |
| |
| module.exports = readShebang; |