import { promises as fs } from 'fs' import slugify from 'slugify' import axios from 'axios' // import { statuses } from './build-app-list' // console.log('process.env.GAMES_SOURCE', process.env.GAMES_SOURCE) // export const statuses = { // '✅': 'native', // '✳️': 'rosetta', // '⏹': 'no-in-progress', // '🚫': 'no' // } const statusesTranslations = { 'Native': 'native', 'Rosetta': 'rosetta', // 'CrossOver': 'rosetta', // '': 'no' } const statusesMessages = { 'Native': '✅ Yes, Full Native Apple Silicon Support', 'Rosetta': '✳️ Yes, works via Rosetta 2', // 'CrossOver': '✳️ Yes, works via Rosetta 2', // 'no': '🚫 No, not yet supported only works on Intel-based Macs' } function isPlayable(game) { return game.Playable.toLowerCase() === 'yes' } function environmentName(game) { return game['Environment'].trim() } function getStatusText(game) { if (isPlayable(game) === false) return '🚫 No, not yet supported only works on Intel-based Macs' // Match status to Sheet Status return statusesMessages[environmentName(game)] } function parseStatus(game) { if (isPlayable(game) === false) return 'no' // Match status to Sheet Status return statusesTranslations[environmentName(game)] } export default async function () { // Fetch Sheet data const gamesSheet = await axios .get(process.env.GAMES_SOURCE) .then(function (response) { // handle success return response.data.records }) .catch(function (error) { // handle error console.log(error); }) const gameList = [] // console.log('gamesSheet', gamesSheet) for (const game of gamesSheet) { // If there's no title // then skip this report if (game.Games.length === 0) continue // If there's no 'Environment' status // then skip this report if (environmentName(game).length === 0) continue // If this game is playable // BUT it's 'Environment' status is not in statusesTranslations // then skip this report if (isPlayable(game) && statusesTranslations.hasOwnProperty(environmentName(game)) === false) continue // Generate slug const slug = slugify(game.Games, { lower: true, strict: true }) // Find index of game is list so far const gameIndex = gameList.findIndex(game => { return game.slug === slug }) // Game already has entry if (gameIndex !== -1) { // console.log('Existing Game', game) gameList[gameIndex].reports.push(game) continue } const status = parseStatus(game) if (typeof status !== 'string') { console.warn('Non-string status', game) continue } gameList.push({ name: game.Games, status, url: `https://rawg.io/search?query=${encodeURIComponent(game.Games)}`, text: getStatusText(game), slug, endpoint: `/game/${slug}`, section: { slug: 'games' }, content: '', relatedLinks: [ { "href": `https://rawg.io/search?query=${encodeURIComponent(game.Games)}`, "label": "View" } ], reports: [ game ] }) } // console.log('gameList', gameList) return gameList // fs.readFile('../README.md', 'utf8') // .then((err, data) => { // const result = md.parse(data) // console.log('result', result) // return result // }) }