Spec-Zone.ru › Nim

system/nimscript

SourceEdit

Чтобы узнать о скриптах в Nim, см. NimScript

Типы

ScriptMode {.pure.} = enum
  Silent,                   ## Be silent.
  Verbose,                  ## Be verbose.
  Whatif                     ## Do not run commands, instead just echo what
                             ## would have been done.
Управляет поведением скрипта. Source Edit

Переменные

author: string
Поддержка Nimble: Автор пакета. Source Edit
backend: string
Поддержка Nimble: Бэкенд пакета. Source Edit
bin: seq[string] = @[]
Source Edit
binDir: string
Поддержка Nimble: Директория двоичных файлов пакета. Source Edit
description: string
Поддержка Nimble: Описание пакета. Source Edit
installDirs: seq[string] = @[]
Source Edit
installExt: seq[string] = @[]
Source Edit
installFiles: seq[string] = @[]
Source Edit
license: string
Поддержка Nimble: Лицензия пакета. Source Edit
mode: ScriptMode
Установите это значение, чтобы повлиять на поведение mkDir, rmDir, rmFile и т.д. Source Edit
packageName = ""
Поддержка Nimble: Установите это значение в имя пакета. Обычно это не требуется, так как имя файла nims используется по умолчанию. Source Edit
requiresData: seq[string] = @[]
Отображает список требований для чтения и записи. Source Edit
skipDirs: seq[string] = @[]
Source Edit
skipExt: seq[string] = @[]
Source Edit
skipFiles: seq[string] = @[]
Source Edit
srcDir: string
Поддержка Nimble: Директория исходных файлов пакета. Source Edit
version: string
Поддержка Nimble: Версия пакета. Source Edit

Константы

buildCPU {.magic: "BuildCPU".}: string = ""
Процессор, на котором выполняется этот сборка. Может отличаться от system.hostCPU для кросс-компиляций. Source Edit
buildOS {.magic: "BuildOS".}: string = ""
Операционная система, на которой выполняется этот сборка. Может отличаться от system.hostOS для кросс-компиляций. Source Edit

Процедуры

proc cd(dir: string) {....raises: [OSError], tags: [], forbids: [].}

Изменяет текущую директорию.

Изменение является постоянным для остальной части выполнения, так как это просто ярлык для os.setCurrentDir() . Используйте шаблон withDir(), если вы хотите произвести только временное изменение.

