Skip to content

Impossibilidade de adicionar tíquetes ao Carteira pelo app #10

Impossibilidade de adicionar tíquetes ao Carteira pelo app

Impossibilidade de adicionar tíquetes ao Carteira pelo app #10

name: Issue Validation
on:
issues:
types: [opened, edited]
jobs:
validate-issue:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Validate bug report fields
if: contains(github.event.issue.labels.*.name, 'bug')
uses: actions/github-script@v7
with:
script: |
const body = context.payload.issue.body || '';
const errors = [];
// Check required fields for bug reports
const requiredFields = [
{ label: 'Versão do app', pattern: /### Versão do app\s*\n\s*\n\s*(.+)/m },
{ label: 'Dispositivo', pattern: /### Dispositivo\s*\n\s*\n\s*(.+)/m },
{ label: 'Versão do iOS', pattern: /### Versão do iOS\/iPadOS\/watchOS\s*\n\s*\n\s*(.+)/m },
{ label: 'Descrição do bug', pattern: /### Descrição do bug\s*\n\s*\n\s*(.+)/m },
{ label: 'Comportamento esperado', pattern: /### Comportamento esperado\s*\n\s*\n\s*(.+)/m },
{ label: 'Passos para reproduzir', pattern: /### Passos para reproduzir\s*\n\s*\n\s*(.+)/m },
{ label: 'Frequência', pattern: /### Frequência\s*\n\s*\n\s*(.+)/m }
];
for (const field of requiredFields) {
const match = body.match(field.pattern);
if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') {
errors.push(`- **${field.label}** não foi preenchido`);
}
}
if (errors.length > 0) {
const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando ou vazios:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos para que possamos investigar o problema.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['needs-info']
});
} else {
// Remove needs-info label if it exists and all fields are now filled
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: 'needs-info'
});
} catch (e) {
// Label didn't exist, that's fine
}
}
- name: Validate feature request fields
if: contains(github.event.issue.labels.*.name, 'enhancement')
uses: actions/github-script@v7
with:
script: |
const body = context.payload.issue.body || '';
const errors = [];
const requiredFields = [
{ label: 'Qual problema isso resolve?', pattern: /### Qual problema isso resolve\?\s*\n\s*\n\s*(.+)/m },
{ label: 'Solução desejada', pattern: /### Solução desejada\s*\n\s*\n\s*(.+)/m },
{ label: 'Área do app', pattern: /### Área do app\s*\n\s*\n\s*(.+)/m }
];
for (const field of requiredFields) {
const match = body.match(field.pattern);
if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') {
errors.push(`- **${field.label}** não foi preenchido`);
}
}
if (errors.length > 0) {
const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['needs-info']
});
} else {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: 'needs-info'
});
} catch (e) {}
}
- name: Validate improvement fields
if: contains(github.event.issue.labels.*.name, 'improvement')
uses: actions/github-script@v7
with:
script: |
const body = context.payload.issue.body || '';
const errors = [];
const requiredFields = [
{ label: 'Área do app', pattern: /### Área do app\s*\n\s*\n\s*(.+)/m },
{ label: 'Como funciona hoje', pattern: /### Como funciona hoje\s*\n\s*\n\s*(.+)/m },
{ label: 'Como deveria funcionar', pattern: /### Como deveria funcionar\s*\n\s*\n\s*(.+)/m }
];
for (const field of requiredFields) {
const match = body.match(field.pattern);
if (!match || match[1].trim() === '' || match[1].trim() === '_No response_') {
errors.push(`- **${field.label}** não foi preenchido`);
}
}
if (errors.length > 0) {
const comment = `⚠️ **Issue incompleta**\n\nOs seguintes campos obrigatórios estão faltando:\n\n${errors.join('\n')}\n\nPor favor, edite a issue e preencha todos os campos.`;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
labels: ['needs-info']
});
} else {
try {
await github.rest.issues.removeLabel({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
name: 'needs-info'
});
} catch (e) {}
}