├── .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 |
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 | Game Action |
36 | Quick Key |
37 |
38 |
39 | Answer Agree |
40 | A |
41 |
42 |
43 | Answer Meh |
44 | S / Space |
45 |
46 |
47 | Answer Disagree |
48 | D |
49 |
50 |
51 | Close any open window |
52 | X |
53 |
54 |
55 | View Toggle / Change View |
56 | V |
57 |
58 |
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 |
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 |
--------------------------------------------------------------------------------