mirror of
https://github.com/osnr/TabFS.git
synced 2024-05-10 01:26:33 +02:00
extension: start adding some usage
s; rename withTab and fromScript
to routeForTab and routeFromScript
This commit is contained in:
parent
b948c235b8
commit
b8d0f3dab2
|
@ -154,6 +154,7 @@ const defineFile = (function() {
|
||||||
const Routes = {};
|
const Routes = {};
|
||||||
|
|
||||||
Routes["/tabs/create"] = {
|
Routes["/tabs/create"] = {
|
||||||
|
usage: 'echo "https://www.google.com" > $0',
|
||||||
async write({buf}) {
|
async write({buf}) {
|
||||||
const url = buf.trim();
|
const url = buf.trim();
|
||||||
await browser.tabs.create({url});
|
await browser.tabs.create({url});
|
||||||
|
@ -163,6 +164,7 @@ Routes["/tabs/create"] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
Routes["/tabs/by-id"] = {
|
Routes["/tabs/by-id"] = {
|
||||||
|
usage: 'ls $0',
|
||||||
async readdir() {
|
async readdir() {
|
||||||
const tabs = await browser.tabs.query({});
|
const tabs = await browser.tabs.query({});
|
||||||
return { entries: [".", "..", ...tabs.map(tab => String(tab.id))] };
|
return { entries: [".", "..", ...tabs.map(tab => String(tab.id))] };
|
||||||
|
@ -170,7 +172,7 @@ Routes["/tabs/by-id"] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
const withTab = (readHandler, writeHandler) => defineFile(async ({tabId}) => {
|
const routeForTab = (readHandler, writeHandler) => defineFile(async ({tabId}) => {
|
||||||
const tab = await browser.tabs.get(tabId);
|
const tab = await browser.tabs.get(tabId);
|
||||||
return readHandler(tab);
|
return readHandler(tab);
|
||||||
|
|
||||||
|
@ -178,27 +180,46 @@ Routes["/tabs/by-id"] = {
|
||||||
await browser.tabs.update(tabId, writeHandler(buf));
|
await browser.tabs.update(tabId, writeHandler(buf));
|
||||||
} : undefined);
|
} : undefined);
|
||||||
|
|
||||||
const fromScript = code => defineFile(async ({tabId}) => {
|
const routeFromScript = code => defineFile(async ({tabId}) => {
|
||||||
return (await browser.tabs.executeScript(tabId, {code}))[0];
|
return (await browser.tabs.executeScript(tabId, {code}))[0];
|
||||||
});
|
});
|
||||||
|
|
||||||
Routes["/tabs/by-id/#TAB_ID/url.txt"] = withTab(tab => tab.url + "\n", buf => ({ url: buf }));
|
Routes["/tabs/by-id/#TAB_ID/url.txt"] = {
|
||||||
Routes["/tabs/by-id/#TAB_ID/title.txt"] = withTab(tab => tab.title + "\n");
|
usage: ['cat $0',
|
||||||
Routes["/tabs/by-id/#TAB_ID/text.txt"] = fromScript(`document.body.innerText`);
|
'echo "https://www.google.com" > $0'],
|
||||||
Routes["/tabs/by-id/#TAB_ID/body.html"] = fromScript(`document.body.innerHTML`);
|
...routeForTab(tab => tab.url + "\n",
|
||||||
|
buf => ({ url: buf }))
|
||||||
|
};
|
||||||
|
Routes["/tabs/by-id/#TAB_ID/title.txt"] = {
|
||||||
|
usage: 'cat $0',
|
||||||
|
...routeForTab(tab => tab.title + "\n")
|
||||||
|
};
|
||||||
|
Routes["/tabs/by-id/#TAB_ID/text.txt"] = {
|
||||||
|
usage: 'cat $0',
|
||||||
|
...routeFromScript(`document.body.innerText`)
|
||||||
|
};
|
||||||
|
Routes["/tabs/by-id/#TAB_ID/body.html"] = {
|
||||||
|
usage: 'cat $0',
|
||||||
|
...routeFromScript(`document.body.innerHTML`)
|
||||||
|
};
|
||||||
|
|
||||||
// echo true > mnt/tabs/by-id/1644/active
|
// echo true > mnt/tabs/by-id/1644/active
|
||||||
// cat mnt/tabs/by-id/1644/active
|
// cat mnt/tabs/by-id/1644/active
|
||||||
Routes["/tabs/by-id/#TAB_ID/active"] = withTab(
|
Routes["/tabs/by-id/#TAB_ID/active"] = {
|
||||||
tab => JSON.stringify(tab.active) + '\n',
|
usage: ['cat $0',
|
||||||
// WEIRD: we do startsWith because you might end up with buf
|
'echo true > $0'],
|
||||||
// being "truee" (if it was "false", then someone wrote "true")
|
...routeForTab(
|
||||||
buf => ({ active: buf.startsWith("true") })
|
tab => JSON.stringify(tab.active) + '\n',
|
||||||
);
|
// WEIRD: we do startsWith because you might end up with buf
|
||||||
|
// being "truee" (if it was "false", then someone wrote "true")
|
||||||
|
buf => ({ active: buf.startsWith("true") })
|
||||||
|
)
|
||||||
|
};
|
||||||
})();
|
})();
|
||||||
(function() {
|
(function() {
|
||||||
const evals = {};
|
const evals = {};
|
||||||
Routes["/tabs/by-id/#TAB_ID/evals"] = {
|
Routes["/tabs/by-id/#TAB_ID/evals"] = {
|
||||||
|
usage: 'ls $0',
|
||||||
async readdir({path, tabId}) {
|
async readdir({path, tabId}) {
|
||||||
return { entries: [".", "..",
|
return { entries: [".", "..",
|
||||||
...Object.keys(evals[tabId] || {}),
|
...Object.keys(evals[tabId] || {}),
|
||||||
|
@ -213,6 +234,9 @@ Routes["/tabs/by-id"] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
Routes["/tabs/by-id/#TAB_ID/evals/:FILENAME"] = {
|
Routes["/tabs/by-id/#TAB_ID/evals/:FILENAME"] = {
|
||||||
|
usage: ['cat $0.result',
|
||||||
|
'echo "2 + 2" > $0'],
|
||||||
|
|
||||||
// NOTE: eval runs in extension's content script, not in original page JS context
|
// NOTE: eval runs in extension's content script, not in original page JS context
|
||||||
async mknod({tabId, filename, mode}) {
|
async mknod({tabId, filename, mode}) {
|
||||||
evals[tabId] = evals[tabId] || {};
|
evals[tabId] = evals[tabId] || {};
|
||||||
|
|
Loading…
Reference in a new issue