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

Reply via email to