Пример #1
0
        public List <LocalReleaseInfo> ScanAppsDirPath()
        {
            var list  = new List <LocalReleaseInfo>();
            var files = GetSyrupPath(_appsDirPath);

            foreach (var fileInfo in files)
            {
                var syrup     = JsonConvert.DeserializeObject <SyrupFileInfo>(File.ReadAllText(fileInfo.FullName));
                var parentDir = fileInfo.Directory;
                if ((parentDir == null) ||
                    parentDir.GetFiles(Consts.SYRUP_ACTIVE_APP_FILE, SearchOption.TopDirectoryOnly).Any())
                {
                    continue;
                }
                var item = new LocalReleaseInfo
                {
                    App         = syrup.App,
                    Name        = syrup.Name,
                    File        = syrup.File,
                    Sha         = syrup.Sha,
                    SemVer      = syrup.SemVer,
                    RelaseDate  = syrup.RelaseDate,
                    IsExtracted = true
                };
                list.Add(item);
            }
            return(list);
        }
Пример #2
0
        public void CopyToActiveDir(LocalReleaseInfo release)
        {
            var versionAppDirPath = Path.Combine(_appsDirPath, release.Name);
            var currentAppDirPath = Path.Combine(_appsDirPath, release.App);

            Misc.RemoveFilesAndDirsInDir(currentAppDirPath);

            var di = new DirectoryInfo(versionAppDirPath);

            foreach (var d in di.GetDirectories())
            {
                var dst = Path.Combine(currentAppDirPath, d.Name);
                Misc.CopyDirectory(d.FullName, dst);
            }

            var syrupFile    = release.File + Consts.SYRUP_FILE_EXTENSION;
            var srcSyrupFile = Path.Combine(_appsDirPath, release.Name, syrupFile);

            if (File.Exists(srcSyrupFile))
            {
                var dstSyrupFile = Path.Combine(currentAppDirPath, syrupFile);
                File.Copy(srcSyrupFile, dstSyrupFile);
            }
            var activeFile = Path.Combine(currentAppDirPath, "syrup-active-config.json");

            File.WriteAllText(activeFile, "{}");
        }
Пример #3
0
        public void RunBefore()
        {
            LocalReleaseInfo releaseInfo = new LocalReleaseInfo {
                App = "VideoAnalyzer"
            };

            _scriptService.RunBeforeMakeCurrent(releaseInfo);
        }
Пример #4
0
        public void MakeActive(LocalReleaseInfo release)
        {
            _releaseInfoLocals.ForEach(x => x.Value.IsActive = false);
            var r = _releaseInfoLocals.FirstOrDefault(x => x.Key == release.Name).Value;

            if (r != null)
            {
                r.IsActive = true;
            }
        }
Пример #5
0
        public void PutReleaseToNugetDir(LocalReleaseInfo release, string path)
        {
            var filePathInNugets = Path.Combine(_syrupNugetsDirPath, release.Name, release.File);
            var dirPathInNugets  = Path.GetDirectoryName(filePathInNugets);

            Misc.CreateDirIfNotExist(dirPathInNugets);
            Misc.RemoveFilesInDir(dirPathInNugets);
            File.Move(path, filePathInNugets);
            GenerateSyrupFile(release, filePathInNugets);
            release.IsLocalNuget = true;
        }
Пример #6
0
        public SyrupExecuteResult RunAfterMakeCurrent(LocalReleaseInfo releaseInfo)
        {
            _log.Debug($"RunAfterMakeCurrent; File: {releaseInfo.File}");
            var rootPath       = new DirectoryInfo(_pathToApps).Parent?.FullName;
            var currentAppPath = Path.Combine(_pathToApps, releaseInfo.App);
            var scriptsPath    = Path.Combine(currentAppPath, "_syrup\\scripts");
            var scriptPath     = Path.Combine(scriptsPath, "after-make-current.csx");
            var globals        = new ExecutorRequest(scriptPath, rootPath, currentAppPath, releaseInfo.Name);
            var res            = Run(globals);

            return(res);
        }
Пример #7
0
        private void GenerateSyrupFile(LocalReleaseInfo release, string filePath)
        {
            var sha           = GetSha1Hash(filePath);
            var file          = Path.GetFileName(filePath);
            var syrupFilePath = filePath + Consts.SYRUP_FILE_EXTENSION;

            var res = new SyrupFileInfo
            {
                App        = release.App,
                Name       = release.Name,
                File       = file,
                RelaseDate = release.RelaseDate,
                SemVer     = release.SemVer,
                Sha        = sha
            };
            var json = JsonConvert.SerializeObject(res, Formatting.Indented);

            File.WriteAllText(syrupFilePath, json);
        }
