123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- var utilities = require('./utilities');
- const chalk = require('chalk');
- const logSymbols = require('log-symbols');
- var hasRequirements = async function(project){
- var requirements = {
- is_public : project.visibility == "private" || project.visibility == undefined,
- has_thumbnail : utilities.fileExists( `${global.source}/${project.permalink}/${project.cover_image}`),
- has_hero_img : utilities.fileExists(`${global.source}/${project.permalink}/${project.hero_image}`),
- has_description : project.description != "" && project.description != undefined,
- has_text : project.text != "" && project.text != undefined,
- has_videos : countVideos(project) > 0,
- has_screenshots : countScreenshots(project) > 0,
- video_check : await checkVideos(project)
- }
- var pass = ''
- if(!requirements.is_public) pass = 'no'
- else if(!requirements.has_thumbnail) pass = 'no'
- else if(!requirements.has_description) pass = 'no'
- else if(!requirements.has_hero_img && !requirements.has_videos) pass = 'no'
- else if(allVideosAvailable(requirements.video_check)) pass = 'no'
- else if(!requirements.has_text) pass = 'some'
- else if(!requirements.has_videos && !requirements.has_screenshots) pass = 'some'
- else pass = 'all';
- requirements.pass = pass;
- return requirements;
- }
- var requirementMessages = function(project, requirements){
- var warning_thumbnail = chalk.red(` - Missing the thumbnail image`);
- var warning_hero_img = chalk.red(` - Missing hero image or video`);
- var warning_description = chalk.red(` - Missing description`);
- var warning_text = chalk.yellow(` - Missing long text description`);
- var warning_screenshots = chalk.yellow(` - Missing screenshots`);
- if(global.isVerbose){
- if(!requirements.has_thumbnail) console.log(warning_thumbnail);
- if(!requirements.has_description) console.log(warning_description);
- if(!requirements.has_hero_img && !requirements.has_videos) console.log(warning_hero_img);
- if(!requirements.has_text) console.log(warning_text);
- if(!requirements.has_videos && !requirements.has_screenshots) console.log(warning_screenshots);
- if(requirements.has_videos) {
- requirements.video_check.forEach(video => {
- if(video.available == false) {
- console.log(chalk.red(` - Video is not available: ${video.url}`));
- }
- });
- }
- }
- }
- var countVideos = function(project){
- if(project.videos != undefined){
- return project.videos.length;
- } else {
- return 0;
- }
- }
- var checkVideos = async function(project){
- var videoCheck = []
- if(project.videos != undefined){
- for (let i = 0; i < project.videos.length; i++) {
- const video = project.videos[i];
- video.available = await utilities.checkVideo(video.url)
- videoCheck.push(video);
- }
- }
- return videoCheck;
- }
- var allVideosAvailable = function(video_check) {
- var result = false;
- for (let i = 0; i < video_check.length; i++) {
- if(video_check[i].available == false) result = true
- }
- return result;
- }
- var countScreenshots = function(project){
- if(project.screenshots != undefined){
- return project.screenshots.length;
- } else {
- return 0;
- }
- }
- var showRequirements = async function(query, projects){
- if(query != undefined) query = query.toLowerCase();
- var result = [ 0, 0, 0]
- console.log();
- for (let i = 0; i < projects.length; i++) {
- const project = projects[i];
- if(project.title.toLowerCase() == query || project.permalink == query || query == ""){
- var requirements = await hasRequirements(project);
- if(requirements.pass == 'all'){
- result[0] += 1;
- console.log(logSymbols.success,
- `Project \'${chalk.bold(project.permalink)}\' has all requirements`);
- } else if (requirements.pass == 'some') {
- result[1] += 1;
- console.log(logSymbols.warning,
- `Project \'${chalk.bold(project.permalink)}\' has some requirements`);
- } else if(requirements.pass == 'no') {
- result[2] += 1;
- console.log(logSymbols.error,
- `Project \'${chalk.bold(project.permalink)}\' doesn\'t have necessary requirements`);
- }
- requirementMessages(project, requirements);
- }
- }
- console.log();
- if(query == "")
- console.log(chalk.green(`${result[0]} passed`) + ", " + chalk.yellow(`${result[1]} passed with warnings`) + ", " + chalk.red(`${result[2]} missing requirements`) + ` (TOTAL: ${projects.length})`);
- }
- module.exports.hasRequirements = hasRequirements;
- module.exports.requirementMessages = requirementMessages;
- module.exports.showRequirements = showRequirements;
|