On Tuesday, 21 June 2016 at 15:02:01 UTC, Guido wrote:
I'm the sort of person who learns by example, and what I was
saying is that there aren't enough examples online of how dub
is used in a practical setting.
There aren't that many commands for DUB on the command line. Most
of what you need can be gleaned from dub --help, but there is
also documentation online [1]. For package configurations, the
documentation at code.dlang.org covers everything [2] & [3], just
not always clearly. It's easy enough to get examples for that
from all of the projects listed in the registry [4]. Just click
through them to their github or bitbucket repositories and study
their dub.json/sdl files. And there's always the DUB forums [5.
I'm also the sort of person who doesn't trust toolchains that
need to download things every time from the internet just to
compile. Is this what dub is doing? In other words, when a
project is built using dub, does it use the local cache from
the last build by default, check for later versions, pull
things from the internet, etc? Or do I need -cache=local for
that?
DUB only downloads a package when it first needs it. It will only
update to a newer version for a given project if you run 'dub
upgrade' on that project. Given a project foo which relies on DUB
package libbar 1.0.0:
cd foo
dub build <-- checks if libbar 1.0.0 is in the cache, finds it
missing, downloads it
dub build <-- checks if libbar 1.0.0 is in the cache, finds it
dub upgrade <-- checks if the latest version is in the cache. If
not, downloads it
according to how you have specified your
dependency (see [6])
[1]
https://forum.rejectedsoftware.com/groups/rejectedsoftware.dub/
[2] https://code.dlang.org/package-format?lang=json
[3] https://code.dlang.org/package-format?lang=sdl
[4] https://code.dlang.org/
[5] http://forum.rejectedsoftware.com/groups/rejectedsoftware.dub/
[6] https://github.com/dlang/dub/wiki/Version-management