Browse Source

Move fetch-content scripts to jamesperet-project-tools

James Peret 3 years ago
parent
commit
2b1ad3ce21

+ 0 - 66
fetch-content.js

@@ -1,66 +0,0 @@
-const chalk = require('chalk');
-
-var fetch_projects = require('./fetch-scripts/fetch-projects');
-var requirements = require('./fetch-scripts/check-requirements');
-
-//console.log(process.argv)
-global.source = "/Users/james/codex/projects"
-
-var hasArg = function(arg){
-    for (let i = 0; i < process.argv.length; i++) {
-        if (arg == process.argv[i]) return true;
-    }
-    return false;
-}
-
-var isVerbose = function(){
-    if(hasArg('-v') || hasArg('--verbose')) {
-        global.isVerbose = true;
-        return true;
-    } else {
-        global.isVerbose = false;
-        return false;
-    } 
-}
-
-if(hasArg('help') || hasArg('-h')) {
-    console.log();
-    console.log('Usage: ' +  chalk.bgWhite.black('node fetch-content <command>'));
-    console.log();
-    console.log('Copy files from codex to build the website content.');
-    console.log();
-    console.log(chalk.bold('   Command            Description'));
-    console.log('   projects           Copy projects from Codex');
-    console.log('   posts              Copy blog posts from Codex');
-    console.log('   test               Test requirements for all projects');
-    console.log('   test <project>     Test requirements for a specific project');
-    console.log('   -v, --verbose      Log all output');
-    console.log();
-    console.log();
-    return;
-}
-
-if(hasArg('test')){
-    if(isVerbose()) console.log('Checking requirements:');
-    var query = ""
-    for (let i = 3; i < process.argv.length; i++) {
-        if (process.argv[i] != '-v' && process.argv[i] != '--verbose' ) query += process.argv[i] + " ";
-    }
-    if(query != '') global.isVerbose = true;
-    requirements.showRequirements(query.replace(/\s+$/, ''), fetch_projects.list_projects())
-    return;
-}
-
-if(hasArg('projects')) {
-    if(isVerbose()) console.log('Copying projects from Codex');
-    fetch_projects.all();
-    return;
-}
-
-if(hasArg('posts')) {
-    if(isVerbose()) console.log('Copying blog posts from Codex');
-    return;
-}
-
-if(isVerbose()) console.log('Copying projects and blog posts from Codex');
-fetch_projects.all();

+ 0 - 118
fetch-scripts/check-requirements.js

@@ -1,118 +0,0 @@
-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;

+ 0 - 0
fetch-scripts/check-videos.js


+ 0 - 59
fetch-scripts/fetch-posts.js

@@ -1,59 +0,0 @@
-const fs = require('fs')
-const mdYmlParser = require('markdown-yaml-metadata-parser');
-
-var utilities = require('./utilities');
-
-const getDirectories = source =>
-  fs.readdirSync(source, { withFileTypes: true })
-    .filter(item => item.isDirectory())
-    .map(item => item.name);
-
-const getFiles = source =>
-    fs.readdirSync(source, { withFileTypes: true })
-    .filter(item => !item.isDirectory())
-    .map(item => item.name);
-
-var source = "/Users/james/codex/blog"
-var file_names = getFiles(source);
-var posts = []
-file_names.forEach(file_name => {
-    if(file_name != '.DS_Store'){
-        var file = fs.readFileSync(`${source}/${file_name}`, "utf8");
-        var post = mdYmlParser(file);
-        post.filename = file_name;
-        if(post.metadata.published == true){
-            posts.push(post);
-        }    
-    }
-});
-
-console.log(`Found ${posts.length} posts. Creating files:`);
-
-var createPost = function(post){
-    // Create folder
-    var post_name = post.filename.split(".")[0];
-    utilities.createDirectory(`source/_posts/blog/${post_name}`)
-    // Copy post
-    var post_path = `${source}/${post.filename}`   
-    var post_destination = `source/_posts/blog/${post_name}.md`;
-    fs.copyFileSync(post_path, post_destination);
-    // Copy hero image
-    var hero_path = `${source}/images/${post.metadata.hero_image}`;
-    var hero_destination = `source/_posts/blog/${post_name}/hero.jpg`
-    fs.copyFileSync(hero_path, hero_destination);
-    // Copy cover image
-    var thumb_path = `${source}/images/${post.metadata.cover_image}`;
-    var thumb_destination = `source/_posts/blog/${post_name}/cover.jpg`
-    fs.copyFileSync(thumb_path, thumb_destination);
-}
-
-var counter = 0;
-posts.forEach(post => {
-    try{
-        createPost(post);
-        counter += 1;
-    } catch(err){
-        console.log(err);
-    }
-});
-//console.log(`Created ${counter} blog posts`);

