use of org.fagu.fmv.soft.find.SoftFound in project fmv by f-agu.
the class Soft method withExecFile.
/**
* @param softName
* @return
*/
public static Soft withExecFile(File file) throws IOException {
if (!file.exists()) {
throw new FileNotFoundException(file.getAbsolutePath());
}
if (!file.isFile()) {
throw new IOException("It's not a file: " + file.getAbsolutePath());
}
Path path = file.toPath();
if (!Files.isExecutable(path)) {
throw new IOException("Cannot execute: " + file.getAbsolutePath());
}
SoftProvider softProvider = new SoftProvider(file.getName(), null) {
@Override
public SoftFoundFactory createSoftFoundFactory() {
throw new RuntimeException("Not available !");
}
};
TreeSet<SoftFound> founds = new TreeSet<>(Collections.singleton(SoftFound.found(file)));
return new Soft(new Founds(softProvider.getName(), founds, null), softProvider);
}
use of org.fagu.fmv.soft.find.SoftFound in project fmv by f-agu.
the class VersionSoftPolicy method toSoftFound.
/**
* @see org.fagu.fmv.soft.find.SoftPolicy#toSoftFound(org.fagu.fmv.soft.find.SoftInfo)
*/
@Override
public SoftFound toSoftFound(Object object) {
VersionSoftInfo versionSoftInfo = (VersionSoftInfo) object;
if (list.isEmpty()) {
throw new IllegalStateException("No validator defined !");
}
// system properties
SoftFound byPropertiesFound = byProperties(versionSoftInfo);
if (byPropertiesFound != null && byPropertiesFound.isFound()) {
return byPropertiesFound;
}
// defined
return byDefined(versionSoftInfo);
}
use of org.fagu.fmv.soft.find.SoftFound in project fmv by f-agu.
the class VersionPolicyTestCase method testAllOS_VersionV2_versionV1.
/**
*/
@Test
public void testAllOS_VersionV2_versionV1() {
SoftFound softFound = new VersionSoftPolicy().onAllPlatforms(minVersion(Version.V2)).toSoftFound(versionSoftInfo(Version.V1));
assertFalse(softFound.isFound());
assertEquals(FoundReasons.BAD_VERSION, softFound.getFoundReason());
assertEquals(">= v2", softFound.getReason());
}
use of org.fagu.fmv.soft.find.SoftFound in project fmv by f-agu.
the class VersionPolicyTestCase method testAllOS_VersionV2_versionV3.
/**
*/
@Test
public void testAllOS_VersionV2_versionV3() {
SoftFound softFound = new VersionSoftPolicy().onAllPlatforms(minVersion(Version.V2)).toSoftFound(versionSoftInfo(Version.V3));
assertTrue(softFound.isFound());
}
use of org.fagu.fmv.soft.find.SoftFound in project fmv by f-agu.
the class SoftTestCase method test1.
@Test
@Ignore
public void test1() throws Exception {
SoftFoundFactory ffSoftFoundFactory = ExecSoftFoundFactory.forProvider(new TestSoftProvider("ffprout")).withParameters("-version").parseFactory((file, softPolicy) -> new Parser() {
private Integer build;
@Override
public void readLine(String line) {
if (line.startsWith("ff")) {
build = Integer.parseInt(StringUtils.substringBetween(line, "N-", "-"));
}
}
@Override
public SoftFound closeAndParse(String cmdLineStr, int exitValue) throws IOException {
if (build == null) {
return SoftFound.foundBadSoft(file);
}
// return SoftFound.found(file, new TestSoftInfo(build));
return SoftFound.foundBadVersion(new TestSoftInfo(49), "85");
}
}).build();
// SoftFoundFactory identifyFoundFactory = ExecSoftFoundFactory.withParameters("-version").parseFactory(file ->
// new Parser() {
//
// @Override
// public void readLine(String line) {}
//
// @Override
// public SoftFound closeAndParse(String cmdLineStr, int exitValue) throws IOException {
// return SoftFound.foundBadVersion(new TestSoftInfo(49), "85");
// }
// }).build();
Soft soft = Soft.with(new TestSoftProvider("ffprout")).search(ffSoftFoundFactory);
// Soft ffprobeSoft = Soft.with("ffprobe").search(ffSoftFoundFactory);
// Soft identifySoft = Soft.withName("identify").search(identifyFoundFactory);
SoftLogger softFormatter = new SoftLogger(Arrays.asList(soft));
// SoftLogger softFormatter = new SoftLogger(Arrays.asList(ffprobeSoft, identifySoft, ffmpegSoft));
softFormatter.logDetails(System.out::println);
// System.out.println(soft.getFounds());
// System.out.println(soft.getFile());
soft.withParameters("").execute();
}
Aggregations