@@ -21,6 +21,7 @@ def _java_gapic_postprocess_srcjar_impl(ctx):
21
21
output_srcjar_name = ctx .label .name
22
22
output_main = ctx .outputs .main
23
23
output_test = ctx .outputs .test
24
+ output_samples = ctx .outputs .samples
24
25
output_resource_name = ctx .outputs .resource_name
25
26
formatter = ctx .executable .formatter
26
27
@@ -58,11 +59,16 @@ def _java_gapic_postprocess_srcjar_impl(ctx):
58
59
cd $WORKING_DIR/{output_dir_path}/src/test/java
59
60
zip -r $WORKING_DIR/{output_srcjar_name}-tests.srcjar ./
60
61
62
+ # Sample source files.
63
+ cd $WORKING_DIR/{output_dir_path}/samples/snippets/generated/src/main/java
64
+ zip -r $WORKING_DIR/{output_srcjar_name}-samples.srcjar ./
65
+
61
66
cd $WORKING_DIR
62
67
63
68
mv {output_srcjar_name}.srcjar {output_main}
64
69
mv {output_srcjar_name}-resource-name.srcjar {output_resource_name}
65
70
mv {output_srcjar_name}-tests.srcjar {output_test}
71
+ mv {output_srcjar_name}-samples.srcjar {output_samples}
66
72
""" .format (
67
73
gapic_srcjar = gapic_srcjar .path ,
68
74
output_srcjar_name = output_srcjar_name ,
@@ -72,13 +78,14 @@ def _java_gapic_postprocess_srcjar_impl(ctx):
72
78
output_main = output_main .path ,
73
79
output_resource_name = output_resource_name .path ,
74
80
output_test = output_test .path ,
81
+ output_samples = output_samples .path ,
75
82
)
76
83
77
84
ctx .actions .run_shell (
78
85
inputs = [gapic_srcjar ],
79
86
tools = [formatter ],
80
87
command = script ,
81
- outputs = [output_main , output_resource_name , output_test ],
88
+ outputs = [output_main , output_resource_name , output_test , output_samples ],
82
89
)
83
90
84
91
_java_gapic_postprocess_srcjar = rule (
@@ -94,10 +101,66 @@ _java_gapic_postprocess_srcjar = rule(
94
101
"main" : "%{name}.srcjar" ,
95
102
"resource_name" : "%{name}-resource-name.srcjar" ,
96
103
"test" : "%{name}-test.srcjar" ,
104
+ "samples" : "%{name}-samples.srcjar" ,
97
105
},
98
106
implementation = _java_gapic_postprocess_srcjar_impl ,
99
107
)
100
108
109
+ def _java_gapic_samples_srcjar_impl (ctx ):
110
+ gapic_srcjar = ctx .file .gapic_srcjar
111
+ output_srcjar_name = ctx .label .name
112
+ output_samples = ctx .outputs .samples
113
+ formatter = ctx .executable .formatter
114
+
115
+ output_dir_name = ctx .label .name
116
+ output_dir_path = "%s/%s" % (output_samples .dirname , output_dir_name )
117
+
118
+ script = """
119
+ unzip -q {gapic_srcjar}
120
+ # Sync'd to the output file name in Writer.java.
121
+ unzip -q temp-codegen.srcjar -d {output_dir_path}
122
+ # This may fail if there are spaces and/or too many files (exceed max length of command length).
123
+ {formatter} --replace $(find {output_dir_path} -type f -printf "%p ")
124
+ WORKING_DIR=`pwd`
125
+
126
+ # Sample source files.
127
+ cd $WORKING_DIR/{output_dir_path}/samples/snippets/generated/src/main/java
128
+ zip -r $WORKING_DIR/{output_srcjar_name}-samples.srcjar ./
129
+
130
+ cd $WORKING_DIR
131
+
132
+ mv {output_srcjar_name}-samples.srcjar {output_samples}
133
+ """ .format (
134
+ gapic_srcjar = gapic_srcjar .path ,
135
+ output_srcjar_name = output_srcjar_name ,
136
+ formatter = formatter ,
137
+ output_dir_name = output_dir_name ,
138
+ output_dir_path = output_dir_path ,
139
+ output_samples = output_samples .path ,
140
+ )
141
+
142
+ ctx .actions .run_shell (
143
+ inputs = [gapic_srcjar ],
144
+ tools = [formatter ],
145
+ command = script ,
146
+ outputs = [output_samples ],
147
+ )
148
+
149
+ _java_gapic_samples_srcjar = rule (
150
+ attrs = {
151
+ "gapic_srcjar" : attr .label (mandatory = True , allow_single_file = True ),
152
+ "formatter" : attr .label (
153
+ default = Label ("//:google_java_format_binary" ),
154
+ executable = True ,
155
+ cfg = "host" ,
156
+ ),
157
+ },
158
+ outputs = {
159
+ "samples" : "%{name}-samples.srcjar" ,
160
+ },
161
+ implementation = _java_gapic_samples_srcjar_impl ,
162
+ )
163
+
101
164
def _extract_common_proto_dep (dep ):
102
165
return dep [dep .index ("/" ):] if "//google" in dep else dep
103
166
@@ -198,6 +261,12 @@ def java_gapic_library(
198
261
** kwargs
199
262
)
200
263
264
+ _java_gapic_samples_srcjar (
265
+ name = "%s_samples" % name ,
266
+ gapic_srcjar = "%s.srcjar" % raw_srcjar_name ,
267
+ ** kwargs
268
+ )
269
+
201
270
resource_name_name = "%s_resource_name" % name
202
271
resource_name_deps = [resource_name_name ]
203
272
native .java_library (
0 commit comments