Skip to content

Commit 82fa693

Browse files
committed
Refactor Bazel targets for .NET build
This commit updates the .NET build targets to generate the DevTools Protocol (CDP) .NET bindings. Storage of the generation settings files underneath the DevTools directory was not able to work properly with pathing and inclusion of source files. Additionally, it also adds the ability to push to the NuGet repository from the Bazel command line.
1 parent f9b20dc commit 82fa693

16 files changed

Lines changed: 119 additions & 32 deletions

dotnet/BUILD.bazel

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,11 @@
1+
load("@bazel_skylib//rules:common_settings.bzl", "string_flag")
12
exports_files([
23
"WebDriver.snk",
34
"AssemblyInfo.cs.template",
45
])
6+
7+
string_flag(
8+
name = "nuget-api-key",
9+
build_setting_default = "",
10+
visibility = ["//dotnet:__subpackages__"],
11+
)

dotnet/executable-assembly.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ def _generate_execution_script_file(ctx, target):
3131
environment += "export PROGRAMFILES=%s\n" % dotnet_sdk_location
3232
environment += "export USERPROFILE=%s\n" % dotnet_sdk_location
3333
environment += "export DOTNET_CLI_TELEMETRY_OPTOUT=1\n"
34-
#else:
35-
# environment += "@echo off\n"
34+
else:
35+
environment += "@echo off\n"
3636

3737
shell_content = environment + execution_line
3838

dotnet/generate-devtools.bzl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
def _generate_devtools_impl(ctx):
2-
outdir = ctx.actions.declare_directory("generated/{}".format(ctx.attr.out))
2+
outdir = ctx.actions.declare_directory("{}".format(ctx.attr.out))
33

44
args = ctx.actions.args()
55
args.add_all("-s", [ctx.attr.src.files.to_list()[0]])
@@ -10,6 +10,7 @@ def _generate_devtools_impl(ctx):
1010

