Commit Graph

266 Commits (2a9ee7e34434c80a822b0b13f57d01f03d06e62b)

Author SHA1 Message Date
Noah Gorny 81b17f795b helpers: Add bash-it profile list 2021-09-29 00:30:24 +03:00
Noah Gorny 6a923760d8 helpers: Add help message for bash-it profile 2021-09-29 00:30:24 +03:00
Noah Gorny d4ec41bef7 helpers: Add useful log in case of empty config 2021-09-29 00:30:24 +03:00
Noah Gorny cea95d72b3 lib: helpers: Rename _bash-it-process-component to _bash-it-determine-component-status-from-path 2021-09-29 00:30:23 +03:00
Noah Gorny 7f60b73a2a helpers: Add new bash-it profile subcommand 2021-09-29 00:30:23 +03:00
Noah Gorny 41cba9d7e4 helpers: Add enable-plugin and enable-alias aliases 2021-09-29 00:30:23 +03:00
Noah Gorny ffeb770593 helpers: Print type when using disable all 2021-09-29 00:30:23 +03:00
Noah Gorny 6e03a726a6 helpers: Split some processing code out of _bash-it-describe 2021-09-29 00:30:23 +03:00
Noah Gorny 7fb7bb9cb8
Merge pull request #1952 from gaelicWizard/uncle
lib/helpers: new function `_bash-it-find-in-ancestor()`
2021-09-28 16:51:30 +03:00
John D Pell 3eed0f033f
Lint: prepare `lib/utilities` for `shellcheck` (#1933)
* lib/utilities: shellcheck

SC2059

* lib/utilities: fix `_bash-it-get-component-type-from-path()`

Account for plugins with names that contain periods.

* lib/utilities: fix `_bash-it-array-dedup()`

Use fewer subprocesses and newline-delimited not space-delimited.

* lib/utilities: fix `_bash-it-component-list()`

Use fewer subprocesses and return newline-delimited, not space-delimited.

* lib/utilities: fix `_bash-it-component-list-matching()`

Use `sort -u` instead of `sort | uniq`

* lib/utilities: fix `_bash-it-component-list-enabled()`

Use fewer subprocesses, return newline-delimited instead of space-delimited, and use `sort -u` instead of `uniq | sort`

* lib/utilities: fix `_bash-it-component-list-disabled()`

Use fewer subprocesses, return newline-delimited instead of space-delimited, and use `sort -u` instead of `uniq | sort`

* lib/utilities: fix `_bash-it-grep()`

1. Executing `'/usr/bin/grep'` does *not* return the path to grep...
2. use `type -p` instead of external binary `which`.
3. Simplify parameter definition.
4. Why was there a space after `%s`?

* lib/utilities: use `_bash-it-grep`

Alsö, lose a spurious `cat`

* lib/utilities: lint `_bash-it-component-help`

* lib/utilities: lint `_bash-it-component-cache-file()`

* lib/utilities: `shfmt`

My apologies to future `git blame` hunters ♥

* lib/helpers: fix `_bash-it-get-component-name-from-path()`

Use `${BASH_IT_LOAD_PRIORITY_SEPARATOR}`
2021-09-28 15:24:18 +03:00
John D Pell e8966ea2a5 lib/helpers: cite `_bash-it-find-in-ancestor()`
Add `composure.sh` citation with examples and rewrite internal comments to describe the code flow.
2021-09-23 10:00:52 -07:00
John D Pell 0471a20c7c lib/helpers: new function `_bash-it-find-in-ancestor()`
New function to do a search looking for a sibling to a parent of the current directory, for example to find `../../.git` to indicate that `$PWD` is inside a git repository.
2021-09-22 15:30:07 -07:00
John D Pell 8a03f451b2 lib/helpers: simplify `_command_exists()` and `_binary_exists()`
Remove subshell and just use a regular `if`
2021-09-19 21:58:48 -07:00
John D Pell 5fc418e479 Use `${PWD}` instead of `$(pwd)`
Don't subshell when there's a shell parameter for it.
2021-09-18 13:15:13 -07:00
Noah Gorny 0dbf1d593c
Merge pull request #1926 from gaelicWizard/basenamed
Use parameter substitution instead of `dirname`/`basename`, where safe to do so
2021-09-18 18:26:55 +03:00
John D Pell 1c3cbf7ca6
Delete `.shellcheckrc` (#1947)
* CI: disable Ubuntu 16.04 as it's EOL

https://github.blog/changelog/2021-04-29-github-actions-ubuntu-16-04-lts-virtual-environment-will-be-removed-on-september-20-2021/

* main: lint false positive

* install: lint

* plugins/cmd-returned-notify: don't `export`

* plugins/xterm: lint

* plugins/git: lint

* plugins/goenv: lint

* plugins/alias-completion: lint false positives

* plugins/alias-completion: fix SC2155, SC2154

Declare `locals` at the top of the function

* completion: lint completions using `bash_completion` functions

Match the style of the existing code

* completion/knife: lint false positives

* completion/knife: lint

* completion/sdkman: lint

* completion/composer: lint

* Move `.shellcheckrc` under `themes/`

* lib/theme: fix SC2155, SC2154, SC2034

* lib/colors: don't warn on unused variables

We assign a large number of variables here and they may or may not be used anywhere else, so disable SC2034 for this file (only).

Alsö disable SC2005 as the functions in this file were written before `printf` was invented and have to do some fancy metascripting to get escape sequences interpreted reliably. I’m not smart enough to fix this to use `printf`, so leave it for now.

* themes/agnoster: lint

* themes: disable SC2154 for colors

Each one of these themes will need it’s own fix for SC2154, possibly upstream.

Due to the way themes are, it's entirely normal to have a *lot* of false positives for SC2034. So much so, that I have to admit that it is probably just not worth linting for SC2034 despite my dislike of blanket ignore rules.

* themes: disable SC2154, fix SC2155

Each one of these themes will need it’s own fix for SC2154, possibly upstream.

Due to the way themes are, it's entirely normal to have a *lot* of false positives for SC2034. So much so, that I have to admit that it is probably just not worth linting for SC2034 despite my dislike of blanket ignore rules.

* Delete `.shellcheckrc`

* remove executable bit
2021-09-18 12:50:59 +03:00
John D Pell 470341b23a Drop `basename` in favor of Bash strings
Convert `var=$(basename $file)` to `var="${file##*/}"`
2021-09-16 16:59:02 -07:00
John D Pell dee55a03cc drop `dirname` in favor of native Bash strings (1 of 2)
Convert `var=${dirname $filename)` to `var="${filename%/*}` in cases where there is no ambiguity.

Make sure that the path in `$BASH_IT` is absolute because this path gets embedded in the template `.bash_profile` file if selected by the user.
2021-09-16 16:59:02 -07:00
John D Pell 85408743fa lib/log: default to no logging at all
Set the default when BASH_IT_LOG_LEVEL is unbound to log level none: no warnings or errors are reported at all.
2021-08-26 14:11:41 -07:00
John D Pell bd9f4015a7 lib/helpers: handle unset parameter
Expressly handle $BASH_IT_REMOTE as blank when variable is not set.
2021-08-26 14:11:41 -07:00
John D Pell 8fb75cf0e3 lib/helpers: handle unbound parameter
Expressly handle $BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE being not-set as being blank.
2021-08-26 14:11:41 -07:00
John D Pell 0eff44930c lib/utilities: handle unbound parameter
Expressly handle unbound $BASH_IT_GREP when testing for value
2021-08-26 14:11:41 -07:00
John D Pell 233fcc3091 lib/log: handle undefined variable
Expressly deal with if $echo_yellow hasn’t been defined
2021-08-26 14:11:41 -07:00
John D Pell bcd67db4ab lib/preview: handle unbound parameter
If $BASH_PREVIEW is unset, treat it as blank.
2021-08-26 14:11:41 -07:00
John D Pell 02c13b7921 lib/log: handle undefined variables
If the user hasn't defined BASH_IT_LOG_LEVEL, then the integer comparison fails. Handle it by defaulting to '1'.
If lib/log is loaded improperly, the BASH_IT_LOG_PREFIX may be undefined. Unlikely, but no harm in handling it too.
Likewise, if no theme is loaded, then $echo_green, $echo_normal, et al are not defined.
2021-08-26 14:11:41 -07:00
John D Pell 0f28824ad5 lib/helpers: invert test in _bash_it_homebrew_check()
Check if `brew` is installed every time, and *unset* `$BASH_IT_HOMEBREW_PREFIX` if not found. This accounts for the edge-case of a user _uninstalling_ Homebrew without restarting the shell.
2021-08-22 12:48:48 -07:00
John D Pell 9e255c2139 lib/helpers: new function to set BASH_IT_HOMEBREW_PREFIX
New function `_bash_it_homebrew_check()` sets global variable `$BASH_IT_HOMEBREW_PREFIX` using `brew --prefix` if `brew` exists as a valid command. If `brew` isn't installed, then return failure.

Plugins can test for `brew` by calling this function and, if it succeeds, they can rely on `$BASH_IT_HOMEBREW_PREFIX` being defined properly.
2021-08-22 12:48:48 -07:00
Noah Gorny 9566a3ec18 helpers: Improve pull_and_update_inner by restoring old pwd
Renamed the function to _bash-it_update_migrate_and_restart
Use pushd/popd instead of passing another parameter
Document the function so it will be clear that it does not return
2021-08-18 00:29:45 +03:00
Noah Gorny caec973c18 helpers: Pop pwd correctly when not needing to update 2021-08-17 23:50:58 +03:00
John D Pell de9ea54b81
Don't call external `uname` when `$OSTYPE` will do (#1911)
* lib/helpers: use `$OSTYPE` instead of `$(uname)`

* plugins/osx: use `$OSTYPE` instead of `$(uname)`

* plugins/boot2docker: use `$OSTYPE` instead of `$(uname)`

* plugins/python: use `$OSTYPE` instead of `$(uname)`

* plugins/base: use `$OSTYPE` instead of `$(uname)`

Alsö, use `[[` instead of `[` as the former has less insane argument handling being shell syntax rather than a builtin command that must emulate being a real binary

* completion/brew: use `$OSTYPE` instead of `$(uname)`

* completion/git: use `$OSTYPE` instead of `$(uname)`

Alsö, use `[[` instead of `[`.

* completion/fabric: use `$OSTYPE` instead of `uname`

* theme/demula: use `$OSTYPE` instead of `$(uname)`

* theme/rana: use `$OSTYPE` instead of `$(uname)`
2021-08-14 10:20:12 +03:00
Gurkirat Singh e51fe1fe2b
Abort upgrade if unsaved changes found in bashit directory (#1890)
helper (improvement): added safeguard for unsaved changes
2021-06-23 13:25:42 +03:00
Gurkirat Singh 01b916c544 helpers (bugfix): restart bashit after upgrade 2021-06-11 12:41:28 +05:30
Noah Gorny 7b5f758eba helpers: Fix broken compoure references after vendor change 2021-03-21 21:52:47 +02:00
buhl 49d7d2e8c4 Getting Bash-it to use the vendored composure
Fixed tests
Fixed install.sh and bash_it.sh
Added gitattributes to the vendor folder
Changed documentation
2021-02-02 16:34:04 +01:00
Noah Gorny 2b66100c47 helpers: Add _completion_exists helper 2021-01-28 17:40:20 +02:00
buhl 29855ed1e6 Adding preexec as a vendored library
Added a vendored lib loading routine in bash-it.sh
Added documentation on how to vendor libs in bash-it
Added and fixed plugins using preexec
Added tests for two plugins
Removed the old preexec lib
2021-01-23 18:31:18 +01:00
cornfeedhobo 61f727fb96
refactor all history modifications into discrete plugins 2021-01-15 11:53:28 -06:00
Noah Gorny 6914a2345a version: Fix url in case it is ssh based one 2020-12-21 00:30:56 +02:00
Noah Gorny e023d6f851 Improve bash-it version output
As we now have "stable" releases and "dev" type of versions, `version` command should
provide usefull output on that
2020-10-27 20:01:50 +02:00
Noah Gorny 825fc88a8f Rename _bash-it_update to _bash-it-update 2020-10-25 15:24:19 +02:00
Noah Gorny 8a36f21ca1 Add _binary_exists and use in github-cli completion
gh was also used as an git alias, and caused _command_exists to not fail as expected
2020-10-21 00:14:11 +03:00
Noah Gorny c387517122
Merge pull request #1626 from NoahGorny/update-to-stable-or-unstable
bash-it update to stable or dev
2020-10-16 14:16:06 +03:00
Noah Gorny a1adfaaa3e lib: helpers: Handle stable revert update 2020-10-13 15:41:28 +03:00
Noah Gorny 6bed26eccb lib: helpers: Rename Upgrading -> Updating 2020-10-13 15:30:19 +03:00
Noah Gorny 0a9b43e86d lib: Fetch from remote before calculating latest tag in bash-it update 2020-10-13 15:30:19 +03:00
Noah Gorny 4ca6dd9a36 helpers: Add --slient option to bash-it update 2020-10-13 14:42:02 +03:00
Noah Gorny 9b208e7d5c lib: Update no-op message in case of stable update 2020-10-13 14:42:02 +03:00
Noah Gorny 8e6876719b lib: Add BASH_IT_DEVELOPMENT_BRANCH variable 2020-10-13 14:42:02 +03:00
Noah Gorny ecf65569ce lib: Update to stable now correctly fails if no tags are present 2020-10-13 14:42:02 +03:00
Noah Gorny 96295e92a5 lib: Improve bash-it update so it can update to latest tag 2020-10-13 14:42:02 +03:00
Noah Gorny f4279e63c1 Add bash-it restart command
Also add completion and completion tests
2020-10-12 15:29:36 +03:00
Noah Gorny 24c05995e7 helpers: Auto reload now only reloads and not reset the shell 2020-10-10 04:02:30 +03:00
cornfeedhobo 97bb1fc7ba
allow the caller to pass a custom log message when the command is not found 2020-08-03 14:20:04 -05:00
Noah Gorny 72dbfd2480 lib: log: Insert log level before message prefix
Also fix tests accordinly
2020-07-02 21:11:40 +03:00
Noah Gorny e6ebcda608 log: Fix logging to comply with the tests 2020-07-02 21:11:40 +03:00
Noah Gorny 8d9f81fce0 lib: Add get-component-name/type-from-path 2020-07-02 20:13:57 +03:00
Noah Gorny 8a3cf76307 lib: Move _has_colors to log module 2020-07-02 20:13:42 +03:00
Noah Gorny 5daecc9381 lib: Log in case _command_exists fails 2020-06-30 20:58:09 +03:00
Noah Gorny 9a23725ce0 log: Add BASH_IT_LOG_PREFIX option
Also add a new test to check it
2020-06-25 00:16:16 +03:00
Noah Gorny 3e7a95660f lib: Add _has_colors function and use it in log output 2020-06-23 15:42:22 +03:00
Noah Gorny 86824a93ed helpers: Add bash-it doctor command 2020-06-23 15:12:43 +03:00
Noah Gorny 802c45b401 lib: Add log module 2020-06-23 15:12:43 +03:00
Noah Gorny 3eac73f613 plugins: Rename gitstatusd plugin to gitstatus 2020-06-22 14:57:05 +03:00
Noah Gorny bda85c3679 lib: Add on-disable-callback for plugins to use 2020-06-22 14:56:13 +03:00
Eduardo Bellido Bellido 1bf9bbde0d Use new line character instead semicolon in the preexec hook 2020-03-14 22:56:30 +01:00
cornfeedhobo d4c2f8b73f
nit pick cleanup 2020-03-08 23:53:27 -05:00
John McBride 036c26dbed Update jump plugin
- remove z plugin
- remove fasd plugin
- update test that referenced fsad

Signed-off-by: John McBride <jpmmcbride@gmail.com>
2020-02-03 11:43:24 -07:00
Nils Winkler f29a195f49 Make sed replacements work for both BSD and GNU sed
Fixes #1411
2019-07-31 08:50:33 +02:00
Eivind Uggedal 4ea5fe57c9
utilities.bash: fix tiny typo 2019-04-14 22:31:38 +02:00
Nils Winkler 04937aa2ec
Merge pull request #1312 from kylewelsby/bugfix/1203-bug-enable-alias-all
Fixes #1203 convert alias to aliases
2019-01-21 08:36:38 +01:00
Kyle Welsby ca58587217
Fixes #1203 convert alias to aliases
A ungraceful patch but fixes this one case where the command is singular `alias` while the file are plural with `aliases.
2019-01-16 18:16:08 +00:00
Kyle Welsby fedb72b34f
Fixes exit 1 issue when tmp cache doesn't exist
Found if this `${cache}` file doesn't exist, the single line conditional command would return false causing a `exit 1`.

This little change makes the conditional verbose and not cause a false return failing the function.
2019-01-16 17:36:57 +00:00
Nils Winkler 792593c995
Merge pull request #1273 from kigster/kig/search/improved
Speed up bash-it Search & support exact matches
2019-01-14 09:05:02 +01:00
Claudia 0fe631ea7c
Make `bash-it reload` preserve working directory
In e5b6869 (part of #1283), a regression was introduced, which caused
`bash-it reload` to return with the working directory set to
`.bash_it` and the original working directory discarded.

The root cause is the function wrapper of `bash-it reload`, which has
always relied on the working directory not to change during execution
of the wrapped code. This assumption no longer holds with the changes
introduced in #1283.

This commit fixes the regression by using `pushd`/`popd` in `bash-it
reload`.
2019-01-02 17:45:43 +01:00
Travis Swicegood 1dadfc92ba
Merge pull request #1283 from Bash-it/bugfix/bash_completion_debian
Bugfix - issue with sourced files (noted by @caguettaz)
2018-12-05 22:07:07 -06:00
Travis Swicegood 0793eb41a7 Ignore SC2139 – it's ok that these are expanded when evaluated 2018-12-05 21:00:41 -06:00
Travis Swicegood 61380e686f Remove unused function 2018-12-05 21:00:09 -06:00
Travis Swicegood e5b68695c0 Attempt to simplify by not using aliases 2018-12-04 22:02:10 -06:00
caguettaz 13b6f3d870 [cleanup] Cleaned escaped newlines for alias reload 2018-12-04 16:31:03 +01:00
caguettaz a1bbecc4a5 [bugfix] Fixed reload aliases 2018-12-04 15:58:21 +01:00
caguettaz e198d8dc3d [bugfix] Fixed config family names for reload aliases 2018-12-04 14:58:13 +01:00
caguettaz f06439edc3 [cleanup] Harmonized variable names, added support for global config files 2018-12-04 14:30:11 +01:00
Travis Swicegood babb1e6675 Adjust to only show merges into master
Adding `--first-parent` ensures that only commits from the master branch
are used when showing the history. I've verified this change directly
by comparing the `rev-list` output for `703105c..97df5c45`:

```console
$ git rev-list --merges 703105c...97df5c4
97df5c4540
b5976ada25
$ git rev-list --merges --first-parent 703105c...97df5c4
97df5c4540
```

Note: I've created this branch from 703105c so that I can merge `master`
into it and test `bash-it update` once merged.
2018-12-03 21:17:49 -06:00
Travis Swicegood 185c2879d5 Update to show the subject if the body is empty 2018-12-02 10:53:56 -06:00
Travis Swicegood 8e7a566d96 Show update prompt when running bash-it update
This utilizes the body of the merged PR requests to show the commits
that are included in this update. It gives the user a chance to
decline the upgrades by pressing n or N.
2018-12-02 10:47:11 -06:00
Konstantin Gredeskoul 09c2be9d6b Refactor (extract utilities + add tests) & more…
* Extracting common utilities into utilities.bash
 * Adding new tests for utilities
 * Relocating the cache file to be under $BASH_IT
 * Removing cache cleanup deferral code for now
 * Wiping the cache in local_setup in tests.
2018-11-23 16:40:35 -08:00
Christophe Aguettaz 2f3d4bd130 [cleanup] Added missing global variable cleanup 2018-11-23 22:59:19 +01:00
Christophe Aguettaz 1ba023c97a [bugfix][wip] Fixed issue with Debian's bash-completion 2018-11-23 22:25:14 +01:00
Konstantin Gredeskoul baae0305b6 Speed up bash-it Search & support exact matches
This commit improves Bash-It search functionality in a couple of ways:

 * bash-it search (with no arguments) will print detailed help.
 * bash-it search now accepts terms prefixed with '@' sign, indicating an exact match.
 * bash-it search now performs smarter caching of the component listings/status

New search syntax is as follows:

   bash-it search [-|@]term1 [-|@]term2 [ --enable | --disable | --help ]
2018-11-19 11:55:36 -08:00
Eduardo Bellido Bellido 4df44b1fa9 Bash-it don't returns to the previous path after update 2018-11-12 22:59:14 +01:00
Nils Winkler f6e2fdd2cf Fixed reload command in the update function 2018-07-19 09:00:43 +02:00
Nils Winkler 4192d07f4f Fixed indentation and a broken character 2018-07-19 09:00:42 +02:00
Brett A. Rogers 9571c11ad0
Return to original directory after reload 2018-05-16 14:58:59 -04:00
Piotr Rogoża 48e6888a38 Removed reload keyword from composure_keywords(), it is not needed 2018-04-21 19:15:50 +02:00
Piotr Rogoża 89d1661d23 Replaced reload section with proper function.
Added completion for reload.
Fixed order in completion
Added unit tests for completion
The variable BASH_IT_AUTOMATIC_RELOAD_AFTER_CONFIG_CHANGE has to be unset.
2018-04-18 21:51:20 +02:00
Piotr Rogoża b1dbf2f7e0 Added additional parameter for bash-it: reload
Added creating an alias if command does not exist
2018-04-18 21:51:20 +02:00
Mike Fiedler 7b17c17b09
Add a comparison URL to version
In order to make a swift comparison between the currently-installed
version vs the latest commits on `master`, emit a clickable URL that
will show the user the exact changes.

Signed-off-by: Mike Fiedler <miketheman@gmail.com>
2018-03-05 09:33:09 -05:00
Mike Fiedler b0bceb963e
Replace subshell for git hash, add remote info
Signed-off-by: Mike Fiedler <miketheman@gmail.com>
2017-10-01 16:20:28 -04:00
Mike Fiedler 8015bba27f
Exit directory upon completion, update tests
Signed-off-by: Mike Fiedler <miketheman@gmail.com>
2017-09-30 20:06:42 -04:00
Mike Fiedler 71bda32dc0
Add version to commands
Add a helper to show the current git SHA of the installed git repo.

Signed-off-by: Mike Fiedler <miketheman@gmail.com>
2017-09-29 05:39:36 -04:00