diff --git a/config/i18next-parser.config.js b/config/i18next-parser.config.js index 6cf2f6c4..7472d6a5 100644 --- a/config/i18next-parser.config.js +++ b/config/i18next-parser.config.js @@ -42,9 +42,12 @@ module.exports = { lexer: 'HTMLLexer', attr: 'i18n-data', // Attribute for the keys optionAttr: 'i18n-options' // Attribute for the options - }] - // mjs: ['JavascriptLexer'], - // js: ['JavascriptLexer'], // if you're writing jsx inside .js files, change this to JsxLexer + }], + // mjs: ['JavascriptLexer'], + js: [{ + lexer: 'JavascriptLexer', + functions: ['t', 'addToVerifyList'], // Array of functions to match + }], // ts: ['JavascriptLexer'], // jsx: ['JsxLexer'], // tsx: ['JsxLexer'], diff --git a/empty-user-data.json b/empty-user-data.json index 8ad69675..b554f766 100644 --- a/empty-user-data.json +++ b/empty-user-data.json @@ -1,46 +1,57 @@ { "get_git": { "challengeId": 1, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "repository": { "challengeId": 2, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "commit_to_it": { "challengeId": 3, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "githubbin": { "challengeId": 4, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "remote_control": { "challengeId": 5, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "forks_and_clones": { "challengeId": 6, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "branches_arent_just_for_birds": { "challengeId": 7, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "its_a_small_world": { "challengeId": 8, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "pull_never_out_of_date": { "challengeId": 9, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "requesting_you_pull_please": { "challengeId": 10, - "completed": false + "challengeComplete": false, + "verifyList": [] }, "merge_tada": { "challengeId": 11, - "completed": false + "challengeComplete": false, + "verifyList": [] } } diff --git a/lib/challenge-sidebar-handler.js b/lib/challenge-sidebar-handler.js index cf2d3454..11750ecf 100644 --- a/lib/challenge-sidebar-handler.js +++ b/lib/challenge-sidebar-handler.js @@ -1,6 +1,6 @@ /* * Runs in: Renderer-Process - * Cares for the Challenge-Sidebar to be up-to-date with completed-status + * Cares for the Challenge-Sidebar to be up-to-date with challengeComplete-status */ const path = require('path') const userData = require(path.normalize(path.join(__dirname, 'user-data.js'))) @@ -10,21 +10,21 @@ document.addEventListener('DOMContentLoaded', () => { const challengeUserData = userData.getChallengeData() Object.keys(challengeUserData).forEach((challengeKey) => { - if (challengeUserData[challengeKey].completed) { - showChallengeCompleted(challengeKey, true) + if (challengeUserData[challengeKey].challengeComplete) { + showChallengeComplete(challengeKey, true) } }) }) /* - * Show a challenge as completed/incomplete in sidebar + * Show a challenge as complete/incomplete in sidebar */ -function showChallengeCompleted (challengeKey, completed) { - if (completed) { +function showChallengeComplete (challengeKey, isComplete) { + if (isComplete) { document.getElementById('sidebar-' + challengeKey).classList.add('completed') } else { document.getElementById('sidebar-' + challengeKey).classList.remove('completed') } } -exports.showChallengeCompleted = showChallengeCompleted +exports.showChallengeComplete = showChallengeComplete diff --git a/lib/challenge-verify-handler.js b/lib/challenge-verify-handler.js index 3ff37452..0f9d66ff 100644 --- a/lib/challenge-verify-handler.js +++ b/lib/challenge-verify-handler.js @@ -40,7 +40,7 @@ document.addEventListener('DOMContentLoaded', () => { } const challengeUserData = userData.getChallengeData(currentChallenge) - if (challengeUserData.completed) { + if (challengeUserData.challengeComplete) { enableVerifyButtons(false) enableClearStatusButton(true) } else { @@ -48,6 +48,11 @@ document.addEventListener('DOMContentLoaded', () => { enableClearStatusButton(false) } + // Print-out stored list + if (challengeUserData.verifyList.length > 0) { + printOutVerifyList(challengeUserData.verifyList) + } + // Only if button exists if (selectDirButton) { const savedDir = userData.getSavedDir(currentChallenge) @@ -84,22 +89,21 @@ async function handleVerifyClick () { showSpinner(true) enableVerifyButtons(false) - // In js it is possible to call with more parameters, than defined + // In js it is possible to call with more parameters, than defined, not all challenges need the path-parameter const result = await verifyChallengeScript(selectedDirPath?.innerText) clearVerifyList() - printOutVerifyList(result) + printOutVerifyList(result.verifyList) if (result.challengeComplete) { enableClearStatusButton(true) - userData.setChallengeCompleted(currentChallenge, true) - sidebarHandler.showChallengeCompleted(currentChallenge, true) + sidebarHandler.showChallengeComplete(currentChallenge, true) } else { enableVerifyButtons(true) } showSpinner(false) - // TODO write verifyList to userData to be able to reload it (also when reloading translations)? + userData.storeChallengeResult(currentChallenge, result.challengeComplete, result.verifyList) } /* @@ -113,19 +117,21 @@ async function clearChallengeStatus () { clearVerifyList() showVerifyList(false) - sidebarHandler.showChallengeCompleted(currentChallenge, false) - userData.setChallengeCompleted(currentChallenge, false) + sidebarHandler.showChallengeComplete(currentChallenge, false) + userData.clearChallengeResult(currentChallenge, false) } /* - * Write out the result.verifyList to the DOM + * Write out the list to the DOM */ -function printOutVerifyList (result) { +function printOutVerifyList (list) { showVerifyList(true) - result.verifyList.forEach(listItem => { + list.forEach(listItem => { const li = document.createElement('li') - li.appendChild(document.createTextNode(listItem.message)) + li.appendChild(document.createTextNode( + i18n.t(listItem.message, listItem.data) + )) if (listItem.pass) { li.classList.add('verify-pass') } else { diff --git a/lib/index-challenge-handler.js b/lib/index-challenge-handler.js index e5bb7dc5..d339da29 100644 --- a/lib/index-challenge-handler.js +++ b/lib/index-challenge-handler.js @@ -26,7 +26,7 @@ document.addEventListener('DOMContentLoaded', () => { // Go through the challenges in challengeUserData to see which are completed let countCompleted = 0 challengeUserDataKeys.forEach((challengeKey, index) => { - if (challengeUserData[challengeKey].completed) { + if (challengeUserData[challengeKey].challengeComplete) { countCompleted++ progressCircles[index].classList.add('completed') // Mark corresponding circle as completed if (index < challengeUserDataKeys.length - 1) { diff --git a/lib/user-data.js b/lib/user-data.js index 416d2239..98cfabd5 100644 --- a/lib/user-data.js +++ b/lib/user-data.js @@ -33,17 +33,26 @@ function getChallengeData (challenge = null) { } return fileContent } -// Set given challenge completed-status -function setChallengeCompleted (challenge, completed) { +// Store challenge verify-data +function storeChallengeResult (challenge, challengeComplete, verifyList) { const fileContent = getChallengeData() - fileContent[challenge].completed = completed + fileContent[challenge].challengeComplete = challengeComplete + fileContent[challenge].verifyList = verifyList writeData(userDataFile, fileContent) } -// Clear all challenges - Set all challenges as incomplete +// Clear challenge verify-data +function clearChallengeResult (challenge) { + const fileContent = getChallengeData() + fileContent[challenge].challengeComplete = false + fileContent[challenge].verifyList = [] + writeData(userDataFile, fileContent) +} +// Clear all challenges - Set all challenges as incomplete and clear verifyLists function clearAllChallenges () { const fileContent = getChallengeData() Object.keys(fileContent).forEach(challenge => { - fileContent[challenge].completed = false + fileContent[challenge].challengeComplete = false + fileContent[challenge].verifyList = [] }) writeData(userDataFile, fileContent) } @@ -79,7 +88,8 @@ function writeData (file, data) { } exports.getChallengeData = getChallengeData -exports.setChallengeCompleted = setChallengeCompleted +exports.storeChallengeResult = storeChallengeResult +exports.clearChallengeResult = clearChallengeResult exports.clearAllChallenges = clearAllChallenges exports.getSavedDir = getSavedDir exports.updateSavedDir = updateSavedDir diff --git a/lib/verify/branches_arent_just_for_birds.js b/lib/verify/branches_arent_just_for_birds.js index 0b0fe791..ff5ecc95 100644 --- a/lib/verify/branches_arent_just_for_birds.js +++ b/lib/verify/branches_arent_just_for_birds.js @@ -1,6 +1,5 @@ const fs = require('fs') const path = require('path') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // get their username @@ -14,7 +13,7 @@ module.exports = function (repopath) { // path should be a directory if (!fs.lstatSync(repopath).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -22,7 +21,7 @@ module.exports = function (repopath) { try { username = execGit('config user.username', { cwd: repopath }) } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -32,12 +31,12 @@ module.exports = function (repopath) { const expectedBranch = 'add-' + username if (currentBranch.match(expectedBranch)) { - addToVerifyList(result.verifyList, i18n.t('verify~Found branch as expected!'), true) + addToVerifyList('verify~Found branch as expected!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Branch name expected: {/expectedBranch/}', { expectedBranch }), false) + addToVerifyList('verify~Branch name expected: {/expectedBranch/}', false, result.verifyList, { expectedBranch }) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -53,14 +52,14 @@ module.exports = function (repopath) { const allFiles = out.join() if (allFiles.match('add-' + username)) { - addToVerifyList(result.verifyList, i18n.t('verify~File in contributors folder!'), true) + addToVerifyList('verify~File in contributors folder!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~File not found in contributors folder.'), false) + addToVerifyList('verify~File not found in contributors folder.', false, result.verifyList) return result } } catch (err) { // TODO ENOENT: no such file or directory, scandir '/Users/jlord/jCode/.../contributors/' - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -71,13 +70,13 @@ module.exports = function (repopath) { const log = execGit('reflog show origin/' + currentBranch, { cwd: repopath }) if (log.match('update by push')) { - addToVerifyList(result.verifyList, i18n.t('verify~Changes have been pushed!'), true) + addToVerifyList('verify~Changes have been pushed!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Changes not pushed.'), false) + addToVerifyList('verify~Changes not pushed.', false, result.verifyList) } } catch (err) { console.log(err.message) - addToVerifyList(result.verifyList, i18n.t('verify~Changes not pushed.'), false) + addToVerifyList('verify~Changes not pushed.', false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/commit_to_it.js b/lib/verify/commit_to_it.js index b75b6f9f..54d76953 100644 --- a/lib/verify/commit_to_it.js +++ b/lib/verify/commit_to_it.js @@ -1,5 +1,4 @@ const fs = require('fs') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // check that they've commited changes @@ -8,7 +7,7 @@ module.exports = function (path) { // path should be a directory if (!fs.lstatSync(path).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -16,14 +15,14 @@ module.exports = function (path) { const show = execGit('status', { cwd: path }) if (show.match('No commits yet')) { - addToVerifyList(result.verifyList, i18n.t("verify~Can't find committed changes."), false) + addToVerifyList("verify~Can't find committed changes.", false, result.verifyList) } else if (show.match('nothing to commit')) { - addToVerifyList(result.verifyList, i18n.t('verify~Changes have been committed!'), true) + addToVerifyList('verify~Changes have been committed!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Seems there are still changes to commit.'), false) + addToVerifyList('verify~Seems there are still changes to commit.', false, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/forks_and_clones.js b/lib/verify/forks_and_clones.js index 4e52150a..3cce4e1b 100644 --- a/lib/verify/forks_and_clones.js +++ b/lib/verify/forks_and_clones.js @@ -1,5 +1,4 @@ const fs = require('fs') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // check that they've added the remote, that shows @@ -12,7 +11,7 @@ module.exports = function (path) { // path should be a directory if (!fs.lstatSync(path).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -20,7 +19,7 @@ module.exports = function (path) { try { username = execGit('config user.username') } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -30,27 +29,27 @@ module.exports = function (path) { remotes = out.split('\n') if (remotes.length !== 4) { - addToVerifyList(result.verifyList, i18n.t('verify~Did not find 2 remotes set up.'), false) + addToVerifyList('verify~Did not find 2 remotes set up.', false, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } remotes.splice(1, 2) remotes.forEach(remote => { if (remote.match('origin')) { if (remote.match('github.com[:/]' + username + '/patchwork')) { - addToVerifyList(result.verifyList, i18n.t('verify~Origin points to your fork!'), true) + addToVerifyList('verify~Origin points to your fork!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No Origin remote found pointing to {/userrepo/}.', { userrepo: username + '/patchwork' }), false) + addToVerifyList('verify~No Origin remote found pointing to {/userrepo/}.', false, result.verifyList, { userrepo: username + '/patchwork' }) } } if (remote.match('upstream')) { if (remote.match('github.com[:/]jlord/patchwork')) { - addToVerifyList(result.verifyList, i18n.t('verify~Upstream remote set up!'), true) + addToVerifyList('verify~Upstream remote set up!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No Upstream remote found pointing to {/patchworkrepo/}.', { patchworkrepo: 'jlord/patchwork' }), false) + addToVerifyList('verify~No Upstream remote found pointing to {/patchworkrepo/}.', false, result.verifyList, { patchworkrepo: 'jlord/patchwork' }) } } }) diff --git a/lib/verify/get_git.js b/lib/verify/get_git.js index 67d795da..99277a66 100644 --- a/lib/verify/get_git.js +++ b/lib/verify/get_git.js @@ -1,4 +1,3 @@ -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // TODO @@ -12,14 +11,14 @@ module.exports = function () { const gitOutput = execGit('--version') if (gitOutput.match('git version')) { - addToVerifyList(result.verifyList, i18n.t('verify~Found Git installed!'), true) + addToVerifyList('verify~Found Git installed!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Did not find Git installed.'), false) + addToVerifyList('verify~Did not find Git installed.', false, result.verifyList) return result } } catch (err) { console.log(err) - addToVerifyList(result.verifyList, i18n.t('verify~Did not find Git installed.'), false) + addToVerifyList('verify~Did not find Git installed.', false, result.verifyList) return result } @@ -28,13 +27,13 @@ module.exports = function () { const name = execGit('config user.name') if (name !== '') { - addToVerifyList(result.verifyList, i18n.t('verify~Name Added!'), true) + addToVerifyList('verify~Name Added!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No name found.'), false) + addToVerifyList('verify~No name found.', false, result.verifyList) } } catch (err) { console.log(err) - addToVerifyList(result.verifyList, i18n.t('verify~No name found.'), false) + addToVerifyList('verify~No name found.', false, result.verifyList) } // Check user.email @@ -42,13 +41,13 @@ module.exports = function () { const email = execGit('config user.email') if (email !== '') { - addToVerifyList(result.verifyList, i18n.t('verify~Email Added!'), true) + addToVerifyList('verify~Email Added!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No email found.'), false) + addToVerifyList('verify~No email found.', false, result.verifyList) } } catch (err) { console.log(err) - addToVerifyList(result.verifyList, i18n.t('verify~No email found.'), false) + addToVerifyList('verify~No email found.', false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/githubbin.js b/lib/verify/githubbin.js index 948f560e..1a9ddee2 100644 --- a/lib/verify/githubbin.js +++ b/lib/verify/githubbin.js @@ -1,5 +1,4 @@ const axios = require('axios') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // Specifically request current REST-API v3 from Github @@ -23,14 +22,14 @@ module.exports = async function () { username = execGit('config user.username') if (username === '') { - addToVerifyList(result.verifyList, i18n.t('verify~No username found.'), false) + addToVerifyList('verify~No username found.', false, result.verifyList) return result } else { - addToVerifyList(result.verifyList, i18n.t('verify~Username added to Git config!'), true) + addToVerifyList('verify~Username added to Git config!', true, result.verifyList) } } catch (err) { // TODO Catch 'Command failed: /bin/sh -c git config user.username' - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -39,27 +38,27 @@ module.exports = async function () { const response = await axios.get('https://api.github.com/users/' + username, axiosOptions) if (response.status === 200) { - addToVerifyList(result.verifyList, i18n.t("verify~You're on GitHub!"), true) + addToVerifyList("verify~You're on GitHub!", true, result.verifyList) githubUsername = response.data.login } else { - addToVerifyList(result.verifyList, i18n.t('verify~GitHub account matching stored Git-username was not found.'), false) + addToVerifyList('verify~GitHub account matching stored Git-username was not found.', false, result.verifyList) return result } } catch (err) { if (err.response.status === 404) { - addToVerifyList(result.verifyList, i18n.t('verify~GitHub account matching stored Git-username was not found.'), false) + addToVerifyList('verify~GitHub account matching stored Git-username was not found.', false, result.verifyList) return result } else { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } } // Check if stored username matches Github-Username - CaseSensitive! if (username === githubUsername) { - addToVerifyList(result.verifyList, i18n.t('verify~Username capitalisation identical on GitHub and Git config!'), true) + addToVerifyList('verify~Username capitalisation identical on GitHub and Git config!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~GitHub & Git config usernames do not match (Take care on capitalisation!).'), false) + addToVerifyList('verify~GitHub & Git config usernames do not match (Take care on capitalisation!).', false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/its_a_small_world.js b/lib/verify/its_a_small_world.js index 52ee55a3..9e7c49f3 100644 --- a/lib/verify/its_a_small_world.js +++ b/lib/verify/its_a_small_world.js @@ -1,5 +1,4 @@ const axios = require('axios') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') const url = 'http://reporobot.jlord.us/collab?username=' @@ -12,7 +11,7 @@ module.exports = async function () { try { username = execGit('config user.username') } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -22,18 +21,18 @@ module.exports = async function () { if (response.status === 200) { if (response.data.collab === true) { - addToVerifyList(result.verifyList, i18n.t('verify~Reporobot has been added!'), true) + addToVerifyList('verify~Reporobot has been added!', true, result.verifyList) } else { // If they have a non 200 error, log it so that we can use // devtools to help user debug what went wrong if (response.data.error) { console.log('StatusCode:', response.status, 'Body:', response.data) } - addToVerifyList(result.verifyList, i18n.t('verify~Reporobot seems not to have access to your fork.'), false) + addToVerifyList('verify~Reporobot seems not to have access to your fork.', false, result.verifyList) } } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/merge_tada.js b/lib/verify/merge_tada.js index 7bafa084..ab462664 100644 --- a/lib/verify/merge_tada.js +++ b/lib/verify/merge_tada.js @@ -1,5 +1,4 @@ const fs = require('fs') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // check that they performed a merge @@ -11,7 +10,7 @@ module.exports = function (path) { // path should be a directory if (!fs.lstatSync(path).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -19,7 +18,7 @@ module.exports = function (path) { try { username = execGit('config user.username') } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -27,24 +26,24 @@ module.exports = function (path) { try { const ref = execGit('reflog -10', { cwd: path }) if (ref.match('merge add-' + username)) { - addToVerifyList(result.verifyList, i18n.t('verify~Your branch has been merged!'), true) + addToVerifyList('verify~Your branch has been merged!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No merge of your branch in history.'), false) + addToVerifyList('verify~No merge of your branch in history.', false, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } // Check if branch still exists try { const branches = execGit('branch', { cwd: path }) if (branches.match('add-' + username)) { - addToVerifyList(result.verifyList, i18n.t('verify~Uh oh, your branch is still there.'), false) + addToVerifyList('verify~Uh oh, your branch is still there.', false, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Branch deleted!'), true) + addToVerifyList('verify~Branch deleted!', true, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/pull_never_out_of_date.js b/lib/verify/pull_never_out_of_date.js index 8bf1b305..b55aa7bc 100644 --- a/lib/verify/pull_never_out_of_date.js +++ b/lib/verify/pull_never_out_of_date.js @@ -1,4 +1,3 @@ -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') // do a fetch dry run to see if there is anything @@ -11,12 +10,12 @@ module.exports = function (path) { const status = execGit('fetch --dry-run', { cwd: path }) if (status === '') { - addToVerifyList(result.verifyList, i18n.t('verify~Up to date!'), true) + addToVerifyList('verify~Up to date!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~There are changes to pull in.'), false) + addToVerifyList('verify~There are changes to pull in.', false, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/remote_control.js b/lib/verify/remote_control.js index 08754c31..8cd60467 100644 --- a/lib/verify/remote_control.js +++ b/lib/verify/remote_control.js @@ -1,5 +1,4 @@ const fs = require('fs') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') module.exports = function (path) { @@ -7,7 +6,7 @@ module.exports = function (path) { // path should be a directory if (!fs.lstatSync(path).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -16,13 +15,13 @@ module.exports = function (path) { const remotes = execGit('remote -v', { cwd: path }) if (remotes.match('origin')) { - addToVerifyList(result.verifyList, i18n.t('verify~Found remote set up.'), true) + addToVerifyList('verify~Found remote set up.', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~Did not find remote origin.'), false) + addToVerifyList('verify~Did not find remote origin.', false, result.verifyList) return result } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -31,14 +30,14 @@ module.exports = function (path) { const ref = execGit('reflog show origin/master', { cwd: path }) if (ref.match('update by push')) { - addToVerifyList(result.verifyList, i18n.t('verify~You pushed changes!'), true) + addToVerifyList('verify~You pushed changes!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~No evidence of push.'), false) + addToVerifyList('verify~No evidence of push.', false, result.verifyList) } } catch (err) { // TODO provide nicer error-message and only log the error? console.log(err.message) - addToVerifyList(result.verifyList, i18n.t('verify~No pushed changes found.'), false) + addToVerifyList('verify~No pushed changes found.', false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/repository.js b/lib/verify/repository.js index 70c3a977..afb6d796 100644 --- a/lib/verify/repository.js +++ b/lib/verify/repository.js @@ -1,5 +1,4 @@ const fs = require('fs') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') module.exports = function (path) { @@ -7,7 +6,7 @@ module.exports = function (path) { // path should be a directory if (!fs.lstatSync(path).isDirectory()) { - addToVerifyList(result.verifyList, i18n.t('verify~Path is not a directory.'), false) + addToVerifyList('verify~Path is not a directory.', false, result.verifyList) return result } @@ -15,12 +14,12 @@ module.exports = function (path) { const status = execGit('status', { cwd: path }) if (status.match('On branch')) { - addToVerifyList(result.verifyList, i18n.t('verify~This is a Git repository!'), true) + addToVerifyList('verify~This is a Git repository!', true, result.verifyList) } else { - addToVerifyList(result.verifyList, i18n.t('verify~This folder is not being tracked by Git.'), false) + addToVerifyList('verify~This folder is not being tracked by Git.', false, result.verifyList) } } catch (err) { - addToVerifyList(result.verifyList, i18n.t('verify~This folder is not being tracked by Git.'), false) + addToVerifyList('verify~This folder is not being tracked by Git.', false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/requesting_you_pull_please.js b/lib/verify/requesting_you_pull_please.js index 7b7cf53f..847a6e25 100644 --- a/lib/verify/requesting_you_pull_please.js +++ b/lib/verify/requesting_you_pull_please.js @@ -1,5 +1,4 @@ const axios = require('axios') -const i18n = require('electron').remote.getGlobal('i18n') const { addToVerifyList, checkChallengeComplete, execGit, getEmptyVerifyResult } = require('./verify-helpers') const url = 'http://reporobot.jlord.us/pr?username=' @@ -15,7 +14,7 @@ module.exports = async function () { try { username = execGit('config user.username') } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) return result } @@ -25,15 +24,16 @@ module.exports = async function () { if (response.status === 200) { const pr = response.data.pr if (pr) { - addToVerifyList(result.verifyList, i18n.t('verify~Found your pull request!'), true) + addToVerifyList('verify~Found your pull request!', true, result.verifyList) } else { // TODO give user url to their repo also - addToVerifyList(result.verifyList, i18n.t('verify~No merged pull request found for username {/username/}. If you created a pull request on github, return there to see if reporobot left some comments.', - { username }), false) + addToVerifyList('verify~No merged pull request found for username {/username/}. If you created a pull request on github, return there to see if reporobot left some comments.', + false, result.verifyList, { username } + ) } } } catch (err) { - addToVerifyList(result.verifyList, 'Error: ' + err.message, false) + addToVerifyList('Error: ' + err.message, false, result.verifyList) } result.challengeComplete = checkChallengeComplete(result.verifyList) diff --git a/lib/verify/verify-helpers.js b/lib/verify/verify-helpers.js index 27db1271..b2af8708 100644 --- a/lib/verify/verify-helpers.js +++ b/lib/verify/verify-helpers.js @@ -11,11 +11,13 @@ const execSync = require('child_process').execSync /* * Add a formatted object to given verifyList. + * Some kind of strange argument sorting: Message first, for easy parsing, data last for optional argument. */ -function addToVerifyList (list, message, status) { +function addToVerifyList (message, pass, list, data = {}) { list.push({ - pass: status, - message + pass, + message, + data }) } diff --git a/main.js b/main.js index 7e5fb8b3..814966e9 100644 --- a/main.js +++ b/main.js @@ -148,17 +148,17 @@ function checkDebugSettings () { if (process.argv[2] === '--none') { Object.keys(userData).forEach(challenge => { - userData[challenge].completed = false + userData[challenge].challengeComplete = false }) } if (process.argv[2] === '--some') { Object.keys(userData).forEach((challenge, index) => { - userData[challenge].completed = index < 6 + userData[challenge].challengeComplete = index < 6 }) } if (process.argv[2] === '--all') { Object.keys(userData).forEach(challenge => { - userData[challenge].completed = true + userData[challenge].challengeComplete = true }) }