Spec-Zone.ru › Nim 1

nimscript

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

Типы

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

Переменные

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

Константы

buildOS: string = ""
Операционная система, на которой выполняется этот сборка. Может отличаться от system.hostOS при кросс-компиляции. Исходный код Изменить
buildCPU: string = ""
Центральный процессор, на котором выполняется этот сборка. Может отличаться от system.hostCPU при кросс-компиляции. Исходный код Изменить

Процедуры

proc getCurrentDir(): string {...}{.raises: [], tags: [].}
Получает текущую рабочую директорию. Исходный код Редактировать
proc paramStr(i: int): string {...}{.raises: [], tags: [].}
Получает i-ый параметр командной строки. Исходный код Редактировать
proc paramCount(): int {...}{.raises: [], tags: [].}
Получает количество параметров командной строки. Исходный код Редактировать
proc switch(key: string; val = "") {...}{.raises: [], tags: [].}
Устанавливает переключатель компилятора Nim в командной строке, например switch("checks", "on"). Исходный код Редактировать
proc warning(name: string; val: bool) {...}{.raises: [], tags: [].}
Отключает или включает определённый предупреждающий сигнал. Исходный код Редактировать
proc hint(name: string; val: bool) {...}{.raises: [], tags: [].}
Отключает или включает определённый подсказку. Исходный код Редактировать
proc patchFile(package, filename, replacement: string) {...}{.raises: [], tags: [].}

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

Пример:

patchFile("stdlib", "asyncdispatch", "patches/replacement")
Исходный код Редактировать
proc getCommand(): string {...}{.raises: [], tags: [].}
Получает команду Nim, с которой был вызван компилятор, например "c", "js", "build", "help". Исходный код Редактировать
proc setCommand(cmd: string; project = "") {...}{.raises: [], tags: [].}
Устанавливает команду Nim, которая должна быть продолжена после завершения данного Nimscript. Исходный код Редактировать
proc cmpic(a, b: string): int {...}{.raises: [], tags: [].}
Сравнивает a и b без учёта регистра. Исходный код Редактировать
proc getEnv(key: string; default = ""): string {...}{.tags: [ReadIOEffect],
    raises: [].}
Получает переменную окружения с именем key. Исходный код Редактировать
proc existsEnv(key: string): bool {...}{.tags: [ReadIOEffect], raises: [].}
Проверяет наличие переменной окружения с именем key. Исходный код Редактировать
proc putEnv(key, val: string) {...}{.tags: [WriteIOEffect], raises: [].}
Устанавливает значение переменной окружения с именем key на val. Исходный код Редактировать
proc delEnv(key: string) {...}{.tags: [WriteIOEffect], raises: [].}
Удаляет переменную окружения с именем key. Исходный код Редактировать
proc fileExists(filename: string): bool {...}{.tags: [ReadIOEffect], raises: [].}
Проверяет существование файла. Исходный код Редактировать
proc dirExists(dir: string): bool {...}{.tags: [ReadIOEffect], raises: [].}
Проверяет существование директории dir. Исходный код Редактировать
proc selfExe(): string {...}{.raises: [], tags: [].}
Возвращает исполняемый файл nim или nimble, который в данный момент выполняется. Исходный код Редактировать
proc toExe(filename: string): string {...}{.raises: [], tags: [].}
В Windows добавляет ".exe" к filename, в противном случае возвращает filename без изменений. Исходный код Редактировать
proc toDll(filename: string): string {...}{.raises: [], tags: [].}
В Windows добавляет ".dll" к filename, в Posix генерирует "lib$filename.so". Исходный код Редактировать
proc listDirs(dir: string): seq[string] {...}{.raises: [OSError],
    tags: [ReadIOEffect].}
Перечисляет все поддиректории (без рекурсии) в директории dir. Исходный код Редактировать
proc listFiles(dir: string): seq[string] {...}{.raises: [OSError],
    tags: [ReadIOEffect].}
Перечисляет все файлы (без рекурсии) в директории dir. Исходный код Редактировать
proc rmDir(dir: string; checkDir = false) {...}{.raises: [OSError],
    tags: [ReadIOEffect, WriteIOEffect].}
Удаляет директорию dir. Исходный код Редактировать
proc rmFile(file: string) {...}{.raises: [OSError],
                            tags: [ReadIOEffect, WriteIOEffect].}
Удаляет file. Исходный код Редактировать
proc mkDir(dir: string) {...}{.raises: [OSError], tags: [WriteIOEffect].}
Создаёт директорию dir включая все необходимые поддиректории. Если директория уже существует, ошибка не генерируется. Исходный код Редактировать
proc mvFile(from, to: string) {...}{.raises: [OSError],
                                tags: [ReadIOEffect, WriteIOEffect].}
