* use filepath to check for known packages
this fixes an issue using windows. without this patch, jb would delete
the folder after installation since the path is not known
* reduce temp directory length by hashing
using this hash it is harder to reach the windows limit for filenames
and directories
* further reduce temp dir length
* do not build binaries for windows/amd*
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.
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.
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.
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.
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
* 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
* 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.
* 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