Manage PATH on Windows, Mac, and Linux with various Shells
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.
 
 
 

88 lines
2.0 KiB

#!/usr/bin/env node
'use strict';
var pkg = require('../package.json');
var os = require('os');
var path = require('path');
var fs = require('fs');
var manager = require('../index.js');
if (require.main === module) {
run();
}
function run() {
var ext = /^win/i.test(os.platform()) ? '.exe' : '';
//var homedir = require('os').homedir();
//var bindir = path.join(homedir, '.local', 'bin');
var bindir = path.resolve(__dirname, '..', 'bin');
var name = pkg.name.replace(/.*\//, '');
if ('.exe' === ext) {
winpmstall(pkg.name, name, bindir);
}
return manager.install(
name,
[bindir],
'pathman version',
function parseVersion(stdout) {
return (stdout || '').split(' ')[0];
},
'https://rootprojects.org/pathman/dist/{{ .Platform }}/{{ .Arch }}/pathman{{ .Ext }}'
);
}
function winpmstall(pkgname, name, bindir) {
var dd = /\//.test(pkgname) ? '../' : '';
var pkgpath = pkgname.replace(/@/g, '\\@');
try {
fs.writeFileSync(
path.join(bindir, name),
[
'#!/usr/bin/env bash',
'"$(dirname "$0")/' + name + '.exe" "$@"',
'exit $?'
].join('\n')
);
} catch (e) {
// ignore
}
// because bugs in npm + git bash oddities, of course
// https://npm.community/t/globally-installed-package-does-not-execute-in-git-bash-on-windows/9394
try {
fs.writeFileSync(
path.join(__dirname, dd + '../../.bin', name),
[
'#!/bin/sh',
'# manual bugfix patch for npm on windows',
'basedir=$(dirname "$(echo "$0" | sed -e \'s,\\\\,/,g\')")',
'"$basedir/../' + pkgpath + '/bin/' + name + '" "$@"',
'exit $?'
].join('\n')
);
} catch (e) {
// ignore
}
try {
fs.writeFileSync(
path.join(__dirname, dd + '../../..', name),
[
'#!/bin/sh',
'# manual bugfix patch for npm on windows',
'basedir=$(dirname "$(echo "$0" | sed -e \'s,\\\\,/,g\')")',
'"$basedir/node_modules/' +
pkgname +
'/bin/' +
name +
'" "$@"',
'exit $?'
].join('\n')
);
} catch (e) {
// ignore
}
// end bugfix
}