using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace NBC.Asset.Editor
{
///
/// 生成打包的清单文件
///
[Id(TaskId.GenPackageData)]
public class GenPackageDataTask : BuildTask
{
private BuildContext _context;
public override void Run(BuildContext context)
{
_context = context;
BuildPackagesData();
}
private void BuildPackagesData()
{
Dictionary dictionary = new Dictionary();
foreach (var bundle in _context.Bundles)
{
var package = Path.GetDirectoryName(bundle.Name);
if (string.IsNullOrEmpty(package)) continue;
if (!dictionary.TryGetValue(package, out var buildPackage))
{
buildPackage = new BuildPackage
{
Name = package,
};
dictionary[package] = buildPackage;
}
buildPackage.Bundles.Add(bundle);
}
var packages = CollectorSetting.Instance.Packages;
foreach (var key in dictionary.Keys)
{
var p = packages.Find(p => p.Name == key);
var package = dictionary[key];
package.Size = package.Bundles.Sum(b => b.Size);
package.Def = p.Default ? 1 : 0;
var savePath = BuildSettings.GetCachePath($"{key}.json");
Util.WriteJson(package, savePath);
}
// var packages = CollectorSetting.Instance.Packages;
// foreach (var key in dictionary.Keys)
// {
// var value = dictionary[key];
// var packageData = value.ToPackagesData();
// var savePath = BuildSettings.GetCachePath($"{key}.json");
// Util.WriteJson(packageData, savePath);
// }
//
// foreach (var key in dictionary.Keys)
// {
// var p = packages.Find(p => p.Name == key);
// var packPath = BuildSettings.GetCachePath($"{key}.json");
// VersionPackagesData versionPackagesData = new VersionPackagesData
// {
// Ver = DateTimeOffset.Now.ToUnixTimeSeconds().ToString(),
// Def = p.Default ? 1 : 0,
// Name = key,
// Hash = Util.ComputeHash(packPath),
// Size = Util.GetFileSize(packPath)
// };
// versionData.Packages.Add(versionPackagesData);
// }
//
// var versionSavePath = BuildSettings.GetCachePath("version.json");
// versionData.AppVer = UnityEditor.PlayerSettings.bundleVersion;
// versionData.BuildTime = DateTimeOffset.Now.ToUnixTimeSeconds();
// Util.WriteJson(versionData, versionSavePath);
}
}
}