@@ -273,10 +273,29 @@ ClassMethod GetPackageNameFromRepositoryURL(url As %String) As %String
273
273
Return $PIECE (url , " /" , *-1 )
274
274
}
275
275
276
- ClassMethod DownloadPackageFromGitHub (url As %String ) As %String
276
+ ClassMethod GetDefaultBranch (path As %String ) As %String
277
+ {
278
+ If ($Extract (path ,$Length (path ))=" /" ) {
279
+ Set path = $Extract (path ,1 ,*-1 )
280
+ }
281
+ Set branch = " main"
282
+ Set ht = ##class (%Net.HttpRequest ).%New ()
283
+ Set ht .Server = " api.github.com"
284
+ Set ht .SSLConfiguration = ..GetSSLConfiguration (ht .Server )
285
+ Set ht .Https = 1
286
+ Set ht .Location = " /repos" _path
287
+ $$$ThrowOnError(ht .Get ())
288
+ If (ht .HttpResponse .StatusCode =200 ) {
289
+ Set jo = {}.%FromJSON (ht .HttpResponse .Data )
290
+ Set branch = jo ." default_branch"
291
+ }
292
+ return branch
293
+ }
294
+
295
+ ClassMethod DownloadPackageFromGitHub (url As %String , Output branch As %String ) As %String
277
296
{
278
- SET url = url _ " archive/master.tar.gz"
279
297
Do ##class (%Net.URLParser ).Parse (url , .tComponents )
298
+ Set branch = ..GetDefaultBranch (tComponents (" path" ))
280
299
Set ht = ##class (%Net.HttpRequest ).%New ()
281
300
Set ht .Server = tComponents (" host" )
282
301
If $get (tComponents (" scheme" ))=" https" {
@@ -286,8 +305,7 @@ ClassMethod DownloadPackageFromGitHub(url As %String) As %String
286
305
If $data (tComponents (" port" ), port ), port '=" " {
287
306
Set ht .Port = port
288
307
}
289
- Set ht .Location = tComponents (" path" )
290
-
308
+ Set ht .Location = tComponents (" path" )_" archive/" _branch _" .tar.gz"
291
309
$$$ThrowOnError(ht .Get ())
292
310
If (ht .HttpResponse .StatusCode '=200 ) {
293
311
$$$ThrowStatus($$$ERROR(5001 ," Unable to download repository " _url ))
@@ -387,8 +405,9 @@ ClassMethod UpdatePackage(jo As %DynamicObject) As %Status
387
405
388
406
ClassMethod Publish (url As %String , name As %String ) As %Status
389
407
{
390
- Set outputFolder = ..DownloadPackageFromGitHub (url )
391
- Set packageFolder = ##class (%File ).NormalizeDirectory (name _ " -master" , outputFolder )
408
+ Set branch = " master"
409
+ Set outputFolder = ..DownloadPackageFromGitHub (url , .branch )
410
+ Set packageFolder = ##class (%File ).NormalizeDirectory (name _" -" _branch , outputFolder )
392
411
Return ..LoadPackage (packageFolder , url , 1 )
393
412
}
394
413
@@ -401,8 +420,9 @@ ClassMethod LoadFromGitHub(Url = "")
401
420
Set Url = Url _ " /"
402
421
}
403
422
Set name = ..GetPackageNameFromRepositoryURL (Url )
404
- Set outputFolder = ..DownloadPackageFromGitHub (Url )
405
- Set packageFolder = ##class (%File ).NormalizeDirectory (name _ " -master" , outputFolder )
423
+ Set branch = " master"
424
+ Set outputFolder = ..DownloadPackageFromGitHub (Url , .branch )
425
+ Set packageFolder = ##class (%File ).NormalizeDirectory (name _" -" _branch , outputFolder )
406
426
Set tSC = ..LoadPackage (packageFolder , Url )
407
427
If $$$ISERR(tSC ) {
408
428
Do $system .OBJ .DisplayError ()
0 commit comments