private IEnumerable <FileInfo> UpackTemplateFiles(Options options, FileSystem fileSystem, Settings settings, Func <Artifact> artifactGetter) { FileInfo confFile = fileSystem.ConfFile; FileInfo packFile = fileSystem.PackFile; SchemaFile confSchema = LoadSchema(Settings.DefaultConfFile); SchemaFile packSchema = LoadSchema(Settings.DefaultPackFile); if (!confFile.Exists) { var port = settings.Port.ToString(); var folder = settings.RepositoryFolder; var proxy = (settings.Proxy != null) ? settings.Proxy.AbsoluteUri : null; var proxyHttps = (settings.ProxyHttps != null) ? settings.ProxyHttps.AbsoluteUri : null; var packFileName = MakeRelative(fileSystem.PackFile.FullName, Environment.CurrentDirectory); var distFileName = MakeRelative(fileSystem.DistFile.FullName, fileSystem.DistFolder.FullName); var distFolderName = MakeRelative(fileSystem.DistFolder.FullName, Environment.CurrentDirectory); var depsFolderName = MakeRelative(fileSystem.DepsFolder.FullName, Environment.CurrentDirectory); var booleanOptions = new List <string>(1); if (fileSystem.FlatFolder) { booleanOptions.Add(Conf.OptionsKey_FlatFolder); } var uri = settings.RepositoryUris.FirstOrDefault(); var source = (uri != null) ? uri.AbsoluteUri : null; confSchema.SetValue("source", source); confSchema.SetValue("proxy", proxy); confSchema.SetValue("proxy-https", proxyHttps); confSchema.SetValue("port", port); confSchema.SetValue("folder", folder); confSchema.SetValue("pack-file", packFileName); confSchema.SetValue("dist-file", distFileName); confSchema.SetValue("dist-folder", distFolderName); confSchema.SetValue("deps-folder", depsFolderName); confSchema.SetValues("options", booleanOptions); // comentando valores default a menos que customizados na linha de comando // confSchema.CommentProperty("source"); confSchema.CommentProperty("proxy"); confSchema.CommentProperty("proxy-https"); var commentPort = !options.PortOn; var commentFolder = !options.FolderOn; var commentPackFile = !(options.PackFileOn || options.PackPrefixOn); var commentDistFile = !(options.DistFileOn || options.PackPrefixOn); var commentDistFolder = !options.DistFolderOn; var commentDepsFolder = !options.DepsFolderOn; var commendFlatFolder = booleanOptions.Count == 0; if (commentPort) { confSchema.CommentProperty("port"); } if (commentFolder) { confSchema.CommentProperty("folder"); } if (commentPackFile) { confSchema.CommentProperty("pack-file"); } if (commentDistFile) { confSchema.CommentProperty("dist-file"); } if (commentDistFolder) { confSchema.CommentProperty("dist-folder"); } if (commentDepsFolder) { confSchema.CommentProperty("deps-folder"); } if (commendFlatFolder) { confSchema.CommentProperty("options"); } confSchema.Save(confFile); yield return(confFile); } if (!packFile.Exists) { var artifact = artifactGetter.Invoke(); var id = artifact.Id; packSchema.SetValue("pack", id); packSchema.Save(packFile); yield return(packFile); } }