From 1dbcf92336f642addfcf1ad742dbbde8ed53cb3b Mon Sep 17 00:00:00 2001 From: coderaiser Date: Tue, 14 May 2019 17:52:56 +0300 Subject: [PATCH] refactor(user-menu) menuName --- server/cloudcmd.js | 5 ++++- server/user-menu.js | 12 ++++++------ server/user-menu.spec.js | 10 ++++++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/server/cloudcmd.js b/server/cloudcmd.js index 5909f6db..873e4624 100644 --- a/server/cloudcmd.js +++ b/server/cloudcmd.js @@ -224,7 +224,10 @@ function cloudcmd(prefix, plugins, modules) { root, }), - userMenu, + userMenu({ + menuName: '.cloudcmd.menu.js', + }), + rest, route({ html: defaultHtml, diff --git a/server/user-menu.js b/server/user-menu.js index 162e6474..82a02c87 100644 --- a/server/user-menu.js +++ b/server/user-menu.js @@ -6,25 +6,24 @@ const {join} = require('path'); const {promisify} = require('util'); const tryToCatch = require('try-to-catch'); +const currify = require('currify'); const findUp = require('find-up'); const readFile = promisify(fs.readFile); -const menuName = '.cloudcmd.menu.js'; -const homeMenuPath = join(homedir(), menuName); -module.exports = async (req, res, next) => { +module.exports = currify(async({menuName}, req, res, next) => { if (req.url.indexOf('/api/v1/user-menu')) return next(); const {method} = req; if (method === 'GET') - return onGET(req.query, res); + return onGET(menuName, req.query, res); next(); -}; +}); -async function onGET({dir}, res) { +async function onGET(menuName, {dir}, res) { const [errorFind, currentMenuPath] = await tryToCatch(findUp, [ menuName, ], {cwd: dir}); @@ -37,6 +36,7 @@ async function onGET({dir}, res) { if (errorFind && errorFind.code === 'ENOENT') return res.send(''); + const homeMenuPath = join(homedir(), menuName); const menuPath = currentMenuPath || homeMenuPath; const [e, data] = await tryToCatch(readFile, menuPath, 'utf8'); diff --git a/server/user-menu.spec.js b/server/user-menu.spec.js index b350f284..0f2f0a3b 100644 --- a/server/user-menu.spec.js +++ b/server/user-menu.spec.js @@ -7,13 +7,19 @@ const test = require('supertape'); const serveOnce = require('serve-once'); const userMenu = require('./user-menu'); -const {request} = serveOnce(() => userMenu); +const {request} = serveOnce(userMenu); const userMenuPath = join(__dirname, '..', '.cloudcmd.menu.js'); const userMenuFile = fs.readFileSync(userMenuPath, 'utf8'); test('cloudcmd: user menu', async (t) => { - const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`); + const options = { + menuName: '.cloudcmd.menu.js', + }; + + const {body} = await request.get(`/api/v1/user-menu?dir=${__dirname}`, { + options, + }); t.equal(userMenuFile, body, 'should equal'); t.end();