Пример #1
0
        public static List <string> GetAllValidFiles(string path)
        {
            List <string> files = GetAllFiles(path);

            string extension = PipelineConfiguration.Get("allowed_extension");

            // filter files by an allowed file extension
            files = files.Where(f => f.Split('.').Last() == extension).ToList();

            return(files);
        }
Пример #2
0
        static void Main(string[] args)
        {
            // load configuration
            Console.WriteLine("Loading configuration");
            PipelineConfiguration.LoadConfiguration("config.json");
            Console.WriteLine("");

            // sync google drive files
            Console.WriteLine("Trying cloud sync");
            GoogleDriveHelper.RunGoogleDrive("");
            Console.ReadKey();

            // detect files
            Console.WriteLine("Running file comparison");
            Console.WriteLine("");

            Console.WriteLine("asset_path:");
            string asset_path = PipelineConfiguration.Get("asset_path");

            Console.WriteLine(asset_path);
            Console.WriteLine("");

            Console.WriteLine("target_path:");
            string target_path = PipelineConfiguration.Get("target_path");

            Console.WriteLine(target_path);
            Console.WriteLine("");

            Console.WriteLine("getting asset files:");
            List <string> assetFiles = FileHelper.GetAllValidFiles(asset_path);

            Console.WriteLine("");

            Console.WriteLine("getting target files:");
            List <string> targetFiles = FileHelper.GetAllValidFiles(target_path);

            Console.WriteLine("");

            Console.WriteLine("Comparing files");
            List <string> existingFiles = new List <string>();
            List <string> newFiles      = new List <string>();
            List <string> updatedFiles  = new List <string>();

            foreach (string file in assetFiles)
            {
                FileInfo assetFileInfo = new FileInfo(file);

                // try and find the original file in the assets
                string relativePath = file.Substring(asset_path.Length, file.Length - asset_path.Length);

                string targetFilePath = target_path + relativePath;

                FileInfo targetFileInfo = new FileInfo(targetFilePath);
                if (targetFileInfo.Exists)
                {
                    if (targetFileInfo.Length == assetFileInfo.Length && targetFileInfo.LastWriteTimeUtc == assetFileInfo.LastWriteTimeUtc)
                    {
                        // file has not changed
                        existingFiles.Add(file);
                    }
                    else
                    {
                        // file has changed
                        updatedFiles.Add(file);
                    }
                }
                else
                {
                    // file is new
                    newFiles.Add(file);
                }
            }
            Console.WriteLine(assetFiles.Count + " Files compared");
            Console.WriteLine("");
            Console.WriteLine(newFiles.Count + " New Files");
            Console.WriteLine(updatedFiles.Count + " Updated Files");
            Console.WriteLine("");

            Console.ReadKey();
            Console.WriteLine("");
            Console.WriteLine("New files");
            Console.WriteLine("");
            foreach (string file in newFiles)
            {
                Console.WriteLine(file);
            }

            Console.ReadKey();
            Console.WriteLine("");
            Console.WriteLine("Updated files");
            Console.WriteLine("");
            foreach (string file in updatedFiles)
            {
                Console.WriteLine(file);
            }
            Console.WriteLine("");

            Console.WriteLine("Copy files? (yes)");
            string input = Console.ReadLine();

            if (input.ToLower() == "yes")
            {
                Console.WriteLine("Copying files");

                Console.WriteLine("Copying new files");
                foreach (string file in newFiles)
                {
                    // copy the file to the new file path
                    string relativePath   = file.Substring(asset_path.Length, file.Length - asset_path.Length);
                    string targetFilePath = target_path + relativePath;

                    string directory = Path.GetDirectoryName(targetFilePath);

                    if (!Directory.Exists(directory))
                    {
                        Directory.CreateDirectory(directory);
                    }

                    File.Copy(file, targetFilePath);
                }
                Console.WriteLine("New files copied");

                Console.WriteLine("Copying updated files");
                foreach (string file in updatedFiles)
                {
                    // copy the file to the new file path
                    string relativePath   = file.Substring(asset_path.Length, file.Length - asset_path.Length);
                    string targetFilePath = target_path + relativePath;

                    string directory = Path.GetDirectoryName(targetFilePath);

                    if (!Directory.Exists(directory))
                    {
                        Directory.CreateDirectory(directory);
                    }

                    File.Copy(file, targetFilePath, true);
                }
                Console.WriteLine("Updated files copied");
                Console.WriteLine("");
                Console.WriteLine("Sync pipeline complete");
                Console.ReadKey();
            }
            else
            {
                // exit
            }
        }