mirror of
https://github.com/jorgebucaran/fisher
synced 2024-10-09 09:36:53 +02:00
9a4f0f0650
* Improved README, added links to screencasts, updated documentation with new changes and fixed other typos and composition errors. * Removed `fisher update --cache` in favor of `fisher --cache | fisher update` and `fisher uninstall --all` in favor of `fisher --cache | fisher uninstall`. * Fisherman does not move initialization / configuration files following the convention `name`.config.fish to `$fisher_config/functions`, but to `$fisher_config/conf.d` now and evaluates each `*.config.fish` inside at shell start as usual. Closes #13. * Added `fisher --cache[=base]` option to retrieve contents in `$fisher_cache`, eliminating flaky usage of `find(1)`. Closes #11. * Fisherman now generates information about plugins installed via custom URLs. For the description, a shortened version of the URL is used. For the URL the full URL is used. For tags, the URL is fuzzily checked and tags such as _theme_, _plugin_, _config_ and _omf_ are added. The tag _orphan_ is added by default as well. Finally, the author is generated by retrieving the e-mail or username of the author of the first commit in the plugin's repository. Closes #9 and #14. * Changed `--path-in-cache` to `--translate.` This function translates an name or supported URL/URL variation into a path inside `$fisher_cache`. This allows you to treat plugins installed via custom URLs almost like regular plugins if they are installed. Closes #8. * Fixed a bug with `mktemp` failing on some systems. Closes #7. Thanks @tobywf. * Added [CODE_OF_CONDUCT][code_of_conduct]. Closes #6. * Fisherman can now unload themes within the same shell, without having to restart the session. Closes #5. * Fisherman can now load themes within the same shell, without having to restart the session using `exec fish`. Shoddy themes, for example those failing to declare global variables with the `-g` flag still require the session to be reset. See [**related**][bobthefish-19]. Closes #4. * Move `getopts` implementation to `share/getopts.awk`. Closes #3. * Support dots inside URIs in `fisher --validate`. Closes #2.
68 lines
828 B
Awk
68 lines
828 B
Awk
function add(k, v) {
|
|
if (seen[k v]++) return
|
|
print k (v == "" ? "" : " "v)
|
|
}
|
|
|
|
function pop() {
|
|
return (size <= 0) ? "_" : stack[size--]
|
|
}
|
|
|
|
function push(k) {
|
|
stack[++size] = k
|
|
}
|
|
|
|
function flush() {
|
|
while (size) {
|
|
add(pop())
|
|
}
|
|
}
|
|
|
|
$0 == "" { next }
|
|
|
|
done {
|
|
add("_" , $1$2$3)
|
|
next
|
|
}
|
|
|
|
$1 == "--" && !$2 {
|
|
done = 1
|
|
next
|
|
}
|
|
|
|
$1 !~ /^-|^--/ {
|
|
add(pop(), $0)
|
|
next
|
|
}
|
|
|
|
size { flush() }
|
|
|
|
$3 {
|
|
for (i = 4; i <= NF; i++)
|
|
$3 = $3" "$i
|
|
}
|
|
|
|
$1 == "--" {
|
|
if ($3 == "")
|
|
push($2)
|
|
else
|
|
add($2, $3)
|
|
}
|
|
|
|
$1 == "-" {
|
|
if ($2 == "") {
|
|
print $1
|
|
next
|
|
} else {
|
|
n = split($2, keys, "")
|
|
}
|
|
|
|
if ($3 == "")
|
|
push(keys[n])
|
|
else
|
|
add(keys[n], $3)
|
|
|
|
for (i = 1; i < n; i++)
|
|
add(keys[i])
|
|
}
|
|
|
|
END { flush() }
|