/*
* Ilungelo lokushicilela (c) 2016-2023 uMartin Donath <martin.donath@squidfunk.com>
*
* Imvume iyavunywa, ngaphandle kwentlawulo, kuye nawuphi na umntu ofumana ikopi
* yale software kunye neefayile zamaxwebhu ezinxulumene (i "Software"), ukuya
* jongana neSoftware ngaphandle kwesithintelo, kubandakanya ngaphandle komda
* Amalungelo okusebenzisa, ukukopa, ukuguqula, ukudibanisa, ukupapasha, ukusasaza, iphepha-mvume, kunye/okanye
* athengise iikopi zeSoftware, kunye nokuvumela abantu iSoftware ikubo
* inikwe ukwenza njalo, ngokuxhomekeke kule miqathango ilandelayo:
*
* Esi saziso singasentla selungelo lokushicilela kunye nesi saziso semvume siya kufakwa
* zonke iikopi okanye iinxalenye ezibalulekileyo zeSoftware.
*
* ISOFTWARE IYANIKEZELWA “NJENGOKO ZINJALO”, NGAPHANDLE KWEWARRANTI YALO NALUPHI UHLOBO, EXPRESS OKANYE
* OKUTHETHWAYO, KUBANDAKANYEKA KODWA AKUPHELELE KWIZIQINISEKISO ZOKURhweba,
* UKULUNGELELWA KWENJONGO ETHILE KUNYE NOKUNGENAKWENZIWA KOMTHETHO. AKUKHO MFANEKISO UYA KU
* ABABHALI OKANYE ABANINI BOKUKHUPHELEKA BABE UXANDUVA NGALO NAliphi na IBANGO, UMONAKALO OKANYE OKUNYE.
* UXANDUVA, NOBA KUKWENZENZO YESIVUMELWANO, KUKWENZIWA KOMTHETHO KANYE, OKUNYE, OKUVELA
* UKUSUKA, NGAPHANDLE OKANYE KUQHAGAMSHELANA NESOFTWARE OKANYE UKUSETYENZISWA OKANYE OLUNYE USEBENZA
* KWISOFTWARE.
*/
ngenisa ngaphandle {EMPTY, Iyabonakala } ukusuka "rxjs"
ngenisa ngaphandle { fetchSourceFactsFromGitHub } ukusuka "../github"
ngenisa ngaphandle { fetchSourceFactsFromGitLab } ukusuka "../gitlab"
/* --------------------------------------------------------------------------
* Iintlobo
* ------------------------------------------------------------------------ */
/**
* Iinyani zogcino lweendawo zokugcina
*/
thumela ngaphandle ujongano lweRepositoryFacts {
iinkwenkwezi?: inani /* Inani leenkwenkwezi */
iifolokhwe?: inani /* Inani leefolokhwe */
inguqulelo?: umtya /* Inguqulelo yamva nje */
}
/**
* Iinyani ezigciniweyo zemibutho
*/
ujongano lokuthumela ngaphandle UmbuthoFacts {
oovimba?: inani /* Inani leendawo zokugcina */
}
/* ------------------------------------------------------------------------ */
/**
* Iinyani zokugcina
*/
uhlobo lokuthumela ngaphandle SourceFacts =
| IiNgcaciso zogcino
| UmbuthoFacts
/* --------------------------------------------------------------------------
* Imisebenzi
* ------------------------------------------------------------------------ */
/**
* Landa iinyani zokugcina
*
* @param url - Indawo yokugcina i-URL
*
* @returns Repository iinyani ezibonakalayo
*/
thumela ngaphandle umsebenzi fetchSourceFacts (
url: umtya
): Iyaqapheleka<SourceFacts> {
/* Zama ukuthelekisa indawo yokugcina yeGitHub */
vumela uthelekise = url.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i)
ukuba (umdlalo) {
const [, umsebenzisi, repo] = umdlalo
buyisela fetchSourceFactsFromGitHub(umsebenzisi, repo)
}
/* Zama ukuthelekisa indawo yokugcina iGitLab */
match = url.match(/^+?([^/]*gitlab[^/]+)\/(+?)\/?$/i)
ukuba (umdlalo) {
const [, isiseko, islug] = match
buyisela fetchSourceFactsFromGitLab(isiseko, islug)
}
/* Ubuyela kundalashe */
buyisela EMPTY
}
Enma.dev@enmastylishfurniture.dev