Commit graph

166 commits

Author SHA1 Message Date
Illia Bobyr
4919c44b54
GitHub workflow: Update runner 20.04 -> 24.04 (#171)
20.04 runner has been deprecated.  For details see:

https://github.com/actions/runner-images/issues/11101
2025-08-02 23:24:51 -04:00
Koichi Murase
e8e9024d4d
Fix indentation and remove trailing semicolons (#165) 2025-01-12 21:59:03 -05:00
Koichi Murase
8926de0a1f
Exclude the bind -x commands from interactive commands (#152)
* Exclude the `bind -x` commands from interactive commands

* Check COMP_POINT instead of possibly empty COMP_LINE

The check for COMP_LINE can fail because it can be empty in the
completion function for the empty command line "complete -F _func -E".
2024-02-25 14:24:06 -05:00
Michael Diamond
1f77dc0935
Merge pull request #151 from akinomyoga/fix-test-__bp_install
Fix false-negative test case for __bp_install
2024-02-04 11:15:18 -08:00
Koichi Murase
99d05b9ca9 Clarify the intent of the test case
Co-authored-by: Michael Diamond <dimo414@gmail.com>
2024-02-04 11:58:35 +09:00
Koichi Murase
8913ea5faf Use $__bp_install_string for a robust test case 2024-02-04 11:19:29 +09:00
Koichi Murase
2a4ac8f683 Fix false-negative test case for __bp_install
This is an oversight of changing `trap DEBUG` to `trap - DEBUG` in

https://github.com/rcaloras/bash-preexec/pull/106

The oversight did not cause a test error because the test always
succeeds.  The problem is that even if __bp_install is broken and
fails to remove `trap - DEBUG`, the current test case failed to detect
the failure and produce a false negative.  This patch fixes it.
2024-02-03 15:55:43 +09:00
Jim Winstead
f872f3fff2
Don't load if old version already present (Fixes rcaloras/bash-preexec#146) (#150) 2024-01-23 23:56:16 -05:00
Koichi Murase
fb23d474b3
Fix the test for the Bash version for shellcheck (#142)
* Fix the test for the Bash version for shellcheck

* Add parenthesis and whitespace for clarity

---------

Co-authored-by: Michael Diamond <dimo414@gmail.com>
2023-03-12 20:57:03 -04:00
Koichi Murase
7ad48e14d3
Support the array PROMPT_COMMAND in Bash 5.1+ (#141) 2023-03-12 20:27:10 -04:00
John D Pell
0c8fe466da
Better handle edge-cases in $PROMPT_COMMAND (#128)
Some libraries do things like `PROMPT_COMMAND="$PROMPT_COMMAND ; _new_addition"`, that's a space-semicolon-space. It would be counter-productive to try to account for all possibilities, so just swap the install string for a no-op.

Clean up no-op, it it's all that's left

Co-authored-by: Ryan Caloras <rcaloras@gmail.com>
2023-03-06 20:39:08 -05:00
Ryan Caloras
a44754f5c3 Fix failing test due to bats not preserving ret value
- Related to #121. Didn't notice this was failing until upgrading to
  bats 1.8.2 and the related IFS issue was fixed.
2022-11-16 12:02:55 -05:00
Koichi Murase
9c1e17b698
Addtional fixes for shellcheck (#137)
* Disable remaining shellcheck false warning

* Avoid passing empty argument to `return`

* Avoid word splitting of the exit status

* Follow the shellcheck suggestion
2022-09-11 21:39:15 -04:00
Koichi Murase
a131ff9cad
Check Bash version 3.1+ (#136) 2022-09-11 16:56:16 -04:00
adamprice2
e5790586c6
Update to remove shellcheck warnings (#135)
* add shellcheck # shellcheck shell=bash directive to allow linting

* BP_PIPESTATUS may be unused in function __bp_precmd_invoke_cmd, ignore

* line 174 - SC2086 (info): Double quote to prevent globbing and word splitting.

* line 249 false alarm 'SC1007 (warning): Remove space after = ', added ignore.

* line 294 SC2155 (warning): Declare and assign separately to avoid masking return values.

* line 295 SC2001 (style): See if you can use ${variable//search/replace}. Added ignore

* line 323 SC1087 (error): Use braces when expanding arrays. Disable warning

* fix indentation

* line 249 false alarm 'SC1007 (warning): empty space to '' removed shellcheck directive

Co-authored-by: Adam Price <git@blinvisible.com>
2022-09-11 12:23:37 -04:00
Michael Diamond
8bfcb39fc9
Merge pull request #133 from ayeseeem/patch-1
Fix typo in README: our -> your
2022-07-14 11:03:36 -07:00
ayeseeem
11a0551516
fix typo in README: our -> your 2022-07-14 09:17:52 +01:00
John D Pell
d30880087e
Use POSIX syntax for Bash detection (#127) 2022-04-20 22:25:13 -04:00
Ryan Caloras
da64ad4b7b
Prepare to tag 0.5.0 2022-04-20 14:21:24 -04:00
Jordan Webb
7154098154
Return original value from __bp_precmd_invoke_cmd (#131)
* Return original value from `__bp_precmd_invoke_cmd`

WIthout this change, `__bp_precmd_invoke_cmd` may not restore `$?` to its original value after being run.

Since `__bp_precmd_invoke_cmd` get installed as the first thing in `PROMPT_COMMAND`, this will cause problems if there is an existing `PROMPT_COMMAND` (which is perhaps not aware of `bash-preexec`) that wants to do something with the exit status of the command that was just run.

* Updating tests to allow preserving original exist status for other commands in PROMPT_COMMAND

Co-authored-by: Ryan Caloras <rcaloras@alumni.cmu.edu>
2022-04-20 14:18:03 -04:00
Franklin Yu
fd2ffa8876
Remove the underscore prefix of __bp_imported (#123)
* Remove the underscore prefix of "__bp_imported"

This formally exposes it as part of the public API.

* Fix Bats test after renaming the variable

* Rename the variable upon reviewer request

* Fix inconsistency after renaming variables

Variables were reanmed in 7fbc07fb4e, but
it didn’t cover the test or ReadMe. This commit fixes that.
2022-01-27 05:25:47 -05:00
Ryan Caloras
3e563be4f1
Updating badges to use github actions 2022-01-26 16:04:46 -05:00
Ryan Caloras
b1630c7602
Fixing workflows permissions
Need sudo for apt-get install
2022-01-26 15:57:20 -05:00
Franklin Yu
5f9142d84b Remove the definition of the environment variable
This variable has never actually been used.
2022-01-26 15:55:45 -05:00
Franklin Yu
3fe66c5b76 Configure the first workflow for GitHub Actions 2022-01-26 15:55:45 -05:00
Franklin Yu
7303c774af Fix the inconsistency of tests
The function “__bp_preexec_and_precmd_install” was removed in
4744d7e6fd.
2022-01-21 13:23:02 -05:00
Franklin Yu
aaec855487 Fix bug of dereferencing possibly unset variable
This bug has broken many test cases.
2022-01-21 13:23:02 -05:00
Ryan Caloras
da2dbb50ef
Update README.md 2021-10-08 18:36:36 -06:00
Matt Schrage
a836c4ec3f Add Fig to list of tools using bash-preexec in production 2021-10-08 19:35:38 -05:00
John D Pell
6a2820530d Declare arrays
Since the precmd_functions and preexec_functions arrays won't be actually defined until __bp_install, which is called only during the first $PROMPT_COMMAND, declare empty arrays for these parameters.

This ensures that the shell is aware these things exist, which helps avoud unbound parameters failures in other scripts which depend upon this package.
2021-09-11 17:18:16 -04:00
John D Pell
552d266e33 Handle unbound PROMPT_COMMAND
Expressly handle if $PROMPT_COMMAND is previously undefined.
2021-09-11 17:18:16 -04:00
Ryan Caloras
10b41c5ed8 Return immediately when not run in Bash
- Return with an exit code of 1 when run in any shell other than Bash.
Should prevent any functions or variables from being defined. This check
was previously run later during initialization.

- Updated test case for this
- Should address #113
2020-11-10 21:45:10 -05:00
Ryan Caloras
7884535ed4
Prepare to tag 0.4.1 2020-09-16 11:26:14 -04:00
Michael Diamond
779efad5fd Reimplement the string-manipulation functions to write to variables instead of stdout.
This change allows us to avoid unnecessary command substitutions which are (relatively speaking) quite expensive. Although __bp_sanitize_string is only used during installation __bp_trim_whitespace is invoked in a loop in the critial path as part of __bp_preexec_invoke_exec. Eliminating these subshells will reduce bash-preexec's overhead.

See https://github.com/dimo414/prompt.gem/commit/9764cdb3 for another example of a similar change.

Note: the printf -v syntax was added to Bash in v3.1: https://mywiki.wooledge.org/BashFAQ/061
2020-09-16 10:32:09 -04:00
Ryan Caloras
256bf94b66 Removing some comments that are wrong or verbose 2020-08-29 13:12:06 -04:00
Ryan Caloras
1e6dc74918 Prepare to tag 0.4.0 2020-08-22 12:56:52 -04:00
Ryan Caloras
932a178b20 Fix 'in prompt command'. Don't eval PROMPT_COMMAND
- Need to update unit tests for echos on both cases
- Small edge case where preexec is not invoked the first time if
PROMPT_COMMAND is appended to after bash-preexec is sourced.
- Handle cases where we append with semicolon and \n
2020-08-22 12:54:41 -04:00
Ryan Caloras
5c7342faa0 Adjusting comment for edge case 2020-08-22 12:54:41 -04:00
Ryan Caloras
2a410e1d7b Handle cases for manipulating PROMPT_COMMAND
- Added tests for adding before and after install in profile
- Changed install string to not lead with new line
2020-08-22 12:54:41 -04:00
Ryan Caloras
e234415431 Removing a few empty lines 2020-08-22 12:54:41 -04:00
Ryan Caloras
c5f8d7fef0 Allow bash-preexec to be included at any point
- Relaxes requirement that bash-prexec.sh needs to be included as last
thing in bash_profile.sh
- Preserves existing prompt command in PROMPT_COMMAND variable. May make
sense to still move this to a function in precmd.
- Should address #97 and #39
- Keeps existing traps preserved as preexec functions
- Removes trailing \n on PROMPT_COMMAND added for #58.
2020-08-22 12:54:41 -04:00
Michael Diamond
e36de177c0
Tweak the syntax for clearing the DEBUG trap (#106)
In a [`--posix` shell](https://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html) (e.g. a shell invoked as `sh` instead of `bash`) the ARG parameter is not optional:

> 41. The trap builtin doesn’t check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use ‘-’ as the first argument.

It may not be the intent of bash-preexec to actively _support_ POSIX mode, but the failure behavior here is pretty bad:

```
$ bash --noprofile --norc --posix || echo BASH CRASHED
bash-5.0$ source bash_preexec.sh
trap: usage: trap [-lp] [[arg] signal_spec ...]
BASH CRASHED
```

So this small tweak seems worthwhile, even if POSIX mode ends up being problematic for other reasons.
2020-03-14 17:44:54 -04:00
ADoyle
f558191d74 fix: variable error when bash set -o nounset (#101) 2019-11-30 14:03:26 -05:00
Sean Leather
290b2970f9 Change [[ to [ in tests where possible (#99)
* Using [[ ... ]] on older versions of Bash (e.g. 3.2 on macOS) causes
  the test to always pass.
* Include test/README.md that explains the problem and suggests
  solutions for future tests.
2019-09-07 16:05:29 -04:00
Sean Leather
309551d303 Link to bats-core instead of bats (#98)
* It seems the original bats is no longer maintained:
  https://github.com/sstephenson/bats/issues/150
* You're using bats-core in Travis:
  https://github.com/rcaloras/bash-preexec/pull/83
2019-08-26 19:42:35 -04:00
Ryan Caloras
2dca19c985 Declare var as 'local' fix for #95 2019-08-03 14:41:57 -04:00
David Mandelberg
9811ba8b76 Miscellaneous fixes for sed. (#90)
* Fix use of sed on platforms that don't support \+

Fixes #89.

* Set LC_ALL=C before manipulating strings of numbers.

Thanks @Gnouc for the suggestion in #89.
2019-02-10 16:55:11 -05:00
Michael Diamond
f527a328ef Avoid sed's -E flag (#88)
Resolves #87
2018-12-28 10:23:26 -05:00
David Mandelberg
e5ebc338c0 Save $PIPESTATUS for precmd and preexec functions to use. (#85)
Unfortunately, I couldn't figure out how to restore it for each
function, so I just made a copy in $BP_PIPESTATUS for those functions to
use.

For documentation of PIPESTATUS, see
https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#index-PIPESTATUS

Closes #81.
2018-12-25 05:54:43 -05:00
steinarvk
533b05ea37 Compatibility with "nounset" bash option (fixed for bash 4.3) (#84)
* upgrade bats version to bats-core 1.1.0

This is necessary for testing with 'nounset'.

* run tests with 'set -o nounset'

Updates tests to run under "nounset" and changes
the code so that the tests pass again.

This resolves #80 .

Tests now pass on both bash 4.3 (travis) and 4.4
(my local). We should probably test multiple
versions of bash at some point.
2018-12-17 08:03:04 -05:00