You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
740 B
32 lines
740 B
'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;
|
|
|