private IEnumerable <ITaskItem> GetResourcesForItem(ITaskItem resource) { this.Log().Info("Resources file found : {0}".InvariantCultureFormat(resource.ItemSpec)); var resourceCandidate = ResourceCandidate.Parse(resource.ItemSpec, resource.ItemSpec); var language = resourceCandidate.GetQualifierValue("language"); if (language == null) { // TODO: Add support for resources without a language qualifier this.Log().Info("No language found, resources ignored"); yield break; } this.Log().Info("Language found : {0}".InvariantCultureFormat(language)); var resourceFile = resource.ItemSpec; var sourceLastWriteTime = new FileInfo(resourceFile).LastWriteTimeUtc; var resources = WindowsResourcesReader.Read(resourceFile); var comment = CommentPattern.InvariantCultureFormat(this.GetType().Name, resourceFile); this.Log().Info("{0} resources found".InvariantCultureFormat(resources.Count)); if (TargetPlatform == "android") { yield return(GenerateAndroidResources(language, sourceLastWriteTime, resources, comment)); } else if (TargetPlatform == "ios") { yield return(GenerateiOSResources(language, sourceLastWriteTime, resources, comment)); } yield return(GenerateUnoPRIResources(language, sourceLastWriteTime, resources, comment)); }
public override bool Execute() { LogExtensionPoint.AmbientLoggerFactory.AddProvider(new TaskLoggerProvider(Log)); this.Log().Info("Generating resources for platform : {0}".InvariantCultureFormat(TargetPlatform)); try { GeneratedFiles = Resources // TODO: Add support for other resources file names .Where(resource => resource.ItemSpec?.EndsWith("Resources.resw") ?? false) // TODO: Merge duplicates (based on file name and qualifiers) .Select(resource => { this.Log().Info("Resources file found : {0}".InvariantCultureFormat(resource.ItemSpec)); var resourceCandidate = ResourceCandidate.Parse(resource.ItemSpec, resource.ItemSpec); var language = resourceCandidate.GetQualifierValue("language"); if (language == null) { // TODO: Add support for resources without a language qualifier this.Log().Info("No language found, resources ignored"); return(null); } this.Log().Info("Language found : {0}".InvariantCultureFormat(language)); var resourceFile = resource.ItemSpec; var sourceLastWriteTime = new FileInfo(resourceFile).LastWriteTimeUtc; var resources = WindowsResourcesReader.Read(resourceFile); var comment = CommentPattern.InvariantCultureFormat(this.GetType().Name, resourceFile); this.Log().Info("{0} resources found".InvariantCultureFormat(resources.Count)); if (TargetPlatform == "android") { return(GenerateAndroidResources(language, sourceLastWriteTime, resources, comment)); } else if (TargetPlatform == "ios") { return(GenerateiOSResources(language, sourceLastWriteTime, resources, comment)); } return(null); }) .Trim() .ToArray(); return(true); } catch (Exception ex) { this.Log().Error($"Failed to generate resources. Details: {ex.Message}"); } return(false); }
public override bool Execute() { LogExtensionPoint.AmbientLoggerFactory.AddProvider(new TaskLoggerProvider(Log)); this.Log().Info("Generating resources for platform : {0}".InvariantCultureFormat(TargetPlatform)); try { GeneratedFiles = Directory .EnumerateDirectories(ResourcesDirectory) .Select(directory => { var language = new DirectoryInfo(directory).Name; this.Log().Info("Language found : {0}".InvariantCultureFormat(language)); var resourceFile = Path.Combine(directory, "Resources.resw"); var sourceLastWriteTime = new FileInfo(resourceFile).LastWriteTimeUtc; var resources = WindowsResourcesReader.Read(resourceFile); var comment = CommentPattern.InvariantCultureFormat(this.GetType().Name, resourceFile); this.Log().Info("{0} resources found".InvariantCultureFormat(resources.Count)); if (TargetPlatform == "android") { return(GenerateAndroidResources(language, sourceLastWriteTime, resources, comment)); } else if (TargetPlatform == "ios") { return(GenerateiOSResources(language, sourceLastWriteTime, resources, comment)); } return(null); }) .Trim() .ToArray(); return(true); } catch (Exception ex) { this.Log().Error("Failed to generate resources", ex); } return(false); }
private IEnumerable <ITaskItem> GetResourcesForItem(ITaskItem resource) { Log.LogMessage($"Resources file found : {resource.ItemSpec}"); var resourceCandidate = ResourceCandidate.Parse(resource.ItemSpec, resource.ItemSpec); var language = resourceCandidate.GetQualifierValue("language"); if (language == null) { // TODO: Add support for resources without a language qualifier Log.LogMessage("No language found, resources ignored"); yield break; } Log.LogMessage($"Language found : {language}"); var resourceFile = resource.ItemSpec; var sourceLastWriteTime = new FileInfo(resourceFile).LastWriteTimeUtc; var resources = WindowsResourcesReader.Read(resourceFile); var comment = string.Format(CultureInfo.InvariantCulture, CommentPattern, this.GetType().Name, resourceFile); Log.LogMessage($"{resources.Count} resources found"); if (Path.GetFileNameWithoutExtension(resource.ItemSpec).Equals("Resources", StringComparison.OrdinalIgnoreCase)) { if (TargetPlatform == "android") { yield return(GenerateAndroidResources(language, sourceLastWriteTime, resources, comment, resource)); } else if (TargetPlatform == "ios") { yield return(GenerateiOSResources(language, sourceLastWriteTime, resources, comment)); } } yield return(GenerateUnoPRIResources(language, sourceLastWriteTime, resources, comment, resource)); }