public override bool Execute() { var modulesFile = Path.Combine(ProjectDir, "modules.json"); if (!File.Exists(modulesFile)) { Log.LogError("modules.json is not fould"); return(false); } var modules = new List <Module>(); using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(File.ReadAllText(modulesFile)))) { var ser = new DataContractJsonSerializer(modules.GetType()); modules = ser.ReadObject(ms) as List <Module>; } foreach (var module in modules) { var sourceRoot = Path.Combine(new DirectoryInfo(ProjectDir).Parent.FullName, "Modules", module.Id); var moduleManifestFile = Path.Combine(sourceRoot, "module.json"); if (!File.Exists(moduleManifestFile)) { Log.LogError($"module.json is not fould for {module.Id}"); return(false); } ModuleManifest moduleManifest = null; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(File.ReadAllText(moduleManifestFile)))) { var ser = new DataContractJsonSerializer(typeof(ModuleManifest)); moduleManifest = ser.ReadObject(ms) as ModuleManifest; } var destination = Path.Combine(ProjectDir, "Modules", module.Id); var destinationWwwroot = Path.Combine(ProjectDir, "wwwroot", "modules", module.Id.Split('.').Last().ToLower()); CreateOrCleanDirectory(destinationWwwroot); CreateOrCleanDirectory(destination); File.Copy(Path.Combine(sourceRoot, "module.json"), Path.Combine(destination, "module.json"), true); CopyDirectory(Path.Combine(sourceRoot, "Views"), Path.Combine(destination, "Views")); CopyDirectory(Path.Combine(sourceRoot, "wwwroot"), destinationWwwroot); if (!moduleManifest.IsBundledWithHost) { CopyDirectory(Path.Combine(sourceRoot, "bin", BuildConfiguration, "netcoreapp2.1"), Path.Combine(destination, "bin")); } if (module.Id == "SimplCommerce.Module.SampleData") { CopyDirectory(Path.Combine(sourceRoot, "SampleContent"), Path.Combine(destination, "SampleContent")); } Log.LogMessage(MessageImportance.High, $"Copied module {module.Id}"); } return(true); }
private bool CopyModule(Module module) { var sourceRoot = Path.Combine(new DirectoryInfo(ProjectDir).Parent.FullName, "Modules", module.Id); var moduleManifestFile = Path.Combine(sourceRoot, moduleFileName); if (!File.Exists(moduleManifestFile)) { Log.LogError($"{moduleFileName} is not fould for {module.Id}"); return(false); } ModuleManifest moduleManifest = null; using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(File.ReadAllText(moduleManifestFile)))) { var ser = new DataContractJsonSerializer(typeof(ModuleManifest)); moduleManifest = ser.ReadObject(ms) as ModuleManifest; } var destination = Path.Combine(ProjectDir, "Modules", module.Id); var destinationWwwroot = Path.Combine(ProjectDir, "wwwroot", "modules", module.Id.Split('.').Last().ToLower()); CreateOrCleanDirectory(destinationWwwroot); CreateOrCleanDirectory(destination); File.Copy(Path.Combine(sourceRoot, moduleFileName), Path.Combine(destination, moduleFileName), true); var bundleConfigFile = Path.Combine(sourceRoot, bundleConfigFileName); if (File.Exists(bundleConfigFile)) { File.Copy(Path.Combine(bundleConfigFile), Path.Combine(destination, bundleConfigFileName), true); } CopyDirectory(Path.Combine(sourceRoot, "wwwroot"), destinationWwwroot); if (!moduleManifest.IsBundledWithHost) { CopyDirectory(Path.Combine(sourceRoot, "bin", BuildConfiguration, TargetFramework), Path.Combine(destination, "bin")); } if (module.Id == "SimplCommerce.Module.SampleData") { CopyDirectory(Path.Combine(sourceRoot, "SampleContent"), Path.Combine(destination, "SampleContent")); } Log.LogMessage(MessageImportance.High, $"Copied module {module.Id}"); return(true); }