fisher/fisher.fish

453 lines
16 KiB
Fish
Raw Normal View History

2018-10-21 16:34:28 +02:00
set -g fisher_version 3.1.1
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
type source >/dev/null; or function source; . $argv; end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
switch (command uname)
case Darwin FreeBSD
function _fisher_now -a elapsed
command perl -MTime::HiRes -e 'printf("%.0f\n", (Time::HiRes::time() * 1000) - $ARGV[0])' $elapsed
end
case \*
function _fisher_now -a elapsed
command date "+%s%3N" | command awk -v ELAPSED="$elapsed" '{ sub(/%?3N$/, "000") } $0 -= ELAPSED'
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function fisher -a cmd -d "fish package manager"
if not command which curl >/dev/null
echo "curl is required to use fisher -- install curl and try again" >&2
return 1
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
test -z "$XDG_CACHE_HOME"; and set XDG_CACHE_HOME ~/.cache
test -z "$XDG_CONFIG_HOME"; and set XDG_CONFIG_HOME ~/.config
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
set -g fish_config $XDG_CONFIG_HOME/fish
set -g fisher_cache $XDG_CACHE_HOME/fisher
set -g fisher_config $XDG_CONFIG_HOME/fisher
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
test -z "$fisher_path"; and set -g fisher_path $fish_config
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
command mkdir -p {$fish_config,$fisher_path}/{functions,completions,conf.d} $fisher_cache
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if test ! -e "$fisher_path/completions/fisher.fish"
echo "fisher self-complete" > $fisher_path/completions/fisher.fish
_fisher_self_complete
end
if test -e "$fisher_path/conf.d/fisher.fish"
command rm -f $fisher_path/conf.d/fisher.fish
end
switch "$version"
case \*-\*
case 2\*
echo "fisher copy-user-key-bindings" > $fisher_path/conf.d/fisher.fish
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
switch "$cmd"
case self-complete
_fisher_self_complete
case copy-user-key-bindings
_fisher_copy_user_key_bindings
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
case ls
_fisher_ls | command sed "s|$HOME|~|"
case -v {,--}version
_fisher_version (status -f)
case -h {,--}help
_fisher_help
case self-update
_fisher_self_update (status -f); or return
_fisher_self_complete
case self-uninstall
_fisher_self_uninstall
case add rm ""
if test ! -z "$argv"
if not isatty
while read -l i
set argv $argv $i
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
_fisher_commit $argv; or return
_fisher_self_complete
case \*
echo "error: unknown flag or command \"$cmd\"" >&2
_fisher_help >&2
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
return 1
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_self_complete
complete -c fisher --erase
complete -xc fisher -n __fish_use_subcommand -a version -d "Show version"
complete -xc fisher -n __fish_use_subcommand -a help -d "Show help"
complete -xc fisher -n __fish_use_subcommand -a self-update -d "Update fisher"
complete -xc fisher -n __fish_use_subcommand -a ls -d "List installed packages"
complete -xc fisher -n __fish_use_subcommand -a rm -d "Remove packages"
complete -xc fisher -n __fish_use_subcommand -a add -d "Add packages"
for pkg in (_fisher_ls)
complete -xc fisher -n "__fish_seen_subcommand_from rm" -a $pkg
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
end
function _fisher_copy_user_key_bindings
if functions -q fish_user_key_bindings
functions -c fish_user_key_bindings fish_user_key_bindings_copy
end
function fish_user_key_bindings
for file in $fisher_path/conf.d/*_key_bindings.fish
source $file >/dev/null 2>/dev/null
end
if functions -q fish_user_key_bindings_copy
fish_user_key_bindings_copy
end
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_ls
set -l pkgs $fisher_config/*/*/*
for pkg in $pkgs
command readlink $pkg; and continue; or echo $pkg
end | command sed "s|$fisher_config/*||;s|github\.com/||"
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_version -a file
echo "fisher version $fisher_version $file" | command sed "s|$HOME|~|"
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_help
echo "usage: "
echo " fisher add <PACKAGES> add packages"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
echo " fisher rm <PACKAGES> remove packages"
echo " fisher update installed packages"
echo " fisher ls show installed packages"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
echo " fisher help show this help"
echo " fisher version show version"
echo " fisher self-update update fisher"
echo " fisher self-uninstall uninstall fisher"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
echo
echo "examples:"
echo " fisher add jethrokuan/z rafaelrinaldi/pure"
echo " fisher add gitlab.com/owner/foobar@v2"
echo " fisher add ~/path/to/myfish/pkg"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
echo " fisher rm rafaelrinaldi/pure"
echo " fisher ls | fisher rm"
echo " fisher add < bundle"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
function _fisher_self_update -a file
set -l url "https://raw.githubusercontent.com/jorgebucaran/fisher/master/fisher.fish"
echo "fetching $url" >&2
curl -s "$url?nocache" >$file@
set -l next_version (awk 'NR == 1 { print $4; exit }' < $file@)
switch "$next_version"
case "" $fisher_version
command rm -f $file@
if test -z "$next_version"
echo "cannot update fisher -- are you offline?" >&2
return 1
end
echo "fisher is already up-to-date" >&2
case \*
echo "linking $file" | command sed "s|$HOME|~|" >&2
command mv -f $file@ $file
source $file
echo "updated fisher to $fisher_version -- hooray!" >&2
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_self_uninstall
set -l current_pkgs $fisher_config/*/*/*
for path in $fisher_cache (_fisher_pkg_remove_all $current_pkgs) $fisher_config $fisher_path/{functions,completions,conf.d}/fisher.fish $fish_config/fishfile
echo "removing $path"
command rm -rf $path 2>/dev/null
end | command sed "s|$HOME|~|" >&2
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
set -e fisher_cache
set -e fisher_config
set -e fisher_path
set -e fisher_version
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
complete -c fisher --erase
functions -e (functions -a | command awk '/^_fisher/') fisher
echo "done -- see you again!" >&2
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_commit
set -l elapsed (_fisher_now)
set -l current_pkgs $fisher_config/*/*/*
set -l removed_pkgs (_fisher_pkg_remove_all $current_pkgs)
command rm -rf $fisher_config
command mkdir -p $fisher_config
set -l fishfile $fish_config/fishfile
if test ! -e "$fishfile"
command touch $fishfile
echo "created empty fishfile in $fishfile" | command sed "s|$HOME|~|" >&2
end
printf "%s\n" (_fisher_fishfile_format (
echo -s $argv\;) (
echo -s $removed_pkgs\;
) < $fishfile) > $fishfile
set -l expected_pkgs (_fisher_fishfile_read < $fishfile)
set -l added_pkgs (_fisher_pkg_fetch_all $expected_pkgs)
set -l updated_pkgs (
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
for pkg in $removed_pkgs
set pkg (echo $pkg | command sed "s|$fisher_config/*||")
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if contains -- $pkg $added_pkgs
echo $pkg
end
end)
if test -z "$added_pkgs$updated_pkgs$removed_pkgs$expected_pkgs"
echo "nothing to commit -- try adding some packages" >&2
return 1
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
_fisher_status (count $added_pkgs) (count $updated_pkgs) (count $removed_pkgs) (_fisher_now $elapsed) >&2
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_pkg_remove_all
for pkg in $argv
echo $pkg
_fisher_pkg_uninstall $pkg
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_pkg_fetch_all
set -l pkg_jobs
set -l local_pkgs
set -l actual_pkgs
set -l expected_pkgs
for id in $argv
switch $id
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
case \~\* /\*
set -l path (echo "$id" | command sed "s|~|$HOME|")
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if test -e "$path"
set local_pkgs $local_pkgs $path
else
echo "cannot install \"$id\" -- is this a valid file?" >&2
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
continue
end
command awk -v ID=$id -v FS=/ 'BEGIN {
if (split(ID, tmp, /@+|:/) > 2) {
if (tmp[4]) sub("@"tmp[4], "", ID)
print ID "\t" tmp[2]"/"tmp[1]"/"tmp[3] "\t" (tmp[4] ? tmp[4] : "master")
} else {
pkg = split(ID, _, "/") <= 2 ? "github.com/"tmp[1] : tmp[1]
tag = tmp[2] ? tmp[2] : "master"
print (\
pkg ~ /^github/ ? "https://codeload."pkg"/tar.gz/"tag : \
pkg ~ /^gitlab/ ? "https://"pkg"/-/archive/"tag"/"tmp[split(pkg, tmp, "/")]"-"tag".tar.gz" : \
pkg ~ /^bitbucket/ ? "https://"pkg"/get/"tag".tar.gz" : pkg \
) "\t" pkg
}
}' | read -l url pkg tag
if test ! -d "$fisher_config/$pkg"
fish -c "
echo fetching $url >&2
command mkdir -p \"$fisher_config/$pkg\"
if test ! -z \"$tag\"
command git clone $url \"$fisher_config/$pkg\" --branch $tag --depth 1 2>/dev/null
or echo cannot clone \"$url\" -- is this a valid url\? >&2
2018-10-13 19:55:42 +02:00
else if command curl -Ss $url 2>&1 | command tar -xzf- -C \"$fisher_config/$pkg\" --strip-components=1 2>/dev/null
command mkdir -p \"$fisher_cache/$pkg\"
command cp -Rf \"$fisher_config/$pkg\" \"$fisher_cache/$pkg/..\"
else if test -d \"$fisher_cache/$pkg\"
echo cannot connect to server -- searching in \"$fisher_cache/$pkg\" | command sed 's|$HOME|~|' >&2
command cp -Rf \"$fisher_cache/$pkg\" \"$fisher_config/$pkg/..\"
else
command rm -rf \"$fisher_config/$pkg\"
echo cannot install \"$pkg\" -- is this a valid package\? >&2
end
" >/dev/null &
set pkg_jobs $pkg_jobs (_fisher_jobs --last)
set expected_pkgs $expected_pkgs "$pkg"
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if test ! -z "$pkg_jobs"
_fisher_wait $pkg_jobs
for pkg in $expected_pkgs
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if test -d "$fisher_config/$pkg"
set actual_pkgs $actual_pkgs $pkg
_fisher_pkg_install $fisher_config/$pkg
end
end
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
for pkg in $local_pkgs
set -l path local/$USER
set -l name (command basename $pkg)
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
command mkdir -p $fisher_config/$path
command ln -sf $pkg $fisher_config/$path
set actual_pkgs $actual_pkgs $path/$name
_fisher_pkg_install $fisher_config/$path/$name
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
if test ! -z "$actual_pkgs"
_fisher_pkg_fetch_all (_fisher_pkg_get_deps $actual_pkgs | command sort --unique)
printf "%s\n" $actual_pkgs
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_pkg_get_deps
for pkg in $argv
set -l path $fisher_config/$pkg
if test ! -d "$path"
echo $pkg
else if test -s "$path/fishfile"
_fisher_pkg_get_deps (_fisher_fishfile_format < $path/fishfile | _fisher_fishfile_read)
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_pkg_install -a pkg
set -l name (command basename $pkg)
set -l files $pkg/{functions,completions,conf.d}/**.* $pkg/*.fish
for source in $files
set -l target (command basename $source)
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
switch $source
case $pkg/conf.d\*
set target $fisher_path/conf.d/$target
case $pkg/completions\*
set target $fisher_path/completions/$target
case $pkg/{functions,}\*
switch $target
case uninstall.fish
continue
case init.fish key_bindings.fish
set target $fisher_path/conf.d/$name\_$target
case \*
set target $fisher_path/functions/$target
end
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
echo "linking $target" | command sed "s|$HOME|~|" >&2
command cp -f $source $target
switch $target
case \*.fish
source $target >/dev/null 2>/dev/null
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
end
function _fisher_pkg_uninstall -a pkg
set -l name (command basename $pkg)
set -l files $pkg/{conf.d,completions,functions}/**.* $pkg/*.fish
for source in $files
set -l target (command basename $source)
set -l filename (command basename $target .fish)
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
switch $source
case $pkg/conf.d\*
test "$filename.fish" = "$target"; and emit "$filename"_uninstall
set target conf.d/$target
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
case $pkg/completions\*
test "$filename.fish" = "$target"; and complete -ec $filename
set target completions/$target
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
case $pkg/{,functions}\*
test "$filename.fish" = "$target"; and functions -e $filename
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
switch $target
case uninstall.fish
source $source
continue
case init.fish key_bindings.fish
set target conf.d/$name\_$target
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
case \*
set target functions/$target
end
end
command rm -f $fisher_path/$target
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
if not functions -q fish_prompt
2018-10-08 06:32:57 +02:00
source "$__fish_datadir$__fish_data_dir/functions/fish_prompt.fish"
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
end
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
function _fisher_fishfile_read
command awk -v FS=\# '!/^#/ && NF { print $1 }'
end
function _fisher_fishfile_format -a pkgs removed_pkgs
command awk -v PWD=$PWD -v HOME=$HOME -v PKGS="$pkgs" -v REMOVED_PKGS="$removed_pkgs" '
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
BEGIN {
pkg_count = split(PKGS, pkgs, ";") - 1
cmd = pkgs[1]
for (i = 2; i <= pkg_count; i++) {
pkg_ids[i - 1] = get_pkg_id( pkgs[i] = normalize(pkgs[i]) )
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
}
} {
if (NF) {
$0 = normalize($0)
newln = newln > 0 ? "" : newln
if (/^#/) print newln$0
2018-10-21 16:28:25 +02:00
else if (!seen_pkgs[(pkg_id = get_pkg_id($0))]++) {
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
for (i = 1; i < pkg_count; i++) {
if (pkg_ids[i] == pkg_id) {
if (cmd == "rm") next
$0 = pkgs[i + 1]
break
}
}
print newln$0
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
}
newln = NF
} else if (newln) newln = "\n"(newln > 0 ? "" : newln)
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
}
END {
if (cmd == "rm" || pkg_count <= 1) {
split(REMOVED_PKGS, tmp, ";")
for (i in tmp) removed_pkgs[normalize(tmp[i])] = i
for (i in pkg_ids) if (!(pkg_ids[i] in removed_pkgs)) {
print "cannot remove \"" pkg_ids[i] "\" -- package not found" > "/dev/stderr"
}
exit
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
}
for (i in pkg_ids) if (!seen_pkgs[pkg_ids[i]]) print pkgs[i+1]
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
}
function normalize(s) {
gsub(/^[ \t]*(https?:\/\/)?(.*github\.com\/)?|[\/ \t]*$/, "", s)
sub(/^\.\//, PWD"/", s)
sub(HOME, "~", s)
return s
}
function get_pkg_id(s) {
return (split(s, tmp, /@+|:/) > 2) ? tmp[2]"/"tmp[1]"/"tmp[3] : tmp[1]
}
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
'
end
function _fisher_status -a added updated removed elapsed
command awk -v ADDED=$added -v UPDATED=$updated -v REMOVED=$removed -v ELAPSED=$elapsed '
BEGIN {
if (ADDED = ADDED - UPDATED) res = msg(res, "added", ADDED)
if (UPDATED) res = msg(res, "updated", UPDATED)
if (REMOVED = REMOVED - UPDATED) res = msg(res, "removed", REMOVED)
printf((res ? res : "done") " in %.2fs\n", ELAPSED / 1000)
}
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function msg(res, str, n) {
return (res ? res ", " : "") str " " n " package" (n > 1 ? "s" : "")
}
'
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_jobs
jobs $argv | command awk '/[0-9]+\t/ { print $1 }'
end
breaking: implement fisher V3 (#445) SUMMARY This PR rewrites fisher from the ground up and adds new documentation. It introduces some breaking changes as described in the next section. For a historical background of this work see the original V3 proposal #307 and the more recent discussion about the future of the project #443. After much debate and careful consideration I decided it is in the best interest of the project to keep the CLI-based approach to dependency management as a facade to the fishfile-based approach originally proposed. The new `add` commands (previously `install`) and good ol' `rm` interactively update your fishfile and commit all your changes in one sweep. To the end user, it's as if you were adding or removing packages like you already do now. Internally, these commands affect how the fishfile is parsed and result in adding new or replacing/removing existing entries followed by a regular `fisher` run. INSTALLING - `install` has been renamed to `add` - Installing from a gist is no longer supported (but it will be back in a future release—removed only to simplify the rewrite) - To install a package from a tag or branch use an at symbol `@`—the colon `:` is deprecated LISTING - `ls` and `rm` are still available with a few minor differences - `ls` followed by a package name does not list specific package information (may be added back in a future release) - `ls` output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier - For local packages the full path is shown instead - I want to add a `--tree` option in to display packages in a tree-like format in the future - `ls-remote` has been removed as there is no longer a preferred organization to look for packages— there is no plan to add it back UPDATING - A new `self-update` command has been introduced to update fisher itself - fisher will be only updated when a new version is actually available - `update` has been removed - Everything is installed from scratch everytime you add or remove something, so there is no need to update specific packages—you're always up-to-date - To lock on a specific package version install from a tag/branch, e.g., `mypkg/foobar@1.3.2` UNINSTALLING - `self-uninstall` works as usual HELP & VERSION - `help` only displays fisher usage help - help is dumped to stdout instead of creating a man page on the fly and piping it to your pager `version` works as usual ENVIRONMENT - `$fish_path` been renamed to `$fisher_path` to make it clear that this is a fisher specific extension, not your shell's ECOSYSTEM - Oh My Fish! packages are still supported, albeit less attention is paid to them - Some packages that use Oh My Fish! specific environment variables or events might not work - Most of Oh My Fish! extensions are no longer necessary since fish 2.3, therefore it should be a simple matter to upgrade them to modern fish DEPENDENCIES - fisher can now run on fish 2.0 - It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for fisher to force you to use any fish version - `curl` is required for fetching packages - I am considering adding a fallback to `wget` if `curl` is not available on your system - `git` is optional - V3 fetches packages directly from github, gitlab and bitbucket, if you are using them - git is only used (implementation still wip) if you want to install a package from an unknown git host like your own git server
2018-10-05 13:20:31 +02:00
function _fisher_wait
while for job in $argv
contains -- $job (_fisher_jobs); and break
Ahoy my mateys! fisherman 2.0.0 (beta) is here. A lot has changed, in fact, fisherman as you knew it, is no longer with us. Let me explain. The new fisherman, is in fact a rewired clone of ``fin´´, a short-lived 2 week experiment that started because it was easier to rewrite everything than moving fisherman forward. Let me explain. I was longing for a lightweight, simpler fisherman with minimal maintanance cost. This fin lad is one of the most pragmatic pieces of code I've ever written, but attempting to maintain two drastically different plugin managers was not a sane decision. fin's goal was to get out of my way and let me be productive with fish and it did. Now fin is fisherman and fisherman is fin. The most notable change is that fisherman no longer depends on an index, so like fin, it's neutral and agnostic to what plugins you use. No index means fisherman completions are no longer as clever as to show you description of plugins, but you will still get enough information to know whether the plugin is a theme or not. I hope you always check the plugin's README / online docs before installing anything anyway. With the index gone, we had no use for ``search``, so this command is also gone. If you were using search often or depended on the removed features above, I am afraid they are gone *gone*, but trust me it's all for the very best. Now, with this out of the way, it's all unicorns and dartfish. Almost. To upgrade to fisherman 2.0.0 you need to REMOVE your current version of fisherman: 1. ```rm -rf "$fisher_home" "$fisher_config"``` 2. Open your config.fish and remove the fisherman initialization code. 3. ```exec fish < /dev/tty``` to reload the session. 4. Run `curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisherman` That's it. Probably. The new fisherman brings a lot more stability and maturity to the project and we need this change in order to move forward. I will be actively fixing any bugs that may have sneaked in during the ```fin->fisherman``` rewiring, but please do ping me: @bucaran on GitHub or directly to my email j@bucaran.me if you find anything out of place. Feel free and invited to go wild with issues in order to get this into shape ASAP. Cheers!
2016-04-21 17:34:06 +02:00
end
end
end