aboutsummaryrefslogtreecommitdiff
path: root/srcs/phpmyadmin/vendor/williamdes/mariadb-mysql-kbs/scripts/sudo-bot/template.js
blob: 03a44b339a82fb7b8dac9f9663ef45dbf1c46413 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'use strict';

/**
 * @param {Array} modifiedFiles The modified files
 * @returns {string} The commit message
 */
const commitMessage = function(modifiedFiles) {
    const nbrMySQLFiles = modifiedFiles.filter(file => file.match(/mysql-[a-z\-\.]+.json$/g)).length;
    const nbrMariaDBFiles = modifiedFiles.filter(file => file.match(/mariadb-[a-z\-\.]+.json$/g)).length;
    const nbrMergedData = modifiedFiles.filter(file => file.match(/merged-(slim|ultraslim|raw).(json|md|php)$/g))
        .length;

    const hasMySQLFiles = nbrMySQLFiles > 0;
    const hasMariaDBFiles = nbrMariaDBFiles > 0;
    const hasOtherFiles = nbrMySQLFiles + nbrMariaDBFiles + nbrMergedData !== modifiedFiles.length;
    if (hasMariaDBFiles && hasMySQLFiles) {
        return 'update: [MariaDB] && [MySQL] updates' + (hasOtherFiles ? ' and other changes' : '');
    } else if (hasMariaDBFiles && !hasMySQLFiles) {
        return 'update: [MariaDB] updates' + (hasOtherFiles ? ' and other changes' : '');
    } else if (!hasMariaDBFiles && hasMySQLFiles) {
        return 'update: [MySQL] updates' + (hasOtherFiles ? ' and other changes' : '');
    }
    return 'update: 🤖 Some updates 🤖';
};

/**
 * @param {Array} modifiedFiles The modified files
 * @returns {string} The pr message
 */
const prMessage = function(modifiedFiles) {
    const nbrMySQLFiles = modifiedFiles.filter(file => file.match(/mysql-[a-z-]+.json$/g)).length;
    const nbrMariaDBFiles = modifiedFiles.filter(file => file.match(/mariadb-[a-z-]+.json$/g)).length;
    const nbrMergedData = modifiedFiles.filter(file => file.match(/merged-(slim|ultraslim|raw).(json|md|php)$/g))
        .length;

    const hasMySQLFiles = nbrMySQLFiles > 0;
    const hasMariaDBFiles = nbrMariaDBFiles > 0;
    const hasOtherFiles = nbrMySQLFiles + nbrMariaDBFiles + nbrMergedData !== modifiedFiles.length;
    if (hasMariaDBFiles && hasMySQLFiles) {
        return '🤖 [MariaDB] && [MySQL] updates' + (hasOtherFiles ? ' 🚨🚨' : '');
    } else if (hasMariaDBFiles && !hasMySQLFiles) {
        return '🤖 [MariaDB] updates' + (hasOtherFiles ? ' 🚨🚨' : '');
    } else if (!hasMariaDBFiles && hasMySQLFiles) {
        return '🤖 [MySQL] updates' + (hasOtherFiles ? ' 🚨🚨' : '');
    }
    return '🤖 Some updates to review 🤖';
};

/**
 * @param {Array} modifiedFiles The modified files
 * @returns {string} The pr content
 */
const prContent = function(modifiedFiles) {
    let message =
        'Dear human 🌻, after running my task the following file' +
        (modifiedFiles.length > 1 ? 's where updated:' : ' was updated:') +
        '\n';
    message += modifiedFiles
        .map(file => {
            let emoji = '👽';
            if (file.match(/mysql-[a-z-]+.json$/g)) {
                emoji = '🐬';
            }
            if (file.match(/mariadb-[a-z-]+.json$/g)) {
                emoji = '🐳';
            }
            if (file.match(/merged-(slim|ultraslim|raw).(json|md|php)$/g)) {
                emoji = '📦';
            }
            return '- `' + file + '` ' + emoji + '\n';
        })
        .join('');
    return message;
};

/**
 * @param {Array} modifiedFiles The modified files
 * @returns {string} The pr branch
 */
const prBranch = function(modifiedFiles) {
    return 'refs/heads/update/' + new Date().getTime();
};

module.exports = {
    commitMessage: commitMessage,
    prMessage: prMessage,
    prContent: prContent,
    prBranch: prBranch,
};