Cleanup
This commit is contained in:
		
							parent
							
								
									0bd62c6b16
								
							
						
					
					
						commit
						c61fbe9845
					
				
					 4 changed files with 82 additions and 56 deletions
				
			
		
							
								
								
									
										70
									
								
								index.js
									
										
									
									
									
								
							
							
						
						
									
										70
									
								
								index.js
									
										
									
									
									
								
							|  | @ -1,68 +1,26 @@ | |||
| const marked = require('marked'); | ||||
| const { compile } = require('handlebars'); | ||||
| const requestGithub = require('./src/request'); | ||||
| const { join } = require('path'); | ||||
| const { readdir, readJson, outputFile } = require('fs-extra'); | ||||
| const { outputFile } = require('fs-extra'); | ||||
| const marked = require('marked'); | ||||
| const getTemplate = require('./src/template'); | ||||
| const { getPinnedRepoJSONs, getStaticPageJSONs } = require('./src/discoverJSONData'); | ||||
| 
 | ||||
| const pagesPath = './src/pages'; | ||||
| const dist = './dist'; | ||||
| const exampleHBS = compile(` | ||||
|   <h1>{{name}}</h1> | ||||
|   <hr /> | ||||
|   <main> | ||||
|     {{{readme.html}}} | ||||
|   </main> | ||||
| `);
 | ||||
| const distPath = './dist'; | ||||
| 
 | ||||
| (async () => { | ||||
|   let fileNames; | ||||
|   let filesJSON; | ||||
|   let { | ||||
|     data: { | ||||
|       viewer: { | ||||
|         pinnedRepositories: { | ||||
|           edges: pinnedRepoData | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } = await requestGithub(require('./src/schema')); | ||||
|   pinnedRepoData = pinnedRepoData.map(data => data.node); | ||||
| 
 | ||||
|   try { | ||||
|     fileNames = await readdir(pagesPath); | ||||
|   } catch (error) { | ||||
|     console.error(error); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   let readFilesPromises = fileNames.map(fileName => { | ||||
|     let filePath = join(pagesPath, fileName); | ||||
|     return readJson(filePath); | ||||
|   }); | ||||
| 
 | ||||
|   try { | ||||
|     filesJSON = await Promise.all(readFilesPromises); | ||||
|   } catch (error) { | ||||
|     console.error('Error while reading JSON', error); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   let combinedJSONs = filesJSON.concat(pinnedRepoData); | ||||
| 
 | ||||
|   let renderReadmes = combinedJSONs.map(json => { | ||||
|   const interiorTemplate = await getTemplate('interior'); | ||||
|   let repoJSONs = await getPinnedRepoJSONs(); | ||||
|   let staticJSONs = await getStaticPageJSONs(); | ||||
|   let combinedJSONs = repoJSONs.concat(staticJSONs); | ||||
|   const saveAsInteriorHTML = async json => { | ||||
|     let fileName = json.name.replace(/[^a-zA-Z\d:]/g, '').toLowerCase(); | ||||
|     if (json.readme && json.readme.text) { | ||||
|       json.readme.html = marked(json.readme.text); | ||||
|     } | ||||
|     return json; | ||||
|   }); | ||||
| 
 | ||||
|   let writeFilesPromises = renderReadmes.map(json => { | ||||
|     let fileName = json.name.replace(/[^a-zA-Z\d:]/g, '').toLowerCase(); | ||||
|     return outputFile(join(dist, fileName) + '.html', exampleHBS(json)); | ||||
|   }); | ||||
|     return outputFile(join(distPath, fileName) + '.html', interiorTemplate(json)); | ||||
|   } | ||||
| 
 | ||||
|   try { | ||||
|     await Promise.all(writeFilesPromises); | ||||
|     await Promise.all(combinedJSONs.map(saveAsInteriorHTML)); | ||||
|   } catch (error) { | ||||
|     console.error('Error while writing html files', error); | ||||
|     return; | ||||
|  |  | |||
							
								
								
									
										48
									
								
								src/discoverJSONData.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								src/discoverJSONData.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| const { join } = require('path'); | ||||
| const { readdir, readJson } = require('fs-extra'); | ||||
| const requestGithub = require('./request'); | ||||
| const schema = require('./schema'); | ||||
| 
 | ||||
| const pagesPath = './src/pages'; | ||||
| 
 | ||||
| const getPinnedRepoJSONs = async () => { | ||||
|   let { | ||||
|     data: { | ||||
|       viewer: { | ||||
|         pinnedRepositories: { | ||||
|           edges: pinnedRepoData | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } = await requestGithub(schema); | ||||
|   return pinnedRepoData.map(data => data.node); | ||||
| }; | ||||
| 
 | ||||
| const getStaticPageJSONs = async () => { | ||||
|   let fileNames; | ||||
|   let filesJSON; | ||||
| 
 | ||||
|   try { | ||||
|     fileNames = await readdir(pagesPath); | ||||
|   } catch (error) { | ||||
|     console.error(error); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   let readFilesPromises = fileNames.map(fileName => { | ||||
|     let filePath = join(pagesPath, fileName); | ||||
|     return readJson(filePath); | ||||
|   }); | ||||
| 
 | ||||
|   try { | ||||
|     return await Promise.all(readFilesPromises); | ||||
|   } catch (error) { | ||||
|     console.error('Error while reading JSON', error); | ||||
|     return; | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| module.exports = { | ||||
|   getPinnedRepoJSONs, | ||||
|   getStaticPageJSONs, | ||||
| }; | ||||
							
								
								
									
										15
									
								
								src/template.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/template.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| const { compile } = require('handlebars'); | ||||
| const { readFile } = require('fs-extra'); | ||||
| 
 | ||||
| module.exports = async filename => { | ||||
|   let template; | ||||
|   try { | ||||
|     template = await readFile(`./src/templates/${filename}.hbs`); | ||||
|     template = template.toString(); | ||||
|   } catch(error) { | ||||
|     console.error('Could not fetch template', filename, error); | ||||
|     return; | ||||
|   } | ||||
|   return compile(template); | ||||
| }; | ||||
| 
 | ||||
							
								
								
									
										5
									
								
								src/templates/interior.hbs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/templates/interior.hbs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| <h1>{{name}}</h1> | ||||
| <hr /> | ||||
| <main> | ||||
|   {{{readme.html}}} | ||||
| </main> | ||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Joe Wroten
						Joe Wroten