W3cubDocs

/Nim

Module distros

This module implements the basics for Linux distribution ("distro") detection and the OS's native package manager. Its primary purpose is to produce output for Nimble packages like:

To complete the installation, run:

sudo apt-get libblas-dev
sudo apt-get libvoodoo

The above output could be the result of a code snippet like:

if detectOs(Ubuntu):
  foreignDep "lbiblas-dev"
  foreignDep "libvoodoo"

Imports

strutils, osproc

Types

Distribution {...}{.pure.} = enum
  Windows,                    ## some version of Windows
  Posix,                      ## some Posix system
  MacOSX,                     ## some version of OSX
  Linux,                      ## some version of Linux
  Ubuntu, Debian, Gentoo, Fedora, RedHat, OpenSUSE, Manjaro, Elementary, Zorin, CentOS,
  Deepin, ArchLinux, Antergos, PCLinuxOS, Mageia, LXLE, Solus, Lite, Slackware,
  Androidx86, Puppy, Peppermint, Tails, AntiX, Kali, SparkyLinux, Apricity, BlackLab,
  Bodhi, TrueOS, ArchBang, KaOS, WattOS, Korora, Simplicity, RemixOS, OpenMandriva,
  Netrunner, Alpine, BlackArch, Ultimate, Gecko, Parrot, KNOPPIX, GhostBSD, Sabayon,
  Salix, Q4OS, ClearOS, Container, ROSA, Zenwalk, Parabola, ChaletOS, BackBox, MXLinux,
  Vector, Maui, Qubes, RancherOS, Oracle, TinyCore, Robolinux, Trisquel, Voyager,
  Clonezilla, SteamOS, Absolute, NixOS, AUSTRUMI, Arya, Porteus, AVLinux, Elive,
  Bluestar, SliTaz, Solaris, Chakra, Wifislax, Scientific, ExTiX, Rockstor, GoboLinux,
  BSD, FreeBSD, OpenBSD, DragonFlyBSD, Haiku
the list of known distributions

Consts

LacksDevPackages = {Distribution.Gentoo, Distribution.Slackware,
                  Distribution.ArchLinux}

Procs

proc foreignCmd(cmd: string; requiresSudo = false) {...}{.raises: [], tags: [].}
Registers a foreign command to the intern list of commands that can be queried later.
proc foreignDepInstallCmd(foreignPackageName: string): (string, bool) {...}{.raises: [],
    tags: [].}
Returns the distro's native command line to install 'foreignPackageName' and whether it requires root/admin rights.
proc foreignDep(foreignPackageName: string) {...}{.raises: [], tags: [].}
Registers 'foreignPackageName' to the internal list of foreign deps. It is your job to ensure the package name
proc echoForeignDeps() {...}{.raises: [], tags: [].}
Writes the list of registered foreign deps to stdout.

Templates

template detectOs(d: untyped): bool
Distro/OS detection. For convenience the required Distribution. qualifier is added to the enum value.

© 2006–2018 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/distros.html