• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

devonfw / IDEasy / 30835815457

03 Aug 2026 05:14PM UTC coverage: 72.601% (-0.009%) from 72.61%
30835815457

push

github

web-flow
#2187: Integrate Ruff (#2202)

Co-authored-by: Jörg Hohwiller <hohwille@users.noreply.github.com>

4997 of 7627 branches covered (65.52%)

Branch coverage included in aggregate %.

13056 of 17239 relevant lines covered (75.74%)

3.21 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

82.93
cli/src/main/java/com/devonfw/tools/ide/tool/uv/UvBasedCommandlet.java
1
package com.devonfw.tools.ide.tool.uv;
2

3
import java.nio.file.Files;
4
import java.util.Set;
5

6
import org.slf4j.Logger;
7
import org.slf4j.LoggerFactory;
8

9
import com.devonfw.tools.ide.common.Tag;
10
import com.devonfw.tools.ide.context.IdeContext;
11
import com.devonfw.tools.ide.log.IdeLogLevel;
12
import com.devonfw.tools.ide.process.ProcessContext;
13
import com.devonfw.tools.ide.process.ProcessErrorHandling;
14
import com.devonfw.tools.ide.process.ProcessMode;
15
import com.devonfw.tools.ide.process.ProcessResult;
16
import com.devonfw.tools.ide.tool.PackageManagerBasedLocalToolCommandlet;
17
import com.devonfw.tools.ide.tool.PackageManagerRequest;
18
import com.devonfw.tools.ide.tool.repository.ToolRepository;
19
import com.devonfw.tools.ide.version.VersionIdentifier;
20

21
/**
22
 * {@link PackageManagerBasedLocalToolCommandlet} for tools that are installed via {@code uv tool install} for PyPI. Concrete tools(e.g. {@code Just}) only need
23
 * a constructor and to override {@link #getPackageName()} if the PyPI package name differs from the IDEasy tool name.
24
 */
25
public abstract class UvBasedCommandlet extends PackageManagerBasedLocalToolCommandlet<Uv> {
26

27
  private static final Logger LOG = LoggerFactory.getLogger(UvBasedCommandlet.class);
4✔
28

29
  /**
30
   * The constructor.
31
   *
32
   * @param context the {@link IdeContext}.
33
   * @param tool    the {@link #getName() tool name}.
34
   * @param tags    the {@link #getTags() tags} classifying the tool. Should be created via {@link Set#of(Object) Set.of} method.
35
   */
36
  public UvBasedCommandlet(IdeContext context, String tool, Set<Tag> tags) {
37

38
    super(context, tool, tags);
5✔
39
  }
1✔
40

41
  @Override
42
  protected Class<Uv> getPackageManagerClass() {
43

44
    return Uv.class;
2✔
45
  }
46

47
  @Override
48
  public ToolRepository getToolRepository() {
49

50
    return this.context.getUvRepository();
4✔
51
  }
52

53
  @Override
54
  protected Uv getParentTool() {
55

56
    return this.context.getCommandletManager().getCommandlet(Uv.class);
7✔
57
  }
58

59
  @Override
60
  protected String appendVersion(String tool, VersionIdentifier version) {
61

62
    return tool + "@" + version;
5✔
63
  }
64

65
  @Override
66
  protected void completeRequestArgs(PackageManagerRequest request) {
67

68
    request.addArg("tool");
4✔
69
    super.completeRequestArgs(request);
3✔
70
  }
1✔
71

72
  @Override
73
  protected VersionIdentifier computeInstalledVersion() {
74

75
    if (!Files.isDirectory(this.context.getSoftwarePath().resolve("uv"))) {
9✔
76
      LOG.trace("Since uv is not installed, the tool {} cannot be installed either.", this.tool);
5✔
77
      return null;
2✔
78
    }
79
    String packageName = getPackageName();
3✔
80
    PackageManagerRequest request = new PackageManagerRequest("list", packageName).addArg("tool").addArg("list")
10✔
81
            .setProcessMode(ProcessMode.DEFAULT_CAPTURE);
2✔
82
    ProcessContext pc = this.context.newProcess().errorHandling(ProcessErrorHandling.NONE);
6✔
83
    request.setProcessContext(pc);
4✔
84
    ProcessResult result = runPackageManager(request, true);
5✔
85
    if (result.isSuccessful()) {
3!
86
      String prefix = packageName + " v";
3✔
87
      for (String line : result.getOut()) {
11!
88
        if (line.startsWith(prefix)) {
4✔
89
          return VersionIdentifier.of(line.substring(prefix.length()).trim());
7✔
90
        }
91
      }
1✔
92
    }
93
    LOG.debug("Could not determine installed version from 'uv tool list' output.");
×
94
    result.log(IdeLogLevel.DEBUG);
×
95
    return null;
×
96
  }
97

98
  @Override
99
  protected String completeRequestOption(PackageManagerRequest request) {
100

101
    if (PackageManagerRequest.TYPE_INSTALL.equals(request.getType())) {
5!
102
      return "--force";
2✔
103
    }
104

105
    return super.completeRequestOption(request);
×
106
  }
107

108
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc