From 66253656827310c952b33c66db1f0e5b9600d746 Mon Sep 17 00:00:00 2001 From: v1nc3n4 <5869062+v1nc3n4@users.noreply.github.com> Date: Wed, 12 Jun 2024 13:08:47 +0200 Subject: [PATCH] fix: disabled Corepack strict checks during self-update Fixes #212 --- .../FrontendGradlePlugin.java | 24 ++--- .../installer/archiver/AbstractArchiver.java | 5 +- .../infrastructure/gradle/AssembleTask.java | 2 - .../infrastructure/gradle/CheckTask.java | 2 - .../infrastructure/gradle/CleanTask.java | 2 - .../gradle/GradleScriptRunnerAdapter.java | 2 +- .../gradle/InstallCorepackTask.java | 7 ++ .../infrastructure/gradle/PublishTask.java | 4 - .../FrontendGradlePluginTest.java | 87 ++++++++++--------- .../archiver/ZipArchiverTest.java | 28 ++++-- .../faq/custom-environment-variables-faq.vue | 14 +++ site/src/components/link/corepack-link.vue | 16 +++- .../task/assemble-frontend-task.vue | 2 +- .../components/task/install-corepack-task.vue | 24 ++--- .../components/task/install-frontend-task.vue | 2 +- site/src/pages/faqs.vue | 8 ++ .../node-corepack-npm-pnpm-yarn-tasks.vue | 12 +-- 17 files changed, 150 insertions(+), 91 deletions(-) create mode 100644 site/src/components/faq/custom-environment-variables-faq.vue diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java index bf64a2af..cac0eec3 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/FrontendGradlePlugin.java @@ -296,17 +296,17 @@ protected void configureTasks(final Project project, task -> configureInstallFrontendTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, systemProviders)); taskContainer.register(CLEAN_TASK_NAME, CleanTask.class, - task -> configureCleanTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, + task -> configureCleanFrontendTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, systemProviders)); taskContainer.register(CHECK_TASK_NAME, CheckTask.class, - task -> configureCheckTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, + task -> configureCheckFrontendTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, systemProviders)); taskContainer.register(ASSEMBLE_TASK_NAME, AssembleTask.class, - task -> configureAssembleTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, - systemProviders)); + task -> configureAssembleFrontendTask(task, taskContainer, beanRegistryBuildServiceProvider, + frontendExtension, systemProviders)); taskContainer.register(PUBLISH_TASK_NAME, PublishTask.class, - task -> configurePublishTask(task, taskContainer, beanRegistryBuildServiceProvider, frontendExtension, - systemProviders)); + task -> configurePublishFrontendTask(task, taskContainer, beanRegistryBuildServiceProvider, + frontendExtension, systemProviders)); // Configure dependencies with Gradle built-in tasks. configureDependency(taskContainer, GRADLE_CLEAN_TASK_NAME, CLEAN_TASK_NAME, CleanTask.class); @@ -559,7 +559,7 @@ protected void configureInstallFrontendTask(final InstallFrontendTask task, fina * @param beanRegistryBuildServiceProvider Bean registry build service provider. * @param frontendExtension Plugin extension. */ - protected void configureCleanTask(final CleanTask task, final TaskContainer taskContainer, + protected void configureCleanFrontendTask(final CleanTask task, final TaskContainer taskContainer, final Provider beanRegistryBuildServiceProvider, final FrontendExtension frontendExtension, final SystemProviders systemProviders) { task.setGroup(TASK_GROUP); @@ -587,7 +587,7 @@ protected void configureCleanTask(final CleanTask task, final TaskContainer task * @param beanRegistryBuildServiceProvider Bean registry build service provider. * @param frontendExtension Plugin extension. */ - protected void configureCheckTask(final CheckTask task, final TaskContainer taskContainer, + protected void configureCheckFrontendTask(final CheckTask task, final TaskContainer taskContainer, final Provider beanRegistryBuildServiceProvider, final FrontendExtension frontendExtension, final SystemProviders systemProviders) { task.setGroup(TASK_GROUP); @@ -615,7 +615,7 @@ protected void configureCheckTask(final CheckTask task, final TaskContainer task * @param beanRegistryBuildServiceProvider Bean registry build service provider. * @param frontendExtension Plugin extension. */ - protected void configureAssembleTask(final AssembleTask task, final TaskContainer taskContainer, + protected void configureAssembleFrontendTask(final AssembleTask task, final TaskContainer taskContainer, final Provider beanRegistryBuildServiceProvider, final FrontendExtension frontendExtension, final SystemProviders systemProviders) { task.setGroup(TASK_GROUP); @@ -644,7 +644,7 @@ protected void configureAssembleTask(final AssembleTask task, final TaskContaine * @param beanRegistryBuildServiceProvider Bean registry build service provider. * @param frontendExtension Plugin extension. */ - protected void configurePublishTask(final PublishTask task, final TaskContainer taskContainer, + protected void configurePublishFrontendTask(final PublishTask task, final TaskContainer taskContainer, final Provider beanRegistryBuildServiceProvider, final FrontendExtension frontendExtension, final SystemProviders systemProviders) { task.setGroup(TASK_GROUP); @@ -680,7 +680,7 @@ private Provider getExecutableType(final TaskContainer taskConta .type() .getExecutableType(); } catch (final IOException | MalformedPackageManagerSpecification | - UnsupportedPackageManagerException e) { + UnsupportedPackageManagerException e) { throw new GradleException( "Cannot read package manager specification from file: " + packageManagerSpecificationFilePath, e); @@ -730,7 +730,7 @@ private T getBeanOrFail(final BeanRegistry beanRegistry, final Class bean try { return beanRegistry.getBean(beanClass); } catch (final BeanInstanciationException | TooManyCandidateBeansException | - ZeroOrMultiplePublicConstructorsException e) { + ZeroOrMultiplePublicConstructorsException e) { throw new GradleException(e.getClass().getName() + ": " + e.getMessage(), e); } } diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/domain/installer/archiver/AbstractArchiver.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/domain/installer/archiver/AbstractArchiver.java index fe595fbb..f0ecfcf3 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/domain/installer/archiver/AbstractArchiver.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/domain/installer/archiver/AbstractArchiver.java @@ -63,8 +63,9 @@ public abstract class AbstractArchiver - * NOTE: this task will be renamed {@code AssembleFrontendTask} to conform with naming convention of other tasks. */ public class AssembleTask extends AbstractRunCommandTask { diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CheckTask.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CheckTask.java index 1efe1294..7f561f9b 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CheckTask.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CheckTask.java @@ -10,8 +10,6 @@ /** * This task checks the project. - *

