From 1a224ccca2be1d9bb69d8e68c11339f91971bc77 Mon Sep 17 00:00:00 2001 From: Brett Epps Date: Thu, 7 Jul 2016 18:55:32 -0500 Subject: [PATCH] Implement credentials support for distBaseUrl (closes #126) --- .../moowork/gradle/node/NodeExtension.groovy | 44 +++++++++++++++++++ .../moowork/gradle/node/task/SetupTask.groovy | 6 ++- .../gradle/node/NodeExtensionTest.groovy | 4 ++ 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/main/groovy/com/moowork/gradle/node/NodeExtension.groovy b/src/main/groovy/com/moowork/gradle/node/NodeExtension.groovy index 3d8d0a9..fbfb864 100644 --- a/src/main/groovy/com/moowork/gradle/node/NodeExtension.groovy +++ b/src/main/groovy/com/moowork/gradle/node/NodeExtension.groovy @@ -2,6 +2,9 @@ package com.moowork.gradle.node import com.moowork.gradle.node.variant.Variant import org.gradle.api.Project +import org.gradle.api.Action +import org.gradle.api.credentials.Credentials +import org.gradle.api.artifacts.repositories.PasswordCredentials class NodeExtension { @@ -17,6 +20,10 @@ class NodeExtension def String distBaseUrl = 'https://nodejs.org/dist' + def Action distCredentialsAction = null + + def Class distCredentialsType = PasswordCredentials + def String npmCommand = 'npm' def boolean download = false @@ -34,4 +41,41 @@ class NodeExtension { return project.extensions.getByType( NodeExtension ) } + + void distCredentials( Class credentialsType, Action action ) + { + this.distCredentialsType = credentialsType + this.distCredentialsAction = action + } + + void distCredentials( Action action ) + { + this.distCredentials( this.distCredentialsType, action ) + } + + class DistCredentials implements PasswordCredentials + { + def private String username = null + def private String password = null + + public String getUsername() + { + return this.username + } + + public String getPassword() + { + return this.password + } + + public void setUsername(String userName) + { + this.username = userName + } + + public void setPassword(String password) + { + this.password = password + } + } } diff --git a/src/main/groovy/com/moowork/gradle/node/task/SetupTask.groovy b/src/main/groovy/com/moowork/gradle/node/task/SetupTask.groovy index 5f63348..3627f28 100644 --- a/src/main/groovy/com/moowork/gradle/node/task/SetupTask.groovy +++ b/src/main/groovy/com/moowork/gradle/node/task/SetupTask.groovy @@ -129,9 +129,13 @@ class SetupTask url distUrl layout 'pattern', { artifact 'v[revision]/[artifact](-v[revision]-[classifier]).[ext]' - ivy 'v[revision]/ivy.xml' } } + + if ( this.config.distCredentialsAction != null ) + { + this.repo.credentials( this.config.distCredentialsType, this.config.distCredentialsAction ) + } } private void restoreRepositories() diff --git a/src/test/groovy/com/moowork/gradle/node/NodeExtensionTest.groovy b/src/test/groovy/com/moowork/gradle/node/NodeExtensionTest.groovy index cf6366d..2d44362 100644 --- a/src/test/groovy/com/moowork/gradle/node/NodeExtensionTest.groovy +++ b/src/test/groovy/com/moowork/gradle/node/NodeExtensionTest.groovy @@ -1,5 +1,7 @@ package com.moowork.gradle.node +import org.gradle.api.artifacts.repositories.PasswordCredentials + class NodeExtensionTest extends AbstractProjectTest { @@ -13,6 +15,8 @@ class NodeExtensionTest ext != null ext.npmCommand == 'npm' ext.distBaseUrl == 'https://nodejs.org/dist' + ext.distCredentialsType == PasswordCredentials + ext.distCredentialsAction == null ext.workDir != null ext.nodeModulesDir != null ext.version == '4.4.0'