@@ -189,7 +189,7 @@ def prepare_release(session):
189
189
def build_release (session ):
190
190
version = release .get_version_from_arguments (session .posargs )
191
191
if not version :
192
- session .error ("Usage: nox -s upload -release -- YY.N[.P]" )
192
+ session .error ("Usage: nox -s build -release -- YY.N[.P]" )
193
193
194
194
session .log ("# Ensure no files in dist/" )
195
195
if release .have_files_in_folder ("dist" ):
@@ -209,3 +209,36 @@ def build_release(session):
209
209
210
210
session .log ("# Checkout the master branch" )
211
211
session .run ("git" , "checkout" , "master" , external = True , silent = True )
212
+
213
+
214
+ @nox .session (name = "upload-release" )
215
+ def upload_release (session ):
216
+ version = release .get_version_from_arguments (session .posargs )
217
+ if not version :
218
+ session .error ("Usage: nox -s upload-release -- YY.N[.P]" )
219
+
220
+ session .log ("# Install dependencies" )
221
+ session .install ("twine" )
222
+
223
+ distribution_files = glob .glob ("dist/*" )
224
+ session .log (f"# Distribution files: { distribution_files } " )
225
+
226
+ # Sanity check: Make sure there's 2 distribution files.
227
+ count = len (distribution_files )
228
+ if count != 2 :
229
+ session .error (
230
+ f"Expected 2 distribution files for upload, got { count } . "
231
+ f"Remove dist/ and run 'nox -s build-release -- { version } '"
232
+ )
233
+ # Sanity check: Make sure the files are correctly named.
234
+ expected_distribution_files = [
235
+ f"pip-{ version } -py2.py3-none-any.whl" ,
236
+ f"pip-{ version } .tar.gz" ,
237
+ ]
238
+ if sorted (distribution_files ) != sorted (expected_distribution_files ):
239
+ session .error (
240
+ f"Distribution files do not seem to be for { version } release."
241
+ )
242
+
243
+ session .log ("# Upload distributions" )
244
+ session .run ("twine" , "upload" , * distribution_files )
0 commit comments