private string GetWorkItemDir() { var dir = Path.Combine(this.BaseOutputDirectory, string.Format(@"{0}\{0}-{1}\WI {2}", DateTime.Now.Year, DateTime.Now.Month.ToString("00"), this.WorkItem.Id)); // we might pickup something leftover from a previous run that is no longer valid if (Directory.Exists(dir)) { DirUtility.DeleteDirectory(dir); } DirUtility.EnsureDir(dir); return(dir); }
private void Package() { this.Save(); if (this.Changes.IncludedChanges.Any(x => string.IsNullOrWhiteSpace(x.Schema))) { IoC.Get <IMessageBoxService>().ShowOKDispatch("One or more database objects are missing required Schema values.", "Required Data Missing"); return; } var packageDir = Path.Combine(this.Changes.RootDatabaseFolder, "_Package"); var di = new DirectoryInfo(packageDir); if (di.Exists) { DirUtility.DeleteDirectory(di.FullName); } di.Create(); var schemaCounts = new Dictionary <string, int>(); // this should be a user configurable setting. this allows gaps between changes should others need to be inserted const int skipBetween = 5; var warnings = new List <string>(); this.Changes.IncludedChanges.OrderBy(x => x.Index).ToList().ForEach(x => { var sourceFilename = Path.Combine(Changes.RootDatabaseFolder, x.FilePath); var delim = !x.File.StartsWith("_") ? "_" : string.Empty; var schemaDir = string.Empty; if (!schemaCounts.ContainsKey(x.Schema)) { schemaCounts.Add(x.Schema, 0); schemaDir = Path.Combine(packageDir, schemaCounts.Count.ToString("00") + "_" + x.Schema); DirUtility.EnsureDir(schemaDir); } else { var keys = schemaCounts.Keys.ToList(); var index = keys.IndexOf(x.Schema) + 1; schemaDir = Path.Combine(packageDir, index.ToString("00") + "_" + x.Schema); } if (!File.Exists(sourceFilename)) { warnings.Add(string.Format("The following file does not exist. Perhaps it was deleted and should not have been included: {0}", sourceFilename)); } else { var schemaIndex = schemaCounts[x.Schema] * skipBetween; schemaCounts[x.Schema] += 1; var targetFilename = Path.Combine(schemaDir, string.Format("{0:000}{1}{2}", schemaIndex, delim, x.File)); File.Copy(sourceFilename, targetFilename); } }); Process.Start(packageDir); if (warnings.Any()) { var warningsFile = Path.Combine(packageDir, "PackageWarnings.txt"); File.WriteAllText(warningsFile, string.Join(Environment.NewLine, warnings)); Process.Start(warningsFile); } }