- * NOTE: this task will be renamed {@code CheckFrontendTask} to conform with naming convention of other tasks. */ public class CheckTask extends AbstractRunCommandTask { diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CleanTask.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CleanTask.java index b77c27c7..087091a7 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CleanTask.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/CleanTask.java @@ -10,8 +10,6 @@ /** * This task cleans project artifacts. - *

- * NOTE: this task will be renamed {@code CleanFrontendTask} to conform with naming convention of other tasks. */ public class CleanTask extends AbstractRunCommandTask { diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/GradleScriptRunnerAdapter.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/GradleScriptRunnerAdapter.java index 4e3e04fa..dd22b876 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/GradleScriptRunnerAdapter.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/GradleScriptRunnerAdapter.java @@ -35,7 +35,7 @@ public void execute(final ScriptProperties scriptProperties) { .script(scriptProperties.getScript()) .environmentVariables(scriptProperties.getEnvironmentVariables()) .build()); - logger.info("Execution settings: {}", executionSettings); + logger.debug("Execution settings: {}", executionSettings); scriptProperties .getExecOperations() diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/InstallCorepackTask.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/InstallCorepackTask.java index 72034780..30483648 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/InstallCorepackTask.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/InstallCorepackTask.java @@ -35,6 +35,12 @@ public class InstallCorepackTask extends AbstractRunCommandTask { */ public static final String COREPACK_MODULE_PATH = "node_modules/corepack"; + /** + * Name of the environment variable that prevents Corepack to fail during update with NPM, if the project uses + * another package manager. + */ + public static final String COREPACK_ENABLE_STRICT_VARIABLE = "COREPACK_ENABLE_STRICT"; + /** * Version of Corepack that should be installed: may be a specific version number such as {@code X.Y.Z} or the * {@link #LATEST_VERSION_ARGUMENT} keyword to install the latest version available. @@ -76,6 +82,7 @@ public void execute() throws NonRunnableTaskException, BeanRegistryException { scriptBuilder.append(version); } this.script.set(scriptBuilder.toString()); + this.environmentVariables.put(COREPACK_ENABLE_STRICT_VARIABLE, "0"); super.execute(); } diff --git a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/PublishTask.java b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/PublishTask.java index 80bbeb3c..817355cc 100644 --- a/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/PublishTask.java +++ b/plugin/src/main/java/org/siouan/frontendgradleplugin/infrastructure/gradle/PublishTask.java @@ -10,10 +10,6 @@ /** * This task publishes project artifacts. - *

- * NOTE: this task will be renamed {@code PublishFrontendTask} to conform with naming convention of other tasks. - * - * @since 1.4.0 */ public class PublishTask extends AbstractRunCommandTask { diff --git a/plugin/src/test/java/org/siouan/frontendgradleplugin/FrontendGradlePluginTest.java b/plugin/src/test/java/org/siouan/frontendgradleplugin/FrontendGradlePluginTest.java index 701131b4..b57a4b13 100644 --- a/plugin/src/test/java/org/siouan/frontendgradleplugin/FrontendGradlePluginTest.java +++ b/plugin/src/test/java/org/siouan/frontendgradleplugin/FrontendGradlePluginTest.java @@ -307,70 +307,79 @@ private void assertThatTasksAreConfigured(final Project project, final FrontendE assertThat(installFrontendTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); assertThat(installFrontendTask.getDependsOn()).containsExactlyInAnyOrder(installPackageManagerTask.getName()); - final CleanTask frontendCleanTask = project.getTasks().named(CLEAN_TASK_NAME, CleanTask.class).get(); - assertThat(frontendCleanTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); - assertThat(frontendCleanTask.getPackageJsonDirectory().get()).isEqualTo( + final CleanTask cleanFrontendTask = project + .getTasks() + .named(CLEAN_TASK_NAME, CleanTask.class) + .get(); + assertThat(cleanFrontendTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); + assertThat(cleanFrontendTask.getPackageJsonDirectory().get()).isEqualTo( extension.getPackageJsonDirectory().getAsFile().get()); - assertThat(frontendCleanTask.getNodeInstallDirectory().get()).isEqualTo( + assertThat(cleanFrontendTask.getNodeInstallDirectory().get()).isEqualTo( extension.getNodeInstallDirectory().getAsFile().get()); //frontendCleanTask.getPackageManagerExecutableFile() - assertThat(frontendCleanTask.getCleanScript().getOrNull()).isEqualTo(extension.getCleanScript().getOrNull()); - assertThat(frontendCleanTask.getVerboseModeEnabled().get()).isEqualTo(extension.getVerboseModeEnabled().get()); - assertThat(frontendCleanTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); - assertThat(frontendCleanTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); - assertThat(frontendCleanTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); + assertThat(cleanFrontendTask.getCleanScript().getOrNull()).isEqualTo(extension.getCleanScript().getOrNull()); + assertThat(cleanFrontendTask.getVerboseModeEnabled().get()).isEqualTo(extension.getVerboseModeEnabled().get()); + assertThat(cleanFrontendTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); + assertThat(cleanFrontendTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); + assertThat(cleanFrontendTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); assertThat(project.getTasks().named(BasePlugin.CLEAN_TASK_NAME).get().getDependsOn()).contains( - frontendCleanTask.getName()); + cleanFrontendTask.getName()); - final AssembleTask frontendAssembleTask = project + final AssembleTask assembleFrontendTask = project .getTasks() .named(ASSEMBLE_TASK_NAME, AssembleTask.class) .get(); - assertThat(frontendAssembleTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); - assertThat(frontendAssembleTask.getPackageJsonDirectory().get()).isEqualTo( + assertThat(assembleFrontendTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); + assertThat(assembleFrontendTask.getPackageJsonDirectory().get()).isEqualTo( extension.getPackageJsonDirectory().getAsFile().get()); //frontendAssembleTask.getPackageManagerExecutableFile() - assertThat(frontendAssembleTask.getAssembleScript().getOrNull()).isEqualTo( + assertThat(assembleFrontendTask.getAssembleScript().getOrNull()).isEqualTo( extension.getAssembleScript().getOrNull()); - assertThat(frontendAssembleTask.getVerboseModeEnabled().get()).isEqualTo( + assertThat(assembleFrontendTask.getVerboseModeEnabled().get()).isEqualTo( extension.getVerboseModeEnabled().get()); - assertThat(frontendAssembleTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); - assertThat(frontendAssembleTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); - assertThat(frontendAssembleTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); + assertThat(assembleFrontendTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); + assertThat(assembleFrontendTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); + assertThat(assembleFrontendTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); assertThat(project.getTasks().named(BasePlugin.ASSEMBLE_TASK_NAME).get().getDependsOn()).contains( - frontendAssembleTask.getName()); + assembleFrontendTask.getName()); - final CheckTask frontendCheckTask = project.getTasks().named(CHECK_TASK_NAME, CheckTask.class).get(); - assertThat(frontendCheckTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); - assertThat(frontendCheckTask.getPackageJsonDirectory().get()).isEqualTo( + final CheckTask checkFrontendTask = project + .getTasks() + .named(CHECK_TASK_NAME, CheckTask.class) + .get(); + assertThat(checkFrontendTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); + assertThat(checkFrontendTask.getPackageJsonDirectory().get()).isEqualTo( extension.getPackageJsonDirectory().getAsFile().get()); - assertThat(frontendCheckTask.getNodeInstallDirectory().get()).isEqualTo( + assertThat(checkFrontendTask.getNodeInstallDirectory().get()).isEqualTo( extension.getNodeInstallDirectory().getAsFile().get()); //frontendCheckTask.getPackageManagerExecutableFile() - assertThat(frontendCheckTask.getCheckScript().getOrNull()).isEqualTo(extension.getCheckScript().getOrNull()); - assertThat(frontendCheckTask.getVerboseModeEnabled().get()).isEqualTo(extension.getVerboseModeEnabled().get()); - assertThat(frontendCheckTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); - assertThat(frontendCheckTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); - assertThat(frontendCheckTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); + assertThat(checkFrontendTask.getCheckScript().getOrNull()).isEqualTo(extension.getCheckScript().getOrNull()); + assertThat(checkFrontendTask.getVerboseModeEnabled().get()).isEqualTo(extension.getVerboseModeEnabled().get()); + assertThat(checkFrontendTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); + assertThat(checkFrontendTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); + assertThat(checkFrontendTask.getDependsOn()).containsExactlyInAnyOrder(installFrontendTask.getName()); assertThat(project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME).get().getDependsOn()).contains( - frontendCheckTask.getName()); + checkFrontendTask.getName()); - final PublishTask frontendPublishTask = project.getTasks().named(PUBLISH_TASK_NAME, PublishTask.class).get(); - assertThat(frontendPublishTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); - assertThat(frontendPublishTask.getPackageJsonDirectory().get()).isEqualTo( + final PublishTask publishFrontendTask = project + .getTasks() + .named(PUBLISH_TASK_NAME, PublishTask.class) + .get(); + assertThat(publishFrontendTask.getBeanRegistryBuildService().get().getBeanRegistry()).isNotNull(); + assertThat(publishFrontendTask.getPackageJsonDirectory().get()).isEqualTo( extension.getPackageJsonDirectory().getAsFile().get()); - assertThat(frontendPublishTask.getNodeInstallDirectory().get()).isEqualTo( + assertThat(publishFrontendTask.getNodeInstallDirectory().get()).isEqualTo( extension.getNodeInstallDirectory().getAsFile().get()); //frontendPublishTask.getPackageManagerExecutableFile() - assertThat(frontendPublishTask.getPublishScript().getOrNull()).isEqualTo( + assertThat(publishFrontendTask.getPublishScript().getOrNull()).isEqualTo( extension.getPublishScript().getOrNull()); - assertThat(frontendPublishTask.getVerboseModeEnabled().get()).isEqualTo( + assertThat(publishFrontendTask.getVerboseModeEnabled().get()).isEqualTo( extension.getVerboseModeEnabled().get()); - assertThat(frontendPublishTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); - assertThat(frontendPublishTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); - assertThat(frontendPublishTask.getDependsOn()).containsExactlyInAnyOrder(frontendAssembleTask.getName()); + assertThat(publishFrontendTask.getSystemJvmArch().get()).isEqualTo(expectedSystemProperties.get(JVM_ARCH)); + assertThat(publishFrontendTask.getSystemOsName().get()).isEqualTo(expectedSystemProperties.get(OS_NAME)); + assertThat(publishFrontendTask.getDependsOn()).containsExactlyInAnyOrder(assembleFrontendTask.getName()); assertThat( project.getTasks().named(PublishingPlugin.PUBLISH_LIFECYCLE_TASK_NAME).get().getDependsOn()).contains( - frontendPublishTask.getName()); + publishFrontendTask.getName()); } } diff --git a/plugin/src/test/java/org/siouan/frontendgradleplugin/infrastructure/archiver/ZipArchiverTest.java b/plugin/src/test/java/org/siouan/frontendgradleplugin/infrastructure/archiver/ZipArchiverTest.java index 010c6e20..4603f044 100644 --- a/plugin/src/test/java/org/siouan/frontendgradleplugin/infrastructure/archiver/ZipArchiverTest.java +++ b/plugin/src/test/java/org/siouan/frontendgradleplugin/infrastructure/archiver/ZipArchiverTest.java @@ -7,8 +7,8 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; -import static org.siouan.frontendgradleplugin.test.Resources.getResourcePath; import static org.siouan.frontendgradleplugin.domain.PlatformFixture.LOCAL_PLATFORM; +import static org.siouan.frontendgradleplugin.test.Resources.getResourcePath; import java.io.IOException; import java.io.InputStream; @@ -55,7 +55,13 @@ void should_fail_initializing_context_when_zip_archive_does_not_exist() { .targetDirectoryPath(temporaryDirectoryPath) .build(); - assertThatThrownBy(() -> archiver.initializeContext(settings)).isInstanceOf(IOException.class); + assertThatThrownBy(() -> { + try (@SuppressWarnings("unused") final ZipArchiverContext zipArchiverContext = archiver.initializeContext( + settings)) { + // The test is expected to fail during context initilization above. This code is necessary in case + // initialization succeeds unexpectedly: the context must be close with the try-with-resources block. + } + }).isInstanceOf(IOException.class); verifyNoMoreInteractions(fileManager); } @@ -70,7 +76,13 @@ void should_fail_initializing_context_when_zip_archive_is_invalid() { .targetDirectoryPath(temporaryDirectoryPath) .build(); - assertThatThrownBy(() -> archiver.initializeContext(settings)).isInstanceOf(IOException.class); + assertThatThrownBy(() -> { + try (@SuppressWarnings("unused") final ZipArchiverContext zipArchiverContext = archiver.initializeContext( + settings)) { + // The test is expected to fail during context initilization above. This code is necessary in case + // initialization succeeds unexpectedly: the context must be close with the try-with-resources block. + } + }).isInstanceOf(IOException.class); verifyNoMoreInteractions(fileManager); } @@ -86,18 +98,18 @@ void should_fail_reading_symbolic_link_target() throws IOException { .build(); final IOException expectedException = new IOException(); - final ZipArchiver archiver = new ZipArchiverWithSymbolicLinkFailure(fileManager, expectedException); + final ZipArchiver zipArchiver = new ZipArchiverWithSymbolicLinkFailure(fileManager, expectedException); boolean failure = false; - try (final ZipArchiverContext context = archiver.initializeContext(settings)) { - Optional option = archiver.getNextEntry(context); + try (final ZipArchiverContext context = zipArchiver.initializeContext(settings)) { + Optional option = zipArchiver.getNextEntry(context); while (option.isPresent()) { final ZipEntry entry = option.get(); if (entry.isSymbolicLink()) { - assertThatThrownBy(() -> archiver.getSymbolicLinkTarget(context, entry)).isEqualTo( + assertThatThrownBy(() -> zipArchiver.getSymbolicLinkTarget(context, entry)).isEqualTo( expectedException); failure = true; } - option = archiver.getNextEntry(context); + option = zipArchiver.getNextEntry(context); } } diff --git a/site/src/components/faq/custom-environment-variables-faq.vue b/site/src/components/faq/custom-environment-variables-faq.vue new file mode 100644 index 00000000..0cd10713 --- /dev/null +++ b/site/src/components/faq/custom-environment-variables-faq.vue @@ -0,0 +1,14 @@ + diff --git a/site/src/components/link/corepack-link.vue b/site/src/components/link/corepack-link.vue index 6c2f4aea..d89eb471 100644 --- a/site/src/components/link/corepack-link.vue +++ b/site/src/components/link/corepack-link.vue @@ -1,3 +1,17 @@ + + diff --git a/site/src/components/task/assemble-frontend-task.vue b/site/src/components/task/assemble-frontend-task.vue index 6754e12e..8b035da2 100644 --- a/site/src/components/task/assemble-frontend-task.vue +++ b/site/src/components/task/assemble-frontend-task.vue @@ -40,7 +40,7 @@ SCSS...), the directory layout, the build utilities (Webpack...), etc., chosen by the team. Moreover, some build utilities are already able to build artifacts incrementally. The plugin does not duplicate this logic. If you are about to tweak this task, take a look at these - recommendations. + recommendations.

diff --git a/site/src/components/task/install-corepack-task.vue b/site/src/components/task/install-corepack-task.vue index 6cff0b79..438fd393 100644 --- a/site/src/components/task/install-corepack-task.vue +++ b/site/src/components/task/install-corepack-task.vue @@ -15,20 +15,24 @@ diff --git a/site/src/pages/node-corepack-npm-pnpm-yarn-tasks.vue b/site/src/pages/node-corepack-npm-pnpm-yarn-tasks.vue index d533e299..2a08170d 100644 --- a/site/src/pages/node-corepack-npm-pnpm-yarn-tasks.vue +++ b/site/src/pages/node-corepack-npm-pnpm-yarn-tasks.vue @@ -49,7 +49,7 @@
- Environment variables in node-based tasks. + Environment variables in node-based tasks @@ -68,7 +68,7 @@ mind the plugin adds its own paths so as the relevant node executable can be found.

Example hereafter shows how to customize the environment for a given task:

- +