public LocalDirectoryClient(LocalDirectoryClientConfiguration options, IRemoteDevLogger logger) : base(options, logger)
 {
     if (string.IsNullOrWhiteSpace(options.Path))
     {
         throw new ArgumentException("No path specified");
     }
 }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
 public SftpClient(SftpClientConfiguration options, IRemoteDevLogger logger) : base(options, logger)
 {
     _sftpClient = new Lazy <RenciSftpClient>(InstantiateClient);
 }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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));
 }
Ejemplo n.º 7
0
 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));
 }