Исходный код Изменить
proc cmpic(a, b: string): int {....raises: [], tags: [], forbids: [].}
Сравнивает a и b без учёта регистра. Исходный код Изменить
proc cpDir(from, to: string) {....raises: [OSError],
                               tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Копирует директорию from в to. Исходный код Изменить
proc cpFile(from, to: string) {....raises: [OSError],
                                tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Копирует файл from в to. Исходный код Изменить
proc cppDefine(define: string) {....raises: [], tags: [], forbids: [].}
Уведомляет Nim о том, что define является препроцессором C #define и поэтому всегда требует искажения. Исходный код Изменить
proc delEnv(key: string) {....tags: [WriteIOEffect], raises: [], forbids: [].}
Удаляет переменную среды с именем key. Исходный код Изменить
proc dirExists(dir: string): bool {....tags: [ReadIOEffect], raises: [],
                                    forbids: [].}
Проверяет, существует ли директория dir. Исходный код Изменить
proc exec(command: string) {....raises: [OSError],
                             tags: [ExecIOEffect, WriteIOEffect], forbids: [].}
Выполняет внешнюю программу. Если внешняя программа завершается с ненулевым кодом выхода, возникает исключение OSError. Команда выполняется относительно текущего пути исходного кода.
Примечание: Если вам нужна версия exec которая возвращает код выхода и вывод текста команды, вы можете использовать system.gorgeEx.
Исходный код Изменить
proc exec(command: string; input: string; cache = "") {....raises: [OSError],
    tags: [ExecIOEffect, WriteIOEffect], forbids: [].}
Выполняет внешнюю программу. Если внешняя программа завершается с ненулевым кодом выхода, возникает исключение OSError.
Предупреждение: Эта версия exec выполняется относительно пути модуля nimscript, что влияет на то, как команда разрешает относительные пути. Поэтому, как правило, лучше использовать gorgeEx непосредственно, когда вам нужен больший контроль над средой выполнения или при работе с командами, которые обрабатывают относительные пути.
Исходный код Изменить
proc exists(key: string): bool {....raises: [], tags: [], forbids: [].}
Проверяет существование конфигурационного 'ключа', например 'gcc.options.always'. Исходный код Изменить
proc existsEnv(key: string): bool {....tags: [ReadIOEffect], raises: [],
                                    forbids: [].}
Проверяет существование переменной среды с именем key. Исходный код Изменить
proc fileExists(filename: string): bool {....tags: [ReadIOEffect], raises: [],
    forbids: [].}
Проверяет существование файла. Исходный код Изменить
proc findExe(bin: string): string {....raises: [], tags: [], forbids: [].}
Ищет исполняемый файл в текущей рабочей директории, а затем в директориях, указанных в переменной среды PATH. Возвращает "" если exe не найден. Исходный код Изменить
proc get(key: string): string {....raises: [], tags: [], forbids: [].}
Получает конфигурационный 'ключ', например 'gcc.options.always'. Исходный код Изменить
proc getCommand(): string {....raises: [], tags: [], forbids: [].}
Получает команду Nim, с которой был вызван компилятор, например "c", "js", "build", "help". Исходный код Изменить
proc getCurrentDir(): string {....raises: [], tags: [], forbids: [].}
Возвращает текущую рабочую директорию. Исходный код Изменить
proc getEnv(key: string; default = ""): string {....tags: [ReadIOEffect],
    raises: [], forbids: [].}
Получает переменную среды с именем key. Исходный код Изменить
proc hint(name: string; val: bool) {....raises: [], tags: [], forbids: [].}
Отключает или включает определённый совет. Исходный код Изменить
proc listDirs(dir: string): seq[string] {....raises: [OSError],
    tags: [ReadIOEffect], forbids: [].}
Выводит все поддиректории (не рекурсивно) в директории dir. Исходный код Изменить
proc listFiles(dir: string): seq[string] {....raises: [OSError],
    tags: [ReadIOEffect], forbids: [].}
Выводит все файлы (не рекурсивно) в директории dir. Исходный код Изменить
proc mkDir(dir: string) {....raises: [OSError], tags: [WriteIOEffect], forbids: [].}
Создаёт директорию dir, включая все необходимые поддиректории. Если директория уже существует, ошибка не генерируется. Исходный код Изменить
proc mvDir(from, to: string) {....raises: [OSError],
                               tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Перемещает директорию from в to. Исходный код Изменить
proc mvFile(from, to: string) {....raises: [OSError],
                                tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Перемещает файл from в to. Исходный код Изменить
proc nimcacheDir(): string {....raises: [], tags: [], forbids: [].}
Получает расположение 'nimcache'. Исходный код Изменить
proc paramCount(): int {....raises: [], tags: [], forbids: [].}
Получает количество параметров командной строки. Исходный код Изменить
proc paramStr(i: int): string {....raises: [], tags: [], forbids: [].}
Получает i-й параметр командной строки. Исходный код Изменить
proc patchFile(package, filename, replacement: string) {....raises: [], tags: [],
    forbids: [].}

Переопределяет расположение заданного файла, принадлежащего переданному пакету. Если replacement не является абсолютным путем, путь интерпретируется как локальный по отношению к файлу Nimscript, содержащему вызов patchFile, Nim's --path вообще не используется для разрешения имени файла! Компилятор также выполняет замену путей в replacement.

Пример:

patchFile("stdlib", "asyncdispatch", "patches/replacement")
Исходный код Редактировать
proc projectDir(): string {....raises: [], tags: [], forbids: [].}
Возвращает абсолютный каталог текущего проекта Исходный код Редактировать
proc projectName(): string {....raises: [], tags: [], forbids: [].}
Возвращает имя текущего проекта Исходный код Редактировать
proc projectPath(): string {....raises: [], tags: [], forbids: [].}
Возвращает абсолютный путь текущего проекта Исходный код Редактировать
proc put(key, value: string) {....raises: [], tags: [], forbids: [].}
Устанавливает конфигурационный ключ, например 'gcc.options.always', в его значение. Исходный код Редактировать
proc putEnv(key, val: string) {....tags: [WriteIOEffect], raises: [], forbids: [].}
Устанавливает значение переменной среды с именем key в val. Исходный код Редактировать
proc readAllFromStdin(): string {....raises: [IOError], tags: [ReadIOEffect],
                                  forbids: [].}
Читает все данные из stdin - блокируется до EOF, которое происходит при закрытии stdin Исходный код Редактировать
proc readLineFromStdin(): string {....raises: [IOError], tags: [ReadIOEffect],
                                   forbids: [].}
Читает строку данных из stdin - блокируется до n или EOF, которое происходит при закрытии stdin Исходный код Редактировать
proc requires(deps: varargs[string]) {....raises: [], tags: [], forbids: [].}
Поддержка Nimble: Вызовите эту функцию, чтобы установить список требований к вашему пакету Nimble. Исходный код Редактировать
proc rmDir(dir: string; checkDir = false) {....raises: [OSError],
    tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Удаляет каталог dir. Исходный код Редактировать
proc rmFile(file: string) {....raises: [OSError],
                            tags: [ReadIOEffect, WriteIOEffect], forbids: [].}
Удаляет file. Исходный код Редактировать
proc selfExe(): string {....deprecated: "Deprecated since v1.7; Use getCurrentCompilerExe",
                         raises: [], tags: [], forbids: [].}
Устарело: Устарело с v1.7; Используйте getCurrentCompilerExe
Возвращает исполняемый файл текущей программы nim или nimble. Исходный код Редактировать
proc selfExec(command: string) {....raises: [OSError],
                                 tags: [ExecIOEffect, WriteIOEffect],
                                 forbids: [].}
Выполняет внешнюю команду с помощью текущего исполняемого файла nim/nimble. Command не должно содержать "nim ". Исходный код Редактировать
proc setCommand(cmd: string; project = "") {....raises: [], tags: [], forbids: [].}
Устанавливает команду Nim, которая должна быть продолжена после завершения этого Nimscript. Исходный код Редактировать
proc switch(key: string; val = "") {....raises: [], tags: [], forbids: [].}
Устанавливает параметр командной строки Nim-компилятора, например switch("checks", "on"). Исходный код Редактировать
proc thisDir(): string {....raises: [], tags: [], forbids: [].}
Возвращает каталог текущего nims скрипт-файла. Его путь получен через currentSourcePath (хотя в настоящее время currentSourcePath разрешает символьные ссылки, в отличие от thisDir). Исходный код Редактировать
proc toDll(filename: string): string {....raises: [], tags: [], forbids: [].}
В Windows добавляет ".dll" к filename, в Posix генерирует "lib$filename.so". Исходный код Редактировать
proc toExe(filename: string): string {....raises: [], tags: [], forbids: [].}
В Windows добавляет ".exe" к filename, иначе возвращает filename без изменений. Исходный код Редактировать
proc warning(name: string; val: bool) {....raises: [], tags: [], forbids: [].}
Отключает или включает определенный предупреждающий сигнал. Исходный код Редактировать

Шаблоны

template `--`(key, val: untyped)

Является сокращением для switch Пример:

--path:somePath # same as switch("path", "somePath")
--path:"someOtherPath" # same as switch("path", "someOtherPath")
--hint:"[Conf]:off" # same as switch("hint", "[Conf]:off")
Исходный код Редактировать
template `--`(key: untyped)

Является сокращением для switch Пример:

--listCmd # same as switch("listCmd")
Исходный код Редактировать
template task(name: untyped; description: string; body: untyped): untyped

Определяет задачу. Поддерживаются скрытые задачи через пустое описание.

Пример:

task build, "default build is via the C backend":
  setCommand "c"

Для задачи с именем foo, этот шаблон генерирует задачу proc с именем fooTask. Это полезно, если вам нужно вызвать одну задачу из другой в вашем Nimscript.

Пример:

task foo, "foo":        # > nim foo
  echo "Running foo"    # Running foo

task bar, "bar":        # > nim bar
  echo "Running bar"    # Running bar
  fooTask()             # Running foo
Исходный код Редактировать
template withDir(dir: string; body: untyped): untyped

Временно изменяет текущий каталог.

Если вам нужна постоянная смена, используйте процедуру cd(). Пример использования:

# inside /some/path/
withDir "foo":
  # move to /some/path/foo/
# back in /some/path/
Исходный код Редактировать

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API