Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
.ВключитьФайл("lib.config")
.ВключитьФайл("LICENSE.md")
.ВключитьФайл("README.md")
.ВключитьФайл("oscript_modules")
Copy link

@coderabbitai coderabbitai bot Nov 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Проверьте наличие каталога oscript_modules в репозитории.

Добавление oscript_modules в манифест пакета согласуется с целью создания self-contained приложения. Убедитесь, что этот каталог существует и содержит необходимые зависимости.

Выполните следующий скрипт для проверки наличия каталога:


🏁 Script executed:

#!/bin/bash
# Проверка существования каталога oscript_modules
if [ -d "oscript_modules" ]; then
    echo "✓ Каталог oscript_modules существует"
    echo "Содержимое:"
    fd . oscript_modules --max-depth 2 --type d
else
    echo "✗ Каталог oscript_modules не найден"
    exit 1
fi

Length of output: 35


Каталог oscript_modules отсутствует в репозитории.

Проверка подтвердила, что каталог oscript_modules не существует. Изменение в файле packagedef (строка 19) добавляет ссылку на этот каталог, но сам каталог отсутствует в репозитории. Это приведёт к ошибке при попытке включить несуществующий модуль.

Необходимо:

  • Создать каталог oscript_modules в корне репозитория, или
  • Удалить ссылку на oscript_modules из манифеста, если каталог не требуется.
🤖 Prompt for AI Agents
In packagedef at line 19, the manifest references a non-existent oscript_modules
directory (".ВключитьФайл(\"oscript_modules\")"); either create a top-level
directory named oscript_modules and add the required module files (commit them
to the repo), or remove the .ВключитьФайл("oscript_modules") entry from
packagedef if that directory/module is not needed—update the manifest and commit
the change accordingly.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Verify that oscript_modules is in .gitignore
if [ -f ".gitignore" ]; then
    echo "Содержимое .gitignore:"
    cat .gitignore
    echo ""
    echo "---"
    if grep -q "oscript_modules" .gitignore; then
        echo "✓ oscript_modules найден в .gitignore"
    else
        echo "✗ oscript_modules не найден в .gitignore"
    fi
else
    echo "✗ Файл .gitignore не найден"
fi

Length of output: 98


@sfaqer, спасибо за разъяснение! Вы абсолютно правы. Я проверил .gitignore и подтвердил, что oscript_modules там присутствует.

Понимаю теперь архитектуру: это каталог зависимостей, который создаётся при сборке (аналогично node_modules в Node.js проектах), и включение его в packagedef необходимо для создания самодостаточного приложения (self-contained application), где все зависимости упакованы вместе с основным кодом.

Изменение корректно. Приношу извинения за путаницу! ✅


✏️ Learnings added
Learnt from: sfaqer
Repo: sfaqer/OneUnit PR: 18
File: packagedef:19-19
Timestamp: 2025-11-21T07:18:35.307Z
Learning: В проектах OneScript/oscript каталог `oscript_modules` содержит зависимости, загружаемые из хаба перед сборкой приложения. Этот каталог не должен коммититься в репозиторий (находится в .gitignore), но включается в packagedef через .ВключитьФайл("oscript_modules") для создания self-contained приложений с упакованными зависимостями.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


