Skip to content

Discussion: My work refactoring bash-It and possible integration paths #1678

Description

@ahmadassaf

I am a huge fan of bash-it, but the more I used it, the more I ran into some issues. Thats when I started to dig into the codebase, open PRs and contribute to the codebase. It is however, after digging deeper into some areas that I found myself moving lots of parts and restructuring big chunks the code. Moreover, I found various inconsistencies when it came to code style and adherence to bash best practices.

gaudi-bash is my fork with lots of opinionated changes in the code to suit my OCD-like nature. I am by no means a bash expert but I tried my best to conform to the best practices in here.

I also found lots of unused and redundant code, a huge part of that was to ensure backward compatibility with the older versions of bash-it. Sometimes, it is better to start fresh and put the past behind us!

The main changes in this repo are:

  • Split the core engine from the components (plugins, aliases, completions and themes to be done soon)
  • Split the code into smaller set of files e.g., components, helpers, utils, etc.
  • Ensure consistent way of writing bash code (function definitions, comments, etc.)
  • Following as much as possible bash best practices
  • Make sure to comply with shellcheck as much as possible
  • Ensure high coverage unit tests for all core functions and split test functions as well into small units
  • Merged some of the work from bash-it issues and open PRs that made sense to me
  • Adding more functions like bash-it backup and bash-it restore

Again, I am by no means a bash expert but tried my best to work something that made sense to me, so I hope some of these decisions make sense to you as well :)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions