Skip to content

Commit f2568ef

Browse files
committed
Add Gazelle integration and CI support to AWS examples
- Add .bazelignore files to exclude .build directories from Bazel - Add Gazelle targets for automated BUILD file generation - Add tidy targets to run Gazelle updates - Add swift_package_tool targets for package updates - Update MODULE.bazel files with Gazelle dependencies and swift_deps_info - Add do_test script for aws_sdk_example - Update do_test script for aws_crt_example to run tidy - Exclude Tests directory from Gazelle in aws_crt_example - Fix repository name references to use build_bazel_rules_swift - Standardize bash options and formatting in do_test scripts
1 parent b9582f3 commit f2568ef

File tree

8 files changed

+177
-13
lines changed

8 files changed

+177
-13
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.build

examples/aws_crt_example/BUILD.bazel

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary")
12
load("@build_bazel_rules_swift//swift:swift_test.bzl", "swift_test")
3+
load("@cgrindel_bazel_starlib//bzltidy:defs.bzl", "tidy")
4+
load("@rules_swift_package_manager//swiftpkg:defs.bzl", "swift_package_tool")
25

36
swift_test(
47
name = "AwsCrtTests",
@@ -7,3 +10,43 @@ swift_test(
710
"@swiftpkg_aws_crt_swift//:AwsCommonRuntimeKit",
811
],
912
)
13+
14+
tidy(
15+
name = "tidy",
16+
targets = [
17+
":update_build_files",
18+
],
19+
)
20+
21+
# Purposefully am not adding this to tidy. It is expensive to run and only
22+
# needs to be run when the Package.swift has been updated.
23+
swift_package_tool(
24+
name = "update_swift_packages",
25+
cmd = "update",
26+
package = "Package.swift",
27+
)
28+
29+
# MARK: - Gazelle
30+
31+
# Ignore the Swift build folder
32+
# gazelle:exclude .build
33+
# gazelle:exclude Tests
34+
35+
gazelle_binary(
36+
name = "gazelle_bin",
37+
languages = [
38+
"@bazel_skylib_gazelle_plugin//bzl",
39+
"@swift_gazelle_plugin//gazelle",
40+
],
41+
)
42+
43+
gazelle(
44+
name = "update_build_files",
45+
data = [
46+
"@swift_deps_info//:swift_deps_index",
47+
],
48+
extra_args = [
49+
"-swift_dependency_index=$(location @swift_deps_info//:swift_deps_index)",
50+
],
51+
gazelle = ":gazelle_bin",
52+
)
Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
module(name = "aws_crt_example")
22

3-
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
4-
bazel_dep(name = "rules_swift_package_manager", version = "")
3+
bazel_dep(
4+
name = "rules_swift_package_manager",
5+
version = "0.0.0",
6+
)
57
local_path_override(
68
module_name = "rules_swift_package_manager",
79
path = "../..",
810
)
911

