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);
        }
Beispiel #2
0
        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);
        }