mirror of
https://github.com/TECHNOFAB11/jsonnet-bundler.git
synced 2025-12-12 08:00:05 +01:00
Merge pull request #100 from bgagnon/fix-relative-install
Fix LocalPackage install for relative paths
This commit is contained in:
commit
1c78d6cfcb
3 changed files with 79 additions and 2 deletions
|
|
@ -72,7 +72,8 @@ func installCommand(dir, jsonnetHome string, uris []string, single bool) int {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
locked, err := pkg.Ensure(jsonnetFile, filepath.Join(dir, jsonnetHome), lockFile.Dependencies)
|
jsonnetPkgHomeDir := filepath.Join(dir, jsonnetHome)
|
||||||
|
locked, err := pkg.Ensure(jsonnetFile, jsonnetPkgHomeDir, lockFile.Dependencies)
|
||||||
kingpin.FatalIfError(err, "failed to install packages")
|
kingpin.FatalIfError(err, "failed to install packages")
|
||||||
|
|
||||||
pkg.CleanLegacyName(jsonnetFile.Dependencies)
|
pkg.CleanLegacyName(jsonnetFile.Dependencies)
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
|
"github.com/fatih/color"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
"github.com/jsonnet-bundler/jsonnet-bundler/spec/v1/deps"
|
"github.com/jsonnet-bundler/jsonnet-bundler/spec/v1/deps"
|
||||||
|
|
@ -41,7 +42,7 @@ func (p *LocalPackage) Install(ctx context.Context, name, dir, version string) (
|
||||||
}
|
}
|
||||||
|
|
||||||
oldname := filepath.Join(wd, p.Source.Directory)
|
oldname := filepath.Join(wd, p.Source.Directory)
|
||||||
newname := filepath.Join(wd, filepath.Join(dir, name))
|
newname := filepath.Join(dir, name)
|
||||||
|
|
||||||
err = os.RemoveAll(newname)
|
err = os.RemoveAll(newname)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -58,5 +59,7 @@ func (p *LocalPackage) Install(ctx context.Context, name, dir, version string) (
|
||||||
return "", errors.Wrap(err, "failed to create symlink for local dependency: %w")
|
return "", errors.Wrap(err, "failed to create symlink for local dependency: %w")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
color.Magenta("LOCAL %s -> %s", name, oldname)
|
||||||
|
|
||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
73
pkg/local_test.go
Normal file
73
pkg/local_test.go
Normal file
|
|
@ -0,0 +1,73 @@
|
||||||
|
package pkg
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"github.com/jsonnet-bundler/jsonnet-bundler/spec/v1/deps"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLocalInstall(t *testing.T) {
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
vendorDir, err := ioutil.TempDir(cwd, "vendor")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer os.RemoveAll(vendorDir)
|
||||||
|
|
||||||
|
pkgDir, err := ioutil.TempDir(cwd, "foo")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer os.RemoveAll(pkgDir)
|
||||||
|
|
||||||
|
relPath, err := filepath.Rel(cwd, pkgDir)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||||
|
lockVersion, err := p.Install(context.TODO(), "foo", vendorDir, "v1.0")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, lockVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLocalInstallSourceNotFound(t *testing.T) {
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
vendorDir, err := ioutil.TempDir(cwd, "vendor")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer os.RemoveAll(vendorDir)
|
||||||
|
|
||||||
|
relPath := "foo"
|
||||||
|
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||||
|
lockVersion, err := p.Install(context.TODO(), "foo", vendorDir, "v1.0")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Empty(t, lockVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLocalInstallTargetDoesNotExist(t *testing.T) {
|
||||||
|
cwd, err := os.Getwd()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
pkgDir, err := ioutil.TempDir(cwd, "foo")
|
||||||
|
assert.NoError(t, err)
|
||||||
|
defer os.RemoveAll(pkgDir)
|
||||||
|
|
||||||
|
relPath, err := filepath.Rel(cwd, pkgDir)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
p := NewLocalPackage(&deps.Local{Directory: relPath})
|
||||||
|
lockVersion, err := p.Install(context.TODO(), "foo", "vendor", "v1.0")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Empty(t, lockVersion)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLocalInstallSourceAndTargetDoNotExist(t *testing.T) {
|
||||||
|
p := NewLocalPackage(&deps.Local{Directory: "foo"})
|
||||||
|
lockVersion, err := p.Install(context.TODO(), "foo", "bar", "v1.0")
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Empty(t, lockVersion)
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue