/// <summary>
        /// Create a deep copy.
        /// </summary>
        /// <returns>Returns a deep copy.</returns>
        public TemplatePackageManifest Copy()
        {
            TemplatePackageManifest m = new TemplatePackageManifest();
            int i;

            //
            m.Signature       = Signature;
            m.HotDocsVersion  = HotDocsVersion;
            m.PublishDateTime = PublishDateTime;
            m.ExpirationDate  = ExpirationDate;
            m.WarningDays     = WarningDays;
            m.ExtensionDays   = ExtensionDays;
            m.MainTemplate    = MainTemplate != null?MainTemplate.Copy() : new TemplateInfo();

            if (OtherTemplates != null)
            {
                m.OtherTemplates = new TemplateInfo[OtherTemplates.Length];
                for (i = 0; i < OtherTemplates.Length; i++)
                {
                    m.OtherTemplates[i] = OtherTemplates[i].Copy();
                }
            }
            else
            {
                m.OtherTemplates = new TemplateInfo[0];
            }
            if (AdditionalFiles != null)
            {
                m.AdditionalFiles = new string[AdditionalFiles.Length];
                for (i = 0; i < AdditionalFiles.Length; i++)
                {
                    m.AdditionalFiles[i] = AdditionalFiles[i];
                }
            }
            else
            {
                m.AdditionalFiles = new string[0];
            }
            return(m);
        }
