From: Joseph Nuthalapati Date: Sat, 26 Nov 2022 00:14:13 +0000 (+0530) Subject: git: minor changes X-Git-Url: https://njoseph.me/gitweb/babashka-scripts.git/commitdiff_plain/HEAD?hp=acafde64a0503bc04bcdeff3bc8cd05e414eae93 git: minor changes --- diff --git a/README.md b/README.md index 6abd22a..fb44973 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,27 @@ Some tasks can also take arguments. bb ebook-to-audiobook the-great-gatsby.epub ``` -There are a utility file that makes running the tasks easier. Load it up first. -You can also add the following line with the absolute path to the file in your "~/.profile" file. +## Shell aliases ``` sh -source bb-aliases.sh +# bash, zsh +source /path/to/babashka-scripts/bb-aliases.sh +alias task = bb --config ~/dev/babashka-scripts/bb.edn + +# nu +source /path/to/babashka-scripts/bb-aliases.nu +alias task = bb --config ~/dev/babashka-scripts/bb.edn +``` + +*Example:* To pull all the repositories in a directory, run + +``` sh +task gpa . ``` +There is a utility `bbe` to run tasks in the current working directory in `bb-aliases.sh`. + + *Example:* To pull all the repositories in a directory, run ``` sh diff --git a/bb-aliases.nu b/bb-aliases.nu index 7519e2d..ed6c67a 100644 --- a/bb-aliases.nu +++ b/bb-aliases.nu @@ -1,8 +1,5 @@ #!/usr/bin/env nu -let-env BABASHKA_PRELOADS = '(doseq [fil ["lib.clj" "utils.clj"]] (load-file (str (System/getProperty "user.home") "/dev/babashka-scripts/scripts/" fil)))' -let-env BABASHKA_PRELOADS = $env.BABASHKA_PRELOADS + " (require '[utils :refer :all])" - def bbe [task] { bb -e $"\(run-task-in-cwd \'($task)\)" } diff --git a/bb-aliases.sh b/bb-aliases.sh index 5e82ad8..70349bb 100644 --- a/bb-aliases.sh +++ b/bb-aliases.sh @@ -1,8 +1,5 @@ #!/usr/bin/env bash -export BABASHKA_PRELOADS='(doseq [fil ["lib.clj" "utils.clj"]] (load-file (str (System/getProperty "user.home") "/dev/babashka-scripts/scripts/" fil)))' -export BABASHKA_PRELOADS=$BABASHKA_PRELOADS" (require '[utils :refer :all])" - bbe() { bb -e "(run-task-in-cwd \"$1\")" } diff --git a/bb.edn b/bb.edn index 350ba7e..f285ffa 100644 --- a/bb.edn +++ b/bb.edn @@ -1,6 +1,9 @@ {:paths ["scripts"] :tasks - {gup {:requires ([git :refer [git-pull-rebase-branch]]) + {test {:doc "Test whether the 'task' alias is working." + :task (println "Yes, it's working!")} + + gup {:requires ([git :refer [git-pull-rebase-branch]]) :doc "Do a git pull and rebase branch with master in a given directory." :task (git-pull-rebase-branch (get (into [] *command-line-args*) 0))} diff --git a/scripts/git.clj b/scripts/git.clj index b84cffb..e722c08 100755 --- a/scripts/git.clj +++ b/scripts/git.clj @@ -6,8 +6,6 @@ ; Utilities for git operations -(def default-root ".") - (defn- has-git-repo [dir] (first (filter #(= ".git" %) @@ -19,11 +17,13 @@ (filter #(has-git-repo %) (filter #(.isDirectory %) (.listFiles (io/file root))))) -(defn- git-pull [dir] +(defn- git-pull + "Do a git pull with rebase." + [dir] (p/process ["git" "-C" dir "pull" "--rebase"])) (defn git-pull-all - "Runs `git-pull` on all the git repositories in a directory" + "Runs `git-pull` on all the git repositories in a directory." [root] (let [dirs (list-dirs root) pulls (->> root @@ -34,23 +34,21 @@ p/check :out slurp) - pulls)] + pulls)] ;; Print corresponding directory name when pulling ;; Skip printing already up to date repos (doseq [[dir out] (filter #(not (.contains (second %) "is up to date.")) - (map vector dirs outputs))] + (map vector dirs outputs))] (println (str dir "\n" out))))) (defn git-pull-rebase-branch - "Do git pull and rebase branch with master" + "Do git pull and rebase branch with master." [dir] + (git-pull dir) (let [current-branch (str/trim (run-cmd ["git" "branch" "--show-current"]))] - (git-pull dir) (when (not (contains? #{"master" "main"} current-branch)) (run! print (map run-cmd - '[["git" "checkout" "master"] - ["git" "pull" "--rebase"] - ["git" "checkout" "-"] - ["git" "rebase" "master"]]))))) + [["git" "checkout" "master"] ["git" "pull" "--rebase"] + ["git" "checkout" current-branch] ["git" "rebase" "master"]])))))