Пример #8
0
 public void MakeUpdateFromLocal(List <LocalReleaseInfo> relaseInfos)
 {
     foreach (var releaseInfo in relaseInfos)
     {
         LocalReleaseInfo ri;
         if (_releaseInfoLocals.TryGetValue(releaseInfo.Name, out ri))
         {
             ri.App          = releaseInfo.App;
             ri.IsOnServer   = true;
             ri.File         = releaseInfo.File;
             ri.Channel      = releaseInfo.Channel;
             ri.FileUrl      = releaseInfo.FileUrl;
             ri.RelaseDate   = releaseInfo.RelaseDate;
             ri.SemVer       = releaseInfo.SemVer;
             ri.Sha          = releaseInfo.Sha;
             ri.IsLocalNuget = releaseInfo.IsLocalNuget;
             ri.IsExtracted  = releaseInfo.IsExtracted;
             ri.IsActive     = releaseInfo.IsActive;
         }
         else
         {
             var rl = new LocalReleaseInfo
             {
                 App          = releaseInfo.App,
                 Name         = releaseInfo.Name,
                 File         = releaseInfo.File,
                 SemVer       = releaseInfo.SemVer,
                 Sha          = releaseInfo.Sha,
                 RelaseDate   = releaseInfo.RelaseDate,
                 IsLocalNuget = releaseInfo.IsLocalNuget,
                 IsExtracted  = releaseInfo.IsExtracted,
                 IsActive     = releaseInfo.IsActive
             };
             if (!_releaseInfoLocals.TryAdd(releaseInfo.Name, rl))
             {
                 throw new CannotAddToLocalRelaseInfoServiceException();
             }
         }
     }
 }
Пример #9
0
 public void MakeUpdateFromServer(List <ReleaseInfo> relaseInfos)
 {
     _releaseInfoLocals.ForEach(x => x.Value.IsOnServer = false);
     foreach (var releaseInfo in relaseInfos)
     {
         LocalReleaseInfo ri;
         if (_releaseInfoLocals.TryGetValue(releaseInfo.Name, out ri))
         {
             ri.IsOnServer = true;
             ri.App        = releaseInfo.App;
             ri.File       = releaseInfo.File;
             ri.Channel    = releaseInfo.Channel;
             ri.FileUrl    = releaseInfo.FileUrl;
             ri.RelaseDate = releaseInfo.RelaseDate;
             ri.SemVer     = releaseInfo.SemVer;
             ri.Sha        = releaseInfo.Sha;
         }
         else
         {
             var rl = new LocalReleaseInfo
             {
                 App        = releaseInfo.App,
                 Name       = releaseInfo.Name,
                 Channel    = releaseInfo.Channel,
                 File       = releaseInfo.File,
                 FileUrl    = releaseInfo.FileUrl,
                 SemVer     = releaseInfo.SemVer,
                 Sha        = releaseInfo.Sha,
                 RelaseDate = releaseInfo.RelaseDate,
                 IsOnServer = true
             };
             if (!_releaseInfoLocals.TryAdd(releaseInfo.Name, rl))
             {
                 throw new CannotAddToLocalRelaseInfoServiceException();
             }
         }
     }
 }
Пример #10
0
        public void ExtractNugetToApps(LocalReleaseInfo release)
        {
            var pathInNuget  = Path.Combine(_syrupNugetsDirPath, release.Name, release.File);
            var syrupInNuget = Path.Combine(_syrupNugetsDirPath, release.Name,
                                            release.File + Consts.SYRUP_FILE_EXTENSION);

            if (File.Exists(pathInNuget))
            {
                var dirInApps = Path.Combine(_appsDirPath, release.Name);
                Misc.CreateDirIfNotExist(dirInApps);
                Misc.RemoveFilesAndDirsInDir(dirInApps);
                ZipFile.ExtractToDirectory(pathInNuget, dirInApps);

                if (File.Exists(syrupInNuget))
                {
                    var filePath = Path.Combine(dirInApps, release.File + Consts.SYRUP_FILE_EXTENSION);

                    File.Copy(syrupInNuget, filePath);
                    release.IsExtracted = true;
                    CleanNugetRemains(dirInApps);
                }
            }
        }
Пример #11
0
        public List <LocalReleaseInfo> ScanNugetsDirPath()
        {
            var list = new List <LocalReleaseInfo>();

            var files = GetSyrupPath(_syrupNugetsDirPath);

            foreach (var fileInfo in files)
            {
                var syrup = JsonConvert.DeserializeObject <SyrupFileInfo>(File.ReadAllText(fileInfo.FullName));
                var item  = new LocalReleaseInfo
                {
                    App          = syrup.App,
                    Name         = syrup.Name,
                    File         = syrup.File,
                    Sha          = syrup.Sha,
                    SemVer       = syrup.SemVer,
                    RelaseDate   = syrup.RelaseDate,
                    IsLocalNuget = true
                };
                list.Add(item);
            }
            return(list);
        }