Перемещает файл from в to. Исходный код Редактировать
proc mvDir(from, to: string) {...}{.raises: [OSError],
                               tags: [ReadIOEffect, WriteIOEffect].}
Перемещает директорию from в to. Исходный код Редактировать
proc cpFile(from, to: string) {...}{.raises: [OSError],
                                tags: [ReadIOEffect, WriteIOEffect].}
Копирует файл from в to. Исходный код Редактировать
proc cpDir(from, to: string) {...}{.raises: [OSError],
                               tags: [ReadIOEffect, WriteIOEffect].}
Копирует директорию from в to. Исходный код Редактировать
proc exec(command: string) {...}{.raises: [OSError], tags: [ExecIOEffect].}

Выполняет внешний процесс. Если внешний процесс завершается с ненулевым кодом выхода, возникает исключение OSError.

Примечание: Если вам нужна версия exec которая возвращает код выхода и текстовый вывод команды, вы можете использовать system.gorgeEx.

Исходный код Редактировать
proc exec(command: string; input: string; cache = "") {...}{.raises: [OSError],
    tags: [ExecIOEffect].}
Выполняет внешний процесс. Если внешний процесс завершается с ненулевым кодом выхода, возникает исключение OSError. Исходный код Редактировать
proc selfExec(command: string) {...}{.raises: [OSError], tags: [ExecIOEffect].}
Выполняет внешнюю команду с помощью текущего исполняемого файла nim/nimble. Command не должно содержать части "nim ". Исходный код Редактировать
proc put(key, value: string) {...}{.raises: [], tags: [].}
Устанавливает конфигурационный ключ 'key', например 'gcc.options.always', на его значение. Исходный код Редактировать
proc get(key: string): string {...}{.raises: [], tags: [].}
Получает конфигурационный ключ 'key', например 'gcc.options.always'. Исходный код Редактировать
proc exists(key: string): bool {...}{.raises: [], tags: [].}
Проверяет существование конфигурации 'ключ', например, 'gcc.options.always'. Исходный код Редактировать
proc nimcacheDir(): string {...}{.raises: [], tags: [].}
Получает расположение 'nimcache'. Исходный код Редактировать
proc projectName(): string {...}{.raises: [], tags: [].}
Получает имя текущего проекта Исходный код Редактировать
proc projectDir(): string {...}{.raises: [], tags: [].}
Получает абсолютный путь к каталогу текущего проекта Исходный код Редактировать
proc projectPath(): string {...}{.raises: [], tags: [].}
Получает абсолютный путь текущего проекта Исходный код Редактировать
proc thisDir(): string {...}{.raises: [], tags: [].}
Получает каталог текущего nims файла скрипта. Его путь определяется с помощью currentSourcePath (хотя в настоящее время currentSourcePath разрешает символические ссылки, в отличие от thisDir). Исходный код Редактировать
proc cd(dir: string) {...}{.raises: [OSError], tags: [].}

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

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

Исходный код Редактировать
proc findExe(bin: string): string {...}{.raises: [], tags: [].}
Ищет bin в текущем каталоге, а затем в каталогах, указанных в переменной среды PATH. Возвращает "" если exe не найден. Исходный код Редактировать
proc cppDefine(define: string) {...}{.raises: [], tags: [].}
Сообщает Nim, что define является препроцессором C #define и поэтому всегда должен быть изменён. Исходный код Редактировать
proc readLineFromStdin(): TaintedString {...}{.raises: [IOError],
    tags: [ReadIOEffect].}
Читает строку данных из stdin — блокируется до n или EOF, которое происходит при закрытии stdin Исходный код Редактировать
proc readAllFromStdin(): TaintedString {...}{.raises: [IOError], tags: [ReadIOEffect].}
Читает все данные из stdin — блокируется до EOF, которое происходит при закрытии stdin Исходный код Редактировать
proc requires(deps: varargs[string]) {...}{.raises: [], tags: [].}
Поддержка Nimble: Вызовите эту функцию, чтобы установить список требований вашего пакета Nimble. Исходный код Редактировать

Шаблоны

template existsFile(args: varargs[untyped]): untyped {...}{.
    deprecated: "use fileExists".}
Устарело: используйте fileExists
Исходный код Редактировать
template existsDir(args: varargs[untyped]): untyped {...}{.
    deprecated: "use dirExists".}
Устарело: используйте dirExists
Исходный код Редактировать
template `--`(key, val: untyped)
Краткая запись для switch(astToStr(key), astToStr(val)). Исходный код Редактировать
template `--`(key: untyped)
Краткая запись для switch(astToStr(key). Исходный код Редактировать
template withDir(dir: string; body: untyped): untyped

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

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

withDir "foo":
  # inside foo
#back to last dir
Исходный код Редактировать
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
Исходный код Редактировать

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

Spec-Zone.ru

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