Skip to content

Commit 700e1f2

Browse files
committed
fix basedir in module resolver
Signed-off-by: jorgee <jorge.ejarque@seqera.io>
1 parent a0ac594 commit 700e1f2

7 files changed

Lines changed: 16 additions & 23 deletions

File tree

modules/nextflow/src/main/groovy/nextflow/module/DefaultRemoteModuleResolver.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ import java.nio.file.Path
4545
class DefaultRemoteModuleResolver implements RemoteModuleResolver {
4646

4747
@Override
48-
Path resolve(String moduleName, Path baseDir) {
49-
48+
Path resolve(String moduleName) {
49+
def baseDir = Global.session?.baseDir ?: Path.of('.')
5050
final config = Global.config ?: new ConfigBuilder().setBaseDir(baseDir).build()
5151
final registryConfig = config.navigate('registry') as RegistryConfig
5252

modules/nextflow/src/main/groovy/nextflow/module/ModuleResolver.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class ModuleResolver {
160160
// Install to modules directory (will compute directory checksum for future integrity checks)
161161
InstalledModule installed = storage.installModule(reference, version, tempFile, downloadUrl)
162162

163-
log.info "Module ${reference}@${version} installed successfully at ${installed.mainFile.parent}"
163+
log.info "Module ${reference}@${version} installed successfully at ${installed.mainFile.parent.toAbsolutePath().toString()}"
164164
return installed.mainFile
165165
}
166166
finally {

modules/nextflow/src/main/groovy/nextflow/script/IncludeDef.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ class IncludeDef {
181181
Path resolveRemoteModulePath(String moduleName) {
182182
// Use SPI to get the remote module resolver implementation
183183
def resolver = RemoteModuleResolverProvider.getInstance()
184-
return resolver.resolve(moduleName, session.baseDir)
184+
return resolver.resolve(moduleName)
185185
}
186186

187187
@PackageScope

modules/nf-lang/src/main/java/nextflow/module/spi/FallbackRemoteModuleResolver.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
public class FallbackRemoteModuleResolver implements RemoteModuleResolver {
3232

3333
@Override
34-
public Path resolve(String moduleName, Path baseDir) {
34+
public Path resolve(String moduleName) {
35+
final Path baseDir = Path.of("modules");
3536
if (!Files.exists(baseDir.resolve(moduleName))) {
3637
throw new IllegalStateException("Module '" + moduleName + "' not locally found at 'modules' folder - use 'nextflow install' to download module files");
3738
}
@@ -42,4 +43,4 @@ public Path resolve(String moduleName, Path baseDir) {
4243
public int getPriority() {
4344
return Integer.MIN_VALUE; // Fallback has lowest possible priority
4445
}
45-
}
46+
}

modules/nf-lang/src/main/java/nextflow/module/spi/RemoteModuleResolver.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,10 @@ public interface RemoteModuleResolver {
4747
* </ol>
4848
*
4949
* @param moduleName The module reference string (e.g., '@scope/name' or '@scope/name@version')
50-
* @param baseDir The base directory for the project (used to locate the modules directory)
5150
* @return Path to the resolved module's main.nf file
5251
* @throws IllegalArgumentException if the module reference is invalid or resolution fails
5352
*/
54-
Path resolve(String moduleName, Path baseDir);
53+
Path resolve(String moduleName);
5554

5655
/**
5756
* Get the priority of this resolver. Higher priority resolvers are tried first.
@@ -65,4 +64,4 @@ public interface RemoteModuleResolver {
6564
default int getPriority() {
6665
return 0;
6766
}
68-
}
67+
}

modules/nf-lang/src/main/java/nextflow/script/control/ModuleResolver.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,9 @@ private SourceUnit resolveInclude(IncludeNode node, SourceUnit sourceUnit, Funct
7474
if( source.startsWith("plugin/") )
7575
return null;
7676

77-
var parent = Path.of(sourceUnit.getSource().getURI()).getParent();
78-
79-
// Resolve remote module paths (scope/name format, not starting with local prefixes)
80-
if( isRemoteModule(source) ) {
81-
var modules = Path.of("./modules");
82-
var resolver = RemoteModuleResolverProvider.getInstance();
83-
resolver.resolve(source, modules.getParent());
84-
parent = modules;
85-
}
86-
87-
var includeUri = getIncludeUri(parent, source);
77+
var includeUri = isRemoteModule(source) ?
78+
RemoteModuleResolverProvider.getInstance().resolve(source).normalize().toUri() :
79+
getIncludeUri(Path.of(sourceUnit.getSource().getURI()).getParent(), source);
8880
if( compiler.getSource(includeUri) != null )
8981
return null;
9082
if( !Files.exists(Path.of(includeUri)) )

modules/nf-lang/src/main/java/nextflow/script/control/ResolveIncludeVisitor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.List;
2323
import java.util.Set;
2424

25+
import nextflow.module.spi.RemoteModuleResolverProvider;
2526
import nextflow.script.ast.FunctionNode;
2627
import nextflow.script.ast.IncludeNode;
2728
import nextflow.script.ast.ScriptNode;
@@ -86,9 +87,9 @@ public void visitInclude(IncludeNode node) {
8687
return;
8788
}
8889

89-
var isRemoteModule = ModuleResolver.isRemoteModule(source);
90-
var parent = isRemoteModule ? Path.of("modules") : Path.of(uri).getParent();
91-
var includeUri = getIncludeUri(parent, source);
90+
var includeUri = ModuleResolver.isRemoteModule(source) ?
91+
RemoteModuleResolverProvider.getInstance().resolve(source).normalize().toUri() :
92+
getIncludeUri(Path.of(sourceUnit.getSource().getURI()).getParent(), source);
9293
if( !isIncludeStale(node, includeUri) )
9394
return;
9495
changed = true;

0 commit comments

Comments
 (0)