Last active
November 22, 2017 10:36
-
-
Save davidbarral/91db3752c160a3845caa818d0aa821c6 to your computer and use it in GitHub Desktop.
Poor man npmenv solution for fish (Use multiple .npmrc profiles)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Completions for npmenv.fish | |
function __fish_npmenv_needs_command | |
set cmd (commandline -opc) | |
if [ (count $cmd) -eq 1 -a $cmd[1] = 'npmenv' ] | |
return 0 | |
end | |
return 1 | |
end | |
function __fish_npmenv_using_command | |
set cmd (commandline -opc) | |
if [ (count $cmd) -gt 1 ] | |
if [ $argv[1] = $cmd[2] ] | |
return 0 | |
end | |
end | |
return 1 | |
end | |
function __fish_npmenv_commands | |
for c in global init version versions version-name show help | |
echo $c | |
end | |
end | |
function __fish_npmenv_global_completions | |
for v in (ls $HOME/.npmenv) | |
echo $v | |
end | |
end | |
complete -f -c npmenv -n '__fish_npmenv_needs_command' -a '(__fish_npmenv_commands)' | |
complete -f -c npmenv -n "__fish_npmenv_using_command global" -a "(__fish_npmenv_global_completions)" | |
complete -f -c npmenv -n "__fish_npmenv_using_command help" -a "(__fish_npmenv_commands)" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# shell function to manage multiple .npmrc ala XXXenv | |
function npmenv | |
set -l command "$argv[1]" | |
if test (count $argv) -gt 1 | |
set subcommand "$argv[2]" | |
end | |
switch $command | |
case global | |
_npmenv_command_global $subcommand | |
case init | |
_npmenv_command_init | |
case version | |
_npmenv_command_version | |
case version-name | |
_npmenv_command_version_name | |
case versions | |
_npmenv_command_versions | |
case show | |
_npmenv_command_show | |
case help | |
_npmenv_help_command $subcommand | |
case "*" | |
echo "npmenv 1.0.0" | |
_npmenv_usage | |
end | |
end | |
function _npmenv_command_global | |
set -l v "$argv[1]" | |
if test ! $v = "" | |
_npmenv_create_version $v | |
_npmenv_link_version $v | |
end | |
echo (_npmenv_command_version) | |
end | |
function _npmenv_create_version | |
set -l v $argv[1] | |
if test ! -f $HOME/.npmenv/$v | |
echo "Creating $v version" | |
touch $HOME/.npmenv/$v | |
end | |
end | |
function _npmenv_link_version | |
set -l v $argv[1] | |
ln -nsf $HOME/.npmenv/$v $HOME/.npmrc | |
end | |
function _npmenv_command_init | |
if test -f $HOME/.npmrc | |
echo "Your previous .npmrc cofig has been renamed to .npmrc.old" | |
mv $HOME/.npmrc $HOME/.npmrc.old | |
end | |
if test ! -d $HOME/.npmenv | |
echo "Creating $HOME/.npmenv" | |
mkdir -p $HOME/.npmenv | |
end | |
_npmenv_create_version "default" | |
_npmenv_link_version "default" | |
echo (_npmenv_command_version) | |
end | |
function _npmenv_command_version | |
echo (_npmenv_command_version_name)" (set by "(_npmenv_current_version_file)")" | |
end | |
function _npmenv_command_version_name | |
echo (basename (_npmenv_current_version_file)) | |
end | |
function _npmenv_command_versions | |
set -l versions (ls $HOME/.npmenv/) | |
set -l current (_npmenv_command_version_name) | |
for v in $versions | |
if test $v = $current | |
echo "* "(_npmenv_command_version) | |
else | |
echo " "$v | |
end | |
end | |
end | |
function _npmenv_command_show | |
echo (_npmenv_command_version) | |
echo "-----" | |
cat $HOME/.npmrc | |
echo | |
end | |
function _npmenv_help_command | |
set -l command "$argv[1]" | |
echo $command | |
switch $command | |
case global | |
echo "Usage: npmenv global <version>" | |
echo | |
echo "Sets the global .npmrc version. If <version> does not match" | |
echo "an existing version it will automatically created" | |
echo | |
case init | |
echo "Usage: npmenv init" | |
echo | |
echo "Setups the npmenv environment creating as needed the .npmenv" | |
echo "folder and the default version which will also be selected as" | |
echo "the current version" | |
echo | |
case version | |
echo "Usage: npmenv version" | |
echo | |
echo "Shows the currently selected .npmrc version and how it was" | |
echo "selected. To obtain only the version string use 'npmenv " | |
echo "version-name'" | |
echo | |
case version-name | |
echo "Usage: npmenv version-name" | |
echo | |
echo "Shows the current .npmrc version" | |
echo | |
case versions | |
echo "Usage: npmenv versions" | |
echo | |
echo "Lists all versions found i '\$HOME/.npmenv'" | |
echo | |
case show | |
echo "Usage: npmenv show" | |
echo | |
echo "Shows the current .npmrc version and its contents" | |
echo | |
case help | |
echo "Usage: npmenv help COMMAND" | |
echo | |
echo "Displays a command help" | |
echo | |
case "*" | |
_npmenv_usage | |
end | |
end | |
function _npmenv_usage | |
echo "Usage: npmenv <command> [<args>]" | |
echo | |
echo "Som usefule npmenv commands are": | |
echo " global Set the .npmrc to use" | |
echo " init Set ups the npmenv environment" | |
echo " version Show the current version in use" | |
echo " versions Show all the available versions" | |
echo " show Show the current version contents" | |
echo | |
echo "See `npmenv help <command> for information on a specific command" | |
echo | |
end | |
function _npmenv_current_version_file | |
echo (readlink $HOME/.npmrc) | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment