Commit graph

18 commits

Author SHA1 Message Date
Benoit Gagnon
9d24e141db rename "vendorDir" variable to "jsonnetPkgHomeDir"
this better matches the terminology used for the
config flag
2020-05-01 12:46:42 -04:00
Benoit Gagnon
13568d0b65 fix LocalPackage install for relative paths
The vendor dir (here called "dir") is already joined with the CWD
in installCommand(). it should not be joined again here.

Also adds a logging message to show that a local package was
installed.
2020-04-30 22:45:49 -04:00
sh0rez
fd5f7f108a
feat(install): skip dependencies
Allows `installing` a package without pulling dependencies of that
package. This comes in handy when having multiple directories on
`JPATH`, which overlay each other.

Because dependencies may be already present at lesser ranked import
paths, it's not required to pull them, when only needing to bump a
single one.
2020-04-22 22:34:02 +02:00
sh0rez
5e141e10f9
test: update integration 2020-04-20 18:24:56 +02:00
Matthias Loibl
bcd89fd33d
feat(spec): version field (#85)
Adds a `version` field to the `jsonnetfile.json`, so that `jb` can automatically recognize too old / too new schema versions, instead of panicking.
2020-02-28 17:41:49 +01:00
Tom
7b8a7836a4
feat: absolute imports (#63)
* feat: go-like import style

jb now creates a directory structure inside of vendor/ that is similar to how go
does (github.com/grafana/jsonnet-libs). This is reflected in the final import
paths, which means they will be go-like

* refactor(spec/deps): named regexs

* feat: make goImportStyle configurable

Defaults to off, can be enabled in `jsonnetfile.json`

* fix: integration test

* doc: license headers

* fix(deps): remove GO_IMPORT_STYLE

not an option anymore, will always do so and symlink

* feat: symlink to legacy location

* feat: allow to disable legacy links

* fix(test): legacyImports in integration tests

* fix(spec): test

* fix: respect legacyName aliases

It was possible to alias packages by changing `name` previously.

While names are now absolute (and computed), legacy links should still respect
old aliases to avoid breaking code.

* fix(test): integration

* fix(init): keep legacyImports enabled for now

* feat: rewrite imports

adds a command to automatically rewrite imports from legacy to absolute style

* fix(tool): rewrite confused by prefixing packages

When a package was a prefix of another one, it broke.
Fixed that by using a proper regular expression. Added a test to make sure it
works as expected

* Update cmd/jb/init.go

* fix: exclude local packages from legacy linking

They actually still use the old style, which is fine. LegacyLinking
messed them up, but from now on it just ignores symlinks that match a localPackage.
2020-01-24 08:02:34 +01:00
David Genest
f4417ac665 only write jsonnnet files if we made changes (#56)
Adding a dep, or updating a dependency version makes writes to the
jsonnet files.

We evaluate the changes on each of the files. An empty jsonnetfile.json
does not create a corresponding lockfile, as a missing lockfile is not
different from its previous (non existent).
2019-11-08 15:36:13 +01:00
sh0rez
4de4096004
fix: fail on invalid URI 2019-10-29 22:35:59 +01:00
sh0rez
0588b89c07
feat: minor improvements
- allow to install pkg that is already locked
- clean unknown files from vendor
- correctly handle checksums and locked versions (was accidentally ignoring
- these before)
2019-10-29 21:44:49 +01:00
sh0rez
6e3e7b2fdd
refactor: use a map instead of a slice
Packages are unique anyways so it makes sense to use a map to avoid having
duplicates.

For compatibility reasons custom json (un)marshallers hide this change from the
end user
2019-10-29 21:44:38 +01:00
sh0rez
36311f1601
feat: rewrite install procedure
rewrites the installation of packages from scratch to solve several issues with
the existing implementation:

- does not need to choose between lockfile and jsonnetfile anymore. The
jsonnetfile what to be installed, while the lockfile also has versions and
checksums of all packages, even nested ones.
- the lockfile is regenerated on every run, preserving the locked values
- downloaded packages are hashed using sha256 to make sure we receive what we
expect. If files on the local disk are modified, they are downloaded again.
2019-10-29 21:44:30 +01:00
sh0rez
71938456ae
refactor: switch to pkg/jsonnetfile
So far, `pkg` and `pkg/jsonnetfile` had overlapping functionality when it came
to choosing and loading jsonnetfiles.

This fully switches to the separate package `pkg/jsonnetfile` that seems to be
created for exactly this purpose
2019-10-29 21:44:27 +01:00
Matthias Loibl
d3bb1f4ea4
Use URI as name for packages location paths 2019-08-12 18:02:21 +02:00
Matthias Loibl
6ed6c3f3ec
For local dependencies check if abs path exists 2019-08-12 11:50:56 +02:00
Matthias Loibl
4630466006
Fix typo in parseDependency name and add tests 2019-07-23 14:00:24 -07:00
Matthias Loibl
9110b1417d
Accept paths instead of URLs 2019-07-23 14:00:19 -07:00
Matthias Loibl
42b0bb7ab2
Add license headers 2019-07-23 13:36:28 -07:00
Matthias Loibl
5fdb88b6f0
Extract cmd/jb/install.go 2019-07-23 13:29:26 -07:00