mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-03-10 07:30:28 +00:00
This reverts commit 893bff1b59
.
This commit is contained in:
parent
aba73bd0f8
commit
029332fb51
1
.github/autolabeler-config.json
vendored
1
.github/autolabeler-config.json
vendored
@ -68,5 +68,4 @@
|
|||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
20
.github/changelog-pr-config.json
vendored
20
.github/changelog-pr-config.json
vendored
@ -8,24 +8,12 @@
|
|||||||
"labels": ["new script"]
|
"labels": ["new script"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": ["feature"]
|
"labels": ["bugfix"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🚀 Updated Scripts",
|
"title": "✨ New Features",
|
||||||
"labels": ["update script"],
|
"labels": ["feature"]
|
||||||
"subCategories": [
|
|
||||||
{
|
|
||||||
"title": "🐞 Bug Fixes",
|
|
||||||
"labels": ["bugfix"],
|
|
||||||
"notes" : []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "General Updates",
|
|
||||||
"labels": ["general"],
|
|
||||||
"notes" : []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🌐 Website",
|
"title": "🌐 Website",
|
||||||
|
24
.github/workflows/autolabeler.yml
vendored
24
.github/workflows/autolabeler.yml
vendored
@ -32,8 +32,7 @@ jobs:
|
|||||||
const autolabelerConfig = JSON.parse(fileContent);
|
const autolabelerConfig = JSON.parse(fileContent);
|
||||||
|
|
||||||
const prNumber = context.payload.pull_request.number;
|
const prNumber = context.payload.pull_request.number;
|
||||||
|
const prBody = context.payload.pull_request.body;
|
||||||
const prBody = context.payload.pull_request.body.toLowerCase();
|
|
||||||
|
|
||||||
let labelsToAdd = new Set();
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
@ -44,27 +43,6 @@ jobs:
|
|||||||
});
|
});
|
||||||
const prFiles = prListFilesResponse.data;
|
const prFiles = prListFilesResponse.data;
|
||||||
|
|
||||||
const templateLabelMappings = {
|
|
||||||
"🐞 **bug fix**": "bugfix",
|
|
||||||
"✨ **new feature**": "feature",
|
|
||||||
"💥 **breaking change**": "breaking change",
|
|
||||||
"🆕 **new script**": "new script"
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
|
||||||
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
|
|
||||||
const regex = new RegExp(`- \\[(x|X)\\]\\s*.*${escapedCheckbox}`, "i");
|
|
||||||
const match = prBody.match(regex);
|
|
||||||
if (match) {
|
|
||||||
console.log(`Match: ${match}`);
|
|
||||||
labelsToAdd.add(label);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (labelsToAdd.size === 0) {
|
|
||||||
labelsToAdd.add("general");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Apply labels based on file changes
|
|
||||||
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
for (const [label, rules] of Object.entries(autolabelerConfig)) {
|
||||||
const shouldAddLabel = prFiles.some((prFile) => {
|
const shouldAddLabel = prFiles.some((prFile) => {
|
||||||
return rules.some((rule) => {
|
return rules.some((rule) => {
|
||||||
|
75
.github/workflows/changelog-pr.yml
vendored
75
.github/workflows/changelog-pr.yml
vendored
@ -30,6 +30,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Get latest dates in changelog
|
- name: Get latest dates in changelog
|
||||||
run: |
|
run: |
|
||||||
|
# Extrahiere die neuesten zwei Daten aus dem Changelog
|
||||||
DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}')
|
DATES=$(grep -E '^## [0-9]{4}-[0-9]{2}-[0-9]{2}' CHANGELOG.md | head -n 2 | awk '{print $2}')
|
||||||
|
|
||||||
LATEST_DATE=$(echo "$DATES" | sed -n '1p')
|
LATEST_DATE=$(echo "$DATES" | sed -n '1p')
|
||||||
@ -54,15 +55,7 @@ jobs:
|
|||||||
const configPath = path.resolve(process.env.CONFIG_PATH);
|
const configPath = path.resolve(process.env.CONFIG_PATH);
|
||||||
const fileContent = await fs.readFile(configPath, 'utf-8');
|
const fileContent = await fs.readFile(configPath, 'utf-8');
|
||||||
const changelogConfig = JSON.parse(fileContent);
|
const changelogConfig = JSON.parse(fileContent);
|
||||||
|
const categorizedPRs = changelogConfig.map(obj => ({ ...obj, notes: [] }));
|
||||||
const categorizedPRs = changelogConfig.map(obj => ({
|
|
||||||
...obj,
|
|
||||||
notes: [],
|
|
||||||
subCategories: obj.subCategories ?? (obj.labels.includes("update script") ? [
|
|
||||||
{ title: "🐞 Bug Fixes", labels: ["bugfix"] },
|
|
||||||
{ title: "✨ Feature Updates", labels: ["feature"] }
|
|
||||||
] : [])
|
|
||||||
}));
|
|
||||||
|
|
||||||
const latestDateInChangelog = new Date(process.env.LATEST_DATE);
|
const latestDateInChangelog = new Date(process.env.LATEST_DATE);
|
||||||
latestDateInChangelog.setUTCHours(23, 59, 59, 999);
|
latestDateInChangelog.setUTCHours(23, 59, 59, 999);
|
||||||
@ -78,32 +71,28 @@ jobs:
|
|||||||
});
|
});
|
||||||
|
|
||||||
pulls.filter(pr =>
|
pulls.filter(pr =>
|
||||||
pr.merged_at &&
|
pr.merged_at &&
|
||||||
new Date(pr.merged_at) > latestDateInChangelog &&
|
new Date(pr.merged_at) > latestDateInChangelog &&
|
||||||
!pr.labels.some(label =>
|
!pr.labels.some(label => ["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase()))
|
||||||
["invalid", "wontdo", process.env.AUTOMATED_PR_LABEL].includes(label.name.toLowerCase())
|
|
||||||
)
|
|
||||||
).forEach(pr => {
|
).forEach(pr => {
|
||||||
|
|
||||||
const prLabels = pr.labels.map(label => label.name.toLowerCase());
|
const prLabels = pr.labels.map(label => label.name.toLowerCase());
|
||||||
const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`;
|
const prNote = `- ${pr.title} [@${pr.user.login}](https://github.com/${pr.user.login}) ([#${pr.number}](${pr.html_url}))`;
|
||||||
|
|
||||||
|
let isCategorized = false;
|
||||||
|
|
||||||
const updateScriptsCategory = categorizedPRs.find(category =>
|
for (const { labels, notes } of categorizedPRs) {
|
||||||
category.labels.some(label => prLabels.includes(label))
|
// If no labels are specified (e.g., "Unlabelled"), assign to this category
|
||||||
);
|
if (labels.length === 0 && prLabels.length === 0) {
|
||||||
|
notes.push(prNote);
|
||||||
if (updateScriptsCategory) {
|
isCategorized = true;
|
||||||
|
break;
|
||||||
const subCategory = updateScriptsCategory.subCategories.find(sub =>
|
}
|
||||||
sub.labels.some(label => prLabels.includes(label))
|
|
||||||
);
|
|
||||||
|
|
||||||
if (subCategory) {
|
|
||||||
subCategory.notes.push(prNote);
|
|
||||||
} else {
|
|
||||||
updateScriptsCategory.notes.push(prNote);
|
|
||||||
|
|
||||||
|
// If labels are specified, check if PR has ALL required labels
|
||||||
|
if (labels.length > 0 && labels.every(label => prLabels.includes(label.toLowerCase()))) {
|
||||||
|
notes.push(prNote);
|
||||||
|
isCategorized = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -116,11 +105,8 @@ jobs:
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(JSON.stringify(categorizedPRs, null, 2));
|
|
||||||
|
|
||||||
return categorizedPRs;
|
return categorizedPRs;
|
||||||
|
|
||||||
|
|
||||||
- name: Update CHANGELOG.md
|
- name: Update CHANGELOG.md
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v7
|
||||||
with:
|
with:
|
||||||
@ -133,29 +119,10 @@ jobs:
|
|||||||
const changelogPath = path.resolve('CHANGELOG.md');
|
const changelogPath = path.resolve('CHANGELOG.md');
|
||||||
const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }};
|
const categorizedPRs = ${{ steps.get-categorized-prs.outputs.result }};
|
||||||
|
|
||||||
console.log(JSON.stringify(categorizedPRs, null, 2));
|
|
||||||
|
|
||||||
let newReleaseNotes = `## ${today}\n\n### Changes\n\n`;
|
let newReleaseNotes = `## ${today}\n\n### Changes\n\n`;
|
||||||
for (const { title, notes, subCategories } of categorizedPRs) {
|
for (const { title, notes } of categorizedPRs) {
|
||||||
const hasSubcategories = subCategories && subCategories.length > 0;
|
if (notes.length > 0) {
|
||||||
const hasMainNotes = notes.length > 0;
|
newReleaseNotes += `### ${title}\n\n${notes.join("\n")}\n\n`;
|
||||||
const hasSubNotes = hasSubcategories && subCategories.some(sub => sub.notes && sub.notes.length > 0);
|
|
||||||
|
|
||||||
if (hasMainNotes || hasSubNotes) {
|
|
||||||
newReleaseNotes += `### ${title}\n\n`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasMainNotes) {
|
|
||||||
newReleaseNotes += `${notes.join("\n")}\n\n`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasSubcategories) {
|
|
||||||
for (const { title: subTitle, notes: subNotes } of subCategories) {
|
|
||||||
if (subNotes && subNotes.length > 0) {
|
|
||||||
newReleaseNotes += ` #### ${subTitle}\n\n`;
|
|
||||||
newReleaseNotes += ` ${subNotes.join("\n ")}\n\n`;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user