123456789101112131415161718192021222324252627282930313233 |
- '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;
|