UNPKG

gulp-build-bitrix-modul

Version:

Сборка модуля для маркетплейса, для установки в win-1251 и utf-8

69 lines (66 loc) 2.71 kB
module.exports = function (gulp, plugins, config, setting) { return function (callback) { console.log('version-tags start'); /** * Проверка на число * @param n * @returns {boolean} */ const isNumeric = n => { return !isNaN(parseFloat(n)) && isFinite(n); }; /** * Парсит вывод от команды git tag * @param log */ const parseVersions = log => { let tags = log.trim().split(plugins.os.EOL); if (tags.length <= 1) { // Если версий нет, то подменим вывод tags.push(plugins.moment().format() + '\trefs/tags/0.0.1'); } return tags.map((tag) => { let match = tag.split('\t'); if (match.length > 1) { let date = plugins.moment(match[0].trim()).format('YYYY-MM-DD HH:mm:ss'); let version = match[1].replace('refs/tags/', ''); // Используем только теги формата: // 1.0 // 1.0.0 // ради этого подключать semver нет смысла const versionArray = version.split('.'); if (versionArray.length < 2 || versionArray.length > 3) { return null; } if (versionArray.length === 2) { versionArray[2] = 0; } if (!isNumeric(versionArray[0]) || !isNumeric(versionArray[1]) || !isNumeric(versionArray[2])) { return null; } version = versionArray.join('.'); return { version: version, date: date }; } }).filter(tag => { return tag !== null; }); }; if (setting.version) { return callback(); } plugins.git.exec({args: 'tag --sort=-creatordate --format=\'%(creatordate:rfc)%09%(refname)\''}, (error, output) => { if (error) { throw error; } setting.versions = parseVersions(output); setting.version = setting.versions[0].version; setting.diff = setting.versions[1] ? setting.versions[1].version : setting.versions[0].version; setting.date = setting.versions[0].date; console.log('version-tags stop'); callback(); }); }; };