1
+ $Language = " python"
2
+ $Lang = " python"
3
+ $PackageRepository = " PyPI"
4
+ $packagePattern = " *.zip"
5
+ $MetadataUri = " https://raw.githubusercontent.com/Azure/azure-sdk/master/_data/releases/latest/python-packages.csv"
6
+
7
+ function Extract-python-PkgProperties ($pkgPath , $serviceName , $pkgName )
8
+ {
9
+ $pkgName = $pkgName.Replace (' _' , ' -' )
10
+ if (Test-Path (Join-Path $pkgPath " setup.py" ))
11
+ {
12
+ $setupLocation = $pkgPath.Replace (' \' , ' /' )
13
+ pushd $RepoRoot
14
+ $setupProps = (python - c " import sys; import os; sys.path.append(os.path.join('scripts', 'devops_tasks')); from common_tasks import parse_setup; obj=parse_setup('$setupLocation '); print('{0},{1}'.format(obj[0], obj[1]));" ) -split " ,"
15
+ popd
16
+ if (($setupProps -ne $null ) -and ($setupProps [0 ] -eq $pkgName ))
17
+ {
18
+ return [PackageProps ]::new($setupProps [0 ], $setupProps [1 ], $pkgPath , $serviceName )
19
+ }
20
+ }
21
+ return $null
22
+ }
23
+
24
+ # Returns the pypi publish status of a package id and version.
25
+ function IsPythonPackageVersionPublished ($pkgId , $pkgVersion ) {
26
+ try
27
+ {
28
+ $existingVersion = (Invoke-RestMethod - MaximumRetryCount 3 - Method " Get" - uri " https://pypi.org/pypi/$pkgId /$pkgVersion /json" ).info.version
29
+ # if existingVersion exists, then it's already been published
30
+ return $True
31
+ }
32
+ catch
33
+ {
34
+ $statusCode = $_.Exception.Response.StatusCode.value__
35
+ $statusDescription = $_.Exception.Response.StatusDescription
36
+
37
+ # if this is 404ing, then this pkg has never been published before
38
+ if ($statusCode -eq 404 )
39
+ {
40
+ return $False
41
+ }
42
+ Write-Host " PyPI Invocation failed:"
43
+ Write-Host " StatusCode:" $statusCode
44
+ Write-Host " StatusDescription:" $statusDescription
45
+ exit (1 )
46
+ }
47
+ }
48
+
49
+ # Parse out package publishing information given a python sdist of ZIP format.
50
+ function Parse-python-Package ($pkg , $workingDirectory ) {
51
+ $pkg.Basename -match $SDIST_PACKAGE_REGEX | Out-Null
52
+
53
+ $pkgId = $matches [" package" ]
54
+ $pkgVersion = $matches [" versionstring" ]
55
+
56
+ $workFolder = " $workingDirectory $ ( $pkg.Basename ) "
57
+ $origFolder = Get-Location
58
+ $releaseNotes = " "
59
+ $readmeContent = " "
60
+
61
+ New-Item - ItemType Directory - Force - Path $workFolder
62
+ Expand-Archive - Path $pkg - DestinationPath $workFolder
63
+
64
+ $changeLogLoc = @ (Get-ChildItem - Path $workFolder - Recurse - Include " CHANGELOG.md" )[0 ]
65
+ if ($changeLogLoc ) {
66
+ $releaseNotes = Get-ChangeLogEntryAsString - ChangeLogLocation $changeLogLoc - VersionString $pkgVersion
67
+ }
68
+
69
+ $readmeContentLoc = @ (Get-ChildItem - Path $workFolder - Recurse - Include " README.md" ) | Select-Object - Last 1
70
+
71
+ if ($readmeContentLoc ) {
72
+ $readmeContent = Get-Content - Raw $readmeContentLoc
73
+ }
74
+
75
+ Remove-Item $workFolder - Force - Recurse - ErrorAction SilentlyContinue
76
+
77
+ return New-Object PSObject - Property @ {
78
+ PackageId = $pkgId
79
+ PackageVersion = $pkgVersion
80
+ Deployable = $forceCreate -or ! (IsPythonPackageVersionPublished - pkgId $pkgId - pkgVersion $pkgVersion )
81
+ ReleaseNotes = $releaseNotes
82
+ ReadmeContent = $readmeContent
83
+ }
84
+ }
85
+
86
+ # Stage and Upload Docs to blob Storage
87
+ function StageAndUpload-python-Docs ()
88
+ {
89
+ $PublishedDocs = Get-ChildItem " $DocLocation " | Where-Object - FilterScript {$_.Name.EndsWith (" .zip" )}
90
+
91
+ foreach ($Item in $PublishedDocs )
92
+ {
93
+ $PkgName = $Item.BaseName
94
+ $ZippedDocumentationPath = Join-Path - Path $DocLocation - ChildPath $Item.Name
95
+ $UnzippedDocumentationPath = Join-Path - Path $DocLocation - ChildPath $PkgName
96
+ $VersionFileLocation = Join-Path - Path $UnzippedDocumentationPath - ChildPath " version.txt"
97
+
98
+ Expand-Archive - Force - Path $ZippedDocumentationPath - DestinationPath $UnzippedDocumentationPath
99
+
100
+ $Version = $ (Get-Content $VersionFileLocation ).Trim()
101
+
102
+ Write-Host " Discovered Package Name: $PkgName "
103
+ Write-Host " Discovered Package Version: $Version "
104
+ Write-Host " Directory for Upload: $UnzippedDocumentationPath "
105
+
106
+ Upload- Blobs - DocDir $UnzippedDocumentationPath - PkgName $PkgName - DocVersion $Version
107
+ }
108
+ }
0 commit comments