Esempio n. 1
0
        public static void File(string file)
        {
            MountRepository.Create(file, MountContext.External, MountEntity.File);
            var mntFile = SetFilesPath(file);

            SetBind(mntFile, file);
        }
Esempio n. 2
0
        public static void Dir(string directory)
        {
            MountRepository.Create(directory, MountContext.External, MountEntity.Directory);
            var mntDir = SetDirsPath(directory);

            Directory.CreateDirectory(directory);
            Directory.CreateDirectory(mntDir);
            SetBind(mntDir, directory);
        }
Esempio n. 3
0
        public static void CheckCurrentStatus()
        {
            var directories = Directory.EnumerateDirectories(Parameter.RepoDirs, "DIR*", SearchOption.TopDirectoryOnly).ToArray();

            foreach (var t in directories)
            {
                var realPath = GetDirsPath(t);
                var mount    = MountRepository.Get(realPath);
                if (mount == null)
                {
                    MountRepository.Create(realPath, MountContext.External, MountEntity.Directory);
                }
                if (Directory.Exists(realPath))
                {
                    continue;
                }
                try {
                    Terminal.Terminal.Execute($"mkdir -p {t}");
                    Terminal.Terminal.Execute($"mkdir -p {realPath}");
                    Terminal.Terminal.Execute($"cp {t} {realPath}");
                }
                catch (Exception ex) {
                    ConsoleLogger.Warn(ex.Message);
                }
            }
            ConsoleLogger.Log("current directories status checked");

            var files = Directory.EnumerateFiles(Parameter.RepoDirs, "FILE*", SearchOption.TopDirectoryOnly).ToArray();

            foreach (var t in files)
            {
                var realPath = GetFilesPath(t);
                var mount    = MountRepository.Get(realPath);
                if (mount == null)
                {
                    MountRepository.Create(realPath, MountContext.External, MountEntity.File);
                }
                if (System.IO.File.Exists(realPath))
                {
                    continue;
                }
                try {
                    var path    = t.GetAllStringsButLast('/');
                    var mntPath = realPath.GetAllStringsButLast('/');
                    Terminal.Terminal.Execute($"mkdir -p {path}");
                    Terminal.Terminal.Execute($"mkdir -p {mntPath}");
                    Terminal.Terminal.Execute($"cp {t} {realPath}");
                }
                catch (Exception ex) {
                    ConsoleLogger.Warn(ex.Message);
                }
            }
            ConsoleLogger.Log("current files status checked");
        }
Esempio n. 4
0
        public static void AllDirectories()
        {
            if (!MountRepository.Get().Any())
            {
                foreach (var t in DefaultWorkingDirectories)
                {
                    MountRepository.Create(t, MountContext.Core, MountEntity.Directory);
                }
            }
            ConsoleLogger.Log("stored mount info checked");

            CheckCurrentStatus();
            ConsoleLogger.Log("current mount status checked");

            var directoryMounts = MountRepository.Get().Where(m => m.MountEntity == MountEntity.Directory).ToArray();

            foreach (var t in directoryMounts)
            {
                try {
                    var dir    = t.Path.Replace("\\", "");
                    var mntDir = SetDirsPath(dir);
                    Directory.CreateDirectory(dir);
                    Directory.CreateDirectory(mntDir);
                    ConsoleLogger.Log($"{mntDir} -> {dir}");
                    if (IsAlreadyMounted(dir) == false)
                    {
                        SetBind(mntDir, dir);
                    }
                }
                catch (Exception ex) {
                    ConsoleLogger.Warn(ex.Message);
                }
            }
            ConsoleLogger.Log("directories mounted");

            var fileMounts = MountRepository.Get().Where(m => m.MountEntity == MountEntity.File).ToArray();

            foreach (var t in fileMounts)
            {
                var file    = t.Path.Replace("\\", "");
                var mntFile = SetFilesPath(file);
                if (mntFile == null)
                {
                    throw new ArgumentNullException(nameof(mntFile));
                }
                if (!System.IO.File.Exists(mntFile))
                {
                    continue;
                }
                var path    = file.GetAllStringsButLast('/');
                var mntPath = mntFile.GetAllStringsButLast('/');
                Terminal.Terminal.Execute($"mkdir -p {path}");
                Terminal.Terminal.Execute($"mkdir -p {mntPath}");
                if (!System.IO.File.Exists(file))
                {
                    Terminal.Terminal.Execute($"cp {mntFile} {file}");
                }
                ConsoleLogger.Log($"{mntFile} -> {file}");
                if (IsAlreadyMounted(file) == false)
                {
                    SetBind(mntFile, file);
                }
            }
            ConsoleLogger.Log("files mounted");

            foreach (var t in directoryMounts)
            {
                CheckMount(t.Path);
            }
            ConsoleLogger.Log("detected directories status checked");

            foreach (var srvc in from t in directoryMounts select t.AssociatedUnits into service where service.Count > 0 from srvc in service select srvc)
            {
                Terminal.Terminal.Execute($"systemctl restart {srvc}");
            }
            ConsoleLogger.Log("services restarted");
        }