UNPKG

command-your-favorite

Version:

Launch your favorite websites

139 lines (111 loc) 3.04 kB
#!/usr/bin/env node const args = process.argv.slice(2) const command = args[0] const favorite = args[1] const url = args[2] import sqlite from 'better-sqlite3' const db = sqlite('./favorites.db'); const createTableQuery = ` CREATE TABLE IF NOT EXISTS favorites ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, url TEXT NOT NULL ) ` db.exec(createTableQuery) const argCount = args.length import {exec} from 'child_process' import open, {apps} from 'open' function displayUsage(){ console.log('ls : List all saved favorites') console.log('open <favorite> : Open a saved favorite') console.log('add <favorite> <URL> : add a new fav to some URL') console.log('rm <favorite> : revmove a saved favorite') } function checkBrowser(){ const browser = process.env?.BROWSER?.toLocaleLowerCase() let appName = browser switch (browser){ case 'chrome': appName = apps.chrome break case 'edge': appName = apps.edge break case 'firefox': appName = apps.firefox break } return appName } function openFavorite(favorite){ const row = db.prepare('SELECT * FROM favorites WHERE name = ?').get(favorite) if(!row){ console.log('Favorite', favorite, 'does not exist.') return } const url = row.url const browser = checkBrowser() if (browser){ open(url, {app: {name: appName}}) }else{ open(url) } exec(command, (error, stdout, stderr) => { if(error){ console.log('error: ', error.message) } if(stderr){ console.log('stderr:', stderr) } if (error || stderr){ return } console.log(stdout) }) } function add(favorite, url){ db.prepare('INSERT INTO favorites (name, url) VALUES (?, ?)').run(favorite, url) console.log('Added', favorite, url) } function rm(favorite){ db.prepare('DELETE FROM favorites WHERE name = ?').run(favorite) console.log('Removed', favorite) } function ls(){ const rows = db.prepare('SELECT * FROM favorites').all() console.log('All favorites:') rows.forEach((row) => console.log(`${row.name}: ${row.url}`)) } if (argCount === 0 || !['ls', 'open', 'rm', 'add'].includes(command)){ displayUsage() process.exit(1) } else{ switch (command){ case 'ls': ls() break case 'open': if (argCount < 2){ displayUsage() break } openFavorite(favorite) break case 'add': if (argCount < 2){ displayUsage() break } add(favorite, url) break case 'rm': if (argCount < 3){ displayUsage() break } rm(favorite) break } }