1111
ctx.actions.run(
1212
executable = ctx.executable.generator,
13+
progress_message = "Generating {} DevTools Protocol bindings for .NET".format(ctx.attr.out),
1314
arguments = [args],
1415
outputs = [
1516
outdir,

dotnet/merge-assemblies.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def _merged_assembly_impl(ctx):
3636

3737
ctx.actions.run(
3838
executable = ctx.executable.merge_tool,
39+
progress_message = "Merging assembiles into {}".format(ctx.outputs.out.path),
3940
arguments = args,
4041
inputs = ctx.attr.src_assembly.files,
4142
outputs = [ctx.outputs.out],

dotnet/nuget.bzl

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,56 @@
1+
load("@bazel_skylib//rules:common_settings.bzl", "BuildSettingInfo")
2+
3+
def _nuget_push_impl(ctx):
4+
args = [
5+
"push",
6+
]
7+
8+
apikey = ctx.attr.api_key[BuildSettingInfo].value
9+
package_to_publish = ctx.attr.src.files.to_list()[0].path
10+
11+
output_file = ctx.actions.declare_file("done.txt")
12+
13+
args.append(ctx.expand_location(ctx.attr.src.files.to_list()[0].path))
14+
args.append("-Source")
15+
args.append(ctx.attr.package_repository_url)
16+
args.append("-SkipDuplicate")
17+
args.append("-ApiKey")
18+
args.append(apikey)
19+
args.append("> {}".format(output_file.path))
20+
21+
ctx.actions.run(
22+
executable = ctx.executable.nuget_exe,
23+
progress_message = "Publishing {}".format(package_to_publish),
24+
arguments = args,
25+
inputs = ctx.attr.src.files.to_list() + ctx.files.deps,
26+
outputs = [output_file],
27+
)
28+
29+
return DefaultInfo(files = depset([
30+
output_file,
31+
]))
32+
33+
34+
nuget_push = rule(
35+
implementation = _nuget_push_impl,
36+
attrs = {
37+
"src": attr.label(
38+
allow_single_file = True,
39+
),
40+
"deps": attr.label_list(),
41+
"package_repository_url": attr.string(
42+
default = "https://nuget.org",
43+
),
44+
"api_key": attr.label(default = ":nuget-api-key"),
45+
"nuget_exe": attr.label(
46+
executable = True,
47+
cfg = "host",
48+
default = Label("//third_party/dotnet/nuget:nuget.exe"),
49+
allow_single_file = True,
50+
),
51+
},
52+
)
53+
154
def _nuget_package_impl(ctx):
255
args = [
356
"pack",
@@ -29,6 +82,7 @@ def _nuget_package_impl(ctx):
2982

3083
ctx.actions.run(
3184
executable = ctx.executable.nuget_exe,
85+
progress_message = "Packaging {}".format(package_file.path),
3286
arguments = args,
3387
inputs = ctx.attr.src.files.to_list() + ctx.files.deps,
3488
outputs = [

dotnet/selenium-dotnet-version.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# BUILD FILE SYNTAX: SKYLARK
22

3-
SE_VERSION = "4.0.0-alpha05"
3+
SE_VERSION = "4.0.0-alpha07"
44
ASSEMBLY_VERSION = "4.0.0.0"
55
SUPPORTED_NET_FRAMEWORKS = ["net45", "net46", "net47", "net48"]
66
SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0", "netstandard2.1"]

dotnet/src/support/BUILD.bazel

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,9 @@ nuget_package(
156156
":copy-netstandard2.1-strongnamed",
157157
],
158158
)
159+
160+
nuget_push(
161+
name = "publish",
162+
src = ":package",
163+
api_key = "//dotnet:nuget-api-key",
164+
)

dotnet/src/webdriver/BUILD.bazel

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ load("@d2l_rules_csharp//csharp:defs.bzl", "csharp_library")
22
load("//common:defs.bzl", "copy_file")
33
load("//dotnet:merge-assemblies.bzl", "merged_assembly")
44
load("//dotnet:assembly-info.bzl", "generated_assembly_info")
5-
load("//dotnet:nuget.bzl", "nuget_package")
5+
load("//dotnet:nuget.bzl", "nuget_package", "nuget_push")
66
load(
77
"//dotnet:selenium-dotnet-version.bzl",
88
"ASSEMBLY_COMPANY",
@@ -45,9 +45,9 @@ generated_assembly_info(
4545
"Support/*.cs",
4646
]) + [
4747
":assembly-info",
48-
"//dotnet/src/webdriver/DevTools:generate-v84",
49-
"//dotnet/src/webdriver/DevTools:generate-v85",
50-
"//dotnet/src/webdriver/DevTools:generate-v86",
48+
"//dotnet/src/webdriver/cdp:generate-v84",
49+
"//dotnet/src/webdriver/cdp:generate-v85",
50+
"//dotnet/src/webdriver/cdp:generate-v86",
5151
],
5252
out = "WebDriver",
5353
resources = [
@@ -93,15 +93,16 @@ generated_assembly_info(
9393
"Support/*.cs",
9494
]) + [
9595
":assembly-info",
96-
"//dotnet/src/webdriver/DevTools:generate-v84",
97-
"//dotnet/src/webdriver/DevTools:generate-v85",
98-
"//dotnet/src/webdriver/DevTools:generate-v86",
96+
"//dotnet/src/webdriver/cdp:generate-v84",
97+
"//dotnet/src/webdriver/cdp:generate-v85",
98+
"//dotnet/src/webdriver/cdp:generate-v86",
9999
],
100100
out = "WebDriver",
101101
resources = [
102102
"//javascript/atoms/fragments:find-elements.js",
103103
"//javascript/atoms/fragments:is-displayed.js",
104104
"//javascript/webdriver/atoms:get-attribute.js",
105+
"//third_party/js/selenium:webdriver_json",
105106
],
106107
target_frameworks = [
107108
"{}".format(standard_version),
@@ -131,16 +132,17 @@ generated_assembly_info(
131132
"Support/*.cs",
132133
]) + [
133134
":assembly-info",
134-
"//dotnet/src/webdriver/DevTools:generate-v84",
135-
"//dotnet/src/webdriver/DevTools:generate-v85",
136-
"//dotnet/src/webdriver/DevTools:generate-v86",
135+
"//dotnet/src/webdriver/cdp:generate-v84",
136+
"//dotnet/src/webdriver/cdp:generate-v85",
137+
"//dotnet/src/webdriver/cdp:generate-v86",
137138
],
138139
out = "strongnamed/WebDriver",
139140
keyfile = "//dotnet:WebDriver.snk",
140141
resources = [
141142
"//javascript/atoms/fragments:find-elements.js",
142143
"//javascript/atoms/fragments:is-displayed.js",
143144
"//javascript/webdriver/atoms:get-attribute.js",
145+
"//third_party/js/selenium:webdriver_json",
144146
],
145147
target_frameworks = [
146148
"{}".format(framework),
@@ -179,16 +181,17 @@ generated_assembly_info(
179181
"Support/*.cs",
180182
]) + [
181183
":assembly-info",
182-
"//dotnet/src/webdriver/DevTools:generate-v84",
183-
"//dotnet/src/webdriver/DevTools:generate-v85",
184-
"//dotnet/src/webdriver/DevTools:generate-v86",
184+
"//dotnet/src/webdriver/cdp:generate-v84",
185+
"//dotnet/src/webdriver/cdp:generate-v85",
186+
"//dotnet/src/webdriver/cdp:generate-v86",
185187
],
186188
out = "strongnamed/WebDriver",
187189
keyfile = "//dotnet:WebDriver.snk",
188190
resources = [
189191
"//javascript/atoms/fragments:find-elements.js",
190192
"//javascript/atoms/fragments:is-displayed.js",
191193
"//javascript/webdriver/atoms:get-attribute.js",
194+
"//third_party/js/selenium:webdriver_json",
192195
],
193196
target_frameworks = [
194197
"{}".format(standard_version),
@@ -267,3 +270,9 @@ nuget_package(
267270
":netstandard2.1-strongnamed",
268271
],
269272
)
273+
274+
nuget_push(
275+
name = "publish",
276+
src = ":package",
277+
api_key = "//dotnet:nuget-api-key",
278+
)

dotnet/src/webdriver/WebDriver.csproj

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,11 @@
8181
</PropertyGroup>
8282

8383
<ItemGroup>
84+
<Compile Remove="cdp\**" />
8485
<Compile Remove="obj\**" />
86+
<EmbeddedResource Remove="cdp\**" />
8587
<EmbeddedResource Remove="obj\**" />
88+
<None Remove="cdp\**" />
8689
<None Remove="obj\**" />
8790
</ItemGroup>
8891

@@ -92,9 +95,9 @@
9295
</ItemGroup>
9396

9497
<ItemGroup>
95-
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v84\**\*.cs" LinkBase="DevTools\generated\v84" />
96-
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v85\**\*.cs" LinkBase="DevTools\generated\v85" />
97-
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v86\**\*.cs" LinkBase="DevTools\generated\v86" />
98+
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v84\**\*.cs" LinkBase="DevTools\generated\v84" />
99+
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v85\**\*.cs" LinkBase="DevTools\generated\v85" />
100+
<Compile Include="..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v86\**\*.cs" LinkBase="DevTools\generated\v86" />
98101
</ItemGroup>
99102

100103
<ItemGroup>

dotnet/src/webdriver/WebDriver.csproj.prebuild.cmd

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,23 @@ if not exist "%1..\..\..\bazel-bin\javascript\atoms\fragments\find-elements.js"
2020
popd
2121
)
2222

23-
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v84\DevToolsSessionDomains.cs" (
23+
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v84\DevToolsSessionDomains.cs" (
2424
echo Generating CDP code for version 84
2525
pushd "%1..\..\.."
26-
bazel build //dotnet/src/webdriver/DevTools:generate-v84
26+
bazel build //dotnet/src/webdriver/cdp:generate-v84
2727
popd
2828
)
2929

30-
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v85\DevToolsSessionDomains.cs" (
30+
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v85\DevToolsSessionDomains.cs" (
3131
echo Generating CDP code for version 85
3232
pushd "%1..\..\.."
33-
bazel build //dotnet/src/webdriver/DevTools:generate-v85
33+
bazel build //dotnet/src/webdriver/cdp:generate-v85
3434
popd
3535
)
3636

37-
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\devtools\generated\v86\DevToolsSessionDomains.cs" (
37+
if not exist "%1..\..\..\bazel-bin\dotnet\src\webdriver\cdp\v86\DevToolsSessionDomains.cs" (
3838
echo Generating CDP code for version 86
3939
pushd "%1..\..\.."
40-
bazel build //dotnet/src/webdriver/DevTools:generate-v86
40+
bazel build //dotnet/src/webdriver/cdp:generate-v86
4141
popd
4242
)

0 commit comments

Comments
 (0)