/ii

Check if you need to run `xxx install` to sync your dependencies whatever the dev env/stack as a .git/hooks.

Primary LanguageShell

ii

I really don't know how to put this up... let's break that with some use cases :

  • You are working on branch x, that is linked to env_x with dependency x, you switch to another branch, x is still in your environment but not in lock/config file, you're out of sync.
  • Sometimes (EVERY SINGLE TIME), you're working on a team project, you often find yourself always checking after a pull/checkout, if xxx install was run to be sync with the main(remote) branch, because, deps are added/upgraded overtime...

I think i should be aware if i really need to run that install command or not. So i made _ii_(Install It), it's a small git/hooks that will notify if you need to run an install command to be sync with the main/master version of the codebase in terms of dependencies.

ii.mp4

REQUIREMENTS

  • git

FEATURES

Here's a list of the languages/stacks and their associated package management tools supported by ii:

Language/Stack Package Manager Lock/Config File Install Command
Python pip requirements.txt pip install -r requirements.txt
Python Poetry poetry.lock poetry install
PHP Composer composer.lock composer install
JavaScript/Node.js npm package-lock.json npm install
JavaScript/Node.js Yarn yarn.lock yarn install
JavaScript/Node.js pnpm pnpm-lock.yaml pnpm install
Ruby Bundler Gemfile.lock bundle install
Python Pipenv Pipfile.lock pipenv install
Rust Cargo Cargo.lock cargo build
Go Go modules go.mod go mod tidy
Go Dep Gopkg.lock dep ensure
Java Gradle build.gradle gradle build
Java Maven pom.xml mvn install
General Make Makefile make
Python Conda environment.yml conda env create -f environment.yml
Elixir Mix mix.lock mix deps.get
Erlang Rebar rebar.lock rebar3 get-deps
Swift Carthage Cartfile.resolved carthage bootstrap
Swift/Objective-C CocoaPods Podfile.lock pod install
Clojure Leiningen project.clj lein deps
Clojure Tools.deps clj-deps.edn clojure -A:deps
C++ CMake CMakeLists.txt cmake .
Crystal Shards shard.lock shards install
Scala sbt build.sbt sbt update
Clojure deps.edn deps.edn clojure -A:deps
PureScript Spago spago.dhall spago install
Nix Nix default.nix nix-shell
Nix Nix Flakes flake.nix nix develop
D Dub dub.json dub upgrade
D Dub dub.selections.json dub upgrade

HOW TO USE

Place all 3 files(post-merge, post-checkout, ii.sh) inside the .git/hooks of your project. That's it.