{"id":18841918,"url":"https://github.com/diskuv/diskuvbox","last_synced_at":"2025-04-14T07:31:20.150Z","repository":{"id":54048748,"uuid":"476972976","full_name":"diskuv/diskuvbox","owner":"diskuv","description":"Basic, cross-platform set of commands to manipulate and query the file system, and OCaml library.","archived":false,"fork":false,"pushed_at":"2024-09-03T22:08:53.000Z","size":310,"stargazers_count":18,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T21:12:41.631Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/diskuv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/.gitignore","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-02T06:52:24.000Z","updated_at":"2024-10-12T11:52:34.000Z","dependencies_parsed_at":"2024-11-08T02:53:17.141Z","dependency_job_id":"a36aef5b-6851-4d86-9b82-9f8b0ce4dc18","html_url":"https://github.com/diskuv/diskuvbox","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diskuv%2Fdiskuvbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diskuv%2Fdiskuvbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diskuv%2Fdiskuvbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/diskuv%2Fdiskuvbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/diskuv","download_url":"https://codeload.github.com/diskuv/diskuvbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248839355,"owners_count":21169798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T02:53:02.791Z","updated_at":"2025-04-14T07:31:19.723Z","avatar_url":"https://github.com/diskuv.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Diskuv Box\n\nA basic, cross-platform set of commands to manipulate and query the file\nsystem. Available with a [liberal open-source license](LICENSE) as a single\nbinary (`diskuvbox`, or `diskuvbox.exe` on\nWindows) or as an OCaml library with minimal dependencies.\n\nThe single binary design is similar to\n[busybox]. You can choose to\nrun a command like `diskuvbox copy-file` *or (PENDING) make a symlink from\n`diskuvbox` to `copy-file`*; either way the \"copy-file\" tooling will be invoked.\n\n`diskuvbox` meet the following standards:\n* Any printed output will be the same on all operating systems *with the default\n  options*. For example the file search command [find-up](#diskuvbox-find-up) will\n  print files it finds in `a/b/c` format, even on Windows. You will only get\n  operating system specific behavior (ex. printing `a\\b\\c` on Windows) if you\n  use options like `--native`. **Feel comfortable using the diskuvbox commands\n  in CRAM tests and expect scripts**.\n* On Windows, any failing command will provide a helpful error message if the\n  paths are over the Windows default 260 character pathname limit.\n* For advanced embedding scenarios, the OCaml bytecode form of `diskuvbox` will\n  only [dynamically load shared libraries](https://ocaml.org/manual/runtime.html#s:ocamlrun-dllpath)\n  that are present in standard OCaml installations: dllunix, dllthreads and dllcamlstr.\n\n**Quick Links**\n\n| Section      | Page                                                                   |\n| ------------ | ---------------------------------------------------------------------- |\n| Usage        | [Download binaries](#download-binaries)                                |\n| Usage        | [Add as an Opam Dependency](#add-as-an-opam-dependency)                |\n| Usage        | [Using in Dune cram tests](#using-in-dune-cram-tests)                  |\n| Usage        | [Using in Opam build steps](#using-in-opam-build-steps)                |\n| Usage        | [Using in Dune rules](#using-in-dune-rules)                            |\n| Box Commands | [Box Commands](#box-commands)                                          |\n| Box Library  | [Box Library](https://diskuv.github.io/diskuvbox/diskuvbox/index.html) |\n| Contributing | [Your Contributions](CONTRIBUTORS.md)                                  |\n\n## Usage\n\n### Download binaries\n\nDownload the latest binary from the [diskuvbox releases] site.\n\nAvailable for:\n* Windows/Intel 32-bit\n* Windows/Intel 64-bit\n* macOS/Intel\n* macOS/ARM64 (Apple Silicon M1 and M2)\n* Linux/Intel 32-bit\n* Linux/Intel 64-bit\n\n**Windows?** On a recently purchased Windows machine you may see:\n\n![image that vcruntime140.dll is missing](https://github.com/diskuv/dkml-workflows/raw/bf92f534506340d62055b5d24e04b94dfb07693f/images/vcruntime140_missing.png)\n\nInstall `vc_redist.x86.exe` on 32-bit Windows or `vc_redist.x64.exe` on 64-bit\nWindows to avoid that error. Both of those are available from the\n[diskuvbox releases] site.\n\n[diskuvbox releases]: https://github.com/diskuv/diskuvbox/releases\n\n### Add as an Opam Dependency\n\nIf you are an OCaml developer who creates or maintains an Opam package, add\nthe following to your `.opam` file:\n\n```powershell\ndepends: [\n  # ...\n  \"diskuvbox\" {\u003e= \"0.1.0\"}\n]\n```\n\nor the following to your `dune-project` if Dune auto-generates your opam files:\n\n```lisp\n(package\n  ; ...\n  (depends\n    ; ...\n    (diskuvbox (\u003e= 0.1.0))\n  )\n)\n```\n\n### Using in Dune cram tests\n\nFIRST, make sure you understand and have enabled [Dune Cram Tests](https://dune.readthedocs.io/en/latest/tests.html#cram-tests-1).\n\nSECOND, make sure you have [Added diskuvbox as an Opam Dependency](#add-as-an-opam-dependency).\n\nFINALLY, go ahead and use `diskuvbox` in your `.t` cram tests like so:\n\n\u003c!-- $MDX file=src/bin/tests/tree-README-example.t --\u003e\n```console\nUse your program. We'll pretend for this example that your program\ncreates a complex directory structure.\n  $ install -d a/b/c/d/e/f\n  $ install -d a/b2/c2/d2/e2/f2\n  $ install -d a/b2/c3/d3/e3/f3\n  $ install -d a/b2/c3/d4/e4/f4\n  $ install -d a/b2/c3/d4/e5/f5\n  $ install -d a/b2/c3/d4/e5/f6\n  $ touch a/b/x\n  $ touch a/b/c/y\n  $ touch a/b/c/d/z\n\nUse diskuvbox to print the directory tree. It should be reproducible\non any platform that Diskuv Box supports!\n  $ diskuvbox tree a --max-depth 10 --encoding UTF-8\n  a\n  ├── b/\n  │   ├── c/\n  │   │   ├── d/\n  │   │   │   ├── e/\n  │   │   │   │   └── f/\n  │   │   │   └── z\n  │   │   └── y\n  │   └── x\n  └── b2/\n      ├── c2/\n      │   └── d2/\n      │       └── e2/\n      │           └── f2/\n      └── c3/\n          ├── d3/\n          │   └── e3/\n          │       └── f3/\n          └── d4/\n              ├── e4/\n              │   └── f4/\n              └── e5/\n                  ├── f5/\n                  └── f6/\n```\n\n### Using in Opam `build` steps\n\nFIRST, make sure you have [Added diskuvbox as an Opam Dependency](#add-as-an-opam-dependency).\n\nSECOND, if you are sure that you *only* need diskuvbox for Opam build steps,\nchange your `.opam` file so it has a `{build}` filter. For example:\n\n```powershell\ndepends: [\n  # ...\n  \"diskuvbox\" {\u003e= \"0.1.0\" \u0026 build}\n]\n```\n\nor in your `dune-project` if you auto-generate your .opam files:\n\n```lisp\n(package\n  ; ...\n  (depends\n    ; ...\n    (diskuvbox (and (\u003e= 0.1.0) :build))\n  )\n)\n```\n\nFINALLY, go ahead and use `diskuvbox` in your .opam build steps like:\n\n```powershell\nbuild: [\n  # ...\n  [\"diskuvbox\" \"copy-file-into\" \"assets/icon.png\" \"assets/public.gpg\" \"%{_:share}%\"]\n]\n```\n\n### Using in Dune rules\n\nFIRST, make sure you have [Added diskuvbox as an Opam Dependency](#add-as-an-opam-dependency).\n\nTHEN, go ahead and use `diskuvbox` as `(run diskuvbox ...)` in the rules of\nyour `dune` files.\n\nFor example, in the source code for this project we have detailed `dune` rules\nthat ensure each OCaml source file always has our open-source Apache v2.0\nlicense at the top. We use `(run diskuvbox ...)` so that our already complex\nrules don't become even more complicated with platform specific hacks:\n\n\u003c!-- $MDX file=src/lib/dune.runlicense.inc --\u003e\n```lisp\n; This first rule creates \"corrected\" source code in the Dune build directory\n; that always has an Apache v2.0 license at the top of each file.\n(rule\n (targets diskuvbox.corrected.ml diskuvbox.corrected.mli)\n (deps\n  (:license %{project_root}/etc/license-header.txt)\n  (:conf    %{project_root}/etc/headache.conf))\n (action\n  (progn\n   ; `headache` adds/replaces headers in source code. It is documented at\n   ; https://github.com/Frama-C/headache/#readme\n   ;\n   ; 1. The `headache` program modifies files in-place, so we make a copy of\n   ;    the original file.\n   ; 2. On Windows `heachache` can fail with \"Permission denied\" if we don't\n   ;    set write permissions on the file.\n   ; `diskuvbox` can accomplish both goals on all its supported platforms.\n   (run diskuvbox copy-file -m 644 diskuvbox.ml  diskuvbox.corrected.ml)\n   (run diskuvbox copy-file -m 644 diskuvbox.mli diskuvbox.corrected.mli)\n   ; Add Apache v2.0 license to each file\n   (run headache -h %{license} -c %{conf} %{targets})\n   ;\n   ; `ocamlformat` is used so that our source code modification is idempotent.\n   ; (Advanced: Options chosen so that continuous integration tests work with\n   ; any version of `ocamlformat`.)\n   (run ocamlformat --inplace --disable-conf-files --enable-outside-detected-project %{targets}))))\n\n; These second set of rules let us type:\n;      dune build @runlicense --auto-promote\n;\n; Anytime we type that Dune will take the corrected source code from the Dune\n; build directory and use it to modify the original source code.\n(rule\n (alias runlicense)\n (action\n   (diff diskuvbox.ml  diskuvbox.corrected.ml)))\n(rule\n (alias runlicense)\n (action\n   (diff diskuvbox.mli diskuvbox.corrected.mli)))\n```\n\n## Box commands\n\n\u003e Looking for the **[OCaml library](https://diskuv.github.io/diskuvbox/diskuvbox/index.html)**?\n\u003e The library documentation is\n\u003e available at https://diskuv.github.io/diskuvbox/diskuvbox/index.html.\n\u003e Just use `opam install diskuvbox` (or `with-dkml opam install diskuvbox` with\n\u003e the Diskuv OCaml Windows distribution) to install Diskuv Box in your existing\n\u003e OCaml project. **Consider the API unstable until version 1.0.**\n\n\n| Command                                     | Description                                                               |\n| ------------------------------------------- | ------------------------------------------------------------------------- |\n| [copy-dir](#diskuvbox-copy-dir)             | Copy content of one or more source directories to a destination directory |\n| [copy-file](#diskuvbox-copy-file)           | Copy a source file to a destination file                                  |\n| [copy-file-into](#diskuvbox-copy-file-into) | Copy one or more files into a destination directory                       |\n| [find-up](#diskuvbox-find-up)               | Find a file in the current directory or one of its ancestors              |\n| [touch](#diskuvbox-touch)                   | Touch one or more files                                                   |\n| [tree](#diskuvbox-tree)                     | Print a directory tree                                                    |\n\nIf you would like to add or modify a Box command, head over to\n**[Your Contributions](CONTRIBUTORS.md)**.\n\n### diskuvbox copy-dir\n\n```console\n$ diskuvbox copy-dir --help\nNAME\n       diskuvbox-copy-dir - Copy content of one or more source directories to\n       a destination directory.\n\nSYNOPSIS\n       diskuvbox copy-dir [OPTION]… SRCDIR… DESTDIR\n\nDESCRIPTION\n       Copy content of one or more SRCDIR... directories to the DESTDIR\n       directory. copy-dir will follow symlinks.\n\nARGUMENTS\n       DESTDIR (required)\n           Destination directory. If DESTDIR does not exist it will be\n           created.\n\n       SRCDIR (required)\n           One or more source directories to copy. The command fails when a\n           SRCDIR does not exist.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       --prefix=VAL\n           A prefix that will be prepended to each destination file.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       --suffix=VAL\n           A suffix that will be appended to each destination file.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       copy-dir exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n### diskuvbox copy-file\n\n```console\n$ diskuvbox copy-file --help\nNAME\n       diskuvbox-copy-file - Copy a source file to a destination file.\n\nSYNOPSIS\n       diskuvbox copy-file [OPTION]… SRCFILE DESTFILE\n\nDESCRIPTION\n       Copy the SRCFILE to the DESTFILE. copy-file will follow symlinks.\n\nARGUMENTS\n       DESTFILE (required)\n           Destination file. If DESTFILE does not exist it will be created.\n\n       SRCFILE (required)\n           The source file to copy. The command fails when a SRCFILE does not\n           exist.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       -m VAL, --mode=VAL\n           The chmod mode permission of the destination file, in octal. If\n           not specified then the chmod mode permission of the source file is\n           used. Examples: 644, 755.\n\n       --prefix=VAL\n           A prefix that will be prepended to each destination file.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       --suffix=VAL\n           A suffix that will be appended to each destination file.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       copy-file exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n### diskuvbox copy-file-into\n\n```console\n$ diskuvbox copy-file-into --help\nNAME\n       diskuvbox-copy-file-into - Copy one or more files into a destination\n       directory.\n\nSYNOPSIS\n       diskuvbox copy-file-into [OPTION]… SRCFILE… DESTDIR\n\nDESCRIPTION\n       Copy one or more SRCFILE... files to the DESTDIR directory.\n       copy-files-into will follow symlinks.\n\nARGUMENTS\n       DESTDIR (required)\n           Destination directory. If DESTDIR does not exist it will be\n           created.\n\n       SRCFILE (required)\n           One or more source files to copy. The command fails when a SRCFILE\n           does not exist.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       -m VAL, --mode=VAL\n           The chmod mode permission of the destination file, in octal. If\n           not specified then the chmod mode permission of the source file is\n           used. Examples: 644, 755.\n\n       --prefix=VAL\n           A prefix that will be prepended to each destination file.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       --suffix=VAL\n           A suffix that will be appended to each destination file.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       copy-file-into exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n### diskuvbox find-up\n\n```console\n$ diskuvbox find-up --help\nNAME\n       diskuvbox-find-up - Find a file in the current directory or one of its\n       ancestors.\n\nSYNOPSIS\n       diskuvbox find-up [OPTION]… FROMDIR BASENAME…\n\nDESCRIPTION\n       Find a file that matches the name as one or more specified FILE...\n       files in the FROMDIR directory.\n\n       Will print the matching file if found. Otherwise will print nothing.\n\nARGUMENTS\n       BASENAME (required)\n           One or more basenames to search. The command fails when a BASENAME\n           is blank or has a directory separator.\n\n       FROMDIR (required)\n           Directory to search. The command fails when FROMDIR does not\n           exist.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       --native\n           Print files and directories in native format. On Windows the\n           native format uses backslashes as directory separators, while on\n           Unix (including macOS) the native format uses forward slashes. If\n           --native is not specified then all files and directories are\n           printed with the directory separators as forward slashes.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       find-up exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n### diskuvbox touch\n\n```console\n$ diskuvbox touch --help\nNAME\n       diskuvbox-touch-file - Touch one or more files.\n\nSYNOPSIS\n       diskuvbox touch-file [OPTION]… FILE…\n\nDESCRIPTION\n       Touch one or more FILE... files.\n\nARGUMENTS\n       FILE (required)\n           One or more files to touch. If a FILE does not exist it will be\n           created.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       touch-file exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n### diskuvbox tree\n\n```console\n$ diskuvbox tree --help\nNAME\n       diskuvbox-tree - Print a directory tree.\n\nSYNOPSIS\n       diskuvbox tree [OPTION]… DIR\n\nDESCRIPTION\n       Print the directory tree starting at the DIR directory. By default\n       only the DIR directory (the first level) is printed. Use --max-depth\n       to print deeper\n\nARGUMENTS\n       DIR (required)\n           Directory to print. The command fails when DIR does not exist.\n\nOPTIONS\n       --color=WHEN (absent=auto)\n           Colorize the output. WHEN must be one of auto, always or never.\n\n       -d VAL, --max-depth=VAL (absent=0)\n           Maximum depth to print. A maximum depth of 0 will never print\n           deeper than the name of the starting directory. A maximum depth of\n           1 will, at most, print the contents of the starting directory.\n           Defaults to 0\n\n       -e VAL, --encoding=VAL (absent=ASCII)\n           The encoding of the graphic characters printed: ASCII, UTF-8.\n           Defaults to ASCII\n\n       --native\n           Print files and directories in native format. On Windows the\n           native format uses backslashes as directory separators, while on\n           Unix (including macOS) the native format uses forward slashes. If\n           --native is not specified then all files and directories are\n           printed with the directory separators as forward slashes.\n\n       -q, --quiet\n           Be quiet. Takes over -v and --verbosity.\n\n       -v, --verbose\n           Increase verbosity. Repeatable, but more than twice does not bring\n           more.\n\n       --verbosity=LEVEL (absent=warning)\n           Be more or less verbose. LEVEL must be one of quiet, error,\n           warning, info or debug. Takes over -v.\n\nCOMMON OPTIONS\n       --help[=FMT] (default=auto)\n           Show this help in format FMT. The value FMT must be one of auto,\n           pager, groff or plain. With auto, the format is pager or plain\n           whenever the TERM env var is dumb or undefined.\n\n       --version\n           Show version information.\n\nEXIT STATUS\n       tree exits with the following status:\n\n       0   on success.\n\n       123 on indiscriminate errors reported on standard error.\n\n       124 on command line parsing errors.\n\n       125 on unexpected internal errors (bugs).\n\nSEE ALSO\n       diskuvbox(1)\n\n```\n\n## Contributions\n\nHead over to **[Your Contributions](CONTRIBUTORS.md)**.\n\n## Acknowledgements\n\nThe first implementations of Diskuv Box were implemented with the assistance of\nthe [OCaml Software Foundation (OCSF)](http://ocaml-sf.org),\na sub-foundation of the [INRIA Foundation](https://www.inria.fr).\n\nTwo OCaml libraries ([bos](https://erratique.ch/software/bos) and\n[cmdliner](https://erratique.ch/software/cmdliner)) are essential to Diskuv Box;\nthese libraries were created by [Daniel Bünzli](https://erratique.ch/profile).\n\n## Status\n\n| Status                                                                                                                                                          |\n| --------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [![Box tests](https://github.com/diskuv/diskuvbox/actions/workflows/test.yml/badge.svg)](https://github.com/diskuv/diskuvbox/actions/workflows/test.yml)        |\n| [![Syntax check](https://github.com/diskuv/diskuvbox/actions/workflows/syntax.yml/badge.svg)](https://github.com/diskuv/diskuvbox/actions/workflows/syntax.yml) |\n\n[busybox]: https://en.wikipedia.org/wiki/BusyBox\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiskuv%2Fdiskuvbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiskuv%2Fdiskuvbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiskuv%2Fdiskuvbox/lists"}