Ejemplo n.º 1
0
        /// <summary>
        /// 根据文件清单生成压缩包
        /// </summary>
        /// <param name="dev"></param>
        /// <param name="item"></param>
        /// <param name="type"></param>
        public static void GenerateCompressedPackage(bool dev, PublishDirInfo item, AppDownloadType type)
        {
            var fileEx = GetFileExByCompressedType(type);

            var packPath = GetPackPath(dev, item, fileEx);

            Console.WriteLine($"正在生成压缩包:{packPath}");
            IOPath.FileIfExistsItDelete(packPath);

            GetCreatePackByCompressedType(type)(packPath, item.Files);

            using var fileStream = File.OpenRead(packPath);
            var sha256 = Hashs.String.SHA256(fileStream);

            var fileInfoM = new PublishFileInfo
            {
                SHA256 = sha256,
                Length = fileStream.Length,
                Path   = packPath,
            };

            if (item.BuildDownloads.ContainsKey(type))
            {
                item.BuildDownloads[type] = fileInfoM;
            }
            else
            {
                item.BuildDownloads.Add(type, fileInfoM);
            }
        }
Ejemplo n.º 2
0
            public static void Add(RootCommand command, AppDownloadType type, string name)
            {
                var comm = new Command(name, "8. (本地)读取上一步操作后的 Publish.json 生成压缩包并计算哈希值写入 Publish.json")
                {
                    Handler = CommandHandler.Create(async(bool dev, string buildpackage) =>
                    {
                        if (!string.IsNullOrEmpty(buildpackage))
                        {
                            buildpackage = buildpackage.Trim();
                            buildpackage = buildpackage.Length > 7 ? buildpackage[..7] : buildpackage;
                            Version      = buildpackage;
                        }

                        var publish_json_path = PublishJsonFilePath;
                        var publish_json_str  = File.ReadAllText(publish_json_path);
                        var dirNames          = Serializable.DJSON <PublishDirInfo[]>(publish_json_str);

                        if (!dirNames.Any_Nullable())
                        {
                            Console.WriteLine($"错误:发布配置文件读取失败!{publish_json_path}");
                            return;
                        }

                        dirNames = dirNames.ThrowIsNull(nameof(dirNames));

                        var parallelTasks = dirNames.Select(x => Task.Run(() => Step_cd.GenerateCompressedPackage(dev, x, type))).ToList();

                        await Task.WhenAll(parallelTasks);

                        SavePublishJson(dirNames, removeFiles: false);

                        Console.WriteLine("完成");
                    })
Ejemplo n.º 3
0
 /// <summary>
 /// 根据压缩包类型获取文件扩展名
 /// </summary>
 /// <param name="compressedType"></param>
 /// <returns></returns>
 /// <exception cref="ArgumentOutOfRangeException"></exception>
 static string GetFileExByCompressedType(AppDownloadType compressedType) => compressedType switch
 {