@@ -1006,87 +1006,87 @@ class Packages {
1006
1006
}
1007
1007
async installPackages(includePackages) {
1008
1008
core.info(`Requested Lazarus packages: ${includePackages.join(", ")}`);
1009
- this.packageData = await this.getPackageList (`${this.baseUrl}/${this.jsonParam}`);
1009
+ this.packageData = await this._getPackageList (`${this.baseUrl}/${this.jsonParam}`);
1010
1010
core.info(`Fetched ${this.packageData.length} package items.`);
1011
- const pkgsToInstall = await this.resolveDependencies (includePackages);
1011
+ const pkgsToInstall = await this._resolveDependencies (includePackages);
1012
1012
core.info(`Installing packages: ${pkgsToInstall
1013
- .map((pkg) => pkg.displayName )
1013
+ .map((pkg) => pkg.DisplayName )
1014
1014
.join(", ")}`);
1015
- await this.installAllPackages (pkgsToInstall);
1015
+ await this._installAllPackages (pkgsToInstall);
1016
1016
}
1017
- async resolveDependencies (includePackages) {
1017
+ async _resolveDependencies (includePackages) {
1018
1018
const pkgsToInstall = [];
1019
1019
const pkgsToInstallNames = new Set();
1020
1020
for (const requestedPkg of includePackages) {
1021
- const matchedPackages = this.packageData.filter((pkg) => pkg.displayName === requestedPkg.trim());
1021
+ const matchedPackages = this.packageData.filter((pkg) => pkg.DisplayName === requestedPkg.trim());
1022
1022
for (const pkg of matchedPackages) {
1023
- const deps = await this.getDependencies (pkg);
1024
- deps.forEach((dep) => this.addPackageIfNeeded (dep, pkgsToInstall, pkgsToInstallNames));
1025
- this.addPackageIfNeeded (pkg, pkgsToInstall, pkgsToInstallNames);
1023
+ const deps = await this._getDependencies (pkg);
1024
+ deps.forEach((dep) => this._addPackageIfNeeded (dep, pkgsToInstall, pkgsToInstallNames));
1025
+ this._addPackageIfNeeded (pkg, pkgsToInstall, pkgsToInstallNames);
1026
1026
}
1027
1027
}
1028
1028
return pkgsToInstall;
1029
1029
}
1030
- addPackageIfNeeded (pkg, pkgList, pkgNames) {
1031
- if (!pkgNames.has(pkg.displayName )) {
1030
+ _addPackageIfNeeded (pkg, pkgList, pkgNames) {
1031
+ if (!pkgNames.has(pkg.DisplayName )) {
1032
1032
pkgList.push(pkg);
1033
- pkgNames.add(pkg.displayName );
1033
+ pkgNames.add(pkg.DisplayName );
1034
1034
}
1035
1035
}
1036
- async getDependencies (pkg, seenPkgs = new Set()) {
1037
- if (seenPkgs.has(pkg.name ))
1036
+ async _getDependencies (pkg, seenPkgs = new Set()) {
1037
+ if (seenPkgs.has(pkg.Name ))
1038
1038
return [];
1039
- seenPkgs.add(pkg.name );
1039
+ seenPkgs.add(pkg.Name );
1040
1040
const dependencies = [];
1041
1041
for (const file of pkg.packages) {
1042
- const depNames = file.dependenciesStr .split(",").map((dep) => dep.trim());
1042
+ const depNames = file.DependenciesAsString .split(",").map((dep) => dep.trim());
1043
1043
for (const depName of depNames) {
1044
- const foundPkgs = this.packageData.filter((p) => p.containsPackage(depName) && p.name !== pkg.name );
1044
+ const foundPkgs = this.packageData.filter((p) => p.containsPackage(depName) && p.Name !== pkg.Name );
1045
1045
for (const foundPkg of foundPkgs) {
1046
- dependencies.push(foundPkg, ...(await this.getDependencies (foundPkg, seenPkgs)));
1046
+ dependencies.push(foundPkg, ...(await this._getDependencies (foundPkg, seenPkgs)));
1047
1047
}
1048
1048
}
1049
1049
}
1050
1050
return dependencies;
1051
1051
}
1052
- async installAllPackages (pkgsToInstall) {
1052
+ async _installAllPackages (pkgsToInstall) {
1053
1053
for (const pkg of pkgsToInstall) {
1054
1054
try {
1055
- const pkgFile = await this.download (pkg.repositoryFileName );
1056
- const pkgFolder = await this.extract (pkgFile, path.join(this.getTempDirectory (), pkg.repositoryFileHash ));
1057
- core.info(`Unzipped to: "${pkgFolder}/${pkg.baseDir }"`);
1055
+ const pkgFile = await this._download (pkg.RepositoryFileName );
1056
+ const pkgFolder = await this._extract (pkgFile, path.join(this._getTempDirectory (), pkg.RepositoryFileHash ));
1057
+ core.info(`Unzipped to: "${pkgFolder}/${pkg.PackageBaseDir }"`);
1058
1058
await (0, exec_1.exec)(`rm -rf ${pkgFile}`);
1059
- await this.clearDirectory (pkgFolder);
1060
- await this.installLpkFiles (pkgFolder, pkg);
1059
+ await this._clearDirectory (pkgFolder);
1060
+ await this._installLpkFiles (pkgFolder, pkg);
1061
1061
}
1062
1062
catch (error) {
1063
1063
core.setFailed(`Installation failed: ${error.message}`);
1064
1064
throw error;
1065
1065
}
1066
1066
}
1067
1067
}
1068
- async installLpkFiles (pkgFolder, pkg) {
1068
+ async _installLpkFiles (pkgFolder, pkg) {
1069
1069
for (const pkgFile of pkg.packages) {
1070
- const pkgPath = path.join(pkgFolder, pkg.baseDir , pkgFile.relativeFilePath , pkgFile.file );
1071
- const buildCommand = `lazbuild ${this.getPlatformFlags ()} "${pkgPath}"`;
1070
+ const pkgPath = path.join(pkgFolder, pkg.PackageBaseDir , pkgFile.RelativeFilePath , pkgFile.Name );
1071
+ const buildCommand = `lazbuild ${this._getPlatformFlags ()} "${pkgPath}"`;
1072
1072
core.info(`Adding and compiling package: ${pkgPath}`);
1073
1073
await (0, exec_1.exec)(buildCommand.replace("--add-package", "--add-package-link"), [], { ignoreReturnCode: true });
1074
1074
await (0, exec_1.exec)(buildCommand);
1075
1075
}
1076
1076
}
1077
- getPlatformFlags () {
1077
+ _getPlatformFlags () {
1078
1078
return this.platform === "darwin" ? "--ws=cocoa" : "";
1079
1079
}
1080
- async extract (file, dest) {
1080
+ async _extract (file, dest) {
1081
1081
core.info(`Extracting ${file} to ${dest}`);
1082
1082
return tc.extractZip(file, dest);
1083
1083
}
1084
- async download (filename) {
1085
- const downloadPath = path.join(this.getTempDirectory (), filename);
1084
+ async _download (filename) {
1085
+ const downloadPath = path.join(this._getTempDirectory (), filename);
1086
1086
core.info(`Downloading ${this.baseUrl}/${filename} to ${downloadPath}`);
1087
1087
return tc.downloadTool(`${this.baseUrl}/${filename}`, downloadPath);
1088
1088
}
1089
- async clearDirectory (dirPath) {
1089
+ async _clearDirectory (dirPath) {
1090
1090
if (await fs_1.promises
1091
1091
.access(dirPath)
1092
1092
.then(() => true)
@@ -1098,25 +1098,25 @@ class Packages {
1098
1098
await fs_1.promises.mkdir(dirPath);
1099
1099
}
1100
1100
}
1101
- async getPackageList (repoURL) {
1102
- core.info(`Fetching package list from ${repoURL}`);
1101
+ async _getPackageList (repoURL) {
1102
+ core.info(`_getPackageList: Fetching package list from ${repoURL}`);
1103
1103
try {
1104
1104
const httpClient = new http.HttpClient();
1105
1105
const response = await httpClient.get(repoURL);
1106
1106
const responseBody = await response.readBody();
1107
- return this.parsePackageList (JSON.parse(responseBody));
1107
+ return this._parsePackageList (JSON.parse(responseBody));
1108
1108
}
1109
1109
catch (error) {
1110
1110
throw new Error(`Failed to get package list: ${error.message}`);
1111
1111
}
1112
1112
}
1113
- parsePackageList (packageList) {
1113
+ _parsePackageList (packageList) {
1114
1114
const result = [];
1115
1115
Object.entries(packageList).forEach(([key, value]) => {
1116
1116
if (key.startsWith("PackageData")) {
1117
1117
const pkgData = new PackageData();
1118
1118
Object.assign(pkgData, value);
1119
- pkgData.packages = packageList[`PackageFiles${key.slice(-1 )}`].map((file) => {
1119
+ pkgData.packages = packageList[`PackageFiles${key.slice(11 )}`].map((file) => {
1120
1120
const pkgFile = new PackageFile();
1121
1121
Object.assign(pkgFile, file);
1122
1122
return pkgFile;
@@ -1126,7 +1126,7 @@ class Packages {
1126
1126
});
1127
1127
return result;
1128
1128
}
1129
- getTempDirectory () {
1129
+ _getTempDirectory () {
1130
1130
const tempDir = process.env["RUNNER_TEMP"] || "";
1131
1131
(0, assert_1.ok)(tempDir, "RUNNER_TEMP environment variable is not defined");
1132
1132
return tempDir;
@@ -1135,38 +1135,40 @@ class Packages {
1135
1135
exports.Packages = Packages;
1136
1136
class PackageData {
1137
1137
constructor() {
1138
- this.name = "";
1139
- this.displayName = "";
1140
- this.repositoryFileName = "";
1141
- this.repositoryFileHash = "";
1142
- this.pkgBaseDir = "";
1138
+ this.Name = "";
1139
+ this.DisplayName = "";
1140
+ this.Category = "";
1141
+ this.CommunityDescription = "";
1142
+ this.ExternalDependecies = "";
1143
+ this.OrphanedPackage = 0;
1144
+ this.RepositoryFileName = "";
1145
+ this.RepositoryFileSize = 0;
1146
+ this.RepositoryFileHash = "";
1147
+ this.RepositoryDate = 0.0;
1148
+ this.PackageBaseDir = "";
1149
+ this.HomePageURL = "";
1150
+ this.DownloadURL = "";
1151
+ this.SVNURL = "";
1143
1152
this.packages = [];
1144
1153
}
1145
- get baseDir() {
1146
- return this.pkgBaseDir;
1147
- }
1148
- set baseDir(value) {
1149
- this.pkgBaseDir = value.replace(/\\/gi, "");
1150
- }
1151
1154
containsPackage(needle) {
1152
1155
const [name] = needle.includes("(") ? needle.split("(") : [needle];
1153
- return this.packages.some((pkg) => pkg.file === `${name.trim()}.lpk`);
1156
+ return this.packages.some((pkg) => pkg.Name === `${name.trim()}.lpk`);
1154
1157
}
1155
1158
}
1156
1159
class PackageFile {
1157
1160
constructor() {
1158
- this.file = "";
1159
- this._relativeFilePath = "";
1160
- this.lazarusCompatibility = [];
1161
- this.freePascalCompatibility = [];
1162
- this.dependenciesStr = "";
1163
- this.type = -1;
1164
- }
1165
- get relativeFilePath() {
1166
- return this._relativeFilePath;
1167
- }
1168
- set relativeFilePath(value) {
1169
- this._relativeFilePath = value.replace(/\\/gi, "");
1161
+ this.Name = "";
1162
+ this.Description = "";
1163
+ this.Author = "";
1164
+ this.License = "";
1165
+ this.RelativeFilePath = "";
1166
+ this.VersionAsString = "";
1167
+ this.LazCompatibility = "";
1168
+ this.FPCCompatibility = "";
1169
+ this.SupportedWidgetSet = "";
1170
+ this.PackageType = -1;
1171
+ this.DependenciesAsString = "";
1170
1172
}
1171
1173
}
1172
1174
0 commit comments