aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2021-02-26 23:14:17 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-02-26 23:14:17 +0000
commitfe65f90925ef242f855f0e0eba720959d44e6239 (patch)
tree9fef53834186e02dbb397af0ace7e1afc2543446
parenta2f416b884a1926c9ec6e173e86c2db658af868e (diff)
parent2599d32a40e4e8fc5292c286ed8ea84414ac677a (diff)
downloadbuild-fe65f90925ef242f855f0e0eba720959d44e6239.tar.gz
Merge "Add dirmods command to envsetup.sh" am: 2599d32a40
Original change: https://android-review.googlesource.com/c/platform/build/+/1607836 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: If8e1b50cabe45a9643ca22ac31a39f8905825ab0
-rw-r--r--envsetup.sh36
1 files changed, 34 insertions, 2 deletions
diff --git a/envsetup.sh b/envsetup.sh
index 15d6fb4bd9..58fcd3be66 100644
--- a/envsetup.sh
+++ b/envsetup.sh
@@ -35,6 +35,7 @@ Invoke ". build/envsetup.sh" from your shell to add the following functions to y
- gomod: Go to the directory containing a module.
- pathmod: Get the directory containing a module.
- outmod: Gets the location of a module's installed outputs with a certain extension.
+- dirmods: Gets the modules defined in a given directory.
- installmod: Adb installs a module's built APK.
- refreshmod: Refresh list of modules for allmod/gomod/pathmod/outmod/installmod.
- syswrite: Remount partitions (e.g. system.img) as writable, rebooting if necessary.
@@ -1411,8 +1412,9 @@ function allmod() {
python -c "import json; print('\n'.join(sorted(json.load(open('$ANDROID_PRODUCT_OUT/module-info.json')).keys())))"
}
-# Get the path of a specific module in the android tree, as cached in module-info.json. If any build change
-# is made, and it should be reflected in the output, you should run 'refreshmod' first.
+# Get the path of a specific module in the android tree, as cached in module-info.json.
+# If any build change is made, and it should be reflected in the output, you should run
+# 'refreshmod' first. Note: This is the inverse of dirmods.
function pathmod() {
if [[ $# -ne 1 ]]; then
echo "usage: pathmod <module>" >&2
@@ -1436,6 +1438,36 @@ print(module_info[module]['path'][0])" 2>/dev/null)
fi
}
+# Get the path of a specific module in the android tree, as cached in module-info.json.
+# If any build change is made, and it should be reflected in the output, you should run
+# 'refreshmod' first. Note: This is the inverse of pathmod.
+function dirmods() {
+ if [[ $# -ne 1 ]]; then
+ echo "usage: dirmods <path>" >&2
+ return 1
+ fi
+
+ verifymodinfo || return 1
+
+ python -c "import json, os
+dir = '$1'
+while dir.endswith('/'):
+ dir = dir[:-1]
+prefix = dir + '/'
+module_info = json.load(open('$ANDROID_PRODUCT_OUT/module-info.json'))
+results = set()
+for m in module_info.values():
+ for path in m.get(u'path', []):
+ if path == dir or path.startswith(prefix):
+ name = m.get(u'module_name')
+ if name:
+ results.add(name)
+for name in sorted(results):
+ print(name)
+"
+}
+
+
# Go to a specific module in the android tree, as cached in module-info.json. If any build change
# is made, and it should be reflected in the output, you should run 'refreshmod' first.
function gomod() {