Dr. Friedrich
Слышь, ты эта. Не провоцируй
Я провоцирую и буду провоцировать людей на написание кода!
Vasily
В этом нет никакого смысла, окромя того, что, возможно, ты хотел бы спровоцировать себя
Dr. Friedrich
Я хочу, чтобы каждый человек писал код.
Ayrat
кстати, @fvnever, ты говорил что paket может без папки .paket работать.
Dr. Friedrich
А кто не пишет код — ну, тот не человек, получается.
Ayrat
в доках я такого не нашёл
Ayrat
https://fsprojects.github.io/Paket/paket-and-dotnet-cli.html
Dr. Friedrich
кстати, @fvnever, ты говорил что paket может без папки .paket работать.
Я говорил про это теоретически. Если это кого-то беспокоит (ну, кроме меня), то давайте чинить.
Dr. Friedrich
Имхо это очень большой промах в Paket.
Ayrat
Я кажется вчера думал что понял как ты предлагаешь чинить
Dr. Friedrich
Сегодня инфраструктура позволяет не таскать с собой никаких бинарных бутстраперов. Кроме неткора, ничего не должно быть нужно для сборки проекта.
Vasily
@fvnever типа если чего-то нет как плагина к неткору, то оно и не нужэно?
Ayrat
типа можно как-то прописать в прожект файл чтобы он при ресторе выкачал paket cli и встроил в пропсы прожекта сам и тогда вызов dotnet restore переводил на пакет, который бы лез в лок файл и т.д. и т.п.
Ayrat
так?
Ayrat
потому что сейчас надо ЯВНО указывать пропсы пакета которые бы dotnet restore переводили на paket.exe
Vasily
Да не, ты неправильно меня понял
Тогда неясно, как доставлять сторонние бинарники
Dr. Friedrich
И получается, что нам «всего лишь» нужно научиться скачивать Paket до инициализации проектных файлов.
Dr. Friedrich
И у меня есть интересная идея, как это можно сделать!
Dr. Friedrich
да, но через жопку
А в чём там жопка заключается?
Vasily
Ну в райдере скорее всего можно так сделать
Dr. Friedrich
Vasily
Ишь ты
Dr. Friedrich
Тогда неясно, как доставлять сторонние бинарники
Кому действительно надо доставлять сторонние бинарники — пускай доставляют как хотят. Я говорю про кейс, в котором нам наличие сторонних бинарников не очень важно.
Ayrat
А в чём там жопка заключается?
ну в том что надо таскать с собой paket.bootstrapper.exe который скачивает paket.exe который иницилиазирует себя в прожект файле подсовывая ему путь до пропсов пакета которые подменяют вызов dotnet restore на скачанный во второму пункте paket.exe
Dr. Friedrich
Я просто хочу, чтобы donet build скачивал Paket (возможно, в виде DLL), а потом восстанавливал пакеты через Paket.
Vasily
Ну это система плагинов
Vasily
Потому как появится какой-нить Pacet
Dr. Friedrich
Потому как появится какой-нить Pacet
А пускай появляется, нам это ок.
Dr. Friedrich
Я считаю, что SDK уже всё это поддерживает, нужно только правильно из кусочков собрать.
Ayrat
А как подменяется вызов dotnet restore? У SDK есть какая-то дырка, в которую можно воткнуться?
я пытаюсь разобраться в пропсах и нимагу понять где там замена nuget на paket происходит
Ayrat
<PropertyGroup> <!-- Commands --> <RestoreCommand>$(PaketCommand) restore --references-files "$(PaketReferences)"</RestoreCommand> <!-- We need to ensure packages are restored prior to assembly resolve --> <BuildDependsOn Condition="$(RestorePackages) == 'true'">RestorePackages; $(BuildDependsOn);</BuildDependsOn> </PropertyGroup> <Target Name="RestorePackages"> <Exec Command="$(RestoreCommand)" IgnoreStandardErrorWarningFormat="true" WorkingDirectory="$(PaketRootPath)" ContinueOnError="false" Condition=" Exists('$(PaketReferences)') AND '$(PaketReferences)' != '' " /> </Target>
Ayrat
может здесь!
Ayrat
Vasily
RestoreCommand подменяется
Ayrat
ну да, похоже на правду
Vasily
Где-то выще он задан как nuget
Vasily
Бинго
Ayrat
Я не спец в мсбилде
Dr. Friedrich
Ок, все сошлись в этом мнении :)
Ayrat
это вон Василий
Éminence grise
Сорее перезапись таргета
Dr. Friedrich
Не, можно найти, пошли посмотрим
Ayrat
но очень похоже на то
Ayrat
Так внимание вопрос. Он уже подменяет кастомными пропсами вызов dotnet restore на свой
Ayrat
заставить его выкачать себя это что-то очень клёвое
Dr. Friedrich
dotnet поддерживает кастомные SDK.
Dr. Friedrich
https://github.com/ForNeVeR/wpf-math/blob/a3eff1061891ae314b255866afc69bcbc80bba0d/src/WpfMath/WpfMath.csproj#L1 вот такое
Dr. Friedrich
У меня есть гипотеза, что SDK выкачивается ДО того, как запускается вся остальная машинерия.
Ayrat
но мы не хотим делать кастомное сдк для пекедж менеджера
Dr. Friedrich
Если мы сделаем себе Paket SDK, который будет подменять рестор-команду — то всё будет збс
Dr. Friedrich
Ну, я не пробовал ни разу, но, кажется, они композабл.
Dr. Friedrich
Надо экспериментировать просто.
Dr. Friedrich
Мб будет хорошая тема для дотнекста, ух!
Ayrat
Наверное я пока туповат. Вот если у нас есть стандартный СДК, то нам надо на билд машину или в самой репке воткнуть paket.exe или глобально его в кеше иметь и обращаться через /usr/bin/ или PATH Если у нас есть кастомное СДК, то нам надо на билд машину ставить кастомное СДК перед билдом)))
Ayrat
разницы я пока не уловил
Dr. Friedrich
А в SDK мы положим paket.dll
Dr. Friedrich
Что и обеспечит инфильтрацию целевой машины.
Éminence grise
https://reynders.co/simplify-your-dotnet-with-custom-sdks/
Ayrat
Любопытно, но мне кажется что кастомное сдк для менеджера пакетов это перебор. Вот если б можно было: в начале нугетом заресторить paket-cli и установить его в проект (если не было) после этого перевести мсбилд на paket.exe восстановить остальные зависимости в paket.lock
Dr. Friedrich
Но надо поэкспериментировать будет.
Dr. Friedrich
Ну, я пользуюсь Paket, и у меня прям свербит из-за того, что приходится с собой этот несчастный бинарник таскать.
Ayrat
А мне вот как раз кажется, что это ок подход
Я твой подход не применял и честно говоря не знаю плюсов/минусов. Если они и правда композируются, решение отличное. А если придётся выбирать - новый Paket SDK vs F# SDK и не будет возможности использовать оба, то бяда
Dr. Friedrich
Из-за моей сильнейшей антипатии к бинарникам, я пишу всякие косожопые скрипты, которые его должны скачивать, и на починку этих скриптов трачу время :(
Ayrat
так это. paket.bootstrapper.exe и есть тот самый косожопый скрипт, который его скачивает)))
Dr. Friedrich
Представим, что я мудак