public void Import( [Argument("page", "p", Description = "The full http address of the page to save the source content to.")] string targetLink, [Argument("source", "s", Description = "The full http address of the page you want to import.")] string sourceLink, [Argument("recursive", "r", DefaultValue = false, Description = "True to recursivly import all links within the same domain.")] bool recursive, [Argument("noprompt", "q", DefaultValue = false, Description = "True to stop prompt for confirmation before overwriting content.")] bool noPrompt ) { Uri targetUri = new Uri(targetLink, UriKind.Absolute); using (TempDirectory tempFolder = new TempDirectory()) using (ContentStorage writer = new ContentStorage(StoragePath(targetLink), false)) { bool exists = writer.ContainsKey(targetUri.NormalizedPathAndQuery()); if (exists) { if (!noPrompt && !new ConfirmPrompt().Continue("Overwrite " + targetUri.NormalizedPathAndQuery())) { return; } } Uri sourceUri = new Uri(sourceLink, UriKind.Absolute); using (SiteCollector index = new SiteCollector(tempFolder.TempPath, sourceLink)) { index.NoDefaultPages = true; index.UpdateSearchTemplate = false; if (recursive) { index.CrawlSite(); } else { index.AddUrlsFound = false; index.CrawlPage(sourceUri.NormalizedPathAndQuery()); } } using (SiteConverter index = new SiteConverter(tempFolder.TempPath, sourceLink)) { index.Overwrite = true; index.ConvertTo(targetLink, writer); } if (exists) { writer.Remove(targetUri.NormalizedPathAndQuery()); } writer.Rename(sourceUri.NormalizedPathAndQuery(), targetUri.NormalizedPathAndQuery()); } }
public void CopySite( [Argument("site", "s", Description = "The root http address of the website to copy.")] string original, [Argument("target", "t", Description = "The root http address of the destination website.")] string target, [Argument("overwrite", "y", DefaultValue = false, Description = "True to overwrite any existing content.")] bool overwrite) { using (SiteConverter index = new SiteConverter(StoragePath(original), original)) using (ContentStorage writer = new ContentStorage(StoragePath(target), false)) { index.Overwrite = overwrite; index.ConvertTo(target, writer); } }