public static string Package(IPathManager pathManager, Plugin plugin) { var outputPath = PathUtils.Combine(plugin.ContentRootPath, plugin.Output); var packageId = PluginUtils.GetPackageId(plugin.Publisher, plugin.Name, plugin.Version); var publishPath = CliUtils.GetOsUserPluginsDirectoryPath(packageId); DirectoryUtils.DeleteDirectoryIfExists(publishPath); var zipPath = CliUtils.GetOsUserPluginsDirectoryPath($"{packageId}.zip"); FileUtils.DeleteFileIfExists(zipPath); foreach (var directoryName in DirectoryUtils.GetDirectoryNames(outputPath)) { if (//StringUtils.EqualsIgnoreCase(directoryName, "bin") || StringUtils.EqualsIgnoreCase(directoryName, "obj") || StringUtils.EqualsIgnoreCase(directoryName, "node_modules") || StringUtils.EqualsIgnoreCase(directoryName, ".git") || StringUtils.EqualsIgnoreCase(directoryName, ".vs") || StringUtils.EqualsIgnoreCase(directoryName, ".vscode") ) { continue; } DirectoryUtils.Copy(PathUtils.Combine(outputPath, directoryName), PathUtils.Combine(publishPath, directoryName)); } foreach (var fileName in DirectoryUtils.GetFileNames(outputPath)) { if (StringUtils.EqualsIgnoreCase(fileName, Constants.PluginConfigFileName) || StringUtils.EndsWithIgnoreCase(fileName, ".csproj") || StringUtils.EndsWithIgnoreCase(fileName, ".csproj.user") || StringUtils.EndsWithIgnoreCase(fileName, ".sln") || StringUtils.EndsWithIgnoreCase(fileName, ".DotSettings.user") || StringUtils.EndsWithIgnoreCase(fileName, ".csproj.user") || StringUtils.EndsWithIgnoreCase(fileName, ".csproj.user") || StringUtils.EndsWithIgnoreCase(fileName, ".cs") || StringUtils.EndsWithIgnoreCase(fileName, ".zip") ) { continue; } FileUtils.CopyFile(PathUtils.Combine(outputPath, fileName), PathUtils.Combine(publishPath, fileName)); } if (!PathUtils.IsEquals(outputPath, plugin.ContentRootPath)) { FileUtils.CopyFile(PathUtils.Combine(plugin.ContentRootPath, Constants.PackageFileName), PathUtils.Combine(publishPath, Constants.PackageFileName)); if (!FileUtils.IsFileExists(PathUtils.Combine(plugin.ContentRootPath, Constants.ReadmeFileName))) { FileUtils.CopyFile(PathUtils.Combine(plugin.ContentRootPath, Constants.ReadmeFileName), PathUtils.Combine(publishPath, Constants.ReadmeFileName)); } if (!FileUtils.IsFileExists(PathUtils.Combine(plugin.ContentRootPath, Constants.ChangeLogFileName))) { FileUtils.CopyFile(PathUtils.Combine(plugin.ContentRootPath, Constants.ChangeLogFileName), PathUtils.Combine(publishPath, Constants.ChangeLogFileName)); } } pathManager.CreateZip(zipPath, publishPath); DirectoryUtils.DeleteDirectoryIfExists(publishPath); return(zipPath); }