├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── bug_report.md └── workflows │ ├── comment.yml │ └── issue.yml ├── .npmrc ├── BOBanner.ico ├── BOBanner.png ├── LICENSE ├── README.md ├── bin └── github-wiki-sidebar.js ├── favicon.ico ├── favicon.png ├── googlec4bd58bb8ffb4b7b.html └── package.json /.gitattributes: -------------------------------------------------------------------------------- 1 | * linguist-vendored 2 | *.js linguist-vendored=false 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: paypal.me/canneke 4 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: Bug report 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - Browser [e.g. chrome, safari] 28 | - Version [e.g. 22] (Visible top left in main menu) 29 | 30 | **Additional context** 31 | Add any other context about the problem here. 32 | -------------------------------------------------------------------------------- /.github/workflows/comment.yml: -------------------------------------------------------------------------------- 1 | name: Integrate Issue Comment 2 | 3 | on: 4 | issue_comment: 5 | types: [created, edited, deleted] 6 | 7 | jobs: 8 | issue_comment_integration: 9 | runs-on: ubuntu-latest 10 | name: Integrate Issue Comment 11 | env: 12 | ACTION_VERSION: CyanRYi/trello-github-integration@v3.0.0 13 | TRELLO_API_KEY: ${{ secrets.TRELLO_API_KEY }} 14 | TRELLO_API_TOKEN: ${{ secrets.TRELLO_API_TOKEN }} 15 | TRELLO_BOARD_ID: ${{ secrets.TRELLO_BOARD_ID }} 16 | TRELLO_TODO_LIST_ID: ${{ secrets.TRELLO_TODO_LIST_ID }} 17 | TRELLO_DONE_LIST_ID: ${{ secrets.TRELLO_DONE_LIST_ID }} 18 | TRELLO_MEMBER_MAP: ${{ secrets.TRELLO_MEMBER_MAP }} 19 | steps: 20 | - name: Add Comment 21 | id: comment-create 22 | if: ${{ github.event.action == 'created' }} 23 | uses: CyanRYi/trello-github-integration@v3.0.0 24 | with: 25 | trello-action: add_comment 26 | - name: Edit Comment 27 | id: comment-edit 28 | if: ${{ github.event.action == 'edited' }} 29 | uses: CyanRYi/trello-github-integration@v3.0.0 30 | with: 31 | trello-action: edit_comment 32 | - name: Delete Comment 33 | id: comment-delete 34 | if: ${{ github.event.action == 'deleted' }} 35 | uses: CyanRYi/trello-github-integration@v3.0.0 36 | with: 37 | trello-action: delete_comment 38 | -------------------------------------------------------------------------------- /.github/workflows/issue.yml: -------------------------------------------------------------------------------- 1 | name: Integrate Issue 2 | 3 | on: 4 | issues: 5 | types: [opened, reopened, edited, closed] 6 | 7 | jobs: 8 | issue_integration: 9 | runs-on: ubuntu-latest 10 | name: Integrate Issue 11 | env: 12 | TRELLO_API_KEY: ${{ secrets.TRELLO_API_KEY }} 13 | TRELLO_API_TOKEN: ${{ secrets.TRELLO_API_TOKEN }} 14 | TRELLO_BOARD_ID: ${{ secrets.TRELLO_BOARD_ID }} 15 | TRELLO_TODO_LIST_ID: ${{ secrets.TRELLO_TODO_LIST_ID }} 16 | TRELLO_DONE_LIST_ID: ${{ secrets.TRELLO_DONE_LIST_ID }} 17 | TRELLO_MEMBER_MAP: ${{ secrets.TRELLO_MEMBER_MAP }} 18 | steps: 19 | - name: Create Card 20 | id: card-create 21 | if: ${{ github.event.action == 'opened' }} 22 | uses: CyanRYi/trello-github-integration@v3.0.0 23 | with: 24 | trello-action: create_card 25 | - name: Edit Card 26 | id: card-edit 27 | if: ${{ github.event.action == 'edited' }} 28 | uses: CyanRYi/trello-github-integration@v3.0.0 29 | with: 30 | trello-action: edit_card 31 | - name: Close Card 32 | id: card-move-to-done 33 | if: ${{ github.event.action == 'closed' }} 34 | uses: CyanRYi/trello-github-integration@v3.0.0 35 | with: 36 | trello-action: move_card_to_done 37 | - name: Reopen Card 38 | id: card-move-to-backlog 39 | if: ${{ github.event.action == 'reopened' }} 40 | uses: CyanRYi/trello-github-integration@v3.0.0 41 | with: 42 | trello-action: move_card_to_todo 43 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | //npm.pkg.github.com/:_authToken=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 2 | @canpixel:registry=https://npm.pkg.github.com/ 3 | -------------------------------------------------------------------------------- /BOBanner.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CanPixel/BadOptics/4a9ae48c0b1eb564212b7530a70d8333e086b982/BOBanner.ico -------------------------------------------------------------------------------- /BOBanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CanPixel/BadOptics/4a9ae48c0b1eb564212b7530a70d8333e086b982/BOBanner.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (C) 2017-2019 8values 4 | Copyright (C) 2020-2021 SapplyValues 5 |
Icons made by Freepik from www.flaticon.com
6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy of 8 | this software and associated documentation files (the "Software"), to deal in 9 | the Software without restriction, including without limitation the rights to 10 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 11 | of the Software, and to permit persons to whom the Software is furnished to do 12 | so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | 25 | 26 | Community content is available under CC-BY-SA unless otherwise noted. 27 | https://creativecommons.org/licenses/by-sa/2.0/ 28 | 29 | Combining 8values, 9axes, InfValues, JREG's 100 dimensional political model, and the polcompball wiki all into one ideological game experience 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | # Welcome to Bad Optics! - The Gamified Compass 4 | 5 |

6 | 7 | GO TO WIKI 8 | 9 |

10 | 11 | 12 |

13 | 14 |
15 | 16 | # 👀 👨🏻 🧠 💭 🎩 🏴‍☠️ 💸 17 | 18 | _“Answer a series of political questions in a desperate attempt to please your ideologically divided populace. Have your ideology shift to match your values, to the love and horror of your citizens! Wage war! Make peace! Or do whatever.” 👔👨🏻_ 19 | 20 | 21 | Using a range of online political tests, we present to you: 22 | # THE GAMIFIED POLITICAL COMPASS [playable in browser!](https://canpixel.github.io/BadOptics/) 23 | 24 | Donate me some coffee! 25 | 26 | Take your ideology to the ULTIMATE TEST as this collect-a-thon makes you hoard all your political beliefs together into one incoherent word salad. 27 | The faith of the political climate is now within your hands! 28 | 29 | _You can’t please everyone, 30 | ...but wanna try? 👀_ 31 | 32 | # Quick Keys 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 |
Game ActionQuick Key
Answer Agree A
Answer Meh S / Space
Answer Disagree D
Close any open window X
View Toggle / Change View V
59 | 60 | [Go and take the test](https://canpixel.com/BadOptics/) 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
72 | 73 | **[DONATE TO THE DEV](http://paypal.me/canneke)** 74 | 75 | _Combining [8values](https://github.com/8values/), [altvalues](https://github.com/altvalues/), [infvalues](https://github.com/infvalues/), [9axes](https://github.com/9axes/), Jreg's 100 dimensional political compass, and the polcompball wiki into one ideologically exciting, anti-centrist game experience!_ 76 | 77 | Year of release: Anno 2021 78 | 79 | [PLAY NOW @ BadOptics.canpixel.com](www.Badoptics.CanPixel.com) 80 | 81 | [DONATE](http://paypal.me/canneke) 82 | 83 | www.canpixel.com 84 | 85 | Made by [Can Ur (CanPixel)](www.canpixel.com) 86 | __Co-Tailored with Jreg__ 87 | 88 | __Made by Can Ur 89 | 2020-2021__ 90 | [CanPixel.com](https://canpixel.com/gameprojects.php) 91 |
92 | Email me your inquiries - canur@canpixel.com 93 | 94 | 95 | --- 96 | 97 |
Icons made by Freepik from www.flaticon.com
98 | 99 | MIT License 100 | 101 | 102 | Copyright (C) 2017-2019 8values 103 | Copyright (C) 2020-2021 SapplyValues 104 | 105 | Permission is hereby granted, free of charge, to any person obtaining a copy of 106 | this software and associated documentation files (the "Software"), to deal in 107 | the Software without restriction, including without limitation the rights to 108 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 109 | of the Software, and to permit persons to whom the Software is furnished to do 110 | so, subject to the following conditions: 111 | 112 | The above copyright notice and this permission notice shall be included in all 113 | copies or substantial portions of the Software. 114 | 115 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 116 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 117 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 118 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 119 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 120 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 121 | SOFTWARE. 122 | -------------------------------------------------------------------------------- /bin/github-wiki-sidebar.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | /** 4 | * github-wiki-sidebar 5 | * Generates a GitHub wiki sidebar file with optional ordering an exclude list 6 | */ 7 | 'use strict'; 8 | const debug = require('debug')('github-wiki-sidebar'); 9 | const path = require('path'); 10 | const shell = require('shelljs'); 11 | const fs = require('fs'); 12 | const Console = require('console').Console; 13 | const inquirer = require('inquirer'); 14 | const chalk = require('chalk'); 15 | 16 | const myConsole = new Console(process.stdout, process.stderr); 17 | const argv = require('minimist')(process.argv.slice(2)); 18 | let baseDir = __dirname; 19 | let dataDir = path.join(baseDir, '../data'); 20 | let workDir = process.cwd(); 21 | let defaultOptions = require(path.join(dataDir, 'prototype-options.json')); 22 | let optionFilePath = path.join(workDir, 'options.json'); 23 | let localOptions = {}; 24 | try { 25 | fs.accessSync(optionFilePath, fs.constants.R_OK | fs.constants.W_OK); 26 | localOptions = require(optionFilePath); 27 | } catch (err) { 28 | myConsole.log('The options.json file is not present.'); 29 | } 30 | 31 | let doGit = argv['git-push'] || false; 32 | let skipOptions = argv['skip-options'] || false; 33 | let skipSave = argv['skip-save'] || false; 34 | let skipCredentials = argv['skip-credentials'] || false; 35 | const credentials = '\n[//]: # (generated by https://www.npmjs.com/package/github-wiki-sidebar)\n'; 36 | 37 | if (doGit && !shell.which('git')) { 38 | myConsole.error('Sorry, this option requires git to be installed!'); 39 | process.exit(1); 40 | } 41 | 42 | let action = 'enquire'; 43 | if (argv['silent']) action = 'silent'; 44 | if (argv['help']) action = 'help'; 45 | 46 | const buildSidebar = function(doSidebar = true, doClean = true, doOptionFile = null, doGit = false, 47 | skipCredentials = false) { 48 | 49 | if (doGit) { 50 | debug('Pushing results to origin'); 51 | shell.exec('git fetch origin'); 52 | shell.exec('git pull'); 53 | } 54 | 55 | if (doOptionFile) { 56 | debug('Generating the custom options.json file ...'); 57 | try { 58 | let fileContent = JSON.stringify(doOptionFile, null, 2); 59 | fs.writeFileSync(optionFilePath, fileContent); 60 | } catch (e) { 61 | myConsole.error('Failure running job!', e); 62 | process.exit(1); 63 | } 64 | } 65 | 66 | if (doSidebar) { 67 | debug('Build the _Sidebar.md file ...'); 68 | let pathBin = path.join(baseDir, '../node_modules/git-wiki-to-html/bin/git-wiki-to-html'); 69 | let result = shell.exec('node ' + pathBin + ' --template=markdown', {silent: true}).stdout; 70 | if (result.match(/DONE/g)) { 71 | let credentialStr = shell.ShellString(credentials); 72 | if (!skipCredentials) credentialStr.toEnd(path.join(workDir, '_Sidebar.md')); 73 | myConsole.log(chalk.bold('\n_Sidebar.md generated.')); 74 | } else { 75 | myConsole.log('Error generating _Sidebar.md: ' + result); 76 | } 77 | } 78 | 79 | if (doClean) { 80 | debug('Removing temporary options.json file'); 81 | shell.exec('rm ' + optionFilePath); 82 | } 83 | 84 | if (doGit) { 85 | debug('Pushing updates to git'); 86 | shell.exec('git add .'); 87 | shell.exec('git commit -am "Automatic update of _Sidebar.md from github-wiki-sidebar"'); 88 | shell.exec('git push origin master'); 89 | } 90 | 91 | myConsole.log(chalk.bold.white.bgGreen('\n//-- Job completed. ')); 92 | }; 93 | 94 | debug('Executing job %s', action); 95 | 96 | switch (action) { 97 | case 'help': 98 | myConsole.log(` 99 | NAME: 100 | github-wiki-sidebar 101 | 102 | SYNOPSIS 103 | github-wiki-sidebar [--silent] [--git-push] [--skip-credentials] [--skip-options] 104 | [--skip-sidebar] [--help] 105 | 106 | DESCRIPTION 107 | Executes the run job based on step by step user input - enquire mode. This is default mode for the job. 108 | 109 | silent Updates _Sidebar.md file based on the local option.json file 110 | 111 | git-push Updates repository before running job and push updates automatically at the end. 112 | 113 | skip-credentials 114 | Removes the hidden comment in the generated _Sidebar.md pointing to this package 115 | skip-options 116 | Not saving an option file 117 | skip-sidebar 118 | Not saving an option file 119 | `); 120 | break; 121 | case 'enquire': { 122 | myConsole.log(chalk.bold.white.bgGreen('//-- github-wiki-sidebar: enquire mode')); 123 | myConsole.log('Press to leave the default/saved options unchanged>\n'); 124 | // get the list of files 125 | const files = []; 126 | const filesExclude = []; 127 | const filesOrder = []; 128 | shell.ls('[!_]*.md').forEach((file) => { 129 | files.push(file); 130 | }); 131 | const filesExcluded = localOptions['rules'] && localOptions['rules']['exclude'] ? 132 | localOptions['rules']['exclude'] : []; 133 | files.forEach((item) => { filesExclude.push({name: item, checked: filesExcluded.indexOf(item) !== -1}); }); 134 | // TODO move utility methods to a separate file 135 | const reducer = (accumulator, currentValue, currentIndex) => { 136 | return accumulator + '\n' + currentIndex + ') ' + chalk.reset(currentValue); 137 | }; 138 | 139 | const getDisplayList = () => { 140 | let listStr = filesOrder.reduce(reducer, '\n') + chalk.reset('\n---\n'); 141 | return 'Change the priority/order of the items in menu' 142 | + chalk.reset(' ') 143 | + listStr; 144 | }; 145 | 146 | const getOrderFromLocals = () => { 147 | let localeList = localOptions['rules'] && localOptions['rules']['order'] ? localOptions['rules']['order'] : []; 148 | let defaultIds = []; 149 | localeList.forEach((item) => { 150 | if (filesOrder.indexOf(item) !== -1) { 151 | defaultIds.push(filesOrder.indexOf(item)); 152 | } 153 | }); 154 | return defaultIds.join(' '); 155 | }; 156 | 157 | let questions = [ 158 | { 159 | type: 'input', 160 | name: 'separator', 161 | message: 'Define the category separator for multi-level menu:', 162 | validate: (input) => { 163 | if (process.platform === 'win32') { 164 | return !!(input.match(/^[a-z#~ @_]+$/i)) || 'The following characters are allowed a-z#~ @_!'; 165 | } 166 | return !!(input.match(/^[a-z:#~ @_]+$/i)) || 'The following characters are allowed a-z:#~ @_!'; 167 | }, 168 | default: (localOptions['separator'] || defaultOptions['separator']).replace(/-/g, ' ') 169 | }, 170 | { 171 | type: 'input', 172 | name: 'linkTemplate', 173 | message: 'Define the format of the page links:', 174 | validate: (input) => { 175 | return !!(input.match(/%s/)) || 'The %s is missing from your format!'; 176 | }, 177 | default: localOptions['linkTemplate'] || defaultOptions['linkTemplate'] 178 | }, 179 | { 180 | type: 'input', 181 | name: 'category-1', 182 | message: 'Define the _Sidebar.md content template:', 183 | validate: (input) => { 184 | return !!(input.match(/%s/)) || 'The %s is missing from your format!'; 185 | }, 186 | default: localOptions['menu'] && localOptions['menu']['category-1'] ? 187 | localOptions['menu']['category-1'].replace('{{{subitems}}}\n', '%s') 188 | .replace(/\n/g, '\\n') : '%s' 189 | }, 190 | { 191 | type: 'checkbox', 192 | name: 'exclude', 193 | message: 'Select the items to be excluded from menu:', 194 | choices: filesExclude, 195 | default: '' 196 | }, 197 | { 198 | type: 'input', 199 | name: 'order', 200 | message: getDisplayList, 201 | default: getOrderFromLocals, 202 | when: (answers) => { 203 | let sepString = answers['separator'].replace(/ /g, '-'); 204 | files.forEach((item) => { 205 | if (!answers['exclude'].some((exclItem) => { 206 | return exclItem === item || item.indexOf(exclItem.replace('.md', sepString)) === 0; 207 | })) filesOrder.push(item); 208 | }); 209 | if (filesOrder.length === 0) { 210 | myConsole.log(chalk.bold.red('\nNo items left after excluded removed! \n')); 211 | process.exit(1); 212 | } 213 | return true; 214 | }, 215 | validate: (input) => { 216 | if (input === '' || input.match(/^[0-9]+([ ]{1,}[0-9]+)*$/)) { 217 | return true; 218 | } 219 | return 'Please enter a space separated list of numbers (ex: 0 2 1)'; 220 | } 221 | } 222 | ]; 223 | 224 | inquirer.prompt(questions).then(answers => { 225 | let options = Object.assign({}, defaultOptions); 226 | options['separator'] = answers['separator'].replace(/ /g, '-'); 227 | options['linkTemplate'] = answers['linkTemplate']; 228 | options['menu']['category-1'] = answers['category-1'] 229 | .replace(/\\n/g, '\n') 230 | .replace('%s', defaultOptions['menu']['category-1']); 231 | options['rules']['exclude'] = answers['exclude']; 232 | // build order 233 | if (answers['order']) { 234 | let orderIndexes = answers['order'] 235 | .toString() 236 | .split(' ') 237 | .filter((item) => { return item.trim() !== ''; }) 238 | .map((item) => { return filesOrder[parseInt(item)]; }); 239 | options['rules']['order'] = [... new Set([...orderIndexes])]; 240 | } 241 | // execute job 242 | buildSidebar(!skipSave, skipOptions, options, doGit, skipCredentials); 243 | }); 244 | break; 245 | } 246 | 247 | case 'silent': { 248 | myConsole.log(chalk.bold.white.bgGreen('//-- github-wiki-sidebar: enquire mode')); 249 | // if local file update it when modifiers / otherwise create temporary options file 250 | let options = localOptions || {}; 251 | if (argv['separator']) options['separator'] = argv['separator'].replace(/ /g, '-'); 252 | if (argv['link-template']) options['linkTemplate'] = argv['linkTemplate']; 253 | 254 | if (argv['menu-template']) { 255 | options['menu'] = options['menu'] || {}; 256 | options['menu']['category-1'] = argv['menu-template'] 257 | .replace(/\\n/g, '\n') 258 | .replace('%s', defaultOptions['menu']['category-1']); 259 | } 260 | 261 | options = Object.keys(options).length !== 0 ? options : null; 262 | buildSidebar(!skipSave, skipOptions, options, doGit, skipCredentials); 263 | } 264 | } 265 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CanPixel/BadOptics/4a9ae48c0b1eb564212b7530a70d8333e086b982/favicon.ico -------------------------------------------------------------------------------- /favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CanPixel/BadOptics/4a9ae48c0b1eb564212b7530a70d8333e086b982/favicon.png -------------------------------------------------------------------------------- /googlec4bd58bb8ffb4b7b.html: -------------------------------------------------------------------------------- 1 | google-site-verification: googlec4bd58bb8ffb4b7b.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-wiki-sidebar", 3 | "description": "Automaticaly generate a multi-level github wiki sidebar menu (_Sidebar.md) from the filenames in the wiki repository", 4 | "main": "bin/github-wiki-sidebar.js", 5 | "scripts": { 6 | "lint": "eslint index.js bin", 7 | "github-wiki-sidebar": "node ./bin/github-wiki-sidebar.js" 8 | }, 9 | "bin": { 10 | "github-wiki-sidebar": "./bin/github-wiki-sidebar.js" 11 | }, 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/adriantanasa/github-wiki-sidebar.git" 15 | }, 16 | "pre-commit": [ 17 | "lint" 18 | ], 19 | "engines": { 20 | "node": ">=6.11.0" 21 | }, 22 | "keywords": [ 23 | "github", 24 | "wiki", 25 | "sidebar", 26 | "github wiki", 27 | "github wiki menu", 28 | "github wiki sidebar", 29 | "wiki sidebar", 30 | "git wiki sidebar", 31 | "sidebar generator" 32 | ], 33 | "author": "Adrian Tanasa ", 34 | "license": "MIT", 35 | "bugs": { 36 | "url": "https://github.com/adriantanasa/github-wiki-sidebar/issues" 37 | }, 38 | "homepage": "https://github.com/adriantanasa/github-wiki-sidebar#readme", 39 | "dependencies": { 40 | "inquirer": "^7.0.5", 41 | "shelljs": "^0.8.2", 42 | "chalk": "^2.4.1" 43 | }, 44 | "devDependencies": { 45 | "eslint": "^4.19.1" 46 | } 47 | } 48 | --------------------------------------------------------------------------------