1
mirror of https://github.com/jakejarvis/jakejarvis.git synced 2025-04-26 12:18:28 -04:00
profile/cli/index.js

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 />);