DUNE-SUBST(1) Dune Manual DUNE-SUBST(1)

# [NAME](#NAME)

dune-subst - Substitute watermarks in source files.

# [SYNOPSIS](#SYNOPSIS)

**dune subst** \[**--build-info**] \[*OPTION*]…

# [DESCRIPTION](#DESCRIPTION)

Substitute **%%ID%%** strings in source files, in a similar fashion to what topkg does in the default configuration.

This command is only meant to be called when a user pins a package to its development version. Especially it replaces **%%VERSION%%** strings by the version obtained from the vcs. Currently only git is supported and the version is obtained from the output of:

```


  $ git describe --always --dirty --abbrev=7
```

**dune subst** substitutes the variables that topkg substitutes with the default configuration:

\- **%%NAME%%**, the name of the project (from the dune-project file)

\- **%%VERSION%%**, output of **git describe --always --dirty --abbrev=7**

\- **%%VERSION\_NUM%%**, same as **%%VERSION%%** but with a potential leading 'v' or 'V' dropped

\- **%%VCS\_COMMIT\_ID%%**, commit hash from the vcs

\- **%%PKG\_MAINTAINER%%**, contents of the **maintainer:** field from the opam file

\- **%%PKG\_AUTHORS%%**, contents of the **authors:** field from the opam file

\- **%%PKG\_HOMEPAGE%%**, contents of the **homepage:** field from the opam file

\- **%%PKG\_ISSUES%%**, contents of the **issues:** field from the opam file

\- **%%PKG\_DOC%%**, contents of the **doc:** field from the opam file

\- **%%PKG\_LICENSE%%**, contents of the **license:** field from the opam file

\- **%%PKG\_REPO%%**, contents of the **repo:** field from the opam file

In order to call **dune subst** when your package is pinned, add this line to the **build:** field of your opam file:

```


  [dune "subst"] {pinned}
```

Note that this command is meant to be called only from opam files and behaves a bit differently from other dune commands. In particular it doesn't try to detect the root and must be called from the root of the project.

# [OPTIONS](#OPTIONS)

**--build-info**

Show build information.

# [COMMON OPTIONS](#COMMON_OPTIONS)

These options are common to all commands.

**--debug-backtraces**

Always print exception backtraces.

**--help**\[=*FMT*] (default=**auto**)

Show this help in format *FMT*. The value *FMT* must be one of **auto**, **pager**, **groff** or **plain**. With **auto**, the format is **pager** or **plain** whenever the **TERM** env var is **dumb** or undefined.

**--version**

Show version information.

# [MORE HELP](#MORE_HELP)

Use \`**dune** *COMMAND* --help' for help on a single command.

# [EXIT STATUS](#EXIT_STATUS)

**dune subst** exits with:

0

on success.

1

if an error happened.

130

if it was interrupted by a signal.

# [BUGS](#BUGS)

Check bug reports at https://github.com/ocaml/dune/issues

# [SEE ALSO](#SEE_ALSO)

[dune(1)](/man/os/ocaml-dune/dune.1)

Dune 3.24.2

---

Document: dune-subst(1) from ocaml-dune 3.24.2-r3 (Chainguard OS)
Source: https://github.com/ocaml/dune
