Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d825b7a authored by Cole Faust's avatar Cole Faust
Browse files

Speed up m command autocompletion

Generate a all_modules.txt file on every build that
can be used for autocompleting.

Because this adds time to every non-incremental build,
I profiled it by using `$(shell date +"%s.%3N")` before
and after, and disovered it only adds about 0.01 seconds
to the build. And of course it won't be rerun if there
weren't build changes.

Bug: 255867758
Test: Manually
Change-Id: I1d3f1008611fd542884322b27b19ea2fa1d341fe
parent 65540981
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -41,3 +41,9 @@ droidcore-unbundled: $(MODULE_INFO_JSON)

$(call dist-for-goals, general-tests, $(MODULE_INFO_JSON))
$(call dist-for-goals, droidcore-unbundled, $(MODULE_INFO_JSON))

# On every build, generate an all_modules.txt file to be used for autocompleting
# the m command. After timing this using $(shell date +"%s.%3N"), it only adds
# 0.01 seconds to the internal master build, and will only rerun on builds that
# rerun kati.
$(file >$(PRODUCT_OUT)/all_modules.txt,$(subst $(space),$(newline),$(ALL_MODULES)))
+4 −6
Original line number Diff line number Diff line
@@ -1551,12 +1551,10 @@ function verifymodinfo() {
    fi
}

# List all modules for the current device, 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.
# List all modules for the current device, as cached in all_modules.txt. If any build change is
# made and it should be reflected in the output, you should run `m nothing` first.
function allmod() {
    verifymodinfo || return 1

    python3 -c "import json; print('\n'.join(sorted(json.load(open('$ANDROID_PRODUCT_OUT/module-info.json')).keys())))"
    cat $ANDROID_PRODUCT_OUT/all_modules.txt 2>/dev/null
}

# Return the Bazel label of a Soong module if it is converted with bp2build.
@@ -1735,7 +1733,7 @@ function installmod() {

function _complete_android_module_names() {
    local word=${COMP_WORDS[COMP_CWORD]}
    COMPREPLY=( $(QUIET_VERIFYMODINFO=true allmod | grep -E "^$word") )
    COMPREPLY=( $(allmod | grep -E "^$word") )
}

# Print colored exit condition