Skip to content

Commit e2acc45

Browse files
committed
Add SMTP as example with 2 experimental features
1 parent fc086f7 commit e2acc45

File tree

11 files changed

+1832
-0
lines changed

11 files changed

+1832
-0
lines changed

examples/smtp_example/.bazelrc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Import Shared settings
2+
import %workspace%/../../shared.bazelrc
3+
4+
# Import CI settings.
5+
import %workspace%/../../ci.bazelrc
6+
7+
# Try to import a local.rc file; typically, written by CI
8+
try-import %workspace%/../../local.bazelrc

examples/smtp_example/BUILD.bazel

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary")
2+
load("@build_bazel_rules_swift//swift:swift.bzl", "swift_binary")
3+
load("@cgrindel_bazel_starlib//bzltidy:defs.bzl", "tidy")
4+
load("@rules_swift_package_manager//swiftpkg:defs.bzl", "swift_update_packages")
5+
6+
tidy(
7+
name = "tidy",
8+
targets = [
9+
":swift_update_pkgs",
10+
":update_build_files",
11+
],
12+
)
13+
14+
# MARK: - Gazelle
15+
16+
# Ignore the Swift build folder
17+
# gazelle:exclude .build
18+
19+
gazelle_binary(
20+
name = "gazelle_bin",
21+
languages = [
22+
"@bazel_skylib_gazelle_plugin//bzl",
23+
"@rules_swift_package_manager//gazelle",
24+
],
25+
)
26+
27+
gazelle(
28+
name = "update_build_files",
29+
gazelle = ":gazelle_bin",
30+
)
31+
32+
swift_update_packages(
33+
name = "swift_update_pkgs",
34+
gazelle = ":gazelle_bin",
35+
generate_swift_deps_for_workspace = False,
36+
update_bzlmod_stanzas = True,
37+
)
38+
39+
swift_binary(
40+
name = "smtp_example",
41+
srcs = ["main.swift"],
42+
module_name = "smtp_example",
43+
visibility = ["//visibility:public"],
44+
deps = ["@swiftpkg_swift_smtp//:SwiftSMTP"],
45+
)

examples/smtp_example/MODULE.bazel

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
bazel_dep(
2+
name = "rules_swift_package_manager",
3+
version = "0.0.0",
4+
)
5+
local_path_override(
6+
module_name = "rules_swift_package_manager",
7+
path = "../..",
8+
)
9+
10+
bazel_dep(name = "cgrindel_bazel_starlib", version = "0.20.2")
11+
bazel_dep(name = "bazel_skylib", version = "1.6.0")
12+
bazel_dep(name = "apple_support", version = "1.9.0", repo_name = "build_bazel_apple_support")
13+
bazel_dep(
14+
name = "rules_swift",
15+
version = "1.18.0",
16+
repo_name = "build_bazel_rules_swift",
17+
)
18+
bazel_dep(
19+
name = "rules_apple",
20+
version = "3.5.1",
21+
repo_name = "build_bazel_rules_apple",
22+
)
23+
24+
bazel_dep(
25+
name = "bazel_skylib_gazelle_plugin",
26+
version = "1.6.0",
27+
dev_dependency = True,
28+
)
29+
bazel_dep(
30+
name = "gazelle",
31+
version = "0.36.0",
32+
dev_dependency = True,
33+
repo_name = "bazel_gazelle",
34+
)
35+
# swift_deps START
36+
swift_deps = use_extension(
37+
"@rules_swift_package_manager//:extensions.bzl",
38+
"swift_deps",
39+
)
40+
swift_deps.from_file(
41+
deps_index = "//:swift_deps_index.json",
42+
)
43+
use_repo(
44+
swift_deps,
45+
"swiftpkg_swift_smtp",
46+
)
47+
# swift_deps END

examples/smtp_example/Package.resolved

Lines changed: 203 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/smtp_example/Package.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// swift-tools-version: 5.7
2+
3+
import PackageDescription
4+
5+
let package = Package(
6+
name: "smtp_example",
7+
dependencies: [
8+
.package(url: "https://github.com/sersoft-gmbh/swift-smtp", from: "2.10.0"),
9+
]
10+
)

examples/smtp_example/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# smtp Example

examples/smtp_example/WORKSPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Intentionally blank: Using bzlmod
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Intentionally blank: Force bzlmod to strict mode

examples/smtp_example/do_test

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
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 tests pass
13+
"${bazel}" test //...

examples/smtp_example/main.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import SwiftSMTP
2+
3+
let configuration = Configuration.fromEnvironment()
4+
print(configuration.server.hostname)

0 commit comments

Comments
 (0)