aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/backends/paths/TargetDir.java
blob: 39fd115d693a2ded44b1336c34a85f95ac8e7edb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package org.shedlang.compiler.backends.paths;

import org.shedlang.compiler.types.NamespaceName;

import java.nio.file.Path;

public class TargetDir {
    private final Path targetDir;

    public TargetDir(Path targetDir) {
        this.targetDir = targetDir;
    }

    public PartialTargetPath bin(String name) {
        return new PartialTargetPath(
            targetDir.resolve("bin").resolve(name)
        );
    }

    public PartialTargetPath namespace(NamespaceName namespaceName) {
        var path = targetDir.resolve("namespaces");

        for (var part : namespaceName.parts()) {
            path = path.resolve(part);
        }

        return new PartialTargetPath(path);
    }

    public Path topLevel(String name) {
        return targetDir.resolve(name);
    }
}