Skip to content
This repository was archived by the owner on Jan 8, 2021. It is now read-only.
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions scripts/radix_git_status.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
#!/bin/bash

ERROR_MSG_NO_SUCH_FOLDER="___folder_does_not_exist___"

RADIXDLT_JAVA_CLIENT_LIBRARY_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY='radixdlt-java'
RADIXDLT_CORE_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY='radixdlt-core'
RADIXDLT_ENGINE_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY='radix-engine-library'
RADIXDLT_REGRESSION_TESTS_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY='RadixRegressionTests'

# Arguments:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be good if this script worked, even if it was not run with the current directory the same as the the script directory, eg ./scripts/radix_git_status.sh

You could use scriptdir=$(dirname "$0") to work out where the script directory was relative to the working directory it was run from.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice! fixed! would be nice to get it working even when using symlinks, but readlink -f does not work on macOS 🤷‍♂️

# $1 = git_repo_absolute_path: String
# $2 = git_command: String
function git_command() {
local git_repo_absolute_path="$1"
local git_command="$2"
echo $(git --git-dir="$git_repo_absolute_path" $git_command)
}

# Arguments:
# $1 = git_repo_absolute_path: String
# $1 = git_rev_parse_argument: String
function git_rev_parse_head() {
local git_repo_absolute_path="$1"
local git_rev_parse_argument="$2"
echo $(git_command "$git_repo_absolute_path" "rev-parse $git_rev_parse_argument HEAD")
}

# Arguments:
# $1 = git_repo_absolute_path: String
function git_branch_name() {
local git_repo_absolute_path="$1"
echo $(git_rev_parse_head "$git_repo_absolute_path" --abbrev-ref)
}

# Arguments:
# $1 = git_repo_absolute_path: String
function git_last_commit_hash() {
local git_repo_absolute_path="$1"
echo $(git_rev_parse_head "$git_repo_absolute_path" --short)
}

# Arguments:
# $1 = git_repo_absolute_path: String
function git_summary_of_repo() {
local git_repo_absolute_path="$1"
if test -d "$git_repo_absolute_path"; then
local branch_name=$(git_branch_name "$git_repo_absolute_path")
local commit_hash=$(git_last_commit_hash "$git_repo_absolute_path")
echo "#: $commit_hash, ᛋ: '$branch_name'"
else
echo "$ERROR_MSG_NO_SUCH_FOLDER"
fi
}


echo "⚠️ This script assumes that all your Radix Java repos are placed" | tr -d '\n'
echo " in a shared root folder two directories up from this script," | tr -d '\n'
echo " with folders matching name of repos."


# assumes this scripts is in `<PATH-WITH-ALL-RADIX-GIT-REPOS>radixdlt-java-common/<SCRIPTS-DIR>/this_script.sh
script_dir=$(dirname "$0")
RADIXDLT_JAVA_COMMON_PATH="$script_dir/../"

RADIXDLT_JAVA_REPOS_PATH="$RADIXDLT_JAVA_COMMON_PATH/../"

RADIXDLT_JAVA_CLIENT_LIBRARY_PATH="$RADIXDLT_JAVA_REPOS_PATH/$RADIXDLT_JAVA_CLIENT_LIBRARY_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY"
RADIXDLT_ENGINE_PATH="$RADIXDLT_JAVA_REPOS_PATH/$RADIXDLT_ENGINE_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY"
RADIXDLT_CORE_PATH="$RADIXDLT_JAVA_REPOS_PATH/$RADIXDLT_CORE_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY"
RADIXDLT_REGRESSION_TESTS_PATH="$RADIXDLT_JAVA_REPOS_PATH/$RADIXDLT_REGRESSION_TESTS_NAME_OF_REPO_AND_ASSUMED_NAME_OF_DIRECTORY"

radix_java_repos=( $RADIXDLT_JAVA_COMMON_PATH $RADIXDLT_JAVA_CLIENT_LIBRARY_PATH $RADIXDLT_ENGINE_PATH $RADIXDLT_CORE_PATH $RADIXDLT_REGRESSION_TESTS_PATH )

git_report=''

for radix_java_repo_path in "${radix_java_repos[@]}"
do
git_repo_name=$(basename $radix_java_repo_path)
if [[ "$git_repo_name" == ".." ]]; then
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@clstrfsck do you have a solution for this? the dir $RADIXDLT_JAVA_COMMON_PATH contains "..", and thus when calling basename, it will resolve the name .. which is not what I want. I check manpage for basename but did not find any suitable argument....

# ugly fix for when using `basename` on the parent directory of this script
# results in ".." as folder name.
git_repo_name="radixdlt-java-common"
fi
git_repo_name_padded=$(printf "%-.25s %s\n" "${git_repo_name} ")
git_info=$(git_summary_of_repo "$radix_java_repo_path/.git")
if [[ "$git_info" == "$ERROR_MSG_NO_SUCH_FOLDER" ]]; then
echo "$git_repo_name not found"
else
git_report="${git_report}$git_repo_name_padded $git_info\n"
fi
done


echo "\n🔮Git status of Radix DLT Java repos:\n$git_report\n"