Пример #1
0
        /// <summary>
        /// In comments below this method is a method that will attempt to load the
        /// .nuspec file as an XDocument and process it as such. This seems to be a
        /// bit of overkill in that MS has very nicely included a default .nuspec
        /// file if the nuget "spec" command is executed in the same directory as
        /// the target .csproj file. Since this is the case AND said .nuspec file
        /// contains replaceable tokens, it's really easier to simply load the
        /// entire file into a StringBuilder, replace the desired tokens with the
        /// established values and then write the thing back out to the drive, thus
        /// this method.
        /// </summary>
        private void ProcessFullFrameworkNuSpecFileForPack()
        {
            const StringComparison COMPARISON =
                StringComparison.InvariantCultureIgnoreCase;

            NoOp = !File.Exists(NuSpecFilePath) || NoOp;
            if (NoOp)
            {
                return;
            }
            string        vPath        = NuSpecFilePath;
            StringBuilder vContent     = new StringBuilder(File.ReadAllText(vPath));
            int           vChangeCount = 0;
            string        vLookFor;

            if (_HandleConfiguration.NuGetNuSpecSettings.ForceAuthors)
            {
                vLookFor =
                    AUTHOR_KEY + AUTHORS.AsToken();
                vContent.Replace
                (
                    vLookFor
                    , AUTHOR_KEY
                    + _HandleConfiguration.NuGetNuSpecSettings.Authors
                );
                vChangeCount++;
            }
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceCopyright)
            {
                vLookFor = $"{COPYRIGHT} {DateTime.Now.Year}";
                vContent.Replace
                (
                    vLookFor.AsToken()
                    , _HandleConfiguration.NuGetNuSpecSettings.Copyright
                );
                vChangeCount++;
            }
            vLookFor = DESCRIPTION.AsToken();
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceDescription)
            {
                vContent.Replace
                (
                    vLookFor.AsToken()
                    , _HandleConfiguration.NuGetNuSpecSettings.Description
                );
                vChangeCount++;
            }
            else
            {
                string vFind =
                    DESCRIPTION_KEY_START
                    + DEFAULT_DESCRIPTION
                    + DESCRIPTION_KEY_END
                    + "\r\n";
                string vReplaceWith =
                    DESCRIPTION_KEY_START
                    + DEFAULT_DESCRIPTION
                    + DateTime.Now.ToLongDateString()
                    + DESCRIPTION_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, vReplaceWith);
                vChangeCount++;
            }
            vLookFor =
                ICON_URL_KEY + ICON_URL_OR_DELETE_THIS;
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceIconUrl)
            {
                vContent.Replace
                    (vLookFor, _HandleConfiguration.NuGetNuSpecSettings.IconUrl);
                vChangeCount++;
            }
            else
            {
                string vFind =
                    ICON_URL_KEY
                    + ICON_URL_OR_DELETE_THIS
                    + ICON_URL_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, String.Empty);
                vChangeCount++;
            }
            vLookFor = LICENSE_URL;
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceLicenseUrl)
            {
                vContent.Replace
                (
                    vLookFor.AsToken(),
                    _HandleConfiguration.NuGetNuSpecSettings.LicenseUrl
                );
                vChangeCount++;
            }
            else
            {
                string vFind =
                    LICENSE_URL_KEY
                    + LICENSE_URL_OR_DELETE_THIS
                    + LICENSE_URL_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, String.Empty);
                vChangeCount++;
            }
            vLookFor = PROJECT_URL;
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceProjectUrl)
            {
                vContent.Replace
                (
                    vLookFor.AsToken(),
                    _HandleConfiguration.NuGetNuSpecSettings.ProjectUrl
                );
                vChangeCount++;
            }
            else
            {
                string vFind =
                    PROJECT_URL_KEY
                    + PROJECT_URL_OR_DELETE_THIS
                    + PROJECT_URL_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, String.Empty);
                vChangeCount++;
            }
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceOwners)
            {
                vLookFor =
                    OWNER_KEY + AUTHORS.AsToken();
                vContent.Replace
                (
                    vLookFor
                    , OWNER_KEY
                    + _HandleConfiguration.NuGetNuSpecSettings.Owners
                );
                vChangeCount++;
            }
            vLookFor = DEFAULT_RELEASE_NOTES;
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceReleaseNotes)
            {
                if (_HandleConfiguration.AppSettingsValues.RequireReleaseNotesFile)
                {
                    vContent.Replace(vLookFor, ExtractReleaseNotes());
                    vChangeCount++;
                }
            }
            else
            {
                string vFind =
                    RELEASE_NOTES_KEY
                    + DEFAULT_RELEASE_NOTES
                    + RELEASE_NOTES_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, String.Empty);
                vChangeCount++;
            }
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceRequireLicenseAcceptance)
            {
                vLookFor =
                    REQUIRE_LICENSE_ACCEPTANCE_KEY
                    + DEFAULT_REQUIRE_LICENSE_ACCEPTANCE;
                vContent.Replace
                (
                    vLookFor,
                    _HandleConfiguration.NuGetNuSpecSettings.RequireLicenseAcceptance
                );
                vChangeCount++;
            }
            if (_HandleConfiguration.AppSettingsValues.RequireSummaryFile)
            {
                vLookFor = SUMMARY_KEY;
                string vContentAsString = vContent.ToString();
                int    vIndex           = vContentAsString.IndexOf(vLookFor, COMPARISON);
                if (vIndex < 0)
                {
                    vIndex = vContentAsString.IndexOf
                                 (METADATA_END, COMPARISON);
                    string vNewKey =
                        SUMMARY_KEY
                        + ExtractNuGetSummary()
                        + SUMMARY_KEY_END;
                    vContent.Insert(vIndex, vNewKey);
                    vChangeCount++;
                }
                else
                {
                    // This shouldn't ever have to be executed, but just in case MS
                    // changes how nuget.exe functions...
                    int vEndIndex =
                        vContentAsString.IndexOf
                            (SUMMARY_KEY_END, COMPARISON);
                    vIndex = vIndex + SUMMARY_KEY.Length;
                    int vHowMuch = vEndIndex - vIndex + 1;
                    vContentAsString = vContentAsString.Remove(vIndex, vHowMuch);
                    vContentAsString = vContentAsString.Insert(vIndex, ExtractNuGetSummary());
                    vContent.Clear();
                    vContent.Append(vContentAsString);
                    vChangeCount++;
                }
            }
            vLookFor = DEFAULT_TAGS;
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceTags)
            {
                vContent.Replace(vLookFor, _HandleConfiguration.NuGetNuSpecSettings.Tags);
                vChangeCount++;
            }
            else
            {
                string vFind =
                    TAGS_KEY_START
                    + DEFAULT_TAGS
                    + TAGS_KEY_END
                    + "\r\n";
                vContent.Replace(vFind, String.Empty);
                vChangeCount++;
            }
            if (_HandleConfiguration.NuGetNuSpecSettings.ForceTitle)
            {
                vLookFor = TITLE.AsToken();
                vContent.Replace
                    (vLookFor, _HandleConfiguration.NuGetNuSpecSettings.Title);
                vChangeCount++;
            }
            if (_HandleConfiguration.AppSettingsValues.ForceVersionOverride)
            {
                vLookFor = DotNetCSProjKeys.VERSION;
                vContent.Replace
                    (vLookFor, _HandleConfiguration.AppSettingsValues.VersionOverride);
                vChangeCount++;
            }
            if (vChangeCount > 0)
            {
                File.WriteAllText(vPath, vContent.ToString());
            }
        }