+ 0 - 134
fetch-scripts/fetch-projects.js

@@ -1,134 +0,0 @@
-var fs = require('fs')
-const sharp = require('sharp');
-
-var utilities = require('./utilities');
-var requirements = require('./check-requirements');
-
-const chalk = require('chalk');
-const logSymbols = require('log-symbols');
-
-const YAML = require('json-to-pretty-yaml');
-const TurndownService = require('turndown');
-var turndownService = new TurndownService()
-
-var list_projects = function(){
-    var project_directories = utilities.getDirectories(global.source);
-    var projects = []
-    
-    // Load Files into JSON object
-    project_directories.forEach(project => {
-        try {
-            projects.push(JSON.parse(fs.readFileSync(`${global.source}/${project}/project.json`)));
-        } catch(err){}
-    });
-    return projects;
-}
-
-var createProject = async function(project){
-    var project_requirements = await requirements.hasRequirements(project);
-    //console.log(`${project.title} ${hasRequirements}`)
-    if(project_requirements.pass == 'no'){
-        result[2] += 1;
-        console.log(logSymbols.error, `Error creating project \'${chalk.bold(project.permalink)}\'`);
-        requirements.requirementMessages(project, project_requirements);
-        return;
-    }
-    // Create folder
-    utilities.createDirectory(`source/_posts/projects/${project.permalink}`)
-    // Generate cover
-    var cover_path = `${global.source}/${project.permalink}/${project.cover_image}`
-    var cover_ext = project.cover_image.split(".")[1];
-    var cover_destination = `source/_posts/projects/${project.permalink}/cover.jpg`
-    sharp(cover_path).resize(1000, 625).toFile(cover_destination);
-    project.cover_image = `/projects/${project.permalink}/cover.jpg`
-    // Generate thumbnail 
-    sharp(cover_path).resize(550, 344).toFile(`source/_posts/projects/${project.permalink}/thumbnail.jpg`);
-    project.thumbnail_image = `/projects/${project.permalink}/thumbnail.jpg`
-    // Copy Hero
-    var hero_path, hero_ext, hero_destination;
-    if(project.hero_image != undefined){
-        hero_path = `${global.source}/${project.permalink}/${project.hero_image}`
-        hero_ext = project.hero_image.split(".")[1];
-        hero_destination = `source/_posts/projects/${project.permalink}/hero.${hero_ext}`
-        utilities.copyFile(hero_path, hero_destination);
-        project.hero_image = `/projects/${project.permalink}/hero.${hero_ext}`
-    }
-    // Copy screenshots
-    var screenshot_data = []
-    if(project.screenshots != undefined){
-        if(project.screenshots.length > 0) {
-            for (let i = 0; i < project.screenshots.length; i++) {
-                var screenshot = project.screenshots[i];
-                screenshot_path = `${global.source}/${project.permalink}/${screenshot.url}`
-                screenshot_ext = project.hero_image.split(".")[1];
-                screenshot_destination = `source/_posts/projects/${project.permalink}/screenshot-${i}.${screenshot_ext}`
-                utilities.copyFile(screenshot_path, screenshot_destination);
-                screenshot.url = `/projects/${project.permalink}/screenshot-${i}.${screenshot_ext}`;
-                screenshot_data.push(screenshot)
-            }
-        }
-    }
-    // Create markdown file
-    var file = "";
-    file += "---\n";
-    file += `title: ${project.title}\n`;
-    file += `folder: ${project.permalink}\n`;
-    file += `date: ${project.start_date}\n`;
-    file += `layout: project\n`
-    try {
-        var data = JSON.parse(JSON.stringify(project));
-        delete data.title;
-        delete data.index;
-        delete data.status;
-        delete data.size
-        delete data.local_copies;
-        delete data.folder;
-        delete data.aws_backups;
-        delete data.permalink;
-        delete data.backup_folder;
-        if(data.repositories == []) delete data.repositories;
-        if(data.files == []) delete data.files;
-        if(screenshot_data.length > 0) data.screenshots = screenshot_data;
-        file += YAML.stringify(data);
-    } catch (err){
-        if(global.isVerbose) console.log(logSymbols.error, chalk.red('An error occured: '));
-        if(global.isVerbose) console.log(err);
-    }
-    file += "---\n";
-    if(project.text == undefined){
-        file += project.description;
-    } else {
-        file += turndownService.turndown(project.text);;
-    }
-    // Save markdown file
-    var project_file_path = `source/_posts/projects/${project.permalink}.md`
-    try {
-        fs.writeFileSync(project_file_path, file);
-        if(project_requirements.pass == 'all') {
-            result[0] += 1;
-            console.log(logSymbols.success, `Created Project \'${chalk.bold(project.permalink)}\'`);
-        } else if(project_requirements.pass == 'some') {
-            result[1] += 1;
-            console.log(logSymbols.warning, `Created Project \'${chalk.bold(project.permalink)}\' with warnings`);
-            requirements.requirementMessages(project, project_requirements);
-        }
-        counter += 1;
-    } catch (err){
-        if(global.isVerbose) console.log(logSymbols.error, chalk.red('An error occured: '));
-        if(global.isVerbose) console.log(err);
-    }
-}
-
-var result = [ 0, 0, 0]
-
-module.exports.all = async function(){
-    console.log()
-    var projects = list_projects();
-    for (let i = 0; i < projects.length; i++) {
-        await createProject(projects[i]);
-    }
-    console.log()
-    console.log(chalk.green(`${result[0]} created`) + ", " + chalk.yellow(`${result[1]} created with warnings`) + ", " + chalk.red(`${result[2]} missing requirements`) + ` (TOTAL: ${projects.length})`);
-}
-
-module.exports.list_projects = list_projects;

