Search in sources :

Example 1 with WatchOperationOptions

use of org.syncany.operations.watch.WatchOperationOptions in project syncany by syncany.

the class WatchCommand method execute.

@Override
public int execute(String[] operationArgs) throws Exception {
    WatchOperationOptions operationOptions = parseOptions(operationArgs);
    new WatchOperation(config, operationOptions).execute();
    return 0;
}
Also used : WatchOperationOptions(org.syncany.operations.watch.WatchOperationOptions) WatchOperation(org.syncany.operations.watch.WatchOperation)

Example 2 with WatchOperationOptions

use of org.syncany.operations.watch.WatchOperationOptions in project syncany by syncany.

the class DaemonConfigHelper method createAndWriteExampleDaemonConfig.

public static DaemonConfigTO createAndWriteExampleDaemonConfig(File daemonConfigFile) throws ConfigException {
    File defaultFolder = new File(System.getProperty("user.home"), UserConfig.DEFAULT_FOLDER);
    FolderTO defaultFolderTO = new FolderTO();
    defaultFolderTO.setPath(defaultFolder.getAbsolutePath());
    defaultFolderTO.setWatchOptions(new WatchOperationOptions());
    return createAndWriteDaemonConfig(daemonConfigFile, Arrays.asList(new FolderTO[] { defaultFolderTO }));
}
Also used : WatchOperationOptions(org.syncany.operations.watch.WatchOperationOptions) FolderTO(org.syncany.config.to.FolderTO) File(java.io.File)

Example 3 with WatchOperationOptions

use of org.syncany.operations.watch.WatchOperationOptions in project syncany by syncany.

the class WatchCommand method parseOptions.

@Override
public WatchOperationOptions parseOptions(String[] operationArgs) throws Exception {
    WatchOperationOptions operationOptions = new WatchOperationOptions();
    OptionParser parser = new OptionParser();
    OptionSpec<Integer> optionInterval = parser.acceptsAll(asList("i", "interval")).withRequiredArg().ofType(Integer.class);
    OptionSpec<Void> optionNoAnnouncements = parser.acceptsAll(asList("N", "no-announcements"));
    OptionSpec<String> optionAnnouncements = parser.acceptsAll(asList("a", "announce")).withRequiredArg();
    OptionSpec<Void> optionNoWatcher = parser.acceptsAll(asList("W", "no-watcher"));
    OptionSpec<Integer> optionSettleDelay = parser.acceptsAll(asList("s", "delay")).withRequiredArg().ofType(Integer.class);
    OptionSet options = parser.parse(operationArgs);
    // --interval
    if (options.has(optionInterval)) {
        operationOptions.setInterval(options.valueOf(optionInterval) * 1000);
    }
    // Conflicting options: --no-announcements and --announce=<..>
    if (options.has(optionNoAnnouncements) && options.has(optionAnnouncements)) {
        throw new Exception("Options --no-announcements and --announce in conflict with one another.");
    }
    // --no-announcements
    if (options.has(optionNoAnnouncements)) {
        operationOptions.setAnnouncements(false);
    }
    // --announce=<host>:<port>
    if (options.has(optionAnnouncements)) {
        operationOptions.setAnnouncements(true);
        String announcementsStr = options.valueOf(optionAnnouncements);
        Matcher matcher = ANNOUNCEMENTS_PATTERN.matcher(announcementsStr);
        if (!matcher.matches()) {
            throw new Exception("Invalid argument for --announcements, expected pattern: " + ANNOUNCEMENTS_PATTERN.pattern());
        }
        String announcementsHost = matcher.group(ANNOUNCEMENTS_PATTERN_GROUP_HOST);
        int announcementsPort = Integer.parseInt(matcher.group(ANNOUNCEMENTS_PATTERN_GROUP_PORT));
        operationOptions.setAnnouncementsHost(announcementsHost);
        operationOptions.setAnnouncementsPort(announcementsPort);
    }
    // --delay=<sec>
    if (options.has(optionSettleDelay)) {
        operationOptions.setSettleDelay(options.valueOf(optionSettleDelay) * 1000);
    }
    // --no-watcher
    if (options.has(optionNoWatcher)) {
        operationOptions.setWatcher(false);
    }
    return operationOptions;
}
Also used : WatchOperationOptions(org.syncany.operations.watch.WatchOperationOptions) Matcher(java.util.regex.Matcher) OptionSet(joptsimple.OptionSet) OptionParser(joptsimple.OptionParser)

Example 4 with WatchOperationOptions

use of org.syncany.operations.watch.WatchOperationOptions in project syncany by syncany.

the class WatchServer method startWatchOperations.

private void startWatchOperations(Map<File, FolderTO> newWatchedFolderTOs) throws ConfigException, ServiceAlreadyStartedException {
    for (Map.Entry<File, FolderTO> folderEntry : newWatchedFolderTOs.entrySet()) {
        File localDir = folderEntry.getKey();
        try {
            Config watchConfig = ConfigHelper.loadConfig(localDir);
            if (watchConfig != null) {
                logger.log(Level.INFO, "- Starting watch operation at " + localDir + " ...");
                WatchOperationOptions watchOptions = folderEntry.getValue().getWatchOptions();
                if (watchOptions == null) {
                    watchOptions = new WatchOperationOptions();
                }
                WatchRunner watchRunner = new WatchRunner(watchConfig, watchOptions, daemonConfig.getPortTO());
                watchRunner.start();
                watchOperations.put(localDir, watchRunner);
            } else {
                logger.log(Level.INFO, "- CANNOT start watch, because no config found at " + localDir + " ...");
            }
        } catch (Exception e) {
            logger.log(Level.SEVERE, "  + Cannot start watch operation at " + localDir + ". IGNORING.", e);
        }
    }
}
Also used : WatchOperationOptions(org.syncany.operations.watch.WatchOperationOptions) Config(org.syncany.config.Config) FolderTO(org.syncany.config.to.FolderTO) Map(java.util.Map) TreeMap(java.util.TreeMap) File(java.io.File) ConfigException(org.syncany.config.ConfigException)

Aggregations

WatchOperationOptions (org.syncany.operations.watch.WatchOperationOptions)4 File (java.io.File)2 FolderTO (org.syncany.config.to.FolderTO)2 Map (java.util.Map)1 TreeMap (java.util.TreeMap)1 Matcher (java.util.regex.Matcher)1 OptionParser (joptsimple.OptionParser)1 OptionSet (joptsimple.OptionSet)1 Config (org.syncany.config.Config)1 ConfigException (org.syncany.config.ConfigException)1 WatchOperation (org.syncany.operations.watch.WatchOperation)1