From 12eac7af8ea14133c950467f3ad670f0d52fc217 Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Fri, 7 Jun 2019 00:35:21 +0700 Subject: [PATCH] Revert "Fix build" This reverts commit 94e81c1c2761b848534fa1464323b4c037e5b98a. --- .../platform/bash/BashCompletionBuilder.java | 202 ++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100644 source/net/filebot/platform/bash/BashCompletionBuilder.java diff --git a/source/net/filebot/platform/bash/BashCompletionBuilder.java b/source/net/filebot/platform/bash/BashCompletionBuilder.java new file mode 100644 index 00000000..db4a24c4 --- /dev/null +++ b/source/net/filebot/platform/bash/BashCompletionBuilder.java @@ -0,0 +1,202 @@ +package net.filebot.platform.bash; + +import static net.filebot.WebServices.*; + +import java.io.File; +import java.lang.reflect.Field; +import java.nio.charset.Charset; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.stream.Stream; + +import net.filebot.Language; +import net.filebot.StandardRenameAction; +import net.filebot.cli.ConflictAction; +import net.filebot.web.Datasource; +import net.filebot.web.SortOrder; +import picocli.AutoComplete; +import picocli.CommandLine.Option; +import picocli.CommandLine.Parameters; + +class BashCompletionBuilder { + + @Option(names = "--mode", description = "Enable CLI interactive mode", completionCandidates = ModeCompletionCandidates.class) + public String mode; + + @Option(names = "-rename", description = "Rename media files") + public boolean rename = false; + + @Option(names = "--db", description = "Database", completionCandidates = DatabaseCompletionCandidates.class) + public String db; + + @Option(names = "--order", description = "Episode order", completionCandidates = SortOrderCompletionCandidates.class) + public SortOrder order = SortOrder.Airdate; + + @Option(names = "--action", description = "Rename action", completionCandidates = RenameActionCompletionCandidates.class) + public StandardRenameAction action = StandardRenameAction.MOVE; + + @Option(names = "--conflict", description = "Conflict resolution", completionCandidates = ConflictActionCompletionCandidates.class) + public ConflictAction conflict = ConflictAction.SKIP; + + @Option(names = "--filter", description = "Filter expression") + public File filter; + + @Option(names = "--mapper", description = "Mapper expression") + public File mapper; + + @Option(names = "--format", description = "Format expression") + public File format; + + @Option(names = "-non-strict", description = "Enable advanced matching and more aggressive guessing") + public boolean nonStrict = false; + + @Option(names = "-get-subtitles", description = "Fetch subtitles") + public boolean getSubtitles = false; + + @Option(names = "--q", description = "Force lookup query") + public String query; + + @Option(names = "--lang", description = "Language", completionCandidates = LanguageCompletionCandidates.class) + public String lang = "en"; + + @Option(names = "-check", description = "Create / Check verification files") + public boolean check = false; + + @Option(names = "--output", description = "Output path") + public File output; + + @Option(names = "--encoding", description = "Output character encoding", completionCandidates = CharsetCompletionCandidates.class) + public Charset encoding; + + @Option(names = "-list", description = "Print episode list") + public boolean list = false; + + @Option(names = "-mediainfo", description = "Print media info") + public boolean mediaInfo = false; + + @Option(names = "-revert", description = "Revert files") + public boolean revert = false; + + @Option(names = "-extract", description = "Extract archives") + public boolean extract = false; + + @Option(names = "-script", description = "Run Groovy script") + public File script; + + @Option(names = "--def", description = "Define script variables") + public Map defines; + + @Option(names = "-r", description = "Recursively process folders") + public boolean recursive = false; + + @Option(names = "--file-filter", description = "Input file filter expression") + public File inputFileFilter; + + @Option(names = "-exec", arity = "1..*", description = "Execute command") + public List exec; + + @Option(names = "-unixfs", description = "Allow special characters in file paths") + public boolean unixfs = false; + + @Option(names = "-no-xattr", description = "Disable extended attributes") + public boolean disableExtendedAttributes = false; + + @Option(names = "-no-history", description = "Disable history") + public boolean disableHistory = false; + + @Option(names = "--log", description = "Log level", completionCandidates = LogLevelCompletionCandidates.class) + public String log = "all"; + + @Option(names = "--log-file", description = "Log file") + public File logFile; + + @Option(names = "-clear-cache", description = "Clear cached and temporary data") + public boolean clearCache = false; + + @Option(names = "-clear-prefs", description = "Clear application settings") + public boolean clearPrefs = false; + + @Option(names = "-version", description = "Print version identifier") + public boolean version = false; + + @Option(names = "-help", description = "Print this help message") + public boolean help = false; + + @Option(names = "--license", description = "Import license file", paramLabel = "*.psm") + public File license; + + @Parameters + public List arguments = new ArrayList(); + + private static class DatabaseCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of(getEpisodeListProviders(), getMovieIdentificationServices(), getMusicIdentificationServices(), getLocalDatasources()).flatMap(Stream::of).map(Datasource::getIdentifier).iterator(); + } + } + + private static class SortOrderCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of(SortOrder.values()).map(Enum::name).iterator(); + } + } + + private static class RenameActionCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of(StandardRenameAction.values()).map(Enum::name).map(String::toLowerCase).iterator(); + } + } + + private static class ConflictActionCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of(ConflictAction.values()).map(Enum::name).map(String::toLowerCase).iterator(); + } + } + + private static class ModeCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of("interactive").iterator(); + } + } + + private static class LanguageCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Language.availableLanguages().stream().map(Language::getName).iterator(); + } + } + + private static class LogLevelCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of(Level.class.getFields()).map(Field::getName).iterator(); + } + } + + private static class CharsetCompletionCandidates implements Iterable { + + @Override + public Iterator iterator() { + return Stream.of("UTF-8", "Windows-1252", "ISO-8859-1").iterator(); + } + } + + public static void main(String[] args) { + AutoComplete.main("-n", "filebot", BashCompletionBuilder.class.getName()); + } + +}