浏览代码

feat(perl): add `perlbrew` auto activation (#12814)

Co-authored-by: Carlo Sala <carlosalag@protonmail.com>
jamesrtnz 2 月之前
父节点
当前提交
9a0e22c184
共有 2 个文件被更改,包括 32 次插入17 次删除
  1. 23 17
      plugins/perl/README.md
  2. 9 0
      plugins/perl/perl.plugin.zsh

+ 23 - 17
plugins/perl/README.md

@@ -8,30 +8,36 @@ To use it, add `perl` to the plugins array in your zshrc file:
 plugins=(... perl)
 ```
 
+## Perlbrew activation
+
+If the plugin detects that `perlbrew` hasn't been activated, yet there is an installation of it in
+`$PERLBREW_ROOT`, it'll initialize by default. To avoid this behaviour, set `ZSH_PERLBREW_ACTIVATE=false`
+before `source oh-my-zsh.sh` in your zshrc.
+
 ## Aliases
 
-| Aliases       | Command            |  Description                           |
-| :------------ | :----------------- | :------------------------------------- |
-| pbi           | `perlbrew install` | Install specific perl version          |
-| pbl           | `perlbrew list`    | List all perl version installed        |
-| pbo           | `perlbrew off`     | Go back to the system perl             |
-| pbs           | `perlbrew switch`  | Turn it back on                        |
-| pbu           | `perlbrew use`     | Use specific version of perl           |
-| pd            | `perldoc`          | Show the perl documentation            |
-| ple           | `perl -wlne`       | Use perl like awk/sed                  |
-| latest-perl   | `curl ...`         | Show the latest stable release of Perl |
+| Aliases     | Command            | Description                            |
+| :---------- | :----------------- | :------------------------------------- |
+| pbi         | `perlbrew install` | Install specific perl version          |
+| pbl         | `perlbrew list`    | List all perl version installed        |
+| pbo         | `perlbrew off`     | Go back to the system perl             |
+| pbs         | `perlbrew switch`  | Turn it back on                        |
+| pbu         | `perlbrew use`     | Use specific version of perl           |
+| pd          | `perldoc`          | Show the perl documentation            |
+| ple         | `perl -wlne`       | Use perl like awk/sed                  |
+| latest-perl | `curl ...`         | Show the latest stable release of Perl |
 
 ## Functions
 
-* `newpl`: creates a basic Perl script file and opens it with $EDITOR.
+- `newpl`: creates a basic Perl script file and opens it with $EDITOR.
 
-* `pgs`: Perl Global Substitution: `pgs <find_pattern> <replace_pattern> <filename>`
-  Looks for `<find_pattern>` and replaces it with `<replace_pattern>` in `<filename>`.
+- `pgs`: Perl Global Substitution: `pgs <find_pattern> <replace_pattern> <filename>` Looks for
+  `<find_pattern>` and replaces it with `<replace_pattern>` in `<filename>`.
 
-* `prep`: Perl grep, because 'grep -P' is terrible: `prep <pattern> [<filename>]`
-  Lets you work with pipes or files (if no `<filename>` provided, use stdin).
+- `prep`: Perl grep, because 'grep -P' is terrible: `prep <pattern> [<filename>]` Lets you work with pipes or
+  files (if no `<filename>` provided, use stdin).
 
 ## Requirements
 
-In order to make this work, you will need to have perl installed.
-More info on the usage and install: https://www.perl.org/get.html
+In order to make this work, you will need to have perl installed. More info on the usage and install:
+https://www.perl.org/get.html

+ 9 - 0
plugins/perl/perl.plugin.zsh

@@ -54,3 +54,12 @@ pgs() { # [find] [replace] [filename]
 prep() { # [pattern] [filename unless STDOUT]
     perl -nle 'print if /'"$1"'/;' $2
 }
+
+# If the 'perlbrew' function isn't defined, perlbrew isn't setup.
+if [[ $ZSH_PERLBREW_ACTIVATE != false ]] && (( ! $+functions[perlbrew] )); then
+  local _perlbrew="${PERLBREW_ROOT:-${HOME}/perl5/perlbrew}"
+  if [[ -f "${_perlbrew}/etc/bashrc" ]]; then
+    source "${_perlbrew}/etc/bashrc"
+  fi
+  unset _perlbrew
+fi