mirror of
https://github.com/jakejarvis/jakejarvis.git
synced 2025-04-26 12:18:28 -04:00
86 lines
1.6 KiB
JavaScript
Executable File
86 lines
1.6 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
'use strict';
|
|
|
|
const meow = require('meow');
|
|
const React = require('react');
|
|
const {render, 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');
|
|
|
|
meow(`
|
|
Usage
|
|
$ npx @jakejarvis/cli
|
|
`);
|
|
|
|
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: '🐼 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>
|
|
);
|
|
|
|
render(<Menu />);
|