Skip to content

Conversation

@zetroot
Copy link
Collaborator

@zetroot zetroot commented Apr 29, 2021

PR для прозрачности прогресса.
Реализация описанного в #129
Набор классов для работы с репозиториями github и их содержимым в памяти. Сейчас все это реализует IFileProvider. Только стрим с файлом можно не только читать, но и писать.
Нужна собственная абстракция провайдера файлов с методами создания и удаления файлов. Обновление в репозитории осуществляется через Flush стрима.
Все начинается с GitHubFilesystem. Надо начать сессию редактирования методом StartContext, затем можно пользоваться как IFileProvider.

Что в ближайших планах:

  • увеличить покрытие тестами
  • завершение сессии редактирования - создание PR в головной репозиторий

@zetroot
Copy link
Collaborator Author

zetroot commented May 3, 2021

Добавил возможность закоммитить изменения.
В тестах лежит файл для F# Interactive , где можно поиграться с клиентом.
test/DotNetRu.Commune.Test.Fs.GitHubFilesystem/GithubScriptTest.fsx
Чтобы все заработало его надо покормить токеном авторизации (первый аргумент метода StartContext)
В результате можно получить вот такой прекрасный PR

@kulakovt
Copy link
Member

kulakovt commented May 3, 2021

@zetroot Было бы замечательно получить подробную инструкцию как получить GitHub токен. И сохранить её в wiki

@zetroot
Copy link
Collaborator Author

zetroot commented May 3, 2021

@kulakovt ок, займусь завтра.

@zetroot
Copy link
Collaborator Author

zetroot commented May 4, 2021

@kulakovt добавил страницу в wiki

zetroot added 3 commits May 5, 2021 20:26
* setting up serilog logging

* dependency injection and options injection
@zetroot
Copy link
Collaborator Author

zetroot commented Jun 1, 2021

Коллеги, что-то я застрял.

  • синхронные API нам не подойдут - blazor не может в Task.Result или в .GetAwaiter().GetResult(), поэтому вся работа с "файлами" должна быть асинхронной
  • сейчас приложуха умеет дописывать в открытый файл и делать PR, но вот тут мне не хватает идей. Что нам еще нужно для PoC?
  • я вспомнил почему я не пошел в веб

@kulakovt
Copy link
Member

kulakovt commented Jun 1, 2021

вся работа с "файлами" должна быть асинхронной

Думаю, это не проблема. Любой IO должен быть асинхронным.

Что нам еще нужно для PoC?

Игорь писал в #129

  • Чтение файлов
  • Создание/удаление бранчей
  • Создание PR
  • Я бы ещё добавил создание/запись в файл

@zetroot
Copy link
Collaborator Author

zetroot commented Jun 2, 2021

Итак, я немного потрудился еще и теперь:

  • можно создавать бранчи (создается автоматически при начале редактирования)
  • можно читать файлы!
  • можно создавать PR в основной репозиторий
  • можно создавать файлы (тут есть ограничение - нельзя создать пустой файл, там обязательно что-то должно быть, поэтому сначала файл создаётся виртуально, а при Flush будет запрос на Create а не Update)

Интерфейс конечно выглядит отвратительно. Но вроде бы работает. Кто-то может испытать?

@kulakovt
Copy link
Member

Посмотрите пожалуйста асинхронную файловую систему. Подходит ли она под все ваши пожелания?
https://github.com/DotNetRu/Auditor/pull/8/files

@zetroot
Copy link
Collaborator Author

zetroot commented Jun 11, 2021

@kulakovt выглядит в целом как то что нужно. Хочу еще больше асинхронности, например в получении Stream. Отписал в PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants