From bc50d364149115cf5ab898cdf409bac274aea319 Mon Sep 17 00:00:00 2001 From: tacincorporated Date: Fri, 22 Feb 2019 15:30:35 -0800 Subject: [PATCH] Support editable packages with Pipfile. Remove editableFlag from .serverless/requirements.txt when using Pipfile. --- lib/pipenv.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/pipenv.js b/lib/pipenv.js index f131620c..6718844c 100644 --- a/lib/pipenv.js +++ b/lib/pipenv.js @@ -1,6 +1,7 @@ const fse = require('fs-extra'); const path = require('path'); const { spawnSync } = require('child_process'); +const { EOL } = require('os'); /** * pipenv install @@ -36,8 +37,24 @@ function pipfileToRequirements() { fse.ensureDirSync(path.join(this.servicePath, '.serverless')); fse.writeFileSync( path.join(this.servicePath, '.serverless/requirements.txt'), - res.stdout + removeEditableFlagFromRequirementsString(res.stdout) ); } +/** + * + * @param requirementBuffer + * @returns Buffer with editable flags remove + */ +function removeEditableFlagFromRequirementsString(requirementBuffer) { + const flagStr = '-e '; + const lines = requirementBuffer.toString('utf8').split(EOL); + for (let i = 0; i < lines.length; i++) { + if (lines[i].startsWith(flagStr)) { + lines[i] = lines[i].substring(flagStr.length); + } + } + return Buffer.from(lines.join(EOL)); +} + module.exports = { pipfileToRequirements };