-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
83 lines (68 loc) · 3.1 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
const { downloadSite } = require('./hoarder')
const prompt = require('prompt-sync')();
const fs = require('fs');
const open = require('open');
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database('db.sqlite');
if (!fs.existsSync('./sites/images')){
fs.mkdirSync('./sites/images', { recursive: true });
fs.mkdirSync('./sites/styles', { recursive: true });
}
let site = {
url: '',
name: ''
}
console.info(`
██░ ██ ▒█████ ▄▄▄ ██▀███ ▓█████▄ ▓█████ ██▀███
▓██░ ██▒▒██▒ ██▒▒████▄ ▓██ ▒ ██▒▒██▀ ██▌▓█ ▀ ▓██ ▒ ██▒
▒██▀▀██░▒██░ ██▒▒██ ▀█▄ ▓██ ░▄█ ▒░██ █▌▒███ ▓██ ░▄█ ▒
░▓█ ░██ ▒██ ██░░██▄▄▄▄██ ▒██▀▀█▄ ░▓█▄ ▌▒▓█ ▄ ▒██▀▀█▄
░▓█▒░██▓░ ████▓▒░ ▓█ ▓██▒░██▓ ▒██▒░▒████▓ ░▒████▒░██▓ ▒██▒
▒ ░░▒░▒░ ▒░▒░▒░ ▒▒ ▓▒█░░ ▒▓ ░▒▓░ ▒▒▓ ▒ ░░ ▒░ ░░ ▒▓ ░▒▓░
▒ ░▒░ ░ ░ ▒ ▒░ ▒ ▒▒ ░ ░▒ ░ ▒░ ░ ▒ ▒ ░ ░ ░ ░▒ ░ ▒░
░ ░░ ░░ ░ ░ ▒ ░ ▒ ░░ ░ ░ ░ ░ ░ ░░ ░
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
Welcome to the Hoarder CLI!
What would you like to do?
`)
function askForAction() {
const action = prompt(`Actions: [o]pen a website, [s]ave a website or [q]uit > `);
switch (action) {
case 'o':
openAWebsite()
break;
case 's':
saveAWebsite()
break;
case 'q':
process.exit()
break;
default:
askForAction()
break;
}
}
function saveAWebsite() {
site.url = prompt('Paste a link to a website here: > ');
site.name = prompt('Name of the file it will be stored in > ')
downloadSite(site.url, site.name)
}
async function openAWebsite() {
db.all("select * from websites", async function(err, rows) {
for (let index = 0; index < rows.length; index++) {
console.log(`[${index}] ${rows[index].name} (${rows[index].url})`)
}
const indexChosen = prompt('(number or a name) > ')
if (!/\d+/.test(indexChosen)) {
const result = rows.filter(obj => {
return obj.name === indexChosen
})
await open(__dirname + '/sites/' + indexChosen + '.html')
askForAction()
} else {
await open(__dirname + '/sites/' + rows[indexChosen].name + '.html')
askForAction()
}
})
}
askForAction()