コード例 #1
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location      = values.GetString("DestinationFolder");
            var iisExpressUrl = parameters.ContainsKey("iisExpressUrl") ? parameters["iisExpressUrl"] : "";

            var copier = new DirectoryRenamerCopier(arguments.TemplateInformation.TemplatePath, location)
            {
                ExcludeExtensions = arguments.TemplateInformation.ExcludeExtensions.Select(x => x.FileExtension).ToList(),
                RemoveExtensions  = arguments.TemplateInformation.RemoveExtensions.Select(x => x.FileExtension).ToList(),
                RenameExtensions  = arguments.TemplateInformation.RenameExtensions.Select(x => x.FileExtension).ToList(),
                UtfExtensions     = arguments.TemplateInformation.RenameExtensions.Where(x => x.UseUtf8Encoding).Select(x => x.FileExtension).ToList(),
                RenameWords       = arguments.TemplateInformation.Renames
            };

            copier.RenameWords.Add(iisExpressUrl, string.Format("http://localhost:{0}/", GetRandomPort()));

            if (copier.StartRenaming())
            {
                return(new GeneratorActionResult(true, ""));
            }
            else
            {
                return(new GeneratorActionResult(false, ""));
            }
        }
コード例 #2
0
        public GeneratorActionResult RollbackAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var registerIis = values.GetBool("RegisterIis");

            if (registerIis)
            {
                var serverManager = new ServerManager();

                var site = serverManager.Sites.FirstOrDefault(x => x.Name == arguments.Name);

                if (site != null)
                {
                    serverManager.Sites.Remove(site);
                }

                var appPool = serverManager.ApplicationPools.FirstOrDefault(x => x.Name == arguments.Name);

                if (appPool != null)
                {
                    serverManager.ApplicationPools.Remove(appPool);
                }

                // Commit
                serverManager.CommitChanges();
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #3
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            RemoveFile(Path.Combine(location, "Template.xml"));

            return(new GeneratorActionResult(true, ""));
        }
コード例 #4
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            var repo = new Repository(location);

            repo.Push(new PushCommand().WithTimeout(60 * 60));

            return(new GeneratorActionResult(true, ""));
        }
コード例 #5
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            var repo = new Repository(location);

            repo.Add(new AddCommand().WithPaths(location));

            repo.Commit(string.Format(MercurialCommitMessage, Environment.UserName));

            return(new GeneratorActionResult(true, ""));
        }
