Commit graph

50 commits

Author SHA1 Message Date
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
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
david
f3c21baad8 restore symlinks from tar archive
fixes #50
2019-10-24 22:41:13 -04:00
Benoit Gagnon
ed7d84f846 update comments to reflect git install changes
Signed-off-by: Benoit Gagnon <benoit.gagnon@ubisoft.com>
2019-10-24 11:08:24 -04:00
Benoit Gagnon
1915ef519a relax the SHA1 regex to cover SHA1, SHA256 and any other length of SHA
Signed-off-by: Benoit Gagnon <benoit.gagnon@ubisoft.com>
2019-10-24 11:06:36 -04:00
Benoit Gagnon
2bf42f11cd use fmt.Errorf(...) instead of errors.new(fmt.Sprintf(...))
Signed-off-by: Benoit Gagnon <benoit.gagnon@ubisoft.com>
2019-10-24 11:05:54 -04:00
Benoit Gagnon
f09b41c7da
use regexp.MustCompile
Co-Authored-By: David Genest <david.genest@gmail.com>
2019-10-24 10:47:35 -04:00
Benoit Gagnon
a44fae09a0
declare Buffer instead of using NewBuffer
Co-Authored-By: David Genest <david.genest@gmail.com>
2019-10-24 10:46:51 -04:00
Benoit Gagnon
f4b09c811e replace ETag SHA1 assumption with an explicit call to git ls-remote
Not using an undocumented ETag header from the GitHub archive API is
probably for the best. This is slightly slower due to extra round-trip,
but it is still much faster than cloning the repository to resolve the
ref.

Signed-off-by: Benoit Gagnon <benoit.gagnon@ubisoft.com>
2019-10-23 10:52:39 -04:00
Matthias Loibl
b1501bbce7
Check local dependency symlink destition for existence 2019-10-09 15:25:53 +02:00
Benoit Gagnon
50eac0e70c move the extracted archive into place before exiting Install 2019-09-29 17:24:47 -04:00
Benoit Gagnon
41278d8ef4 undo typo in tarball url format 2019-09-28 11:43:10 -04:00
Benoit Gagnon
741e7f316f fall back to git if github archive download fails for any reason 2019-09-28 11:41:08 -04:00
Benoit Gagnon
2b485512c0 improve github archive download error reporting 2019-09-28 11:40:09 -04:00
Benoit Gagnon
524c820a94 use regex instead of prefix match to detect github remotes
this will allow the optimization to work for both ssh and https
2019-09-28 11:23:15 -04:00
Benoit Gagnon
76d85b1f49 honor header.Mode for directories found in tarballs 2019-09-28 11:04:49 -04:00
Benoit Gagnon
5b12e9c798 additional error checking 2019-09-28 10:57:02 -04:00
Benoit Gagnon
93c18a7d4d motivate the explicit f.Close() 2019-09-28 10:56:47 -04:00
Benoit Gagnon
b597b16173 use filepath.Join instead of string concatenation 2019-09-28 10:32:26 -04:00
Benoit Gagnon
1fe94dcf91 fix "errors" pkg double import 2019-09-28 10:26:47 -04:00
Benoit Gagnon
926830713e Merge remote-tracking branch 'origin/master' into git-clone-optim
# Conflicts:
#	pkg/git.go
2019-09-28 10:24:11 -04:00
Matthias Loibl
e1580b7968
Remove symlink before creating new ones 2019-08-12 18:16:31 +02:00
Benoit Gagnon
5e742d5339 Resolve commit SHA1 from GitHub archive ETag header 2019-07-30 22:50:39 -04:00
Benoit Gagnon
134b21a473 use Go-native untar and gunzip support to unpack github archives 2019-07-30 21:49:32 -04:00
Benoit Gagnon
ba93fb74c3 Download tarball archives from GitHub (wip) 2019-07-26 08:05:50 -04:00
Benoit Gagnon
671f860a19 Shallow fetch for Git packages
If the server supports it, fetch a specific
revision with --depth 1. Otherwise, fall back
to the normal fetch.

This replaces the previous "clone" operation. The bandwidth and time savings
can be significant depending on the history
of the repository (number of commits).
2019-07-24 23:02:14 -04:00
Benoit Gagnon
30d7929566 Use git sparse checkout whenever possible
If a SubDir is configured for the package,
everything but that directory will be thrown
away after the package is installed.
2019-07-24 22:59:53 -04:00
Benoit Gagnon
c9a5b0a6b2 Pass -n flag to git clone
There's an explicit git checkout command
issued moments later, so there's no need
to create a working copy during the clone.
2019-07-24 22:16:00 -04:00
Matthias Loibl
e4dcc3e116
Refactor git deps install and make local deps install work 2019-07-23 15:07:35 -07:00
Matthias Loibl
07801936c0
Create LocalSource as type for local dependencies 2019-07-23 14:01:25 -07:00
Matthias Loibl
9110b1417d
Accept paths instead of URLs 2019-07-23 14:00:19 -07:00
Matthias Loibl
30a3cde870
Make use of File and LockFile constants of jsonnetfile package 2019-07-23 13:59:47 -07:00
Matthias Loibl
42b0bb7ab2
Add license headers 2019-07-23 13:36:28 -07:00
Matthias Loibl
f71ef86d48
Create pkg/jsonnetfile to better encapsulate jsonnetfile things 2019-07-23 13:36:21 -07:00
Matthias Loibl
27c36f6160
pkg: Write tests for TestInsertDependency, TestFileExists, TestLoadJsonnetfile 2019-07-23 13:36:18 -07:00
davidovich
c914ece3df suppress detached head advice
This limits urelated output to the console when installing deps
2019-07-23 12:43:21 -04:00
davidovich
58b6d89d04 fix compile test failure 2019-07-10 17:57:29 -04:00
Matthias Loibl
c2599b641f
Print colored output for fetched package 2019-03-11 14:21:49 +01:00
Matthias Loibl
eddfcec0f5
Check for existing jsonnetfile.json before init 2018-08-08 10:35:20 +02:00
Frederic Branczyk
086d95926d
pkg: Correctly move locked dependencies 2018-08-02 08:47:43 +02:00
Frederic Branczyk
993f7564f9
Fix install from lock-file
Previously even when installing dependencies from a lockfile,
jsonnet-bundler would attempt to resolve versions of transitive
dependencies to their latest floating version. Instead when a lock-file
is specified jsonnet-bundler should just install the specified versions.
2018-08-01 14:02:59 +02:00
Frederic Branczyk
74c4caa0cf
Add correct lockfile handling 2018-07-25 13:57:37 +02:00
Frederic Branczyk
51388f041b
Fix no dependency inserted when previous array is empty 2018-04-25 09:22:17 +01:00
Frederic Branczyk
f69df626e3
Add ability to resolve and install transitive dependencies 2018-04-25 09:01:00 +01:00
Frederic Branczyk
cb59934d1d
Initial commit 2018-04-24 16:01:37 +01:00