In later patches we need to tell if a submodule is labeled by the given labels. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- submodule-config.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ submodule-config.h | 3 +++ 2 files changed, 51 insertions(+) diff --git a/submodule-config.c b/submodule-config.c index 7b48e59..b10a773 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -493,3 +493,51 @@ void submodule_free(void) cache_free(&cache); is_cache_init = 0; } + +int submodule_applicable_by_labels(const struct string_list *list, + const struct submodule *sub) +{ + int label_apply = 0; + struct strbuf sb = STRBUF_INIT; + + if (!list) + return 1; + + if (sub->labels) { + struct string_list_item *item; + for_each_string_list_item(item, sub->labels) { + strbuf_reset(&sb); + strbuf_addf(&sb, "*%s", item->string); + if (string_list_has_string(list, sb.buf)) { + label_apply = 1; + break; + } + } + } + if (sub->path) { + /* + * NEEDSWORK: This currently works only for + * exact paths, but we want to enable + * inexact matches such wildcards. + */ + strbuf_reset(&sb); + strbuf_addf(&sb, "./%s", sub->path); + if (string_list_has_string(list, sb.buf)) { + label_apply = 1; + } + } + if (sub->name) { + /* + * NEEDSWORK: Same as with path. Do we want to + * support wildcards or such? + */ + strbuf_reset(&sb); + strbuf_addf(&sb, ":%s", sub->name); + if (string_list_has_string(list, sb.buf)) { + label_apply = 1; + } + } + strbuf_release(&sb); + + return label_apply; +} diff --git a/submodule-config.h b/submodule-config.h index 8d61df3..d67f666 100644 --- a/submodule-config.h +++ b/submodule-config.h @@ -30,4 +30,7 @@ const struct submodule *submodule_from_path(const unsigned char *commit_sha1, const char *path); void submodule_free(void); +int submodule_applicable_by_labels(const struct string_list *list, + const struct submodule *sub); + #endif /* SUBMODULE_CONFIG_H */ -- 2.7.0.rc0.45.g6b4c145 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html