Commit graph

202 commits

Author SHA1 Message Date
David Genest
cf414c4370
Fix unarchiver (#86)
* rework archive uncompress

fix err shadoing that silenced archive errors

* remove git command duplication
2020-04-20 21:39:31 +02:00
sh0rez
5e141e10f9
test: update integration 2020-04-20 18:24:56 +02:00
Paweł Krupa
e9c1fdd4c0
*: update VERSION file to latest tag (#95) 2020-03-22 11:44:58 +01:00
Dominik Süß
74a7f9775e
feat: subgroups (#91)
Several code-hosters like GitLab allow to have subgroups. These were previously not suppported because we weren't able to tell if something was a subgroup or a subdir.

By letting users specify the `.git` part of the http string as well, this now work for all protocol, including https.
2020-03-17 17:45:34 +01:00
sh0rez
25fcc6dda0
doc: update README 2020-03-17 17:42:08 +01:00
sh0rez
eeea4677d2
feat: update single dependencies
The `update` command now takes dependency URI's like the `install`
command.

In contrast to `install`, `update` always pulls the latest version.
2020-03-17 17:40:33 +01:00
Frederic Branczyk
cd5e2945d2
Merge pull request #87 from jsonnet-bundler/ldflag-version
feat(cli): --version using ldflags
2020-03-02 18:18:52 +01:00
sh0rez
7beb30ed18 fix: generate-help-script
Binary path is different, need to adapt
2020-03-02 16:43:11 +01:00
sh0rez
4f76fe7be6 fix: makefile embedmd
Runs the Makefile on bash, so that pushd/popd works
2020-03-02 07:37:21 +00:00
Frederic Branczyk
cb0a14f809
Merge pull request #88 from jsonnet-bundler/fix-install
fix: proper parsing of v0
2020-03-01 08:36:02 +01:00
sh0rez
0912b958d7
doc: add license to spec/v1/v0.go 2020-02-29 16:52:08 +01:00
sh0rez
e00d1268e4
fix(spec/v1): properly handle empty subdirs 2020-02-29 16:50:56 +01:00
sh0rez
fcac885ce2
fix: unmarshal legacyImports 2020-02-28 23:22:41 +01:00
sh0rez
e28e7ff55b
fix(spec): properly translate v0 into v1 2020-02-28 23:07:46 +01:00
sh0rez
80c06a483a
feat(cli): --version using ldflags
The go-modules approach is a bit broken: https://github.com/golang/go/issues/29228
To resolve that, we now compute that version using `git describe` and
set it using `ldflags`.

While this is not as nice/builtin as the other approach, it at least
works all the time and across go versions.

Furthermore, I did refactor the Makefile in preparation for an AUR
package that builds from source and for building release artifacts in CI.
2020-02-28 19:40:37 +01:00
sh0rez
f8be6a936f
doc(release): CHANGELOG for v0.3.0 (#83) 2020-02-28 18:30:54 +01: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
Paul Gier
efe0c9e864
fix(deps): catch git parse errors on Unmarshal (#79)
Fixes the nil pointer error that currently happens with
invalid URL.
2020-02-11 23:00:01 +01:00
Matthias Loibl
4a1cd85aca
Merge pull request #84 from metalmatze/go-1.14-rc
Start testing Go 1.14 with rc0
2020-02-10 16:05:59 +01:00
Matthias Loibl
a6bc2c25ae
Start testing Go 1.14 with rc0 2020-02-10 10:17:29 +01:00
Hang Xie
1d729c9517
fix: allow other dirs than vendor (#80) 2020-02-08 14:46:51 +01:00
Cody Boggs
0ba0ff5522
feat: generic git https (#73)
Previously, only `github.com` was supported for HTTP cloning of packages.

With this change, every git host using the http protocol (GitHub, Gitlab, Gitea) is supported :D
2020-02-03 18:07:44 +01:00
Tom
8f14d63f95
fix: Git ssh-scp syntax (#69)
* fix(deps): proper git ssh scheme

* feat(deps): git scp style

Adds support for the git ssh-scp style (`git@github.com:user/repo.git`),
which is an alternative form for ssh (note no ssh://).

* fix(deps): githubSlug also matching gitSSH

* test(deps): other hosts than github
2020-01-29 16:58:25 +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
Matthias Loibl
184841238b
Merge pull request #65 from metalmatze/release-0.2.0
Prepare a v0.2.0 release
2020-01-08 13:32:19 +01:00
Matthias Loibl
20988370cc
Fix generate README script 2020-01-08 11:39:44 +01:00
Matthias Loibl
f1f1723381
Prepare a v0.2.0 release 2020-01-08 11:20:36 +01:00
sh0rez
376432fadd
feat(cli): version flag (#60)
* feat(cli): version flag

Adds a --version flag to jb. Only available on go versions greater than 1.12

* style: add license headers

* chore(ci): generate only on latest go

* fix: unique step names

* doc: include version in README help text

* fix: rebuild .drone.yml using drone.cli

* fix: remove race condidion from CI
2019-12-14 16:40:30 +01:00
Frederic Branczyk
d7829f6c7e
Merge pull request #59 from metalmatze/go-versions-ci
Test for 3 latest Go versions in CI
2019-11-12 09:30:02 +01:00
Matthias Loibl
442ccc505a
Revert to pkg/errors usage for Go 1.11 & 1.12 2019-11-12 01:41:33 +01:00
Matthias Loibl
f1b13bd42d
Test for 3 latest Go versions in CI 2019-11-10 13:44:10 +01:00
Viktor Erpylev
7b564ae8b5 Add install instructions to README.md (#54) 2019-11-08 15:45:20 +01:00
Hang Xie
013e3937e8 fix: unknown pathspec on tags (#58)
forces to fetch tags from the remote. This was dependent on `git-config` before and led to issues with some users where tags were not be fetched
2019-11-08 15:44:37 +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
Frederic Branczyk
7fc7c31856
Merge pull request #44 from sh0rez/rework-install
feat: rework install
2019-10-31 11:15:18 +01:00
sh0rez
db1aae9b08
fix: disable sha256 for local packages 2019-10-30 17:40:08 +01:00
sh0rez
4de4096004
fix: fail on invalid URI 2019-10-29 22:35:59 +01:00
sh0rez
61fd099392
chore(vendor): embedmd 2019-10-29 22:18:22 +01:00
sh0rez
b23411fe58
fix: add sum to integration test 2019-10-29 22:16:59 +01:00
sh0rez
12a8bc9d9d
chore(vendor): github.com/stretchr/testify/require 2019-10-29 22:10:16 +01:00
sh0rez
6e283c5310
test: jsonnetfile marshalling 2019-10-29 22:09:03 +01:00
sh0rez
1caefa556e
refactor: remove dead code 2019-10-29 22:08:31 +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
cc1d7ea3b8
feat: sort output of jsonnetfile
To keep the output deterministic, both `jsonnetfile.json` and the lockfile are
now sorted alphabetically by the packages name
2019-10-29 21:44:45 +01:00
sh0rez
ffd43cf94e
fix: ensure in update
moves the update command implementation to the new Ensure function
2019-10-29 21:44:41 +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
4b6e2d89e9
feat: check sum after download
To see if we actually got what we expected
2019-10-29 21:44:34 +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
sh0rez
a718f48cd8
refactor: dependency parsing
Refactors the dependency parsing function chain to evaluate the type of the
dependency right in `parseDependency` to make it clearer what is going on while
reading the code. Before, functions were returning if it was a different type,
which was not that clear from `parseDependency`.
2019-10-29 21:44:23 +01:00