mirror of
https://github.com/status-im/status-react.git
synced 2025-01-10 02:56:07 +00:00
Jakub Sokołowski
2f65cedd2d
The mess with regexes is hard to read and think about which is why it had bugs with handling some Gradle formats. It also lowers further the number of dependencies pulled from 785 to 744. Changes: - Added `gradle_parser.awk` script for getting dependencies from Gradle - Changed the `deps.urls` file to contain full URLs to POMs - Dropped the `deps.urls.old` part since `get_urls.sh` no longer exists - Added `CLR` for learing line to `scripts/colors.sh` - Wrote a new `nix/deps/gradle/README.md` - Re-generated `nix/pkgs/go-maven-resolver/deps.nix` Signed-off-by: Jakub Sokołowski <jakub@status.im>
108 lines
2.8 KiB
Bash
Executable File
108 lines
2.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#
|
|
# This script takes a deps.list file and builds a Nix expression
|
|
# that can be used by maven-repo-builder.nix to produce a path to
|
|
# a local Maven repository.
|
|
#
|
|
|
|
CUR_DIR=$(cd "${BASH_SOURCE%/*}" && pwd)
|
|
|
|
# This defines URLs of Maven repos we know about and use.
|
|
declare -a REPOS=(
|
|
"https://repo.maven.apache.org/maven2"
|
|
"https://dl.google.com/dl/android/maven2"
|
|
"https://repository.sonatype.org/content/groups/sonatype-public-grid"
|
|
)
|
|
|
|
function nix_fetch() {
|
|
nix-prefetch-url --print-path --type sha256 "${1}" 2>/dev/null
|
|
}
|
|
|
|
function get_nix_path() { echo "${1}" | tail -n1; }
|
|
function get_nix_sha() { echo "${1}" | head -n1; }
|
|
function get_sha1() { sha1sum "${1}" | cut -d' ' -f1; }
|
|
|
|
# Assumes REPOS from repos.sh is available
|
|
function match_repo_url() {
|
|
for REPO_URL in "${REPOS[@]}"; do
|
|
if [[ "$1" = ${REPO_URL}* ]]; then
|
|
echo "${REPO_URL}"
|
|
return
|
|
fi
|
|
done
|
|
echo " ! Failed to match a repo for: ${1}" >&2
|
|
exit 1
|
|
}
|
|
|
|
if [[ -z "${1}" ]]; then
|
|
echo "Required argument not given!" >&2
|
|
exit 1
|
|
fi
|
|
|
|
POM_URL=${1}
|
|
# Drop the POM extension
|
|
OBJ_REL_URL=${POM_URL%.pom}
|
|
|
|
echo -en "${CLR} - Nix entry for: ${1##*/}\r" >&2
|
|
|
|
REPO_URL=$(match_repo_url "${OBJ_REL_URL}")
|
|
|
|
if [[ -z "${REPO_URL}" ]]; then
|
|
echo "\r\n ? REPO_URL: ${REPO_URL}" >&2
|
|
fi
|
|
# Get the relative path without full URL
|
|
OBJ_REL_NAME="${OBJ_REL_URL#${REPO_URL}/}"
|
|
|
|
OBJ_NIX_FETCH_OUT=$(nix_fetch "${OBJ_REL_URL}.jar")
|
|
# Dependency might be a JAR or an AAR
|
|
if [[ ${?} -eq 0 ]]; then
|
|
# Some deps have only a POM, nor JAR or AAR
|
|
OBJ_TYPE="jar"
|
|
OBJ_PATH=$(get_nix_path "${OBJ_NIX_FETCH_OUT}")
|
|
OBJ_SHA256=$(get_nix_sha "${OBJ_NIX_FETCH_OUT}")
|
|
OBJ_SHA1=$(get_sha1 "${OBJ_PATH}")
|
|
else
|
|
OBJ_NIX_FETCH_OUT=$(nix_fetch "${OBJ_REL_URL}.aar")
|
|
if [[ ${?} -eq 0 ]]; then
|
|
OBJ_TYPE="aar"
|
|
OBJ_PATH=$(get_nix_path "${OBJ_NIX_FETCH_OUT}")
|
|
OBJ_SHA256=$(get_nix_sha "${OBJ_NIX_FETCH_OUT}")
|
|
OBJ_SHA1=$(get_sha1 "${OBJ_PATH}")
|
|
else
|
|
OBJ_TYPE="pom"
|
|
fi
|
|
fi
|
|
|
|
# Both JARs and AARs have a POM
|
|
POM_NIX_FETCH_OUT=$(nix_fetch "${OBJ_REL_URL}.pom")
|
|
POM_PATH=$(get_nix_path "${POM_NIX_FETCH_OUT}")
|
|
if [[ -z "${POM_PATH}" ]]; then
|
|
echo " ! Failed to fetch: ${OBJ_REL_URL}.pom" >&2
|
|
exit 1
|
|
fi
|
|
POM_SHA256=$(get_nix_sha "${POM_NIX_FETCH_OUT}")
|
|
POM_SHA1=$(get_sha1 "${POM_PATH}")
|
|
|
|
# Format into a Nix attrset entry
|
|
echo -ne "
|
|
{
|
|
\"path\": \"${OBJ_REL_NAME}\",
|
|
\"host\": \"${REPO_URL}\",
|
|
\"type\": \"${OBJ_TYPE}\","
|
|
if [[ -n "${POM_SHA256}" ]]; then
|
|
echo -n "
|
|
\"pom\": {
|
|
\"sha1\": \"${POM_SHA1}\",
|
|
\"sha256\": \"${POM_SHA256}\"
|
|
}";[[ -n "${OBJ_SHA256}" ]] && echo -n ","
|
|
fi
|
|
if [[ -n "${OBJ_SHA256}" ]]; then
|
|
echo -n "
|
|
\"jar\": {
|
|
\"sha1\": \"${OBJ_SHA1}\",
|
|
\"sha256\": \"${OBJ_SHA256}\"
|
|
}"
|
|
fi
|
|
echo -e "\n },"
|