public static void ActAfterPublish(Webresource resource, Settings settings) { if (settings.AfterPublishCommand.Contains("{FilePath}") && string.IsNullOrEmpty(resource.FilePath)) { throw new Exception("It is required that the web resource has a file path in its properties to use a command referencing the tag {FilePath}"); } RunCommand(settings.AfterPublishCommand.Replace("{FilePath}", resource.FilePath)); }
private static void LoadFilesFromFolder(MyPluginControl parent, Settings settings, List <string> extensionsToLoad, List <string> invalidFilenames, DirectoryInfo di, string rootPath, List <Webresource> list, int organizationMajorVersion) { if (di.FullName != rootPath) { foreach (var diChild in di.GetDirectories()) { LoadFilesFromFolder(parent, settings, extensionsToLoad, invalidFilenames, diChild, rootPath, list, organizationMajorVersion); } } var fileInfos = di.GetFiles("*", SearchOption.TopDirectoryOnly); var files = new HashSet <string>(fileInfos.Select(f => f.FullName)); var extensionlessFiles = new HashSet <string>(); var ignoredLocalFiles = new List <string>(); ignoredLocalFiles.AddRange(settings.IgnoredLocalFiles); ignoredLocalFiles.AddRange(settings.IgnoredLocalFiles.Select(f => f.Replace("\\", "/"))); foreach (var fi in fileInfos.Where(f => extensionsToLoad.Contains(f.Extension))) { var relativePath = GetRelativePath(rootPath, fi.FullName); if (ignoredLocalFiles.Contains(relativePath, StringComparer.CurrentCultureIgnoreCase) || ignoredLocalFiles.Contains(fi.FullName, StringComparer.CurrentCultureIgnoreCase)) { // File is set to be ignored, ignore it. continue; } if (fi.Extension.Length == 0 || !IsNameValid(fi.Name, organizationMajorVersion) || !extensionsToLoad.Contains(fi.Extension)) { invalidFilenames.Add(fi.FullName); continue; } var resource = new Webresource(relativePath, fi.FullName, GetTypeFromExtension(fi.Extension.Remove(0, 1)), parent, settings); var extensionless = Path.Combine(fi.DirectoryName ?? "", Path.GetFileNameWithoutExtension(fi.FullName)); if (files.Contains(extensionless)) { resource.ExtensionlessMappingFilePath = extensionless; extensionlessFiles.Add(extensionless); } if (parent.WebresourcesCache.All(r => !string.Equals(r.Name, resource.Name, StringComparison.CurrentCultureIgnoreCase))) { parent.WebresourcesCache.Add(resource); } list.Add(resource); } invalidFilenames.RemoveAll(f => extensionlessFiles.Contains(f)); }