2020-08-13 11:38:46 +00:00
|
|
|
set -g fisher_version 3.3.2
|
2016-05-10 10:25:05 +00:00
|
|
|
|
2020-08-13 11:38:02 +00:00
|
|
|
function fisher -a cmd -d "fish plugin manager"
|
2018-11-22 14:46:42 +00:00
|
|
|
set -q XDG_CACHE_HOME; or set XDG_CACHE_HOME ~/.cache
|
|
|
|
set -q XDG_CONFIG_HOME; or set XDG_CONFIG_HOME ~/.config
|
2020-07-01 03:30:16 +00:00
|
|
|
set -q XDG_DATA_HOME; or set XDG_DATA_HOME ~/.local/share
|
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 15:34:06 +00: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 11:20:31 +00:00
|
|
|
set -g fish_config $XDG_CONFIG_HOME/fish
|
|
|
|
set -g fisher_cache $XDG_CACHE_HOME/fisher
|
2020-07-01 03:30:16 +00:00
|
|
|
set -g fisher_data $XDG_DATA_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 15:34:06 +00:00
|
|
|
|
2018-11-22 14:46:42 +00:00
|
|
|
set -q fisher_path; or set -g fisher_path $fish_config
|
2019-11-09 03:06:43 +00:00
|
|
|
set -g fishfile $fish_config/fishfile
|
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 15:34:06 +00:00
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
for path in {$fish_config,$fisher_path}/{functions,completions,conf.d} $fisher_cache
|
|
|
|
if test ! -d $path
|
|
|
|
command mkdir -p $path
|
2018-11-22 14:46:42 +00:00
|
|
|
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 15:34:06 +00:00
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
if test ! -e $fisher_path/completions/fisher.fish
|
2019-01-17 08:59:33 +00:00
|
|
|
echo "fisher complete" >$fisher_path/completions/fisher.fish
|
|
|
|
_fisher_complete
|
2017-03-03 17:56:52 +00:00
|
|
|
end
|
2016-05-09 11:09:09 +00:00
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
if test -e $fisher_path/conf.d/fisher.fish
|
2018-11-22 14:46:42 +00:00
|
|
|
switch "$version"
|
2018-12-31 17:49:03 +00:00
|
|
|
case \*-\*
|
|
|
|
command rm -f $fisher_path/conf.d/fisher.fish
|
|
|
|
case 2\*
|
|
|
|
case \*
|
|
|
|
command rm -f $fisher_path/conf.d/fisher.fish
|
2018-11-22 14:46:42 +00:00
|
|
|
end
|
|
|
|
else
|
|
|
|
switch "$version"
|
2018-12-31 17:49:03 +00:00
|
|
|
case \*-\*
|
|
|
|
case 2\*
|
|
|
|
echo "fisher copy-user-key-bindings" >$fisher_path/conf.d/fisher.fish
|
2018-11-22 14:46:42 +00:00
|
|
|
end
|
2018-10-17 05:42:52 +00:00
|
|
|
end
|
|
|
|
|
2019-11-09 03:06:43 +00:00
|
|
|
# 2019-10-22: temp code, migrates fishfile from old path back to $fish_config
|
|
|
|
if test -e "$fisher_path/fishfile"; and test ! -e "$fishfile"
|
|
|
|
command mv -f "$fisher_path/fishfile" "$fishfile"
|
|
|
|
end
|
|
|
|
|
2020-07-01 03:30:16 +00:00
|
|
|
# 2020-06-23: temp code, migrates fisher data from XDG_CONFIG_HOME to XDG_DATA_HOME
|
|
|
|
set -l fisher_config $XDG_CONFIG_HOME/fisher
|
|
|
|
if test -d $fisher_config
|
|
|
|
echo "migrating local data from $fisher_config to $fisher_data"
|
|
|
|
command rm -rf $fisher_data
|
|
|
|
command mv -f $fisher_config $fisher_data
|
|
|
|
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 11:20:31 +00:00
|
|
|
switch "$cmd"
|
2019-01-17 08:59:33 +00:00
|
|
|
case {,self-}complete
|
|
|
|
_fisher_complete
|
2018-10-17 05:42:52 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
case ls
|
2019-01-12 09:49:03 +00:00
|
|
|
set -e argv[1]
|
2019-11-09 03:06:43 +00:00
|
|
|
if test -s "$fishfile"
|
|
|
|
set -l file (_fisher_fmt <$fishfile | _fisher_parse -R | command sed "s|@.*||")
|
2019-01-17 08:59:33 +00:00
|
|
|
_fisher_ls | _fisher_fmt | command awk -v FILE="$file" "
|
|
|
|
BEGIN { for (n = split(FILE, f); ++i <= n;) file[f[i]] } \$0 in file && /$argv[1]/
|
2019-01-21 07:36:09 +00:00
|
|
|
" | command sed "s|^$HOME|~|"
|
2019-01-17 08:59:33 +00:00
|
|
|
end
|
2018-12-31 17:49:03 +00:00
|
|
|
case self-update
|
|
|
|
_fisher_self_update (status -f)
|
|
|
|
case self-uninstall
|
|
|
|
_fisher_self_uninstall
|
2019-01-22 09:54:16 +00:00
|
|
|
case {,-}-v{ersion,}
|
2019-01-22 09:29:59 +00:00
|
|
|
echo "fisher version $fisher_version" (status -f | command sed "s|^$HOME|~|")
|
2019-01-22 09:54:16 +00:00
|
|
|
case {,-}-h{elp,}
|
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 11:20:31 +00:00
|
|
|
_fisher_help
|
2018-12-31 17:49:03 +00:00
|
|
|
case ""
|
2019-01-04 16:45:43 +00:00
|
|
|
_fisher_commit --
|
2018-12-31 17:49:03 +00:00
|
|
|
case add rm
|
|
|
|
if not isatty
|
|
|
|
while read -l arg
|
|
|
|
set argv $argv $arg
|
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 15:34:06 +00:00
|
|
|
end
|
|
|
|
end
|
2018-12-31 17:49:03 +00:00
|
|
|
|
|
|
|
if test (count $argv) = 1
|
2019-01-17 08:59:33 +00:00
|
|
|
echo "fisher: invalid number of arguments" >&2
|
2018-12-31 17:49:03 +00:00
|
|
|
_fisher_help >&2
|
|
|
|
return 1
|
|
|
|
end
|
|
|
|
|
|
|
|
_fisher_commit $argv
|
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 11:20:31 +00:00
|
|
|
case \*
|
2019-01-17 08:59:33 +00:00
|
|
|
echo "fisher: unknown flag or command \"$cmd\"" >&2
|
2018-10-05 17:20:08 +00:00
|
|
|
_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 11:20:31 +00: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 15:34:06 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-01-17 08:59:33 +00:00
|
|
|
function _fisher_complete
|
2019-01-04 16:46:17 +00:00
|
|
|
complete -ec fisher
|
2020-08-13 11:38:02 +00:00
|
|
|
complete -xc fisher -n __fish_use_subcommand -a add -d "Add plugins"
|
|
|
|
complete -xc fisher -n __fish_use_subcommand -a rm -d "Remove plugins"
|
|
|
|
complete -xc fisher -n __fish_use_subcommand -a ls -d "List installed plugins matching REGEX"
|
2019-01-22 09:54:16 +00:00
|
|
|
complete -xc fisher -n __fish_use_subcommand -a --help -d "Show usage help"
|
|
|
|
complete -xc fisher -n __fish_use_subcommand -a --version -d "$fisher_version"
|
2018-12-31 17:49:03 +00:00
|
|
|
complete -xc fisher -n __fish_use_subcommand -a self-update -d "Update to the latest version"
|
2019-01-17 08:59:33 +00:00
|
|
|
for pkg in (fisher ls)
|
2019-01-12 09:19:28 +00:00
|
|
|
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 15:34:06 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-10-17 05:42:52 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
function _fisher_ls
|
2020-07-01 03:30:16 +00:00
|
|
|
for pkg in $fisher_data/*/*/*
|
2018-12-31 17:49:03 +00:00
|
|
|
command readlink $pkg; or echo $pkg
|
|
|
|
end
|
2016-04-30 18:19:25 +00:00
|
|
|
end
|
|
|
|
|
2019-01-12 09:19:28 +00:00
|
|
|
function _fisher_fmt
|
2020-07-01 03:30:16 +00:00
|
|
|
command sed "s|^[[:space:]]*||;s|^$fisher_data/||;s|^~|$HOME|;s|^\.\/*|$PWD/|;s|^https*:/*||;s|^github\.com/||;s|/*\$||"
|
2019-01-12 09:19:28 +00: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 11:20:31 +00:00
|
|
|
function _fisher_help
|
2020-08-13 11:38:02 +00:00
|
|
|
echo "usage: fisher add <plugin...> Add plugin/s"
|
|
|
|
echo " fisher rm <plugin...> Remove plugin/s"
|
|
|
|
echo " fisher Update all plugins"
|
|
|
|
echo " fisher ls [<regex>] List installed plugins matching <regex>"
|
|
|
|
echo " fisher --help Show this help"
|
|
|
|
echo " fisher --version Show the current version"
|
|
|
|
echo " fisher self-update Update to the latest version"
|
|
|
|
echo " fisher self-uninstall Uninstall from your system"
|
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 11:20:31 +00:00
|
|
|
echo "examples:"
|
2020-08-13 11:38:02 +00:00
|
|
|
echo " fisher add jorgebucaran/z rafaelrinaldi/pure"
|
2018-12-31 17:49:03 +00:00
|
|
|
echo " fisher add gitlab.com/foo/bar@v2"
|
|
|
|
echo " fisher add ~/path/to/local/pkg"
|
2019-01-22 15:53:43 +00:00
|
|
|
echo " fisher add <file"
|
2019-01-12 09:49:03 +00:00
|
|
|
echo " fisher rm rafaelrinaldi/pure"
|
|
|
|
echo " fisher ls | fisher rm"
|
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 11:20:31 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
function _fisher_self_update -a file
|
2020-08-02 02:01:19 +00:00
|
|
|
set -l url "https://raw.githubusercontent.com/jorgebucaran/fisher/main/fisher.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 11:20:31 +00:00
|
|
|
echo "fetching $url" >&2
|
2018-12-31 17:49:03 +00:00
|
|
|
command curl -s "$url?nocache" >$file.
|
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 11:20:31 +00:00
|
|
|
|
2020-07-27 11:16:49 +00:00
|
|
|
set -l next_version (command awk '$4 ~ /^[0-9]+\.[0-9]+\.[0-9]+$/ { print v=$4 } { exit !v }' <$file.)
|
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 11:20:31 +00:00
|
|
|
switch "$next_version"
|
|
|
|
case "" $fisher_version
|
2018-12-31 17:49:03 +00:00
|
|
|
command rm -f $file.
|
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 11:20:31 +00:00
|
|
|
if test -z "$next_version"
|
2019-01-17 08:59:33 +00:00
|
|
|
echo "fisher: cannot update fisher -- are you offline?" >&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 11:20:31 +00:00
|
|
|
return 1
|
|
|
|
end
|
|
|
|
echo "fisher is already up-to-date" >&2
|
|
|
|
case \*
|
2019-01-22 01:13:32 +00:00
|
|
|
echo "linking $file" | command sed "s|$HOME|~|" >&2
|
2018-12-31 17:49:03 +00:00
|
|
|
command mv -f $file. $file
|
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 11:20:31 +00:00
|
|
|
source $file
|
2019-01-22 09:29:59 +00:00
|
|
|
echo "updated to fisher $fisher_version -- hooray!" >&2
|
2019-01-17 08:59:33 +00:00
|
|
|
_fisher_complete
|
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 11:20:31 +00: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 15:34:06 +00: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 11:20:31 +00:00
|
|
|
function _fisher_self_uninstall
|
2018-12-31 17:49:03 +00:00
|
|
|
for pkg in (_fisher_ls)
|
|
|
|
_fisher_rm $pkg
|
|
|
|
end
|
|
|
|
|
2020-07-01 03:30:16 +00:00
|
|
|
for file in $fisher_cache $fisher_data $fisher_path/{functions,completions,conf.d}/fisher.fish $fishfile
|
2018-12-31 17:49:03 +00:00
|
|
|
echo "removing $file"
|
|
|
|
command rm -Rf $file 2>/dev/null
|
2019-01-22 01:13:32 +00:00
|
|
|
end | command sed "s|$HOME|~|" >&2
|
2018-10-05 23:19:40 +00:00
|
|
|
|
2019-01-12 10:10:04 +00:00
|
|
|
for name in (set -n | command awk '/^fisher_/')
|
|
|
|
set -e "$name"
|
|
|
|
end
|
2018-10-05 23:19:40 +00: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 11:20:31 +00:00
|
|
|
functions -e (functions -a | command awk '/^_fisher/') fisher
|
2019-01-17 08:59:33 +00:00
|
|
|
complete -c fisher --erase
|
2016-05-02 11:02:20 +00:00
|
|
|
end
|
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
function _fisher_commit -a cmd
|
|
|
|
set -e argv[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 11:20:31 +00:00
|
|
|
set -l elapsed (_fisher_now)
|
2018-12-31 17:49:03 +00:00
|
|
|
|
2018-10-05 17:20:08 +00:00
|
|
|
if test ! -e "$fishfile"
|
|
|
|
command touch $fishfile
|
2019-01-22 01:13:32 +00:00
|
|
|
echo "created new fishfile in $fishfile" | command sed "s|$HOME|~|" >&2
|
2016-05-02 11:02:20 +00:00
|
|
|
end
|
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
set -l old_pkgs (_fisher_ls | _fisher_fmt)
|
2018-12-31 17:49:03 +00:00
|
|
|
for pkg in (_fisher_ls)
|
|
|
|
_fisher_rm $pkg
|
|
|
|
end
|
2020-07-01 03:30:16 +00:00
|
|
|
command rm -Rf $fisher_data
|
|
|
|
command mkdir -p $fisher_data
|
2018-12-31 17:49:03 +00:00
|
|
|
|
2019-01-21 07:38:17 +00:00
|
|
|
set -l next_pkgs (_fisher_fmt <$fishfile | _fisher_parse -R $cmd (printf "%s\n" $argv | _fisher_fmt))
|
2019-01-22 11:26:48 +00:00
|
|
|
set -l actual_pkgs (_fisher_fetch $next_pkgs)
|
|
|
|
set -l updated_pkgs
|
|
|
|
for pkg in $old_pkgs
|
|
|
|
if contains -- $pkg $actual_pkgs
|
|
|
|
set updated_pkgs $updated_pkgs $pkg
|
2018-12-31 17:49:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
if test -z "$actual_pkgs$updated_pkgs$old_pkgs$next_pkgs"
|
2020-08-13 11:38:02 +00:00
|
|
|
echo "fisher: nothing to commit -- try adding some plugins" >&2
|
2018-10-05 17:20:08 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
end
|
2018-10-05 17:20:08 +00:00
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
set -l out_pkgs
|
2018-12-31 17:49:03 +00:00
|
|
|
if test "$cmd" = "rm"
|
2019-01-22 11:26:48 +00:00
|
|
|
set out_pkgs $next_pkgs
|
2018-12-31 17:49:03 +00:00
|
|
|
else
|
|
|
|
for pkg in $next_pkgs
|
2019-01-22 11:26:48 +00:00
|
|
|
if contains -- (echo $pkg | command sed "s|@.*||") $actual_pkgs
|
|
|
|
set out_pkgs $out_pkgs $pkg
|
2018-12-31 17:49:03 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
printf "%s\n" (_fisher_fmt <$fishfile | _fisher_parse -W $cmd $out_pkgs | command sed "s|^$HOME|~|") >$fishfile
|
2018-12-31 17:49:03 +00:00
|
|
|
|
2019-01-17 08:59:33 +00:00
|
|
|
_fisher_complete
|
2018-12-31 17:49:03 +00:00
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
command awk -v A=(count $actual_pkgs) -v U=(count $updated_pkgs) -v O=(count $old_pkgs) -v E=(_fisher_now $elapsed) '
|
2018-12-31 17:49:03 +00:00
|
|
|
BEGIN {
|
2019-01-22 11:26:48 +00:00
|
|
|
res = fmt("removed", O - U, fmt("updated", U, fmt("added", A - U)))
|
2018-12-31 17:49:03 +00:00
|
|
|
printf((res ? res : "done") " in %.2fs\n", E / 1000)
|
|
|
|
}
|
2019-01-17 08:59:33 +00:00
|
|
|
function fmt(action, n, s) {
|
2020-08-13 11:38:02 +00:00
|
|
|
return n ? (s ? s ", " : s) action " " n " plugin" (n > 1 ? "s" : "") : s
|
2018-12-31 17:49:03 +00:00
|
|
|
}
|
|
|
|
' >&2
|
|
|
|
end
|
|
|
|
|
2019-01-21 07:38:17 +00:00
|
|
|
function _fisher_parse -a mode cmd
|
2019-01-17 08:59:33 +00:00
|
|
|
set -e argv[1..2]
|
2019-01-21 10:29:25 +00:00
|
|
|
command awk -v FS="[[:space:]]*#+" -v MODE="$mode" -v CMD="$cmd" -v ARGSTR="$argv" '
|
2018-12-31 17:49:03 +00:00
|
|
|
BEGIN {
|
2019-01-17 08:59:33 +00:00
|
|
|
for (n = split(ARGSTR, a, " "); i++ < n;) pkgs[getkey(a[i])] = a[i]
|
2018-12-31 17:49:03 +00:00
|
|
|
}
|
2019-01-21 11:02:25 +00:00
|
|
|
!NF { next } { k = getkey($1) }
|
2020-05-22 16:37:54 +00:00
|
|
|
MODE == "-R" && !(k in pkgs) && ($0 = $1)
|
2019-01-21 10:29:25 +00:00
|
|
|
MODE == "-W" && (/^#/ || k in pkgs || CMD != "rm") { print pkgs[k] (sub($1, "") ? $0 : "") }
|
2019-01-21 07:38:17 +00:00
|
|
|
MODE == "-W" || CMD == "rm" { delete pkgs[k] }
|
2018-12-31 17:49:03 +00:00
|
|
|
END {
|
2019-01-17 08:59:33 +00:00
|
|
|
for (k in pkgs) {
|
2019-01-21 07:38:17 +00:00
|
|
|
if (CMD != "rm" || MODE == "-W") print pkgs[k]
|
2020-08-13 11:38:02 +00:00
|
|
|
else print "fisher: cannot remove \""k"\" -- plugin is not in fishfile" > "/dev/stderr"
|
2018-12-31 17:49:03 +00:00
|
|
|
}
|
|
|
|
}
|
2019-01-17 08:59:33 +00:00
|
|
|
function getkey(s, a) {
|
2018-12-31 17:49:03 +00:00
|
|
|
return (split(s, a, /@+|:/) > 2) ? a[2]"/"a[1]"/"a[3] : a[1]
|
|
|
|
}
|
|
|
|
'
|
|
|
|
end
|
|
|
|
|
|
|
|
function _fisher_fetch
|
2019-01-29 18:33:03 +00:00
|
|
|
set -l pkg_jobs
|
2019-01-22 11:26:48 +00:00
|
|
|
set -l out_pkgs
|
2018-12-31 17:49:03 +00:00
|
|
|
set -l next_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 11:20:31 +00:00
|
|
|
set -l local_pkgs
|
2019-01-17 08:59:33 +00:00
|
|
|
set -q fisher_user_api_token; and set -l curl_opts -u $fisher_user_api_token
|
2016-05-07 10:12:13 +00:00
|
|
|
|
2019-01-22 08:58:42 +00:00
|
|
|
for pkg in $argv
|
|
|
|
switch $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 11:20:31 +00:00
|
|
|
case \~\* /\*
|
2019-01-22 08:58:42 +00:00
|
|
|
set -l path (echo "$pkg" | 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 11:20:31 +00:00
|
|
|
if test -e "$path"
|
|
|
|
set local_pkgs $local_pkgs $path
|
|
|
|
else
|
2019-01-22 08:58:42 +00:00
|
|
|
echo "fisher: cannot add \"$pkg\" -- 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 11:20:31 +00:00
|
|
|
end
|
|
|
|
continue
|
|
|
|
end
|
2016-05-07 19:20:27 +00:00
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
command awk -v PKG="$pkg" -v FS=/ '
|
2019-01-11 12:22:32 +00:00
|
|
|
BEGIN {
|
2020-08-02 10:33:22 +00:00
|
|
|
split(PKG, tmp, /@/)
|
|
|
|
pkg = split(PKG, _, "/") <= 2 ? "github.com/"tmp[1] : tmp[1]
|
2020-08-04 15:00:33 +00:00
|
|
|
tag = tmp[2] ? tmp[2] : "HEAD"
|
|
|
|
print pkg "\t" (\
|
2020-08-02 10:33:22 +00:00
|
|
|
pkg ~ /^github/ ? "https://codeload."pkg"/tar.gz/"tag : \
|
|
|
|
pkg ~ /^gitlab/ ? "https://"pkg"/-/archive/"tag"/"tmp[split(pkg, tmp, "/")]"-"tag".tar.gz" : \
|
2020-08-04 15:00:33 +00:00
|
|
|
pkg ~ /^bitbucket/ ? "https://"pkg"/get/"tag".tar.gz" : pkg\
|
|
|
|
)
|
2020-08-02 10:33:22 +00:00
|
|
|
}
|
2020-08-04 15:00:33 +00:00
|
|
|
' | read -l pkg url
|
2016-05-07 10:12:13 +00:00
|
|
|
|
2020-07-01 03:30:16 +00:00
|
|
|
if test ! -d "$fisher_data/$pkg"
|
2018-10-06 17:37:30 +00:00
|
|
|
fish -c "
|
|
|
|
echo fetching $url >&2
|
2020-07-01 03:30:16 +00:00
|
|
|
command mkdir -p $fisher_data/$pkg $fisher_cache/(command dirname $pkg)
|
2020-08-02 10:33:22 +00:00
|
|
|
if command curl $curl_opts -Ss -w \"\" $url 2>&1 | command tar -xzf- -C $fisher_data/$pkg 2>/dev/null
|
2018-12-31 17:49:03 +00:00
|
|
|
command rm -Rf $fisher_cache/$pkg
|
2020-07-01 03:30:16 +00:00
|
|
|
command mv -f $fisher_data/$pkg/* $fisher_cache/$pkg
|
|
|
|
command rm -Rf $fisher_data/$pkg
|
|
|
|
command cp -Rf {$fisher_cache,$fisher_data}/$pkg
|
2018-10-06 17:37:30 +00:00
|
|
|
else if test -d \"$fisher_cache/$pkg\"
|
2019-01-22 01:13:32 +00:00
|
|
|
echo fisher: cannot connect to server -- looking in \"$fisher_cache/$pkg\" | command sed 's|$HOME|~|' >&2
|
2020-07-01 03:30:16 +00:00
|
|
|
command cp -Rf $fisher_cache/$pkg $fisher_data/$pkg/..
|
2018-10-06 17:37:30 +00:00
|
|
|
else
|
2020-07-01 03:30:16 +00:00
|
|
|
command rm -Rf $fisher_data/$pkg
|
2020-08-13 11:38:02 +00:00
|
|
|
echo fisher: cannot add \"$pkg\" -- is this a valid plugin\? >&2
|
2018-10-06 17:37:30 +00:00
|
|
|
end
|
|
|
|
" >/dev/null &
|
2019-01-29 18:33:03 +00:00
|
|
|
set pkg_jobs $pkg_jobs (_fisher_jobs --last)
|
2020-07-01 03:30:16 +00:00
|
|
|
set next_pkgs $next_pkgs "$fisher_data/$pkg"
|
2018-10-06 17:37:30 +00:00
|
|
|
end
|
2016-05-07 10:12:13 +00:00
|
|
|
end
|
|
|
|
|
2019-01-29 18:33:03 +00:00
|
|
|
if set -q pkg_jobs[1]
|
|
|
|
while for job in $pkg_jobs
|
2019-01-21 11:51:25 +00:00
|
|
|
contains -- $job (_fisher_jobs); and break
|
|
|
|
end
|
|
|
|
end
|
2018-12-31 17:49:03 +00:00
|
|
|
for pkg in $next_pkgs
|
|
|
|
if test -d "$pkg"
|
2019-01-22 11:26:48 +00:00
|
|
|
set out_pkgs $out_pkgs $pkg
|
2018-12-31 17:49:03 +00:00
|
|
|
_fisher_add $pkg
|
2016-05-07 10:12:13 +00:00
|
|
|
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 15:34:06 +00:00
|
|
|
|
2020-07-01 03:30:16 +00:00
|
|
|
set -l local_prefix $fisher_data/local/$USER
|
2019-01-22 08:58:42 +00:00
|
|
|
if test ! -d "$local_prefix"
|
|
|
|
command mkdir -p $local_prefix
|
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 11:20:31 +00:00
|
|
|
end
|
2019-01-22 08:58:42 +00:00
|
|
|
for pkg in $local_pkgs
|
|
|
|
set -l target $local_prefix/(command basename $pkg)
|
|
|
|
if test ! -L "$target"
|
|
|
|
command ln -sf $pkg $target
|
2019-01-22 11:26:48 +00:00
|
|
|
set out_pkgs $out_pkgs $pkg
|
2019-01-22 08:58:42 +00:00
|
|
|
_fisher_add $pkg --link
|
|
|
|
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 11:20:31 +00: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 15:34:06 +00:00
|
|
|
|
2019-01-22 11:26:48 +00:00
|
|
|
if set -q out_pkgs[1]
|
2019-01-22 08:58:42 +00:00
|
|
|
_fisher_fetch (
|
2019-01-22 11:26:48 +00:00
|
|
|
for pkg in $out_pkgs
|
2019-01-22 08:58:42 +00:00
|
|
|
if test -s "$pkg/fishfile"
|
2019-01-22 15:53:43 +00:00
|
|
|
_fisher_fmt <$pkg/fishfile | _fisher_parse -R
|
2019-01-22 08:58:42 +00:00
|
|
|
end
|
|
|
|
end)
|
2019-01-22 11:26:48 +00:00
|
|
|
printf "%s\n" $out_pkgs | _fisher_fmt
|
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 15:34:06 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
function _fisher_add -a pkg opts
|
2019-01-17 08:59:33 +00:00
|
|
|
for src in $pkg/{functions,completions,conf.d}/**.* $pkg/*.fish
|
2018-12-31 17:49:03 +00:00
|
|
|
set -l target (command basename $src)
|
|
|
|
switch $src
|
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 11:20:31 +00:00
|
|
|
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
|
2019-01-21 11:34:39 +00:00
|
|
|
case {init,key_bindings}.fish
|
|
|
|
set target $fisher_path/conf.d/(command basename $pkg)\_$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 11:20:31 +00:00
|
|
|
case \*
|
|
|
|
set target $fisher_path/functions/$target
|
|
|
|
end
|
2016-05-05 04:16:23 +00:00
|
|
|
end
|
2019-01-22 01:13:32 +00:00
|
|
|
echo "linking $target" | command sed "s|$HOME|~|" >&2
|
2019-01-21 11:34:39 +00:00
|
|
|
if set -q opts[1]
|
2018-12-31 17:49:03 +00:00
|
|
|
command ln -sf $src $target
|
2019-01-21 11:34:39 +00:00
|
|
|
else
|
|
|
|
command cp -f $src $target
|
2018-12-31 17:49:03 +00:00
|
|
|
end
|
2018-10-06 17:17:09 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2018-12-31 17:49:03 +00:00
|
|
|
function _fisher_rm -a pkg
|
2019-01-17 08:59:33 +00:00
|
|
|
for src in $pkg/{conf.d,completions,functions}/**.* $pkg/*.fish
|
2018-12-31 17:49:03 +00:00
|
|
|
set -l target (command basename $src)
|
2018-10-08 00:20:28 +00:00
|
|
|
set -l filename (command basename $target .fish)
|
2018-12-31 17:49:03 +00:00
|
|
|
switch $src
|
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 11:20:31 +00:00
|
|
|
case $pkg/conf.d\*
|
2018-10-07 03:34:49 +00:00
|
|
|
test "$filename.fish" = "$target"; and emit "$filename"_uninstall
|
2018-10-06 17:17:09 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
case $pkg/completions\*
|
2018-10-07 03:34:49 +00:00
|
|
|
test "$filename.fish" = "$target"; and complete -ec $filename
|
2018-10-06 17:17:09 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
case $pkg/{,functions}\*
|
2018-10-07 03:34:49 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
switch $target
|
|
|
|
case uninstall.fish
|
2018-12-31 17:49:03 +00:00
|
|
|
source $src
|
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 11:20:31 +00:00
|
|
|
continue
|
2019-01-21 11:34:39 +00:00
|
|
|
case {init,key_bindings}.fish
|
|
|
|
set target conf.d/(command basename $pkg)\_$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 11:20:31 +00:00
|
|
|
case \*
|
2018-10-06 17:17:09 +00:00
|
|
|
set target functions/$target
|
|
|
|
end
|
2016-05-05 04:16:23 +00:00
|
|
|
end
|
2018-10-06 17:17:09 +00:00
|
|
|
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 11:20:31 +00:00
|
|
|
end
|
|
|
|
if not functions -q fish_prompt
|
2018-10-08 04:32:57 +00: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 11:20:31 +00: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 15:34:06 +00: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 11:20:31 +00:00
|
|
|
function _fisher_jobs
|
2019-01-29 18:33:03 +00:00
|
|
|
jobs $argv | command awk '/^[0-9]+\t/ { print $1 }'
|
2016-05-07 19:20:27 +00:00
|
|
|
end
|
|
|
|
|
2018-11-22 14:46:42 +00:00
|
|
|
function _fisher_now -a elapsed
|
|
|
|
switch (command uname)
|
2019-01-12 02:01:00 +00:00
|
|
|
case Darwin \*BSD
|
2018-11-22 14:46:42 +00:00
|
|
|
command perl -MTime::HiRes -e 'printf("%.0f\n", (Time::HiRes::time() * 1000) - $ARGV[0])' $elapsed
|
|
|
|
case \*
|
2019-01-12 02:22:45 +00:00
|
|
|
math (command date "+%s%3N") - "0$elapsed"
|
2018-11-22 14:46:42 +00:00
|
|
|
end
|
|
|
|
end
|