Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: pass generalAnswers to configure plugins #23

Merged
merged 4 commits into from
Feb 14, 2024

Conversation

KuznetsovRoman
Copy link
Member

@KuznetsovRoman KuznetsovRoman commented Feb 13, 2024

Что сделано

  • Прокидываю ответы на базовые вопросы в настройку плагинов (от ответов на базовые вопросы может зависеть настройка плагинов)
  • Добавил приписку к установке пакетов, потому что она занимает какое-то время, и так пользователь не подумает, что оно зависло

@@ -89,7 +89,7 @@ export const installPackages = async (
pluginsToInstall: string[],
registry: string,
): Promise<string> => {
const spinner = ora("Installing packages").start();
const spinner = ora("Installing packages (this may take a while)").start();
Copy link
Member Author

Choose a reason for hiding this comment

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

Изначально хотел сделать так, чтоб процесс установки выводился в консоль, но чет не нашел, как это сделать с сабпроцессами, чтобы оно работало как с нативными пакетными менеджерами.

Добавил тут эту приписку, чтобы не выглядело, так, как будто оно зависло. Гермиона устанавливается не быстро (например, сборка нативных модулей занимает какое-то время)

Copy link
Member

Choose a reason for hiding this comment

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

А чего не юзнуть execa - https://github.com/sindresorhus/execa? В нем вроде удобно можно пайпить stdout в основной процесс.

Copy link
Member Author

@KuznetsovRoman KuznetsovRoman Feb 14, 2024

Choose a reason for hiding this comment

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

Попробовал

Удобно

Нет. С 6 версии он pure esm, а cwd только в 7 можно передавать

Можно пайпить stdout

Это все еще ничего не даст. Сам npm install логов не пишет, он отображает текст в терминале (то есть, npm install 2> errLogs > logs ничего интересного не дает)

Copy link
Member Author

Choose a reason for hiding this comment

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

Пробовал по-всякому, и shell в spawn передавать, и на события смотреть... npm видит, что его запустили не совсем в терминале и молчит

Comment on lines +72 to +74
await configBuilder.configurePlugins({ pluginNames, createPluginsConfig, generalAnswers });

const extraPackages = getExtraPackagesToInstall ? getExtraPackagesToInstall() : { names: [], notes: [] };
Copy link
Member Author

Choose a reason for hiding this comment

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

Поменял их местами, чтобы при настройке одного плагина можно было добавить и другой: комплиментарный

@@ -65,13 +65,13 @@ export const run = async ({
? [baseGeneralPromptsHandler, generalPromptsHandler]
: [baseGeneralPromptsHandler];

await configBuilder.handleGeneralQuestions(generalPrompts, generalPromptsHandlers, opts);
const generalAnswers = await configBuilder.handleGeneralQuestions(generalPrompts, generalPromptsHandlers, opts);
Copy link
Member Author

Choose a reason for hiding this comment

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

Это может быть полезно в тех случаях, когда от ответа на такой вопрос зависит, как именно будет производиться настройка плагина


export interface PluginsConfig {
[plugin: string]: (config: HermioneConfig) => void | Promise<void>;
[plugin: string]: (config: HermioneConfig, generalAnswers?: Answers) => void | Promise<void>;
Copy link
Member Author

Choose a reason for hiding this comment

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

Сделал тут | Answers, чтобы не обязательно было при указании этого коллэка использовать generalAnswers

@@ -89,7 +89,7 @@ export const installPackages = async (
pluginsToInstall: string[],
registry: string,
): Promise<string> => {
const spinner = ora("Installing packages").start();
const spinner = ora("Installing packages (this may take a while)").start();
Copy link
Member

Choose a reason for hiding this comment

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

А чего не юзнуть execa - https://github.com/sindresorhus/execa? В нем вроде удобно можно пайпить stdout в основной процесс.

@KuznetsovRoman KuznetsovRoman merged commit 1fb705a into master Feb 14, 2024
3 checks passed
@KuznetsovRoman KuznetsovRoman deleted the HERMIONE-1382.pass_answers branch February 20, 2024 10:45
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