private void GenerateFileFromScriptTemplate(string fileName, TemplateInfo selectedTemplate, Dictionary <string, object> parameters)
        {
            var executor      = new TemplateExecutor(selectedTemplate.WordTemplateFolderManager);
            var finalFileName = executor.GenerateFile(fileName, ConnectionManager.Instance, SelectedTeamProject.Name, parameters);

            ManageGeneratedWordFile(finalFileName);
        }
예제 #2
0
        private static void PerformTemplateExport(ConnectionManager connection)
        {
            var wordFolderManager = new WordTemplateFolderManager(options.TemplateFolder);
            var executor          = new TemplateExecutor(wordFolderManager);

            //now we need to ask user parameter value
            Dictionary <string, Object> parameters = new Dictionary <string, object>();

            foreach (var commandLineParam in options.Parameters)
            {
                var splitted = commandLineParam.Split('=');
                if (splitted.Length == 2)
                {
                    Log.Debug("Found parameter {paramName} in command line with value {value}", splitted[0], splitted[1]);
                    parameters[splitted[0]] = splitted[1];
                }
                else
                {
                    Log.Error("Command line parameter {param} is not in the form name=value", commandLineParam);
                }
            }
            foreach (var parameterName in wordFolderManager.TemplateDefinition.ParameterSection.Parameters.Keys)
            {
                if (!parameters.ContainsKey(parameterName))
                {
                    Console.Write($"Parameter {parameterName}:");
                    parameters[parameterName] = Console.ReadLine();
                }
            }

            var tempFileName  = Path.GetTempPath() + Guid.NewGuid().ToString();
            var generatedName = executor.GenerateFile(tempFileName, connection, options.TeamProject, parameters);

            System.Diagnostics.Process.Start(generatedName);
        }
        public List <ImmutableSetting> GetImmutableSettings(TemplateInfoRecord templateInfo)
        {
            TemplateExecutor executor            = new TemplateExecutor();
            string           preprocessedContent = executor.ProcessTemplateToString(templateInfo);
            //MessageBox.Show(preprocessedContent);

            StringReader            reader     = new StringReader(preprocessedContent);
            List <ImmutableSetting> imSettings = new List <ImmutableSetting>();

            string line;
            var    immutableSettingsSection = false;

            while ((line = reader.ReadLine()) != null)
            {
                if (line.StartsWith("!!!!"))
                {
                    if (immutableSettingsSection)
                    {
                        break;
                    }
                }
                else if (line.StartsWith("####"))
                {
                    immutableSettingsSection = true;

                    string[] elements = line.Substring(4, line.Length - 4).Split('=');
                    if (elements.Length < 2)
                    {
                        continue;
                    }

                    imSettings.Add(new ImmutableSetting(elements[0].Trim(), elements[1].Trim()));
                }
                else if (line.StartsWith("<#@ "))
                {
                    if (immutableSettingsSection)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
            return(imSettings);
        }
        private static void PerformTemplateExport(ConnectionManager connection)
        {
            var wordFolderManager = new WordTemplateFolderManager(options.TemplateFolder);
            var executor          = new TemplateExecutor(wordFolderManager);

            //now we need to ask user parameter value
            Dictionary <string, Object> parameters = new Dictionary <string, object>();

            foreach (var parameterName in wordFolderManager.TemplateDefinition.Parameters.ParameterNames)
            {
                Console.Write($"Parameter {parameterName}:");
                parameters[parameterName] = Console.ReadLine();
            }

            var tempFileName = Path.GetTempPath() + Guid.NewGuid().ToString() + ".docx";

            executor.GenerateWordFile(tempFileName, connection, options.TeamProject, parameters);
            System.Diagnostics.Process.Start(tempFileName);
        }
        private void InnerExecuteExport()
        {
            var fileName = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()) + ".docx";

            if (SelectedTemplate.IsScriptTemplate)
            {
                var executor = new TemplateExecutor(SelectedTemplate.WordTemplateFolderManager);

                //now we need to ask user parameter value
                Dictionary <string, Object> parameters = new Dictionary <string, object>();
                foreach (var parameter in Parameters)
                {
                    parameters[parameter.Name] = parameter.Value;
                }
                List <String> iterations = Iterations.Where(i => i.Selected).Select(i => i.Path).ToList();
                parameters["iterations"] = iterations;

                executor.GenerateWordFile(fileName, ConnectionManager.Instance, SelectedTeamProject.Name, parameters);
            }
            else
            {
                var selected = SelectedQuery?.Results?.Where(q => q.Selected).ToList();
                if (selected == null || selected.Count == 0)
                {
                    return;
                }

                var template = SelectedTemplate.WordTemplateFolderManager;
                using (WordManipulator manipulator = new WordManipulator(fileName, true))
                {
                    foreach (var workItemResult in selected)
                    {
                        var workItem = workItemResult.WorkItem;
                        manipulator.InsertWorkItem(workItem, template.GetTemplateFor(workItem.Type.Name), true);
                    }
                }
            }
            System.Diagnostics.Process.Start(fileName);
        }
        private void InnerExecuteDump()
        {
            foreach (var selectedTemplate in Templates.Where(t => t.IsSelected))
            {
                var fileName = Path.Combine(Path.GetTempPath(), selectedTemplate.TemplateName, Guid.NewGuid().ToString()) + ".txt";
                if (selectedTemplate.IsScriptTemplate)
                {
                    var executor = new TemplateExecutor(selectedTemplate.WordTemplateFolderManager);

                    //now we need to ask user parameter value
                    Dictionary <string, object> parameters = PrepareUserParameters();
                    executor.DumpWorkItem(fileName, ConnectionManager.Instance, SelectedTeamProject.Name, parameters);
                }
                else
                {
                    var selected = SelectedQuery?.Results?.Where(q => q.Selected).ToList();
                    if (selected == null || selected.Count == 0)
                    {
                        return;
                    }

                    var sb = new StringBuilder();
                    foreach (var workItemResult in selected)
                    {
                        var workItem = workItemResult.WorkItem;
                        var values   = workItem.CreateDictionaryFromWorkItem();
                        foreach (var value in values)
                        {
                            sb.AppendLine($"{value.Key.PadRight(50, ' ')}={value.Value}");
                        }
                        File.WriteAllText(fileName, sb.ToString());
                    }
                }
                System.Diagnostics.Process.Start(fileName);
            }
        }