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".}- Исходный код Редактировать
template existsDir(args: varargs[untyped]): untyped {...}{. deprecated: "use 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