Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New CLI command: pear data to print local database contents #525

Merged
merged 35 commits into from
Jan 21, 2025
Merged
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
0225e72
add CLI command `pear list`
AndreiRegiani Jan 6, 2025
e36dee1
add `cmd/list.js` and `sidecar/ops/list.js`
AndreiRegiani Jan 6, 2025
3fa84fc
list->data
AndreiRegiani Jan 7, 2025
c81292e
ops/data.js using Model
AndreiRegiani Jan 7, 2025
60edea4
cmd/data.js IPC and output format
AndreiRegiani Jan 13, 2025
31515ea
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 13, 2025
a024528
sync cmd <> ops
AndreiRegiani Jan 13, 2025
cad026a
use this.sidecar.mode, refinements
AndreiRegiani Jan 14, 2025
d8f4b47
--json support
AndreiRegiani Jan 14, 2025
442171d
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 14, 2025
bd009e0
`reset` merge conflict fix
AndreiRegiani Jan 14, 2025
e40d941
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 14, 2025
da4d1c5
pear data apps [link]
AndreiRegiani Jan 14, 2025
219c039
Fine tuning
AndreiRegiani Jan 14, 2025
8258865
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 14, 2025
b4378ae
data prints hex representation of encryption key
rafapaezbas Jan 15, 2025
c0279ab
toString('hex') may find a null, remove from GUI IPC
AndreiRegiani Jan 15, 2025
58edeff
ansi color styles
AndreiRegiani Jan 15, 2025
c7cd01b
--show-secrets
AndreiRegiani Jan 15, 2025
14a3bce
Add 09-data.test.js
AndreiRegiani Jan 16, 2025
7672fa9
flag: showSecrets -> secrets
AndreiRegiani Jan 16, 2025
e2e499e
Test implementation
AndreiRegiani Jan 17, 2025
bbf5480
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 17, 2025
c44b827
Conflict: 10-data.test.js
AndreiRegiani Jan 17, 2025
48df7b2
TEMP: pear-ipc alpha
AndreiRegiani Jan 17, 2025
64bc9eb
CI fix setDhtNodes
AndreiRegiani Jan 17, 2025
e126498
padding, secrets
AndreiRegiani Jan 20, 2025
6229b67
10-data-test.js: fix
AndreiRegiani Jan 20, 2025
fd16d0d
10-data.test.js: refinements
AndreiRegiani Jan 21, 2025
64c2f91
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 21, 2025
ecd8146
Merge branch 'main' into cli-list-bundles
AndreiRegiani Jan 21, 2025
29fc524
deriveEncryptionKey
AndreiRegiani Jan 21, 2025
a30f6c7
plan(16)
AndreiRegiani Jan 21, 2025
871d6b9
Merge branch 'cli-list-bundles' of github.com:holepunchto/pear into c…
AndreiRegiani Jan 21, 2025
1483378
updated pear-ipc
rafapaezbas Jan 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
--json support
AndreiRegiani committed Jan 14, 2025
commit d8f4b478300a5f3fb18b61667d779caf164a4811
43 changes: 24 additions & 19 deletions cmd/data.js
Original file line number Diff line number Diff line change
@@ -3,9 +3,9 @@ const parseLink = require('../lib/parse-link')
const { outputter } = require('./iface')
const { ERR_INVALID_INPUT } = require('../errors')

const appsOutput = (items) => {
let out = 'Installed apps:\n'
for (const bundle of items) {
const appsOutput = (bundles) => {
let out = 'Installed apps:\n\n'
for (const bundle of bundles) {
out += `- link: ${bundle.link}\n`
out += ` appStorage: ${bundle.appStorage}\n`
out += ` encryptionKey: ${bundle.encryptionKey}\n`
@@ -14,27 +14,27 @@ const appsOutput = (items) => {
return out
}

const linkOutput = (item) => {
let out = 'Pear app:\n'
out += `- link: ${item.link}\n`
out += ` appStorage: ${item.appStorage}\n`
out += ` encryptionKey: ${item.encryptionKey}\n`
out += ` tags: ${item.tags}\n`
const linkOutput = (bundle) => {
let out = 'Pear app:\n\n'
out += `- link: ${bundle.link}\n`
out += ` appStorage: ${bundle.appStorage}\n`
out += ` encryptionKey: ${bundle.encryptionKey}\n`
out += ` tags: ${bundle.tags}\n`
return out
}

const dhtOutput = (items) => {
let out = 'DHT known-nodes:\n'
for (const node of items) {
out += `- ${node.host}:${node.port}\n`
const dhtOutput = (nodes) => {
let out = 'DHT known-nodes:\n\n'
for (const node of nodes) {
out += `${node.host}:${node.port}\n`
}
return out
}

const output = outputter('data', {
apps: (res) => appsOutput(res),
link: (res) => linkOutput(res),
dht: (res) => dhtOutput(res)
apps: (data) => appsOutput(data),
link: (data) => linkOutput(data),
dht: (data) => dhtOutput(data)
})

module.exports = (ipc) => new Data(ipc)
@@ -45,23 +45,28 @@ class Data {
}

async apps (cmd) {
const { command } = cmd
const { json } = command.parent.flags
const result = await this.ipc.data({ resource: 'apps' })
await output(false, result, { tag: 'apps' }, this.ipc)
await output(json, result, { tag: 'apps' }, this.ipc)
}

async link (cmd) {
const { command } = cmd
const { json } = command.parent.flags
const link = command.args.link
const parsed = parseLink(link)
if (!parsed || !parsed.drive || !parsed.drive.key) {
throw ERR_INVALID_INPUT(`Link "${link}" is not a valid key`)
}
const result = await this.ipc.data({ resource: 'link', link })
await output(false, result, { tag: 'link' }, this.ipc)
await output(json, result, { tag: 'link' }, this.ipc)
}

async dht (cmd) {
const { command } = cmd
const { json } = command.parent.flags
const result = await this.ipc.data({ resource: 'dht' })
await output(false, result, { tag: 'dht' }, this.ipc)
await output(json, result, { tag: 'dht' }, this.ipc)
}
}