+ 0 - 62
fetch-scripts/utilities.js

@@ -1,62 +0,0 @@
-var fs = require('fs')
-const request = require('request');
-const chalk = require('chalk');
-const logSymbols = require('log-symbols');
-
-module.exports.copyFile = function(original_path, destination_path){
-    try {    
-        fs.copyFileSync(original_path, destination_path);
-        return true;
-    } catch (err){
-        if(err.code == 'ENOENT'){
-            if(global.isVerbose) { 
-                console.log(logSymbols.error, chalk.red(`ERROR: File not found: \'${original_path}\'`))
-            }
-        } else {
-            if(global.isVerbose) console.log(logSymbols.error, chalk.red('An error occured: '));
-            if(global.isVerbose) console.log(err);
-        }
-        return false;
-    }
-}
-
-function vimeoCheck(url) {
-    return new Promise((resolve, reject) => {
-        request(`https://vimeo.com/api/oembed.json?url=${url}`, (error, response, body) => {
-            if (error) reject(error);
-            if (response.statusCode == 200) {
-                resolve(true)
-            } else if (response.statusCode == 404) {
-                resolve(false)
-            }
-        });
-    });
-}
-
-module.exports.getDirectories = function(source) {
-    return fs.readdirSync(source, { withFileTypes: true })
-        .filter(item => item.isDirectory())
-        .map(item => item.name);
-}
-
-module.exports.fileExists = function(path){
-    if (fs.existsSync(path)) return true;
-    else return false;
-}
-
-module.exports.createDirectory = function(dir){
-    if (!fs.existsSync(dir)){
-        fs.mkdirSync(dir);
-    }
-}
-
-module.exports.checkVideo = async function checkVideo(url) {
-    try {
-        if(url.includes("vimeo")){
-            return await vimeoCheck(url)
-        }
-    } catch (error) {
-        console.error('ERROR:');
-        console.error(error);
-    }
-}

File diff suppressed because it is too large
+ 45 - 657
package-lock.json


+ 5 - 7
package.json

