summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2009-08-03 22:31:22 -0700
committerAndrew Arnott <andrewarnott@gmail.com>2009-08-03 22:35:20 -0700
commit0c1640d1000739445d4f3fd9391b4bb0429d7c22 (patch)
tree2a009cc0868c99faa5e88b43271c98746285fb28 /src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs
parent3bd33f9f190a7ed381c3e570497cc4c0f8fcee07 (diff)
downloadDotNetOpenAuth-0c1640d1000739445d4f3fd9391b4bb0429d7c22.zip
DotNetOpenAuth-0c1640d1000739445d4f3fd9391b4bb0429d7c22.tar.gz
DotNetOpenAuth-0c1640d1000739445d4f3fd9391b4bb0429d7c22.tar.bz2
Added PublishDocumentation and PublishSamples targets that push docs and sample web sites to IIS.
Diffstat (limited to 'src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs')
-rw-r--r--src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs b/src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs
new file mode 100644
index 0000000..930a8c4
--- /dev/null
+++ b/src/DotNetOpenAuth.BuildTasks/DeleteWebApplication.cs
@@ -0,0 +1,66 @@
+//-----------------------------------------------------------------------
+// <copyright file="DeleteWebApplication.cs" company="Andrew Arnott">
+// Copyright (c) Andrew Arnott. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+namespace DotNetOpenAuth.BuildTasks {
+ using System;
+ using System.Linq;
+ using Microsoft.Build.Framework;
+ using Microsoft.Build.Utilities;
+ using Microsoft.Web.Administration;
+
+ /// <summary>
+ /// Deletes a web application from IIS.
+ /// </summary>
+ public class DeleteWebApplication : Task {
+ /// <summary>
+ /// Gets or sets the name of the web site under which to create the web application.
+ /// </summary>
+ /// <value>The name of the existing web site.</value>
+ [Required]
+ public string WebSiteName { get; set; }
+
+ /// <summary>
+ /// Gets or sets the virtual paths within the web site that will access these applications.
+ /// </summary>
+ /// <value>The virtual path, which must start with '/'.</value>
+ [Required]
+ public ITaskItem[] VirtualPaths { get; set; }
+
+ /// <summary>
+ /// Executes this instance.
+ /// </summary>
+ /// <returns>A value indicating whether the task completed successfully.</returns>
+ public override bool Execute() {
+ var serverManager = new ServerManager();
+
+ // Find the root web site that this web application will be created under.
+ var site = serverManager.Sites.FirstOrDefault(s => string.Equals(s.Name, this.WebSiteName, StringComparison.OrdinalIgnoreCase));
+ if (site == null) {
+ Log.LogMessage(MessageImportance.Low, TaskStrings.NoMatchingWebSiteFound, this.WebSiteName);
+ return true;
+ }
+
+ if (this.VirtualPaths.Length == 0) {
+ // Nothing to do.
+ return true;
+ }
+
+ foreach (ITaskItem path in this.VirtualPaths) {
+ var app = site.Applications.FirstOrDefault(a => string.Equals(a.Path, path.ItemSpec, StringComparison.OrdinalIgnoreCase));
+ if (app != null) {
+ site.Applications.Remove(app);
+ Log.LogMessage(MessageImportance.Normal, TaskStrings.DeletedWebApplication, app.Path);
+ } else {
+ Log.LogMessage(MessageImportance.Low, TaskStrings.WebApplicationNotFoundSoNotDeleted, path.ItemSpec);
+ }
+ }
+
+ serverManager.CommitChanges();
+
+ return true;
+ }
+ }
+}