Exemple #1
0
        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);
            }
        }