@@ -12,6 +12,7 @@
     "version": "4.2.1"
   },
   "dependencies": {
+    "aws-sdk": "^2.698.0",
     "chalk": "^4.1.0",
     "hexo": "^4.2.1",
     "hexo-deployer-sftp": "^0.4.1",
@@ -24,13 +25,10 @@
     "hexo-renderer-marked": "^2.0.0",
     "hexo-renderer-stylus": "^1.1.0",
     "hexo-server": "^1.0.0",
-    "json-to-pretty-yaml": "^1.2.2",
-    "log-symbols": "^4.0.0",
-    "markdown-yaml-metadata-parser": "^2.0.5",
     "minipass": "2.7.0",
-    "node-time-ago": "^1.0.0",
-    "request": "^2.88.2",
-    "sharp": "^0.23.0",
-    "turndown": "^6.0.0"
+    "node-time-ago": "^1.0.0"
+  },
+  "resolutions": {
+    "graceful-fs": "4.x.x"
   }
 }

+ 60 - 18
readme.md

@@ -33,6 +33,10 @@ Based on [Hexo](http://hexo.io) for building the static website.
   - [ ] Tag list filter button in projects page
   
   - [x] Move video resizing script outside of page body
+  
+  - [ ] **Responsive fixes**
+  
+  - [ ] **Mix panel tracking**
 
 - [ ] System Tasks
   
@@ -40,7 +44,7 @@ Based on [Hexo](http://hexo.io) for building the static website.
   
   - [x] **Thumbnail and hero images are stored in project folder**
   
-  - [ ] **Publish upload script**
+  - [x] **Publish upload script**
   
   - [ ] Contact form sends email
   
@@ -48,49 +52,87 @@ Based on [Hexo](http://hexo.io) for building the static website.
   
   - [ ] **Project downloadable files**
   
-  - [ ] redirect to jamesperet.j1x.co
+  - [x] redirect to jamesperet.com
   
   - [x] **video link test requirement**
   
-  - [ ] SEO basics
+  - [ ] **SEO basics**
+  
+  - [ ] **Merge mixpanel analytics data** 
+    *jamesperet-landing-page* and *j1x-blog* to *jamesperet-website*
+  
+  - [ ] Singup/Login to Heroku
 
 - [ ] Update Content
   
   - [ ] Add Lifeless Biomachine videos
   
-  - [ ] Fix Vinheta Lav video embed
+  - [ ] Lifeless Biomachine description
   
   - [ ] Cyberpunk Detective files
   
   - [ ] Cyberpunk Detective description
   
-  - [ ] Rebel Elite hero image
+  - [ ] Riverão Website description
   
-  - [ ] Rebel Elite screenshots
+  - [ ] Polyphonic Ctrl description
   
-  - [ ] BattleScape hero image
+  - [ ] Polyphonic Ctrl Demo
   
-  - [ ] BattleScape screenshots
+  *Demo was hosted in Heroku and no longer exists.*
+  *Upload project files to Heroku*
   
-  - [ ] Add project vertentes.tv
+  - [ ] AHA project description
   
-  - [ ] Add project whois-server
+  - [ ] Phenomena description
   
-  - [ ] Add project auto-video
+  - [ ] Aurora do Pilantra description
   
-  - [ ] Add project sozinho
+  - [x] Fix star-fighter project data
   
-  - [ ] Add project o-outro
+  - [ ] Upload Aurora do Pilantra files to S3
   
-  - [ ] Add project alo
+  - [ ] Back2Black description
   
-  - [ ] Fix solar-wave project data
+  - [ ] Acil Weber description
   
-  - [x] Fix star-fighter project data
+  - [ ] Caixa viajem no tempo description
   
-  - [ ] Add project Julgamento Absurdista
+  - [ ] Talento não apreciado description
   
-  - [ ] Add project Anarco-experimentalismo
+  - [ ] Jordival no mundo do Metal description
+  
+  - [ ] O violador description
+  
+  - [ ] Istar Uours description
+
+- [ ] Rebel Elite hero image
+
+- [ ] Rebel Elite screenshots
+
+- [ ] BattleScape hero image
+
+- [ ] BattleScape screenshots
+
+- [ ] Add project vertentes.tv
+
+- [ ] Add project whois-server
+
+- [ ] Add project auto-video
+
+- [ ] Add project sozinho
+
+- [ ] Add project o-outro
+
+- [ ] Add project alo
+
+- [ ] Fix solar-wave project data
+
+- [ ] Add project Julgamento Absurdista
+
+- [ ] Add project Anarco-experimentalismo
+
+- [ ] Fix Vinheta Lav video embed
 
 ### Extras
 

Some files were not shown because too many files changed in this diff