public LocalDirectoryClient(LocalDirectoryClientConfiguration options, IRemoteDevLogger logger) : base(options, logger) { if (string.IsNullOrWhiteSpace(options.Path)) { throw new ArgumentException("No path specified"); } }
public FileWatcher(FileWatcherConfig config, IRemoteDevLogger logger) { Config = config ?? throw new ArgumentNullException(nameof(config)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); // Create the event delay timer _eventTimer = new Timer(Config.MillisecondDelay) { AutoReset = false }; _eventTimer.Elapsed += OnTimerTick; // Create the framework-provided file system watcher _frameworkFileWatcher = new FileSystemWatcher(Config.WorkingDirectory) { IncludeSubdirectories = Config.Recursive }; _frameworkFileWatcher.Changed += HandleNonRenameChange; _frameworkFileWatcher.Created += HandleNonRenameChange; _frameworkFileWatcher.Deleted += HandleNonRenameChange; _frameworkFileWatcher.Renamed += HandleRename; }
public SftpClient(SftpClientConfiguration options, IRemoteDevLogger logger) : base(options, logger) { _sftpClient = new Lazy <RenciSftpClient>(InstantiateClient); }
static void Run(ProgramOptions programOptions, IFileInteractionClient target, IRemoteDevLogger logger) { var watcher = new FileWatcher(new FileWatcherConfig { WorkingDirectory = programOptions.WorkingDirectory, MillisecondDelay = programOptions.MillisecondsDelay, ExclusionFilters = ReadGitIgnoreExclusions(programOptions.WorkingDirectory, logger).ToList() }, logger); // Start watching files Console.WriteLine("Starting file monitor"); new RemoteDevWorker(watcher, target, logger).Start(); Console.WriteLine("Monitoring. Press any key to stop."); Console.ReadLine(); }
static IEnumerable <IFilePathFilter> ReadGitIgnoreExclusions(string rootDirectoryPath, IRemoteDevLogger logger) { // Always ignore .git folder yield return(new GlobFilePathFilter(".git")); yield return(new GlobFilePathFilter(".git/**")); // Ignore files from root gitignore var gitIgnorePath = Path.Combine(rootDirectoryPath, ".gitignore"); if (File.Exists(gitIgnorePath)) { logger.Log(LogLevel.INFO, $"Using the gitignore found in {gitIgnorePath}"); var filterCount = 0; using (var fs = File.OpenRead(gitIgnorePath)) using (var reader = new StreamReader(fs)) { while (!reader.EndOfStream) { var filter = GitIgnoreParser.ParseLine(reader.ReadLine()); if (filter != null) { filterCount++; yield return(filter); } } } logger.Log(LogLevel.INFO, $"Found {filterCount} blob filters in the gitignore file"); } else { logger.Log(LogLevel.WARN, "No .gitignore found in root directory. No file/folder changes will be ignored"); } }
protected FileInteractionClient(O options, IRemoteDevLogger logger) { Options = options ?? throw new ArgumentNullException(nameof(options)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public RemoteDevWorker(IFileWatcher fileWatcher, IFileInteractionClient target, IRemoteDevLogger logger) { _fileWatcher = fileWatcher ?? throw new ArgumentNullException(nameof(fileWatcher)); _fileClient = target ?? throw new ArgumentNullException(nameof(target)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }