1
mirror of https://github.com/jakejarvis/jakejarvis.git synced 2025-10-16 11:04:27 -04:00

move CLI code into this repo

This commit is contained in:
2021-01-30 09:52:18 -05:00
parent a03f53154b
commit e59e5f23bb
10 changed files with 2356 additions and 0 deletions

17
cli/src/cli.js Executable file
View File

@@ -0,0 +1,17 @@
#!/usr/bin/env node
'use strict';
const meow = require('meow');
const importJsx = require('import-jsx');
const React = require('react');
const {render} = require('ink');
const menu = importJsx('./menu');
meow(`
Usage
$ npx @jakejarvis/cli
`);
render(React.createElement(menu));

81
cli/src/menu.js Executable file
View File

@@ -0,0 +1,81 @@
'use strict';
const React = require('react');
const {Box, Text} = require('ink');
const BigText = require('ink-big-text');
const Gradient = require('ink-gradient');
const SelectInput = require('ink-select-input').default;
const open = require('open');
const handleSelect = item => {
if (item.url) {
open(item.url);
}
if (item.action) {
item.action();
}
};
const createItems = items => {
for (const item of items) {
item.key = item.url || item.label;
}
return items;
};
const items = createItems([
{
label: '🌎 Website',
url: 'https://jarv.is/'
},
{
label: '📝 Blog',
url: 'https://jarv.is/notes/'
},
{
label: '💾 GitHub',
url: 'https://github.com/jakejarvis'
},
{
label: '🐦 Twitter',
url: 'https://twitter.com/intent/user?screen_name=jakejarvis'
},
{
label: '📬 Email',
url: 'mailto:jake@jarv.is'
},
{
label: '🔐 PGP Key',
url: 'https://jrvs.io/pubkey'
},
{
label: '👔 Résumé (PDF)',
url: 'https://jrvs.io/resume'
},
{
label: '🐼 Panda Party',
url: 'https://nationalzoo.si.edu/webcams/panda-cam#maincontent'
},
{
label: '🚪 Quit',
action() {
process.exit();
}
}
]);
const menu = () => (
<Box flexDirection="column">
<Gradient name="pastel">
<BigText text="Jake Jarvis"/>
</Gradient>
<Box marginBottom={1}>
<Text> Front-End Developer Bostonian Freelance Open-Sourcerer</Text>
</Box>
<SelectInput items={items} onSelect={handleSelect}/>
</Box>
);
module.exports = menu;