system/nimscript
SourceEditЧтобы узнать о скриптах в Nim, см. NimScript
Типы
Переменные
mode: ScriptMode
- Установите это значение, чтобы повлиять на поведение mkDir, rmDir, rmFile и т.д. 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: [].}- Возвращает исполняемый файл текущей программы 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