10-
bazel_dep(name = "apple_support", version = "1.24.2")
12+
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
13+
bazel_dep(name = "bazel_skylib", version = "1.8.2")
14+
bazel_dep(name = "apple_support", version = "1.24.3")
1115
bazel_dep(
1216
name = "rules_swift",
1317
version = "3.1.2",
@@ -19,6 +23,23 @@ bazel_dep(
1923
repo_name = "build_bazel_rules_apple",
2024
)
2125

26+
bazel_dep(
27+
name = "bazel_skylib_gazelle_plugin",
28+
version = "1.8.2",
29+
dev_dependency = True,
30+
)
31+
bazel_dep(
32+
name = "gazelle",
33+
version = "0.46.0",
34+
dev_dependency = True,
35+
repo_name = "bazel_gazelle",
36+
)
37+
bazel_dep(
38+
name = "swift_gazelle_plugin",
39+
version = "0.2.1",
40+
dev_dependency = True,
41+
)
42+
2243
apple_cc_configure = use_extension(
2344
"@apple_support//crosstool:setup.bzl",
2445
"apple_cc_configure_extension",
@@ -30,16 +51,13 @@ swift_deps = use_extension(
3051
"swift_deps",
3152
)
3253
swift_deps.from_package(
54+
declare_swift_deps_info = True,
3355
resolved = "//:Package.resolved",
3456
swift = "//:Package.swift",
3557
)
36-
swift_deps.configure_package(
37-
name = "aws-crt-swift",
38-
init_submodules = True,
39-
recursive_init_submodules = True,
40-
)
4158
use_repo(
4259
swift_deps,
60+
"swift_deps_info",
4361
"swift_package",
4462
"swiftpkg_aws_crt_swift",
4563
)

examples/aws_crt_example/do_test

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
#!/usr/bin/env bash
22

3-
set -euo pipefail
3+
set -o errexit -o nounset -o pipefail
44

55
# Use the Bazel binary specified by the integration test. Otherise, fall back
66
# to bazel.
77
bazel="${BIT_BAZEL_BINARY:-bazel}"
88

9+
# Generate Swift external deps and update build files
10+
"${bazel}" run //:tidy
11+
912
# Ensure that it builds and tests pass
1013
"${bazel}" test //...
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.build
Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
load("@rules_swift//swift:swift_binary.bzl", "swift_binary")
1+
load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary")
2+
load("@build_bazel_rules_swift//swift:swift_binary.bzl", "swift_binary")
3+
load("@cgrindel_bazel_starlib//bzltidy:defs.bzl", "tidy")
4+
load("@rules_swift_package_manager//swiftpkg:defs.bzl", "swift_package_tool")
25

36
swift_binary(
47
name = "AwsSdkExample",
@@ -7,3 +10,43 @@ swift_binary(
710
"@swiftpkg_aws_sdk_swift//:AWSS3",
811
],
912
)
13+
14+
tidy(
15+
name = "tidy",
16+
targets = [
17+
":update_build_files",
18+
],
19+
)
20+
21+
# Puprosefully am not adding this to tidy. It is expensive to run and only
22+
# needs to be run when the Package.swift has been updated.
23+
swift_package_tool(
24+
name = "update_swift_packages",
25+
cmd = "update",
26+
package = "Package.swift",
27+
)
28+
29+
# MARK: - Gazelle
30+
31+
# Ignore the Swift build folder
32+
# gazelle:exclude .build
33+
# gazelle:exclude Sources
34+
35+
gazelle_binary(
36+
name = "gazelle_bin",
37+
languages = [
38+
"@bazel_skylib_gazelle_plugin//bzl",
39+
"@swift_gazelle_plugin//gazelle",
40+
],
41+
)
42+
43+
gazelle(
44+
name = "update_build_files",
45+
data = [
46+
"@swift_deps_info//:swift_deps_index",
47+
],
48+
extra_args = [
49+
"-swift_dependency_index=$(location @swift_deps_info//:swift_deps_index)",
50+
],
51+
gazelle = ":gazelle_bin",
52+
)
Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,63 @@
11
module(name = "aws_sdk_example")
22

3-
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
4-
bazel_dep(name = "rules_swift_package_manager", version = "1.10.0")
3+
bazel_dep(
4+
name = "rules_swift_package_manager",
5+
version = "0.0.0",
6+
)
57
local_path_override(
68
module_name = "rules_swift_package_manager",
79
path = "../..",
810
)
911

10-
bazel_dep(name = "rules_swift", version = "2.3.0")
12+
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.27.0")
13+
bazel_dep(name = "bazel_skylib", version = "1.8.2")
14+
bazel_dep(name = "apple_support", version = "1.24.3")
15+
bazel_dep(
16+
name = "rules_swift",
17+
version = "3.1.2",
18+
repo_name = "build_bazel_rules_swift",
19+
)
20+
bazel_dep(
21+
name = "rules_apple",
22+
version = "4.2.0",
23+
repo_name = "build_bazel_rules_apple",
24+
)
25+
26+
bazel_dep(
27+
name = "bazel_skylib_gazelle_plugin",
28+
version = "1.8.2",
29+
dev_dependency = True,
30+
)
31+
bazel_dep(
32+
name = "gazelle",
33+
version = "0.46.0",
34+
dev_dependency = True,
35+
repo_name = "bazel_gazelle",
36+
)
37+
bazel_dep(
38+
name = "swift_gazelle_plugin",
39+
version = "0.2.1",
40+
dev_dependency = True,
41+
)
42+
43+
apple_cc_configure = use_extension(
44+
"@apple_support//crosstool:setup.bzl",
45+
"apple_cc_configure_extension",
46+
)
47+
use_repo(apple_cc_configure, "local_config_apple_cc")
1148

1249
swift_deps = use_extension(
1350
"@rules_swift_package_manager//:extensions.bzl",
1451
"swift_deps",
1552
)
1653
swift_deps.from_package(
54+
declare_swift_deps_info = True,
1755
resolved = "//:Package.resolved",
1856
swift = "//:Package.swift",
1957
)
2058
use_repo(
2159
swift_deps,
60+
"swift_deps_info",
61+
"swift_package",
2262
"swiftpkg_aws_sdk_swift",
2363
)

examples/aws_sdk_example/do_test

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit -o nounset -o pipefail
4+
5+
# Use the Bazel binary specified by the integration test. Otherise, fall back
6+
# to bazel.
7+
bazel="${BIT_BAZEL_BINARY:-bazel}"
8+
9+
# Generate Swift external deps and update build files
10+
"${bazel}" run //:tidy
11+
12+
# Ensure that it builds and runs
13+
"${bazel}" run //:AwsSdkExample
14+
15+

0 commit comments

Comments
 (0)