Size: a a a

2020 October 07

S

Snusmumriken in pro.lua
Дейлисендбокс сутки не даёт постить.
источник

IA

Ivan Azoyan in pro.lua
я в общем-то сюда захожу, когда надо что-то спросить
источник

IA

Ivan Azoyan in pro.lua
хочу чтобы чужие библиотеки были сабмодулями в моей, не хочу лезить в кишки править пути
источник

S

Snusmumriken in pro.lua
Ivan Azoyan
хочу чтобы чужие библиотеки были сабмодулями в моей, не хочу лезить в кишки править пути
local common = require( (...) .. ".common" )
Если реквайрил сам init как require("geopattern.sha1").
источник

IA

Ivan Azoyan in pro.lua
так это чужая библиотека
источник

S

Snusmumriken in pro.lua
Ну поправь её.
источник

IA

Ivan Azoyan in pro.lua
я и так её поправил, вопрос можно ли не править
источник

S

Snusmumriken in pro.lua
Там вот эта строка:
local common = require "geopattern.sha1.common"
источник

IA

Ivan Azoyan in pro.lua
там должно быть local common = require "sha1.common"
источник

IA

Ivan Azoyan in pro.lua
как в оригинале
источник

S

Snusmumriken in pro.lua
В таком виде не править не получится.
Библиотека сама думает откуда ей реквайрить свои сабмодули. Если либописатель не озаботился — надо править.
источник

S

Snusmumriken in pro.lua
Или добавить в package.path путь до geopattern.
источник

S

Snusmumriken in pro.lua
Либописатель просто решил: "Мой модуль должен всегда находиться в корне, потому что мне лень морочиться/я не знаю как организовывать древовидные модули относительно произвольного места".
источник

T

The Dormouse in pro.lua
Есть ещё довольно часто встречающийся способ (обхода проблемы с путями) "упаковать всё в один файл".
источник

IA

Ivan Azoyan in pro.lua
не, это же хреново, смысл использовать сабмодули же, чтобы если другая библитека обновилась ты бы просто её подтянул
источник

T

The Dormouse in pro.lua
Что хреново — не спорю. Просто мимо проходил, увидел разговор про пути библиотек.
источник

IA

Ivan Azoyan in pro.lua
вы можете вырубить бота? Такое ощущение, что этот чат перегружен как чат по джаваскрипту, но это не так
источник

S

Snusmumriken in pro.lua
Ivan Azoyan
не, это же хреново, смысл использовать сабмодули же, чтобы если другая библитека обновилась ты бы просто её подтянул
Тогда добавляй в package.path пути до "текущего скрипта".
Это можно сделать через arg[0].
источник

S

Snusmumriken in pro.lua
Типа,
local root = arg[0]:match("(.*[\\/])")
package.path =  root .. "?.lua;" .. root .. "?/init.lua;" .. package.path
источник

S

Snusmumriken in pro.lua
У меня есть специальный скрипт, для комфорного запуска других скриптов:
https://pastebin.com/k00zSt16

Он же прописывает все package.path'ы, чтобы можно было реквайрить сабмодули из той же директории.
Ещё он запускает через xpcall и добавляет debug.debug, шоб можно было смотреть текст ошибок и дабы консоль не закрывалась сразу по исполнению скрипта.

Использовать примерно так:
c:/lua/luajit.exe c:/path/to/script_runner.lua c:/path/to/script.lua
источник