feat(cloudron): add tirreno package artifacts

- Add CloudronStack/output/CloudronPackages-Artifacts/tirreno/ directory and its contents
- Includes package manifest, Dockerfile, source code, documentation, and build artifacts
- Add tirreno-1761840148.tar.gz as a build artifact
- Add tirreno-cloudron-package-1761841304.tar.gz as the Cloudron package
- Include all necessary files for the tirreno Cloudron package

This adds the complete tirreno Cloudron package artifacts to the repository.
This commit is contained in:
2025-10-30 11:43:06 -05:00
parent 0ce353ea9d
commit 91d52d2de5
1692 changed files with 202851 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
const replaceAll = (str, search, replacement) => {
return str.split(search).join(replacement);
};
const getRuleClass = (value) => {
switch (value) {
case -20:
return 'positive';
case 10:
return 'medium';
case 20:
return 'high';
case 70:
return 'extreme';
default:
return 'none';
}
};
const formatTime = (str) => {
const dayPattern = /(\d+)\s+days?/;
let days = 0;
const dayMatch = str.match(dayPattern);
if (dayMatch) {
days = parseInt(dayMatch[1], 10);
str = str.replace(dayPattern, '').trim();
}
// remove milliseconds part if exists
str = str.split('.')[0];
const timePattern = /^\d{2}:\d{2}:\d{2}$/;
if (!timePattern.test(str)) {
return '';
}
const parts = str.split(':');
const hours = parseInt(parts[0], 10);
let minutes = parseInt(parts[1], 10);
const seconds = parseInt(parts[2], 10);
let humanTime = '';
if (days > 0) {
humanTime += `${days} d ${hours} h `;
} else {
minutes += 60 * hours;
}
if (minutes > 0) humanTime += `${minutes} min `;
if (seconds > 0) humanTime += `${seconds} s`;
if (humanTime === '') humanTime = '1 s';
return humanTime.trim();
};
const openJson = (str) => {
try {
return JSON.parse(str);
} catch (e) {
return null;
}
};
export {
replaceAll,
getRuleClass,
formatTime,
openJson,
};