public string Execute()
        {
            ScripterParserInput parserInput = null;

            if (!TryGetParserInput(out parserInput))
            {
                return("Cannot find any input");
            }

            ScripterParserResult parserResult = null;

            if (!_parser.TryParse(parserInput, out parserResult))
            {
                return(parserResult.Error);
            }

            ScripterConfig config = _configStorage.Load();

            var scripterInput = new ScripterInput()
            {
                Database = parserResult.Database,
                Schema   = parserResult.Schema,
                Name     = parserResult.Name,
                ScriptDatabaseContext = config.ScriptDatabaseContext,
            };

            string scriptResult = null;

            if (!TryScript(scripterInput, out scriptResult))
            {
                return(scriptResult);
            }

            IEditor editor = _hostCtx.GetNewEditor();

            editor.SetContent(scriptResult);

            return("Success");
        }
        private bool TryScript(ScripterInput input, out string result)
        {
            result = null;

            bool success = false;

            try
            {
                using (IDbConnection connection = _hostCtx.CloneCurrentConnection(input.Database))
                {
                    connection.Open();
                    result  = _scripter.Script(connection, input);
                    success = true;
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
            }

            return(success);
        }