Import directory from BitBucket
A utility that will download files from a Bitbucket repository.
/**
* Downloads files from a Bitbucket repository into a local silprograms directory
* @author Tim Reiking
* @date 2019/8/20
*/
// silprograms Info
string directory = ""; // Folder or file to download from repository
string path = silEnv("sil.home")+"/"+directory; // Location to put the downloaded file or folder
// Bitbucket Info
string bitbucketURL = "https://bitbucket.cprime.io/"; // Base Bitbucket URL
string repoURL = "projects/CIA/repos/cprimejirasil/raw/silprograms/"; // Bitbucket path of the head directory
string branch = ""; // Bitbucket branch to pull info
// Bitbucket Credentials
string user = ""; // Bitbucket username used to pull
string pass = ""; // Bitbucket password used to pull
/**
* Recursively downloads a file from URL
* @param urlBase - The url containing the required files
* @param request - HTTP information used to pull files
* @param downloadDir - The destination for new files
* @return 'true' if download successful, otherwise 'false'
*/
function getFiles(string urlBase, HttpRequest request, string downloadDir) {
string values = httpGet(urlBase+branch, request);
number statusCode = httpGetStatusCode();
if (statusCode < 200 || statusCode >= 300 || endsWith(urlBase, "//")) {
return false;
}
string[] fileList = split(values, "\n");
for(string f in fileList) {
string[] breakUp = split(f, "\t");
string fileName = breakUp[1];
string p = downloadDir+"/"+fileName;
runnerLog(p);
if(contains(fileName, ".")) {
if(fileExists(p)) {
deleteFile(p);
}
createFile(p);
values = httpGet(urlBase+"/"+replace(fileName, " ", "%20")+branch, request);
printInFile(p, trim(values));
} else {
createDirectory(p);
if(!getFiles(urlBase+"/"+fileName, request, p)) {
return false;
}
}
}
return true;
}
branch = branch != "" ? "?at="+branch : "";
HttpRequest request;
HttpHeader authHeader = httpBasicAuthHeader(user, pass);
request.headers += authHeader;
getFiles(bitbucketURL+repoURL+directory, request, path);
Peacock