示例#2
0
        void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
        {
            writer.WriteStartObject();
            writer.WritePropertyName("location");
            writer.WriteStringValue(Location);
            if (Optional.IsCollectionDefined(Tags))
            {
                writer.WritePropertyName("tags");
                writer.WriteStartObject();
                foreach (var item in Tags)
                {
                    writer.WritePropertyName(item.Key);
                    writer.WriteStringValue(item.Value);
                }
                writer.WriteEndObject();
            }
            writer.WritePropertyName("properties");
            writer.WriteStartObject();
            if (Optional.IsDefined(Description))
            {
                writer.WritePropertyName("description");
                writer.WriteStringValue(Description);
            }
            if (Optional.IsCollectionDefined(LinkedTemplates))
            {
                writer.WritePropertyName("linkedTemplates");
                writer.WriteStartArray();
                foreach (var item in LinkedTemplates)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            if (Optional.IsDefined(Metadata))
            {
                writer.WritePropertyName("metadata");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(Metadata);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(Metadata.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(MainTemplate))
            {
                writer.WritePropertyName("mainTemplate");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(MainTemplate);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(MainTemplate.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(UiFormDefinition))
            {
                writer.WritePropertyName("uiFormDefinition");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(UiFormDefinition);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(UiFormDefinition.ToString()).RootElement);
#endif
            }
            writer.WriteEndObject();
            writer.WriteEndObject();
        }
示例#3
0
        void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
        {
            writer.WriteStartObject();
            if (Optional.IsDefined(ManagedBy))
            {
                writer.WritePropertyName("managedBy");
                writer.WriteStringValue(ManagedBy);
            }
            if (Optional.IsDefined(Sku))
            {
                writer.WritePropertyName("sku");
                writer.WriteObjectValue(Sku);
            }
            writer.WritePropertyName("tags");
            writer.WriteStartObject();
            foreach (var item in Tags)
            {
                writer.WritePropertyName(item.Key);
                writer.WriteStringValue(item.Value);
            }
            writer.WriteEndObject();
            writer.WritePropertyName("location");
            writer.WriteStringValue(Location);
            writer.WritePropertyName("properties");
            writer.WriteStartObject();
            writer.WritePropertyName("lockLevel");
            writer.WriteStringValue(LockLevel.ToSerialString());
            if (Optional.IsDefined(DisplayName))
            {
                writer.WritePropertyName("displayName");
                writer.WriteStringValue(DisplayName);
            }
            if (Optional.IsDefined(IsEnabled))
            {
                writer.WritePropertyName("isEnabled");
                writer.WriteBooleanValue(IsEnabled.Value);
            }
            if (Optional.IsCollectionDefined(Authorizations))
            {
                writer.WritePropertyName("authorizations");
                writer.WriteStartArray();
                foreach (var item in Authorizations)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            if (Optional.IsCollectionDefined(Artifacts))
            {
                writer.WritePropertyName("artifacts");
                writer.WriteStartArray();
                foreach (var item in Artifacts)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            if (Optional.IsDefined(Description))
            {
                writer.WritePropertyName("description");
                writer.WriteStringValue(Description);
            }
            if (Optional.IsDefined(PackageFileUri))
            {
                writer.WritePropertyName("packageFileUri");
                writer.WriteStringValue(PackageFileUri.AbsoluteUri);
            }
            if (Optional.IsDefined(MainTemplate))
            {
                writer.WritePropertyName("mainTemplate");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(MainTemplate);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(MainTemplate.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(CreateUiDefinition))
            {
                writer.WritePropertyName("createUiDefinition");
#if NET6_0_OR_GREATER
                writer.WriteRawValue(CreateUiDefinition);
#else
                JsonSerializer.Serialize(writer, JsonDocument.Parse(CreateUiDefinition.ToString()).RootElement);
#endif
            }
            if (Optional.IsDefined(NotificationPolicy))
            {
                writer.WritePropertyName("notificationPolicy");
                writer.WriteObjectValue(NotificationPolicy);
            }
            if (Optional.IsDefined(LockingPolicy))
            {
                writer.WritePropertyName("lockingPolicy");
                writer.WriteObjectValue(LockingPolicy);
            }
            if (Optional.IsDefined(DeploymentPolicy))
            {
                writer.WritePropertyName("deploymentPolicy");
                writer.WriteObjectValue(DeploymentPolicy);
            }
            if (Optional.IsDefined(ManagementPolicy))
            {
                writer.WritePropertyName("managementPolicy");
                writer.WriteObjectValue(ManagementPolicy);
            }
            if (Optional.IsCollectionDefined(Policies))
            {
                writer.WritePropertyName("policies");
                writer.WriteStartArray();
                foreach (var item in Policies)
                {
                    writer.WriteObjectValue(item);
                }
                writer.WriteEndArray();
            }
            writer.WriteEndObject();
            writer.WriteEndObject();
        }
        public void RunStarted(object automationObject,
                               Dictionary <string, string> replacementsDictionary,
                               WizardRunKind runKind, object[] customParams)
        {
            try {
                WizardForm form = new WizardForm();
                DTE        dte  = automationObject as DTE;

                var solItems = dte.Solution.Projects.Cast <Project>().FirstOrDefault(p => p.Name == "Solution Items" || p.Kind == EnvDTE.Constants.vsProjectItemKindSolutionItems);
                if (solItems != null)
                {
                    form.HideSolutionOptions();
                }

                form.ShowDialog();

                if (form.Cancelled)
                {
                    throw new WizardBackoutException();
                }

                templateParameters = new Dictionary <string, object> {
                    { "UseModMenu", form.UseModMenu.IsChecked ?? false },
                    { "ModSettings", form.ModSettings.IsChecked ?? false },
                    { "AddModComponent", (form.UseModMenu.IsChecked ?? false) && (form.AddModComponent.IsChecked ?? false) },
                    { "UMMSettingsGUI", (form.ModSettings.IsChecked ?? false) && (form.UMMSettingsGUI.IsChecked ?? false) },
                    { "ModMenuExampleCode", (form.UseModMenu.IsChecked ?? false) && (form.ModMenuSampleCode.IsChecked ?? false) },
                    { "ModNamespace", replacementsDictionary["$safeprojectname$"] },
                    { "AuthorID", form.AuthorID.Text },
                    { "AuthorName", form.AuthorName.Text },
                    { "DisplayName", form.DisplayName.Text },
                    { "ModHomepage", form.ModHomepage.Text },
                    { "ModRepo", form.ModRepo.Text },
                    { "GameDirectory", form.GameDirectory.Text.Replace(@"\", @"\\") },
                    { "SteamExecutable", form.SteamExecutable.Text.Replace(@"\", @"\\") }
                };

                outputModComponent  = (form.UseModMenu.IsChecked ?? false) && (form.AddModComponent.IsChecked ?? false);
                outputPatchExamples = form.PatchSampleCode.IsChecked ?? false;
                outputRepoFile      = form.AddRepoFile.IsChecked ?? false;

                replacementsDictionary.Add("$outputModComponent$", outputModComponent.ToString());
                replacementsDictionary.Add("$outputPatchExamples$", outputPatchExamples.ToString());
                replacementsDictionary.Add("$useModMenu$", (form.UseModMenu.IsChecked ?? false).ToString());

                MainTemplate mainTemplate = new MainTemplate {
                    Session = templateParameters
                };
                mainTemplate.Initialize();
                string mainContent = mainTemplate.TransformText();
                replacementsDictionary.Add("$maincontent$", mainContent);

                ModComponentTemplate modComponentTemplate = new ModComponentTemplate {
                    Session = templateParameters
                };
                modComponentTemplate.Initialize();
                string modComponentContent = modComponentTemplate.TransformText();
                replacementsDictionary.Add("$modcomponentcontent$", modComponentContent);

                InfoTemplate infoTemplate = new InfoTemplate {
                    Session = templateParameters
                };
                infoTemplate.Initialize();
                string infoContent = infoTemplate.TransformText();
                replacementsDictionary.Add("$infocontent$", infoContent);

                PatchExamplesTemplate patchExamplesTemplate = new PatchExamplesTemplate {
                    Session = templateParameters
                };
                patchExamplesTemplate.Initialize();
                string patchExamplesContent = patchExamplesTemplate.TransformText();
                replacementsDictionary.Add("$patchexamplescontent$", patchExamplesContent);
            }
            catch (Exception ex) {
                String destinationDirectory = replacementsDictionary["$destinationdirectory$"];
                if (Directory.Exists(destinationDirectory))
                {
                    Directory.Delete(destinationDirectory, true);

                    try {
                        Directory.GetParent(destinationDirectory).Delete();
                    } catch {}
                }

                Console.WriteLine(ex);

                throw ex;
            }
        }