EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
482 stars 107 forks source link

Определение текущего каталога при подключении библиотек по пути #176

Closed EvilBeaver closed 8 years ago

EvilBeaver commented 9 years ago

Originally reported by: Nikita Gryzlov (Bitbucket: nixel2007, GitHub: nixel2007)


Добрый день.
Пытаюсь реализовать следующий концепт:
oscript-library лежит в каталоге libs проекта.
Скрипт на 1Script лежит в папке "scripts" проекта. В скрипте подключение библиотеки идет через

#!oscript

#Использовать "libs/oscript-library/src/v8runner"

Открываю команду строку (текущий каталог - корневая папка проекта"), запускаю

#!cmd

oscript scripts\my_script.os

В таком варианте объявления путей скрипт выдает ошибку:

#!cmd

{Модуль path\to\project\scripts\my_script.os / Ошибка в строке: 2 / Библиотека не найдена libs/oscript-library/src/v8runner}

Обходной путь - подключение библиотеки через

#!oscript

#Использовать "../libs/oscript-library/src/v8runner"

Видимо, директива Использовать в качестве начального каталога берет текущее местоположение скрипта. При этом внутри скрипта функция ТекущийКаталог() корректно возвращает корень проекта.

На мой взгляд, логично было бы использовать ТекущийКаталог() как начальную папку для поиска подключаемых по пути библиотек.
Что скажете, товарищи?

P.S. Отдельно смущает указание в ошибке второй строки модуля, хотя это первая строка.


EvilBeaver commented 9 years ago

Original comment by Nikita Gryzlov (Bitbucket: nixel2007, GitHub: nixel2007):


Понятно. Спасибо за ответы! Закрываю.

EvilBeaver commented 9 years ago

Original comment by EvilBeaver (Bitbucket: EvilBeaver, GitHub: EvilBeaver):


http://oscript.io/downloads/archive/1_0_11

В документации исправлю, спасибо.

loader можно переопределить. Нужно положить в корень каталога библиотеки свой файл package-loader.os, тогда вызываться будет он, а не глобальный из корня lib

https://github.com/EvilBeaver/oscript-library/tree/develop/src/opm/src

Обратите внимание, opm использует собственный loader.

EvilBeaver commented 9 years ago

Original comment by artbear (Bitbucket: artbear, GitHub: artbear):


Эта фича документирована:

#!md

Имя библиотеки указано в кавычках - имя библиотеки интерпретируется, как файловый путь. Относительный путь считается от текущего (рабочего) каталога приложения.

#Использовать "lib/mylib" // явное указание пути к библиотеке

Под словом "приложение" понимается это запускаемый скрипт или собранное из скрипта приложение.

EvilBeaver commented 9 years ago

Original comment by Nikita Gryzlov (Bitbucket: nixel2007, GitHub: nixel2007):


И отвлеченный вопрос про библиотеки - я правильно понимаю, что переопределить вызов "package-loader.os" на свой собственный без указания libs.additional в конфиге oscript никак нельзя?