Pass commandline arguments to application
To pass command-line arguments to an application you're running, execute dub run <dub arguments> -- <application arguments>
.
Single-file packages
For small or script-like applications, DUB supports a special mode where the whole package is contained in a single .d file. The package recipe description can be embedded into code comments within the file:
#!/usr/bin/env dub /+ dub.sdl: name "hello" +/ void main() { import std.stdio : writeln; writeln("Hello, World!"); }
This application can be executed by running dub run --single hello.d
.
In addition to the normal method of passing commandline arguments, you can use the shorthand dub hello.d <arguments to hello>
. This shorthand and the optional shebang allow you to run applications via ./hello <arguments>
from your shell if you set the executable bit of the file.
Single-file packages cannot be used to create library packages.
Using dependencies not published on the registry
There are various options to use packages not published on the registry:
dub add-path
- Adds a local search directory. All direct subdirectories will be searched for packages. Local search directories are preferred over packages downloaded from the registry.
dub add-local
- Similar to the above, but only adds a single package directory.
dub add-override
- Overrides a certain version or version range of a package with another version, branch, or path. This can be used to change dependencies system-wide without modifying a package's description or selection files.
- Path-based dependencies
- Package descriptions in the
dub.json/dub.sdl
can specify a path instead of a version; this can be used with Git submodules or subtrees, or with a known directory layout, to use arbitrarily defined versions of a dependency. Note that this should only be used for non-public packages. - Path-based selections
- You can specify arbitrary versions, branches, and paths in the
dub.selections.json
file, even if they contradict the dependency specification of the packages involved (note that DUB will output a warning in that case).
Execute dub <command> -h
for more information on these commands.