Пример #2
0
        /// <summary>
        /// Method used to add a property to the instance. Will be placed in the correct class Property.
        /// </summary>
        /// <param name="input">The vCard.Property to add.</param>
        public void AddProperty(Props.IProperty input)
        {
            if (input == null || input.IsValueNull)
            {
                return;
            }

            switch (input.Property)
            {
            case KnownProperties.ADR:
                ADR.AddIfNotNull(input as Props.ADR);
                break;

            case KnownProperties.ANNIVERSARY:
                ANNIVERSARY = input as Props.ANNIVERSARY;
                break;

            case KnownProperties.BDAY:
                BDAY = input as Props.BDAY;
                break;

            case KnownProperties.CALADRURI:
                CALADRURI.AddIfNotNull(input as Props.CALADRURI);
                break;

            case KnownProperties.CALURI:
                CALURI.AddIfNotNull(input as Props.CALURI);
                break;

            case KnownProperties.CATEGORIES:
                CATEGORIES.AddIfNotNull(input as Props.CATEGORIES);
                break;

            case KnownProperties.CLIENTPIDMAP:
                CLIENTPIDMAP.AddIfNotNull(input as Props.CLIENTPIDMAP);
                break;

            case KnownProperties.EMAIL:
                EMAIL.AddIfNotNull(input as Props.EMAIL);
                break;

            case KnownProperties.FBURL:
                FBURL.AddIfNotNull(input as Props.FBURL);
                break;

            case KnownProperties.FN:
                FN.AddIfNotNull(input as Props.FN);
                break;

            case KnownProperties.GENDER:
                GENDER = input as Props.GENDER;
                break;

            case KnownProperties.GEO:
                GEO.AddIfNotNull(input as Props.GEO);
                break;

            case KnownProperties.IMPP:
                IMPP.AddIfNotNull(input as Props.IMPP);
                break;

            case KnownProperties.KEY:
                KEY.AddIfNotNull(input as Props.KEY);
                break;

            case KnownProperties.KIND: {
                char k = (input as Props.KIND).Value.ToLower()[0];
                if (k == 'i')
                {
                    KIND = Kinds.Individual;
                }
                else if (k == 'g')
                {
                    KIND = Kinds.Group;
                }
                else if (k == 'o')
                {
                    KIND = Kinds.Org;
                }
                else if (k == 'l')
                {
                    KIND = Kinds.Location;
                }
                else
                {
                    KIND = Kinds.Individual;
                }
                break;
            }

            case KnownProperties.LANG:
                LANG.AddIfNotNull(input as Props.LANG);
                break;

            case KnownProperties.LOGO:
                LOGO.AddIfNotNull(input as Props.LOGO);
                break;

            case KnownProperties.MEMBER:
                MEMBER.AddIfNotNull(input as Props.MEMBER);
                break;

            case KnownProperties.N:
                N = input as Props.N;
                break;

            case KnownProperties.NICKNAME:
                NICKNAME.AddIfNotNull(input as Props.NICKNAME);
                break;

            case KnownProperties.NOTE:
                NOTE.AddIfNotNull(input as Props.NOTE);
                break;

            case KnownProperties.ORG:
                ORG.AddIfNotNull(input as Props.ORG);
                break;

            case KnownProperties.PHOTO:
                PHOTO.AddIfNotNull(input as Props.PHOTO);
                break;

            case KnownProperties.PRODID:
                PRODID = input as Props.PRODID;
                break;

            case KnownProperties.RELATED:
                RELATED.AddIfNotNull(input as Props.RELATED);
                break;

            case KnownProperties.REV:
                REV = input as Props.REV;
                break;

            case KnownProperties.ROLE:
                ROLE.AddIfNotNull(input as Props.ROLE);
                break;

            case KnownProperties.SOUND:
                SOUND.AddIfNotNull(input as Props.SOUND);
                break;

            case KnownProperties.SOURCE:
                SOURCE.AddIfNotNull(input as Props.SOURCE);
                break;

            case KnownProperties.TEL:
                TEL.AddIfNotNull(input as Props.TEL);
                break;

            case KnownProperties.TITLE:
                TITLE.AddIfNotNull(input as Props.TITLE);
                break;

            case KnownProperties.TZ:
                TZ.AddIfNotNull(input as Props.TZ);
                break;

            case KnownProperties.UID:
                UID = input as Props.UID;
                break;

            case KnownProperties.URL:
                URL.AddIfNotNull(input as Props.URL);
                break;

            case KnownProperties.VERSION:
                VERSION = input as Props.VERSION;
                break;

            case KnownProperties.XML:
                XML.AddIfNotNull(input as Props.XML);
                break;

            default:
                return;
            }
        }