Skip to content

Commit bb1c751

Browse files
authored
[Infra] Annotate subprojects with the type of project (#7373)
We extended the format of `subprojects.cfg` to support inline comments. Then, added a comment to indicate what type of project each entry points to, e.g. SDK or test-only. This is useful for tooling, like Gemini, as it can now understand better which subprojects to read/modify if a global, SDK-specific, action is necessary. The `agents.md` doc has been updated accordingly.
1 parent 3f8fb20 commit bb1c751

File tree

3 files changed

+79
-66
lines changed

3 files changed

+79
-66
lines changed

agents.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22

33
This guide provides essential information for working within the `firebase-android-sdk` repository.
44

5+
## Project Structure
6+
7+
The `subprojects.cfg` file lists all the subprojects in this repository. Each line in this file
8+
follows the format `<project-path> # <project-type>`, where `project-type` can be one of the
9+
following:
10+
11+
- `sdk`: A public-facing SDK that is published.
12+
- `test`: A test application or a test-only module.
13+
- `util`: A utility module that is not part of the public API.
14+
- `directory`: A directory containing other subprojects.
15+
16+
This file is useful for understanding the role of each subproject in the repository.
17+
518
## Environment Setup
619

720
To work with this repository, the Android SDK must be installed. Use the `sdkmanager` command-line

settings.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ dependencyResolutionManagement {
4646
*
4747
* Expected file format:
4848
* - Empty lines are ignored.
49-
* - Lines starting with # are considered comments.
49+
* - Text following a '#' character on the same line is treated as a comment.
5050
* - Other lines are treated as project paths.
5151
*/
5252
fun discoverSubprojects(subprojectsFile: File): List<String> {
5353
return subprojectsFile
5454
.readLines()
55-
.map { it.trim() }
56-
.filter { it.isNotEmpty() && !it.startsWith("#") }
55+
.map { it.split("#").firstOrNull()?.trim() ?: "" }
56+
.filter { it.isNotEmpty() }
5757
}
5858

5959
/**

subprojects.cfg

Lines changed: 63 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,71 @@
1-
appcheck
2-
appcheck:firebase-appcheck-debug-testing
3-
appcheck:firebase-appcheck-debug
4-
appcheck:firebase-appcheck-interop
5-
appcheck:firebase-appcheck-playintegrity
6-
appcheck:firebase-appcheck-recaptchaenterprise
7-
appcheck:firebase-appcheck
1+
appcheck # directory
2+
appcheck:firebase-appcheck-debug-testing # sdk
3+
appcheck:firebase-appcheck-debug # sdk
4+
appcheck:firebase-appcheck-interop # sdk
5+
appcheck:firebase-appcheck-playintegrity # sdk
6+
appcheck:firebase-appcheck-recaptchaenterprise # sdk
7+
appcheck:firebase-appcheck # sdk
88

9-
firebase-abt
10-
firebase-ai
11-
firebase-annotations
12-
firebase-appdistribution
13-
firebase-appdistribution-api
14-
firebase-common
15-
firebase-common:data-collection-tests
16-
firebase-components
17-
firebase-components:firebase-dynamic-module-support
18-
firebase-config
19-
firebase-config:bandwagoner
20-
firebase-config:test-app
21-
firebase-config-interop
22-
firebase-crashlytics
23-
firebase-crashlytics-ndk
24-
firebase-database
25-
firebase-database-collection
26-
firebase-dataconnect
27-
firebase-dataconnect:androidTestutil
28-
firebase-dataconnect:connectors
29-
firebase-dataconnect:testutil
30-
firebase-datatransport
31-
firebase-firestore
32-
firebase-functions
33-
firebase-messaging
34-
firebase-messaging-directboot
35-
firebase-inappmessaging
36-
firebase-inappmessaging-display
37-
firebase-installations-interop
38-
firebase-installations
39-
firebase-ml-modeldownloader
40-
firebase-ml-modeldownloader:ml-data-collection-tests
41-
firebase-perf
42-
firebase-perf:dev-app
43-
firebase-perf:e2e-app
44-
firebase-sessions
45-
firebase-sessions:benchmark
46-
firebase-sessions:test-app
47-
firebase-storage
48-
protolite-well-known-types
9+
firebase-abt # sdk
10+
firebase-ai # sdk
11+
firebase-annotations # sdk
12+
firebase-appdistribution # sdk
13+
firebase-appdistribution-api # sdk
14+
firebase-common # sdk
15+
firebase-common:data-collection-tests # test
16+
firebase-components # sdk
17+
firebase-components:firebase-dynamic-module-support # sdk
18+
firebase-config # sdk
19+
firebase-config:bandwagoner # test
20+
firebase-config:test-app # test
21+
firebase-config-interop # sdk
22+
firebase-crashlytics # sdk
23+
firebase-crashlytics-ndk # sdk
24+
firebase-database # sdk
25+
firebase-database-collection # sdk
26+
firebase-dataconnect # sdk
27+
firebase-dataconnect:androidTestutil # util
28+
firebase-dataconnect:connectors # sdk
29+
firebase-dataconnect:testutil # util
30+
firebase-datatransport # sdk
31+
firebase-firestore # sdk
32+
firebase-functions # sdk
33+
firebase-messaging # sdk
34+
firebase-messaging-directboot # sdk
35+
firebase-inappmessaging # sdk
36+
firebase-inappmessaging-display # sdk
37+
firebase-installations-interop # sdk
38+
firebase-installations # sdk
39+
firebase-ml-modeldownloader # sdk
40+
firebase-ml-modeldownloader:ml-data-collection-tests # test
41+
firebase-perf # sdk
42+
firebase-perf:dev-app # test
43+
firebase-perf:e2e-app # test
44+
firebase-sessions # sdk
45+
firebase-sessions:benchmark # util
46+
firebase-sessions:test-app # test
47+
firebase-storage # sdk
48+
protolite-well-known-types # sdk
4949

50-
encoders
51-
encoders:firebase-encoders
52-
encoders:firebase-encoders-json
53-
encoders:firebase-encoders-processor
54-
encoders:firebase-encoders-proto
55-
encoders:firebase-encoders-reflective
56-
encoders:firebase-decoders-json
57-
encoders:protoc-gen-firebase-encoders
58-
encoders:protoc-gen-firebase-encoders:tests
50+
encoders # directory
51+
encoders:firebase-encoders # sdk
52+
encoders:firebase-encoders-json # sdk
53+
encoders:firebase-encoders-processor # sdk
54+
encoders:firebase-encoders-proto # sdk
55+
encoders:firebase-encoders-reflective # sdk
56+
encoders:firebase-decoders-json # sdk
57+
encoders:protoc-gen-firebase-encoders # sdk
58+
encoders:protoc-gen-firebase-encoders:tests # test
5959

60-
integ-testing
60+
integ-testing # util
6161

62-
tools:lint
62+
tools:lint # util
6363

64-
transport
65-
transport:transport-api
66-
transport:transport-backend-cct
67-
transport:transport-runtime
68-
transport:transport-runtime-testing
64+
transport # directory
65+
transport:transport-api # sdk
66+
transport:transport-backend-cct # sdk
67+
transport:transport-runtime # sdk
68+
transport:transport-runtime-testing # sdk
6969

7070
# Test Apps
7171
# disabled since they require google-services.json to build which is not always available in CI.

0 commit comments

Comments
 (0)