Ejemplo n.º 1
0
        private void InitializeNuget()
        {
            View nugetView = _sheet.View.nuget;

            _nuget = nugetView;

            if (!nugetView.HasChildren)
            {
                FailAlways(Event <SourceError> .Raise("AP100", _sheet.CurrentView.SourceLocations, "script does not contain a declaration for a NuGet package"));
            }

            _nuspec = _nuget.nuspec;

            if (!_nuspec.HasChildren)
            {
                FailAlways(Event <SourceError> .Raise("AP102", nugetView.SourceLocations, "script does not contain a 'nuspec' declaration in 'nuget'"));
            }


            if (string.IsNullOrEmpty(_nuspec.id.Value))
            {
                FailAlways(Event <SourceError> .Raise("AP103", _nuspec.SourceLocations, "script does not contain a 'id' declaration in 'nuspec'"));
            }

            NugetPackage = new NugetPackage(this, PackageRole.@default, _nuspec.id.Value);
            nugetView.AddChildRoutes(NugetPackage.Initialize());

            // do the property sheet mapping
            var conditions = new XDictionary <string, string>();

            // map the file routes
            nugetView.AddChildRoute("files".MapTo(new object(), new [] {
                "condition".MapTo(conditions, key => Pivots.GetExpressionFilepath(_nuspec.id, nugetView.ResolveMacrosInContext(key))),
                "*".MapTo(conditions, key => Pivots.GetExpressionFilepath(_nuspec.id, nugetView.ResolveMacrosInContext(key)))
            }));

            var nuspecid = _nuspec.id;

            var conditionFolderMacroHander = (GetMacroValueDelegate)((macro, context) => {
                if (macro == "conditionFolder")
                {
                    return(LinqExtensions.SingleItemAsEnumerable(Pivots.GetExpressionFilepath(nuspecid, ((View)context).GetSingleMacroValue("ElementId") ?? "")));
                }
                return(null);
            });

            _nuget.props.AddMacroHandler(conditionFolderMacroHander);
            _nuget.targets.AddMacroHandler(conditionFolderMacroHander);

            nugetView.AddChildRoute("props".MapTo(NugetPackage.Props.Value /*, GetPropsProject("default").ProjectRoutes() */));

            // always need a targets
            nugetView.AddChildRoute("targets".MapTo(NugetPackage.Targets.Value /*, GetTargetsProject("default").ProjectRoutes() */));
            // other variants/frameworks
        }
Ejemplo n.º 2
0
        private void InitializeNuget()
        {
            View nugetView = _sheet.View.nuget;

            _nuget = nugetView;

            if (!nugetView.HasChildren)
            {
                FailAlways(Event <SourceError> .Raise("AP100", _sheet.CurrentView.SourceLocations, "script does not contain a declaration for a NuGet package"));
            }

            _nuspec = _nuget.nuspec;

            if (!_nuspec.HasChildren)
            {
                FailAlways(Event <SourceError> .Raise("AP102", nugetView.SourceLocations, "script does not contain a 'nuspec' declaration in 'nuget'"));
            }

            var outputs = nugetView.GetMetadataItems("output-packages.");

            if (!outputs.Any())
            {
                FailAlways(Event <SourceError> .Raise("AP101", nugetView.SourceLocations, "script does not contain '#output-packages' declaration in 'nuget'"));
            }

            if (string.IsNullOrEmpty(_nuspec.id.Value))
            {
                FailAlways(Event <SourceError> .Raise("AP103", _nuspec.SourceLocations, "script does not contain a 'id' declaration in 'nuspec'"));
            }

            foreach (var each in outputs.Keys)
            {
                _nugetPackages.Add(each, new NugetPackage(this, each, outputs[each]));
            }

            // initialize the nuget packages
            nugetView.AddChildRoutes(_nugetPackages.Values.SelectMany(each => each.Initialize()));


            // do the property sheet mapping
            var conditions = new XDictionary <string, string>();

            // map the file routes
            nugetView.AddChildRoute("files".MapTo(new object(), new [] {
                "condition".MapTo(conditions, key => Pivots.GetExpressionFilepath(_nuspec.id, key)),
                "*".MapTo(conditions, key => Pivots.GetExpressionFilepath(_nuspec.id, key))
            }));

            var nuspecid = _nuspec.id;

            var conditionFolderMacroHander = (GetMacroValueDelegate)((macro, context) => {
                if (macro == "conditionFolder")
                {
                    return(LinqExtensions.SingleItemAsEnumerable(Pivots.GetExpressionFilepath(nuspecid, ((View)context).GetSingleMacroValue("ElementId") ?? "")));
                }
                return(null);
            });

            _nuget.props.AddMacroHandler(conditionFolderMacroHander);
            _nuget.targets.AddMacroHandler(conditionFolderMacroHander);

            nugetView.AddChildRoute("props".MapTo(() => GetPropsProject("default") /*, GetPropsProject("default").ProjectRoutes() */));

            // always need a targets
            nugetView.AddChildRoute("targets".MapTo(() => GetTargetsProject("default") /*, GetTargetsProject("default").ProjectRoutes() */));
            // other variants/frameworks

            nugetView.AddChildRoute(
                "condition".MapTo(_nugetPackages, key => NormalizeOuptutKey(key), new[] {
                "targets".MapTo <NugetPackage>(package => GetTargetsProject(package.PkgRole)),
                "props".MapTo <NugetPackage>(package => GetPropsProject(package.PkgRole))
            }));

            nugetView.AddChildRoute(
                "*".MapTo(_nugetPackages, key => NormalizeOuptutKey(key), new [] {
                "targets".MapTo <NugetPackage>(package => GetTargetsProject(package.PkgRole)),
                "props".MapTo <NugetPackage>(package => GetPropsProject(package.PkgRole))
            }));
        }