private WriteLine ( [ message, bool bypassNoisy = false ) : void | ||
message | [ | |
bypassNoisy | bool | |
return | void |
private void ProcessMasterDatabase([NotNull] ProcessorArgs args, [NotNull] string[] defaultDatabasesNames, [NotNull] IDictionary <string, Database> defaultDatabases) { Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(defaultDatabasesNames, "defaultDatabasesNames"); Assert.ArgumentNotNull(defaultDatabases, "defaultDatabases"); var connectionStrings = args.ConnectionStringsConfig; if (!defaultDatabasesNames.Contains("web")) { return; } var webDatabasePath = args.Server.MapPath(string.Format("/App_Data/Databases/{0}", this.GetDefaultDatabase(defaultDatabases, "web").FileName)); var masterDatabasePath = args.Server.MapPath(string.Format("/App_Data/Databases/{0}", this.GetDefaultDatabase(defaultDatabases, "master").FileName)); if (File.Exists(webDatabasePath) || !File.Exists(masterDatabasePath)) { return; } args.WriteLine("Copying master database as web..."); File.Copy(masterDatabasePath, webDatabasePath); var cstr = new SqlConnectionStringBuilder { IntegratedSecurity = true, UserInstance = true, DataSource = ".\\SQLEXPRESS", AttachDBFilename = webDatabasePath }; this.AddConnectionString(connectionStrings, "web", cstr.ToString()); }
protected ZipFile GetFileSetZip([NotNull] ProcessorArgs args, [NotNull] string type) { Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(type, "type"); var release = args.Release; Assert.IsNotNull(release, "release"); Assert.ArgumentNotNull(release, "release"); args.WriteLine("Downloading " + type + " files..."); var fileInfo = release.Defaults.Files[type].Download(); var zipFilePath = fileInfo.FullName; args.WriteLine("Downloaded to " + zipFilePath); ZipFile zip; try { zip = new ZipFile(zipFilePath); } catch { args.WriteLine("Cached " + type + " files are corrupted. Re-downloading..."); File.Delete(zipFilePath); fileInfo = release.Defaults.Files[type].Download(); zipFilePath = fileInfo.FullName; args.WriteLine("Downloaded to " + zipFilePath); zip = new ZipFile(zipFilePath); } return(zip); }
internal static IRelease GetRelease(ProcessorArgs args) { args.WriteLine("Downloading metadata..."); var kernelVersion = args.SitecoreVersion; var versionName = GetVersionName(kernelVersion); var version = GetVersion(versionName); var releaseName = GetReleaseName(kernelVersion); var release = GetRelease(version, releaseName); return release; }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); args.WriteLine("Extracting assemblies bundled in *.nupkg files..."); var nugetPackages = Directory.GetFiles(args.Server.MapPath("/"), "*.nupkg", SearchOption.AllDirectories); foreach (var package in nugetPackages) { this.ExtractNuGetPackage(args, package); File.Delete(package); } }
internal override void Process(ProcessorArgs args) { args.WriteLine("Merging web.config include files..."); var webConfigPath = args.Server.MapPath("/web.config"); Assert.IsTrue(File.Exists(webConfigPath), "The /web.config file does not exist"); var result = this.Process(webConfigPath); if (result == null) { return; } result.Save(webConfigPath); }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); args.WriteLine("Extracting assemblies bundled in *.nupkg files..."); var nugetPackages = Directory.GetFiles(args.Server.MapPath("/"), "*.nupkg", SearchOption.AllDirectories); foreach (var package in nugetPackages) { this.ExtractNuGetPackage(args, package); File.Delete(package); } }
internal override void Process(ProcessorArgs args) { args.WriteLine("Merging web.config include files..."); var webConfigPath = args.Server.MapPath("/web.config"); Assert.IsTrue(File.Exists(webConfigPath), "The /web.config file does not exist"); var result = this.Process(webConfigPath); if (result == null) { return; } result.Save(webConfigPath); }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); var root = args.Server.MapPath("/"); var webConfigPath = Path.Combine(root, "web.config"); if (!File.Exists(webConfigPath)) { return; } var webConfig = new XmlDocument(); webConfig.Load(webConfigPath); if (webConfig.SelectSingleNode("/configuration/sitecore") != null) { // to speed up bootcamp we consider web.config read-to-use if it contains <sitecore> element return; } var httpModule = webConfig.SelectNodes("/configuration/system.web/httpModules/add") .OfType <XmlElement>() .FirstOrDefault(x => x.GetAttribute("type").Contains(typeof(HttpModule).FullName)); if (httpModule != null) { httpModule.ParentNode.RemoveChild(httpModule); } args.WriteLine("Moving /web.config to /Web_Config/Include/!root_web_config.config"); var targetFolder = Path.Combine(root, "Web_Config/Include"); var targetWebConfig = Path.Combine(targetFolder, "!root_web_config.config"); if (File.Exists(targetWebConfig)) { File.Delete(targetWebConfig); } webConfig.Save(targetWebConfig); File.Delete(webConfigPath); }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); var root = args.Server.MapPath("/"); var webConfigPath = Path.Combine(root, "web.config"); if (!File.Exists(webConfigPath)) { return; } var webConfig = new XmlDocument(); webConfig.Load(webConfigPath); if (webConfig.SelectSingleNode("/configuration/sitecore") != null) { // to speed up bootcamp we consider web.config read-to-use if it contains <sitecore> element return; } var httpModule = webConfig.SelectNodes("/configuration/system.web/httpModules/add") .OfType<XmlElement>() .FirstOrDefault(x => x.GetAttribute("type").Contains(typeof(HttpModule).FullName)); if (httpModule != null) { httpModule.ParentNode.RemoveChild(httpModule); } args.WriteLine("Moving /web.config to /Web_Config/Include/!root_web_config.config"); var targetFolder = Path.Combine(root, "Web_Config/Include"); var targetWebConfig = Path.Combine(targetFolder, "!root_web_config.config"); if(File.Exists(targetWebConfig)) { File.Delete(targetWebConfig); } webConfig.Save(targetWebConfig); File.Delete(webConfigPath); }
protected void ExtractFileSet([NotNull] ProcessorArgs args, [NotNull] ZipFile zip, [NotNull] string type) { Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(zip, "zip"); Assert.ArgumentNotNull(type, "type"); args.WriteLine("Extracting " + type + " files..."); using (zip) { foreach (var entry in zip.SelectEntries("*") ?? new ZipEntry[0]) { if (entry == null) { continue; } var fileName = entry.FileName; var prefix = "Website/"; var pos = fileName.IndexOf(prefix); if (pos < 0) { continue; } var virtualPath = fileName.Substring(pos + prefix.Length); var filePath = args.Server.MapPath(virtualPath); if (entry.IsDirectory) { if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } } else { if (File.Exists(filePath)) { continue; } try { var directoryPath = Path.GetDirectoryName(filePath); if (!Directory.Exists(directoryPath)) { Directory.CreateDirectory(directoryPath); } using (var file = File.OpenWrite(filePath)) { entry.Extract(file); } } catch (Exception ex) { args.WriteLine("Failed."); args.WriteLine("- Exception: " + ex.GetType().FullName); args.WriteLine("- Message: " + ex.Message); args.WriteLine("- StackTrace: " + ex.StackTrace.Replace("\n", "<br />")); } } } } }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); var webConfig = args.Server.MapPath("/web.config"); var mimeTypes = args.Server.MapPath("/App_Config/MimeTypes.config"); var globalAsax = args.Server.MapPath("/global.asax"); { var webConfigNeeded = !File.Exists(webConfig); var appConfigNeeded = !File.Exists(mimeTypes); // if there is no MimeTypes then no other app_config files var globalAsaxNeeded = !File.Exists(globalAsax); if (!webConfigNeeded && !appConfigNeeded && !globalAsaxNeeded) { return; } args.WriteLine("Extracting config files..."); var release = args.Release; Assert.IsNotNull(release, "release"); var confiFilesUrl = release.Defaults.Configs.FilesUrl; var configFilesZip = new ConfigFiles(confiFilesUrl).Download(); using (var zip = new ZipFile(configFilesZip.FullName)) { foreach (var zipEntry in zip.Entries ?? new ZipEntry[0]) { if (zipEntry == null) { continue; } var virtualPath = zipEntry.FileName ?? string.Empty; if (webConfigNeeded && virtualPath.Equals("web.config", StringComparison.OrdinalIgnoreCase)) { using (var stream = File.OpenWrite(webConfig)) { zipEntry.Extract(stream); } continue; } if (globalAsaxNeeded && virtualPath.Equals("global.asax", StringComparison.OrdinalIgnoreCase)) { using (var stream = File.OpenWrite(globalAsax)) { zipEntry.Extract(stream); } continue; } if (appConfigNeeded && virtualPath.StartsWith("App_Config", StringComparison.OrdinalIgnoreCase)) { var filePath = args.Server.MapPath("/" + virtualPath.TrimStart('/')); if (!File.Exists(filePath)) { var dir = Path.GetDirectoryName(filePath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } using (var stream = File.OpenWrite(filePath)) { zipEntry.Extract(stream); } } } } } } }
internal override void Process(ProcessorArgs args) { var filePath = args.Server.MapPath("/App_Data/bootcamp.lastrun.txt"); if (!File.Exists(filePath)) { return; } try { var oldFiles = File.ReadAllLines(filePath) .Select(x => x.Split('|')) .Select(x => new { FilePath = x[0], FileSize = x[1], LastModifiedUtc = x[2] }) .GetEnumerator(); foreach (var directory in new DirectoryInfo(args.Server.MapPath("/")).GetDirectories()) { if (IgnoreDirectories.Contains(directory.Name)) { continue; } foreach (var file in directory.GetFiles("*", SearchOption.AllDirectories)) { if (oldFiles.MoveNext()) { return; } if (!file.FullName.Equals(oldFiles.Current)) { return; } } } } catch (Exception ex) { args.WriteLine("Error happened during checking for changes: " + ex.GetType() + ", Message: " + ex.Message + ", StackTrace: " + ex.StackTrace); try { File.Delete(filePath); } catch { // we don't care if we cannot delete file } } var fileClientPath = args.Server.MapPath("/App_Data/bootcamp.client.lastrun.txt"); if (!File.Exists(fileClientPath)) { if (args.Mode == BootcampMode.NoClient) { throw new AbortPipelineException(); } return; } try { if (int.Parse(File.ReadAllText(fileClientPath)) == Directory.GetFiles(args.Server.MapPath("/sitecore")).Length) { } } catch (Exception ex) { args.WriteLine("Error happened during checking client for changes: " + ex.GetType() + ", Message: " + ex.Message + ", StackTrace: " + ex.StackTrace); try { File.Delete(fileClientPath); } catch { // we don't care if we cannot delete file } return; } throw new AbortPipelineException(); }
internal override void Process(ProcessorArgs args) { var filePath = args.Server.MapPath("/App_Data/bootcamp.lastrun.txt"); if (!File.Exists(filePath)) { return; } try { var oldFiles = File.ReadAllLines(filePath) .Select(x => x.Split('|')) .Select(x => new { FilePath = x[0], FileSize = x[1], LastModifiedUtc = x[2] }) .GetEnumerator(); foreach (var directory in new DirectoryInfo(args.Server.MapPath("/")).GetDirectories()) { if (IgnoreDirectories.Contains(directory.Name)) { continue; } foreach (var file in directory.GetFiles("*", SearchOption.AllDirectories)) { if (oldFiles.MoveNext()) { return; } if (!file.FullName.Equals(oldFiles.Current)) { return; } } } } catch (Exception ex) { args.WriteLine("Error happened during checking for changes: " + ex.GetType() + ", Message: " + ex.Message + ", StackTrace: " + ex.StackTrace); try { File.Delete(filePath); } catch { // we don't care if we cannot delete file } } var fileClientPath = args.Server.MapPath("/App_Data/bootcamp.client.lastrun.txt"); if (!File.Exists(fileClientPath)) { if (args.Mode == BootcampMode.NoClient) { throw new AbortPipelineException(); } return; } try { if (int.Parse(File.ReadAllText(fileClientPath)) == Directory.GetFiles(args.Server.MapPath("/sitecore")).Length) { } } catch (Exception ex) { args.WriteLine("Error happened during checking client for changes: " + ex.GetType() + ", Message: " + ex.Message + ", StackTrace: " + ex.StackTrace); try { File.Delete(fileClientPath); } catch { // we don't care if we cannot delete file } return; } throw new AbortPipelineException(); }
private void ProcessDatabases([NotNull] ProcessorArgs args, [NotNull] string[] defaultDatabasesNames, [NotNull] IDictionary <string, Database> defaultDatabases, [NotNull] IDictionary <string, FileSet> defaultFiles) { Assert.ArgumentNotNull(args, "args"); Assert.ArgumentNotNull(defaultDatabasesNames, "defaultDatabasesNames"); Assert.ArgumentNotNull(defaultDatabases, "defaultDatabases"); Assert.ArgumentNotNull(defaultFiles, "defaultFiles"); var connectionStrings = args.ConnectionStringsConfig; foreach (var connectionStringName in defaultDatabasesNames) { var name = connectionStringName; if (name == null) { continue; } if (args.AddedConnectionStrings.Contains(name)) { continue; } if (ConfigurationManager.ConnectionStrings[name] != null) { continue; } var defaultDatabase = this.GetDefaultDatabase(defaultDatabases, name); var fileName = defaultDatabase.FileName; var filePath = args.Server.MapPath(string.Format("/App_Data/Databases/{0}", fileName)); var dir = Path.GetDirectoryName(filePath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } // web database is processed separately if (name == "web") { continue; } if (!File.Exists(filePath)) { args.WriteLine(string.Format("Downloading {0} database...", name)); var tmp = Path.GetTempFileName() + ".dir"; try { var file = this.GetDefaultFile(defaultFiles, name); var downloadedFile = file.Download().FullName; args.WriteLine("Downloaded to " + downloadedFile); args.WriteLine("Extracting " + name + " database files..."); using (var zip = new ZipFile(downloadedFile)) { zip.ExtractAll(tmp); } var extractedFile = Directory.GetFiles(tmp, fileName, SearchOption.AllDirectories).First(); File.Move(extractedFile, filePath); } finally { if (Directory.Exists(tmp)) { Directory.Delete(tmp, true); } } } var cstr = new SqlConnectionStringBuilder { IntegratedSecurity = true, UserInstance = true, DataSource = ".\\SQLEXPRESS", AttachDBFilename = filePath }; this.AddConnectionString(connectionStrings, name, cstr.ToString()); } }
internal override void Process(ProcessorArgs args) { Assert.ArgumentNotNull(args, "args"); var webConfig = args.Server.MapPath("/web.config"); var mimeTypes = args.Server.MapPath("/App_Config/MimeTypes.config"); var globalAsax = args.Server.MapPath("/global.asax"); { var webConfigNeeded = !File.Exists(webConfig); var appConfigNeeded = !File.Exists(mimeTypes); // if there is no MimeTypes then no other app_config files var globalAsaxNeeded = !File.Exists(globalAsax); if (!webConfigNeeded && !appConfigNeeded && !globalAsaxNeeded) { return; } args.WriteLine("Extracting config files..."); var release = args.Release; Assert.IsNotNull(release, "release"); var confiFilesUrl = release.Defaults.Configs.FilesUrl; var configFilesZip = new ConfigFiles(confiFilesUrl).Download(); using (var zip = new ZipFile(configFilesZip.FullName)) { foreach (var zipEntry in zip.Entries ?? new ZipEntry[0]) { if (zipEntry == null) { continue; } var virtualPath = zipEntry.FileName ?? string.Empty; if (webConfigNeeded && virtualPath.Equals("web.config", StringComparison.OrdinalIgnoreCase)) { using (var stream = File.OpenWrite(webConfig)) { zipEntry.Extract(stream); } continue; } if (globalAsaxNeeded && virtualPath.Equals("global.asax", StringComparison.OrdinalIgnoreCase)) { using (var stream = File.OpenWrite(globalAsax)) { zipEntry.Extract(stream); } continue; } if (appConfigNeeded && virtualPath.StartsWith("App_Config", StringComparison.OrdinalIgnoreCase)) { var filePath = args.Server.MapPath("/" + virtualPath.TrimStart('/')); if (!File.Exists(filePath)) { var dir = Path.GetDirectoryName(filePath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } using (var stream = File.OpenWrite(filePath)) { zipEntry.Extract(stream); } } } } } } }