From 96769e40eb388a6284e008910a93765d2e3e10ba Mon Sep 17 00:00:00 2001 From: Savil Srivastava <676452+savil@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:20:38 -0700 Subject: [PATCH 1/2] [build] use relative paths in devbox-build --- devbox.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/devbox.go b/devbox.go index b8b88c5da09..748cef398d1 100644 --- a/devbox.go +++ b/devbox.go @@ -147,8 +147,24 @@ func (d *Devbox) ShellPlan() (*plansdk.Plan, error) { // Plan creates a plan of the actions that devbox will take to generate its // shell environment. func (d *Devbox) BuildPlan() (*plansdk.Plan, error) { + + var relativeSrcDir = d.srcDir + // Only make the d.srcDir be relative, if it is an absolute path + // Ugly hack to make tests work. + if abs, err := filepath.Abs(d.srcDir); err != nil || abs == d.srcDir { + + wd, err := os.Getwd() + if err != nil { + return nil, err + } + relativeSrcDir, err = filepath.Rel(wd, d.srcDir) + if err != nil { + return nil, err + } + } + userPlan := d.convertToPlan() - buildPlan, err := planner.GetBuildPlan(d.srcDir) + buildPlan, err := planner.GetBuildPlan(relativeSrcDir) if err != nil { return nil, err } From d3137eb8fda45729b4c35a7834d1e35a510d4f38 Mon Sep 17 00:00:00 2001 From: Savil Srivastava <676452+savil@users.noreply.github.com> Date: Wed, 5 Oct 2022 21:35:49 -0700 Subject: [PATCH 2/2] [nodejs planner] InputFiles should take paths relative to devbox.json, and not combined with srcDir --- devbox.go | 18 +----------------- planner/languages/javascript/nodejs_planner.go | 14 +++++++------- testdata/nodejs/nodejs-18/index.js | 1 + 3 files changed, 9 insertions(+), 24 deletions(-) diff --git a/devbox.go b/devbox.go index 748cef398d1..b8b88c5da09 100644 --- a/devbox.go +++ b/devbox.go @@ -147,24 +147,8 @@ func (d *Devbox) ShellPlan() (*plansdk.Plan, error) { // Plan creates a plan of the actions that devbox will take to generate its // shell environment. func (d *Devbox) BuildPlan() (*plansdk.Plan, error) { - - var relativeSrcDir = d.srcDir - // Only make the d.srcDir be relative, if it is an absolute path - // Ugly hack to make tests work. - if abs, err := filepath.Abs(d.srcDir); err != nil || abs == d.srcDir { - - wd, err := os.Getwd() - if err != nil { - return nil, err - } - relativeSrcDir, err = filepath.Rel(wd, d.srcDir) - if err != nil { - return nil, err - } - } - userPlan := d.convertToPlan() - buildPlan, err := planner.GetBuildPlan(relativeSrcDir) + buildPlan, err := planner.GetBuildPlan(d.srcDir) if err != nil { return nil, err } diff --git a/planner/languages/javascript/nodejs_planner.go b/planner/languages/javascript/nodejs_planner.go index 1a5ce4ba86c..69bd0d019c7 100644 --- a/planner/languages/javascript/nodejs_planner.go +++ b/planner/languages/javascript/nodejs_planner.go @@ -115,17 +115,17 @@ func (p *Planner) packages(pkgManager string, project *nodeProject) []string { func (p *Planner) inputFiles(srcDir string) []string { inputFiles := []string{ - filepath.Join(srcDir, "package.json"), + "package.json", } - npmPkgLockPath := filepath.Join(srcDir, "package-lock.json") - if plansdk.FileExists(npmPkgLockPath) { - inputFiles = append(inputFiles, npmPkgLockPath) + npmPkgLockFile := "package-lock.json" + if plansdk.FileExists(filepath.Join(srcDir, npmPkgLockFile)) { + inputFiles = append(inputFiles, npmPkgLockFile) } - yarnPkgLockPath := filepath.Join(srcDir, "yarn.lock") - if plansdk.FileExists(yarnPkgLockPath) { - inputFiles = append(inputFiles, yarnPkgLockPath) + yarnPkgLockFile := "yarn.lock" + if plansdk.FileExists(filepath.Join(srcDir, yarnPkgLockFile)) { + inputFiles = append(inputFiles, yarnPkgLockFile) } return inputFiles diff --git a/testdata/nodejs/nodejs-18/index.js b/testdata/nodejs/nodejs-18/index.js index 5dec25c8dbd..7d19f112498 100644 --- a/testdata/nodejs/nodejs-18/index.js +++ b/testdata/nodejs/nodejs-18/index.js @@ -2,3 +2,4 @@ const NODE_MAJOR_VERSION = process.versions.node.split('.')[0]; if (NODE_MAJOR_VERSION !== "18") { throw new Error('Node version is not 18'); } +console.log("the NODE_MAJOR_VERSION is", NODE_MAJOR_VERSION)