コード例 #6
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            var repo = new Repository(location);

            if (repo.Manifest().Any())
            {
                return(new GeneratorActionResult(false, "Repository has commits, and is therefor not empty!"));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #7
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location           = values.GetString("DestinationFolder");
            var connectionString   = parameters["connectionString"];
            var databasePrefix     = parameters["databasePrefix"];
            var databaseScriptName = parameters["databaseScriptName"];
            var databaseServerName = parameters["databaseServerName"];
            var databaseUsername   = parameters["databaseUsername"];
            var databasePassword   = parameters["databasePassword"];

            using (var sqlConnection = new SqlConnection(connectionString))
            {
                using (var sqlCommand = new SqlCommand(string.Format(DatabaseCreateStatement, string.Format(DatabaseNameFormat, databasePrefix, arguments.Name))
                                                       , sqlConnection))
                {
                    sqlCommand.Connection.Open();
                    sqlCommand.ExecuteNonQuery();
                    sqlCommand.Connection.Close();
                }
            }

            var databaseScriptFilePath = System.IO.Path.Combine(location, databaseScriptName);
            var osqlCommand            = string.Concat(string.Format(DatabaseOsqlCommand, databaseServerName, databaseUsername, databasePassword), " -d ", string.Format(DatabaseNameFormat, databasePrefix, arguments.Name),
                                                       " -i \"", databaseScriptFilePath, "\"");

            using (var process = new Process()
            {
                StartInfo = new ProcessStartInfo()
                {
                    Arguments = osqlCommand,
                    WindowStyle = ProcessWindowStyle.Normal,
                    CreateNoWindow = false,
                    FileName = "osql.exe"
                }
            })
            {
                process.Start();
                process.WaitForExit(300 * 1000);

                if (!process.HasExited)
                {
                    process.Kill();
                    throw new Exception("OSQL process was niet klaar binnen 5 minuten");
                }
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #8
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            url   = parameters["url"];
            token = parameters["token"];

            try
            {
                values.Add("CloneUrl", GetCloneUrl(values.GetString("projectId")));
            }
            catch (Exception ex)
            {
                return(new GeneratorActionResult(false, ex.Message));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #9
0
        public GeneratorActionResult RollbackAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var editHostsFile = values.GetBool("EditHostsFile");

            if (editHostsFile)
            {
                if (System.IO.File.Exists(string.Concat(HostFileWriter.HostFilePath, ".backup")))
                {
                    // Replace backup
                    System.IO.File.WriteAllText(HostFileWriter.HostFilePath,
                                                System.IO.File.ReadAllText(string.Concat(HostFileWriter.HostFilePath, ".backup"), Encoding.UTF8),
                                                Encoding.UTF8);
                }
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #10
0
        public GeneratorActionResult RollbackAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var connectionString = parameters["connectionString"];
            var databasePrefix   = parameters["databasePrefix"];

            using (var sqlConnection = new SqlConnection(connectionString))
            {
                using (var sqlCommand = new SqlCommand(string.Format(DatabaseDropStatement, string.Format(DatabaseNameFormat, databasePrefix, arguments.Name)),
                                                       sqlConnection))
                {
                    sqlCommand.Connection.Open();
                    sqlCommand.ExecuteNonQuery();
                    sqlCommand.Connection.Close();
                }
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #11
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            url       = parameters["url"];
            token     = parameters["token"];
            moveToken = parameters["moveToken"];

            try
            {
                var projectId = CreateProject(arguments.Name, "", "Websites");
                values.Add("projectId", projectId);
            }
            catch (Exception ex)
            {
                return(new GeneratorActionResult(false, ex.Message));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #12
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");
            var cloneUrl = values.GetString("CloneUrl");

            if (Directory.Exists(location))
            {
                var repo = new Repository(location);
                repo.CloneGui(new CloneGuiCommand {
                    Source = cloneUrl, WaitForGuiToClose = true
                });
            }
            else
            {
                return(new GeneratorActionResult(false, "Directory doesn't exist!"));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #13
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var editHostsFile = values.GetBool("EditHostsFile");
            var hostName      = values.GetString("HostName");

            if (editHostsFile)
            {
                // Create backup
                System.IO.File.WriteAllText(string.Concat(HostFileWriter.HostFilePath, ".backup"),
                                            System.IO.File.ReadAllText(HostFileWriter.HostFilePath, Encoding.UTF8),
                                            Encoding.UTF8);

                var hostEditor = new HostFileWriter();

                hostEditor.AddOrUpdateEntry(hostName, "127.0.0.1", String.Concat("Dev URL for ", arguments.Name));

                hostEditor.Save();
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #14
0
        public GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var registerIis         = values.GetBool("RegisterIis");
            var hosttName           = values.GetString("HostName");
            var location            = values.GetString("DestinationFolder");
            var umbracoRelativePath = parameters["umbracoRelativePath"];

            foreach (var renameWord in arguments.TemplateInformation.Renames)
            {
                umbracoRelativePath = StringHelpers.ReplaceEx(umbracoRelativePath, renameWord.Key, renameWord.Value);
            }

            if (registerIis)
            {
                // Get IIS reference
                var serverManager = new ServerManager();

                // Create new AppPool or use existing
                var appPool = serverManager.ApplicationPools.FirstOrDefault(x => x.Name == arguments.Name) ??
                              serverManager.ApplicationPools.Add(arguments.Name);

                // Umbraco is .NET 4.0
                appPool.ManagedRuntimeVersion = "v4.0";

                // Add site and configure
                var physicalPath = System.IO.Path.Combine(location, umbracoRelativePath);
                serverManager.Sites.Add(arguments.Name, physicalPath, 80);

                serverManager.Sites[arguments.Name].ApplicationDefaults.ApplicationPoolName = arguments.Name;
                serverManager.Sites[arguments.Name].Bindings.Clear();
                serverManager.Sites[arguments.Name].Bindings.Add("*:80:" + hosttName, "http");
                serverManager.Sites[arguments.Name].ServerAutoStart = true;

                // Commit
                serverManager.CommitChanges();
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #15
0
 public GeneratorActionResult RollbackAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
 {
     throw new NotImplementedException();
 }
コード例 #16
0
        public virtual GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var cloneUrl = values.GetString("CloneUrl");
            var location = values.GetString("DestinationFolder");

            try
            {
                GitCommandRunner.RunCommand(string.Format("clone {0} ./", cloneUrl), location);
            }
            catch (Exception ex)
            {
                return(new GeneratorActionResult(false, ex.Message));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #17
0
        public virtual GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            try
            {
                GitCommandRunner.RunCommand("add -A", location);
                GitCommandRunner.RunCommand(string.Format("commit -m \"{0}\"", string.Format(GitCommitMessage, Environment.UserName)), location);
            }
            catch (Exception ex)
            {
                return(new GeneratorActionResult(false, ex.Message));
            }

            return(new GeneratorActionResult(true, ""));
        }
コード例 #18
0
        public virtual GeneratorActionResult ExecuteAction(GeneratorArguments arguments, Core.InputFields.ActionInputValues values, Dictionary <string, string> parameters)
        {
            var location = values.GetString("DestinationFolder");

            try
            {
                GitCommandRunner.RunCommand("config --global http.postBuffer 1548576000", location);
                GitCommandRunner.RunCommand("push --all origin", location);
            }
            catch (Exception ex)
            {
                return(new GeneratorActionResult(false, ex.Message));
            }

            return(new GeneratorActionResult(true, ""));
        }