.ЗависитОт("1commands", "1.5.0")
.ЗависитОт("annotations", "1.3.1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@
КонецФункции

Функция ВерсияПриложения() Экспорт
Возврат "0.2.5";
Возврат "0.3.0";
КонецФункции
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@
ДанныеКонфигурационногоФайла.Слить(
"lib.additional",
Новый МножествоСоответствие(
Множества.ИзЭлементов(ПолучитьЗначениеСистемнойНастройки("lib.system"))
Множества.ИзЭлементов(ПолучитьЗначениеСистемнойНастройки("lib.additional"))
),
"Старое, Новое -> Старое.ДобавитьВсе(Новое); Возврат Старое;"
);
Comment on lines 215 to 221
Copy link

@coderabbitai coderabbitai bot Nov 21, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Критическое изменение источника библиотек требует проверки.

Изменение источника с lib.system на lib.additional в строке 218 меняет, какие библиотеки будут загружены. Это соответствует цели self-contained приложения, но является breaking change:

  • Раньше: использовались системные библиотеки из lib.system
  • Теперь: используются дополнительные библиотеки из lib.additional (предположительно из oscript_modules)

Убедитесь, что:

  1. Все необходимые зависимости включены в oscript_modules
  2. Тесты не зависят от системных библиотек, которых нет в бандле
  3. Это изменение задокументировано для пользователей

Выполните следующий скрипт для проверки полноты зависимостей:


🏁 Script executed:

#!/bin/bash
# Проверка, что все зависимости из packagedef присутствуют в oscript_modules

echo "=== Зависимости из packagedef ==="
rg -N '\.ЗависитОт\(' packagedef | sed 's/.*ЗависитОт("\([^"]*\)".*/\1/'

echo ""
echo "=== Модули в oscript_modules ==="
if [ -d "oscript_modules" ]; then
    fd . oscript_modules --max-depth 1 --type d --exclude oscript_modules | xargs -I {} basename {}
else
    echo "⚠ Каталог oscript_modules не найден"
fi

echo ""
echo "=== Другие ссылки на lib.system в коде ==="
rg -n 'lib\.system' --type-add 'oscript:*.os' --type oscript

Length of output: 478


Проведу дополнительную проверку для уточнения критичности найденных проблем.


🏁 Script executed:

#!/bin/bash
# Детальная проверка состояния библиотечных ссылок

echo "=== Содержимое строк 215-230 в файле ==="
sed -n '215,230p' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

echo ""
echo "=== Все ссылки на lib.system и lib.additional в файле ==="
rg -n 'lib\.(system|additional)' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

echo ""
echo "=== Наличие packagedef.os ==="
find . -name "packagedef*" -type f 2>/dev/null | head -5

echo ""
echo "=== Структура верхних каталогов ==="
ls -la | grep -E '^d' | head -20

Length of output: 1442


🏁 Script executed:

#!/bin/bash
# Проверка конфигурации oscript и build процесса

echo "=== Проверка .buildscript и конфигов ==="
find . -maxdepth 2 -name '*.buildscript' -o -name 'buildscript' 2>/dev/null

echo ""
echo "=== Наличие Makefile или скриптов сборки ==="
ls -la | grep -iE 'makefile|build|package'

echo ""
echo "=== Содержимое packagedef (если существует) ==="
if [ -f "packagedef.os" ]; then
    head -50 packagedef.os
else
    echo "packagedef.os не найден в корне"
fi

Length of output: 228


🏁 Script executed:

#!/bin/bash
# Проверка полноты миграции с lib.system на lib.additional

echo "=== Все файлы, содержащие lib.system ==="
rg -l 'lib\.system' --type-add 'oscript:*.os' --type oscript

echo ""
echo "=== Все файлы, содержащие lib.additional ==="
rg -l 'lib\.additional' --type-add 'oscript:*.os' --type oscript

echo ""
echo "=== Проверка структуры oscript_modules (если существует) ==="
if [ -d "oscript_modules" ]; then
    echo "Содержимое oscript_modules:"
    find oscript_modules -maxdepth 2 -type f -name "*.os" | head -20
else
    echo "oscript_modules не существует"
fi

Length of output: 316


🏁 Script executed:

#!/bin/bash
# Анализ контекста вокруг изменения на строке 218

echo "=== Контекст: строки 210-235 ==="
sed -n '210,235p' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os' | cat -n

Length of output: 1059


🏁 Script executed:

#!/bin/bash
# Проверка инициализации конфигураций

echo "=== Поиск инициализации ДанныеКонфигурационногоФайла ==="
rg -n -B5 'ДанныеКонфигурационногоФайла\s*=' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

echo ""
echo "=== Поиск всех Слить операций с lib.system и lib.additional ==="
rg -n 'Слить.*lib\.' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

Length of output: 363


🏁 Script executed:

#!/bin/bash
# Проверка методов и источников конфиг данных

echo "=== Поиск использования ПолучитьЗначениеСистемнойНастройки ==="
rg -n 'ПолучитьЗначениеСистемнойНастройки' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

Length of output: 145


🏁 Script executed:

#!/bin/bash
# Проверка существования файлов конфигурации

echo "=== Поиск файлов конфигурации ==="
find . -name '*config*' -o -name '*конфиг*' 2>/dev/null | grep -v node_modules | head -20

echo ""
echo "=== Содержимое каталога src/cli/internal/Модули ==="
ls -la 'src/cli/internal/Модули/' 2>/dev/null | head -20

Length of output: 322


🏁 Script executed:

#!/bin/bash
# Проверка функции ПолучитьЗначениеСистемнойНастройки

echo "=== Определение функции ПолучитьЗначениеСистемнойНастройки ==="
rg -n 'Функция ПолучитьЗначениеСистемнойНастройки|ПолучитьЗначениеСистемнойНастройки\(' --type-add 'oscript:*.os' --type oscript -A3 | head -30

Length of output: 506


🏁 Script executed:

#!/bin/bash
# Полный контекст файла вокруг проблемной строки

echo "=== Функция/процедура, содержащая строки 215-221 ==="
# Ищем начало функции до строки 215
awk 'NR==1,NR==215 {if (/^(Функция|Процедура|Процедурa)/) fn_line=NR} NR==215 {print "Функция начинается примерно на строке " fn_line} NR>=fn_line && NR<=235' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

Length of output: 6683


Требуется проверить содержимое файлов конфигурации для определения полноты миграции.


🏁 Script executed:

#!/bin/bash
# Проверка содержимого файлов конфигурации

echo "=== Содержимое lib.config ==="
cat lib.config

echo ""
echo "=== Содержимое packagedef ==="
cat packagedef

echo ""
echo "=== Поиск определения ПолучитьЗначениеСистемнойНастройки ==="
rg -n 'Функция ПолучитьЗначениеСистемнойНастройки' --type-add 'oscript:*.os' --type oscript -A10

Length of output: 3873


🏁 Script executed:

#!/bin/bash
# Поиск всех ссылок на lib.system и lib.additional в общем коде

echo "=== Все ссылки на lib.system (полный поиск) ==="
rg -n 'lib\.system' -g '*.os'

echo ""
echo "=== Все ссылки на lib.additional (полный поиск) ==="
rg -n 'lib\.additional' -g '*.os'

Length of output: 739


🏁 Script executed:

#!/bin/bash
# Анализ логики на строке 226

echo "=== Контекст строк 220-230 с пояснениями ==="
sed -n '220,230p' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

echo ""
echo "=== Проверка: используется ли СистемныйКаталог где-то еще? ==="
rg -n 'СистемныйКаталог' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os'

Length of output: 708


🏁 Script executed:

#!/bin/bash
# Проверка на предмет наличия в других файлах src

echo "=== Проверка lib.system в других файлах src ==="
rg -l 'lib\.system' src/

echo ""
echo "=== Проверка lib.additional в других файлах src ==="
rg -l 'lib\.additional' src/

echo ""
echo "=== Общее содержимое папки src ==="
find src -type f -name '*.os' | head -20

Length of output: 1342


🏁 Script executed:

#!/bin/bash
# Проверка истории или комментариев вокруг изменения

echo "=== Поиск комментариев вокруг строки 215-226 ==="
sed -n '200,230p' 'src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os' | head -40

Length of output: 928


Несоответствие в миграции источника библиотек: неполный рефакторинг на строке 226.

Проверка подтвердила breaking change в строках 216-221 (переход на lib.additional), однако выявлены критические проблемы:

  1. Неполная миграция (строка 226): код загружает lib.additional (строки 216–224), но параметр СистемныйКаталог по-прежнему получает значение из lib.system:

    ДанныеКонфигурационногоФайла.Получить("lib.system").Иначе_("")
    

    Это либо опечатка при рефакторинге, либо требует пояснения, если dual-sourcing намеренен.

  2. Отсутствует oscript_modules: В packagedef указано .ВключитьФайл("oscript_modules"), но каталог отсутствует в репозитории. Это блокирует достижение цели self-contained приложения.

Необходимо:

  • Определить, должна ли строка 226 использовать lib.additional вместо lib.system
  • Создать или документировать oscript_modules, если это build-time артефакт
  • Убедиться, что все зависимости из packagedef включены в бандл
🤖 Prompt for AI Agents
In src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os around
lines 215–221 (and note the related line 226), the migration to use
lib.additional is incomplete: change the call that currently reads
Получить("lib.system").Иначе_("") to obtain the value from lib.additional (or
explicitly handle both sources if dual-sourcing is intended), add or document
the missing oscript_modules directory referenced by
.ВключитьФайл("oscript_modules") (if it’s a build artifact, add build
instructions or a stub and ignore rules), and verify that every dependency
listed in packagedef is actually present in the bundle (add missing files to
repo or adjust packagedef to match available artifacts).

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Кролик, СистемныйКаталог это именно lib.system, текущее изменение связано с тем что мы теперь self-contained application, и все зависимости необходимые для работы приезжают вместе с нами, так мы добавляем этот каталог локальных зависимостей в конфигурационный файл для работы вместо системного каталога в котором лежат общие зависимости OneScript

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sfaqer, спасибо за разъяснение! Теперь логика изменения полностью понятна:

Изменение в строке 218 (lib.systemlib.additional) корректно реализует паттерн self-contained application:

  • Строки 216-221: добавляют локальные зависимости из lib.additional (oscript_modules), которые поставляются вместе с приложением
  • Строки 222-226: исключают системный каталог (lib.system) из lib.additional, чтобы избежать конфликтов между системными и локальными зависимостями

Прошу прощения за неверный анализ в предыдущем комментарии. Архитектура решения логична и правильно реализует цель PR — создание самодостаточного приложения со всеми необходимыми зависимостями.


✏️ Learnings added
Learnt from: sfaqer
Repo: sfaqer/OneUnit PR: 18
File: src/cli/internal/Модули/КонсольноеПриложениеТестированиеСлужебный.os:215-221
Timestamp: 2025-11-21T07:20:42.439Z
Learning: В self-contained приложениях OneScript/oscript используется паттерн: lib.additional содержит локальные зависимости из oscript_modules (поставляются с приложением), а lib.system (системный каталог с общими зависимостями OneScript) исключается из lib.additional через метод .Удалить() для предотвращения конфликтов между системными и локальными зависимостями.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: sfaqer
Repo: sfaqer/OneUnit PR: 18
File: packagedef:19-19
Timestamp: 2025-11-21T07:18:35.307Z
Learning: В проектах OneScript/oscript каталог `oscript_modules` содержит зависимости, загружаемые из хаба перед сборкой приложения. Этот каталог не должен коммититься в репозиторий (находится в .gitignore), но включается в packagedef через .ВключитьФайл("oscript_modules") для создания self-contained приложений с упакованными зависимостями.

Expand Down