mirror of https://github.com/Squidex/squidex.git
3 changed files with 0 additions and 143 deletions
@ -1,23 +0,0 @@ |
|||
// ==========================================================================
|
|||
// WebpackServices.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Squidex.Pipeline; |
|||
|
|||
namespace Squidex.Config.Web |
|||
{ |
|||
public static class WebpackServices |
|||
{ |
|||
public static IServiceCollection AddWebpackBuilder(this IServiceCollection services) |
|||
{ |
|||
services.AddSingleton<WebpackRunner>(); |
|||
|
|||
return services; |
|||
} |
|||
} |
|||
} |
|||
@ -1,27 +0,0 @@ |
|||
// ==========================================================================
|
|||
// RandomErrorAttribute.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.AspNetCore.Mvc.Filters; |
|||
|
|||
namespace Squidex.Pipeline |
|||
{ |
|||
public sealed class RandomErrorAttribute : ActionFilterAttribute |
|||
{ |
|||
private static readonly Random Random = new Random(); |
|||
|
|||
public override void OnActionExecuted(ActionExecutedContext context) |
|||
{ |
|||
if (Random.Next(10) < 5) |
|||
{ |
|||
context.Result = new StatusCodeResult(500); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,93 +0,0 @@ |
|||
// ==========================================================================
|
|||
// WebpackRunner.cs
|
|||
// Squidex Headless CMS
|
|||
// ==========================================================================
|
|||
// Copyright (c) Squidex Group
|
|||
// All rights reserved.
|
|||
// ==========================================================================
|
|||
|
|||
using System; |
|||
using System.Diagnostics; |
|||
using System.IO; |
|||
using Microsoft.AspNetCore.Hosting; |
|||
using Microsoft.Extensions.Logging; |
|||
|
|||
// ReSharper disable ConvertToConstant.Local
|
|||
|
|||
namespace Squidex.Pipeline |
|||
{ |
|||
public sealed class WebpackRunner |
|||
{ |
|||
private const string WebpackDevServer = "webpack-dev-server"; |
|||
|
|||
private readonly ILoggerFactory loggerFactory; |
|||
private readonly IApplicationLifetime lifetime; |
|||
private Process process; |
|||
|
|||
public WebpackRunner(ILoggerFactory loggerFactory, IApplicationLifetime lifetime) |
|||
{ |
|||
this.loggerFactory = loggerFactory; |
|||
|
|||
this.lifetime = lifetime; |
|||
} |
|||
|
|||
public void Execute() |
|||
{ |
|||
if (process != null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var logger = loggerFactory.CreateLogger(WebpackDevServer); |
|||
|
|||
EnsuereNodeModluesInstalled(logger); |
|||
|
|||
logger.LogInformation($"{WebpackDevServer} Execution started"); |
|||
|
|||
var app = GetNodeExecutable(WebpackDevServer); |
|||
var args = "--inline --hot --port 3000"; |
|||
|
|||
process = Process.Start(new ProcessStartInfo |
|||
{ |
|||
FileName = app, Arguments = args, UseShellExecute = false |
|||
}); |
|||
|
|||
lifetime.ApplicationStopping.Register(OnShutdown); |
|||
|
|||
logger.LogInformation($"{WebpackDevServer} started successfully"); |
|||
} |
|||
|
|||
private void OnShutdown() |
|||
{ |
|||
process?.Kill(); |
|||
process = null; |
|||
} |
|||
|
|||
private static void EnsuereNodeModluesInstalled(ILogger logger) |
|||
{ |
|||
logger.LogInformation("Verifying required tools are installed"); |
|||
|
|||
if (!File.Exists(GetNodeExecutable(WebpackDevServer))) |
|||
{ |
|||
logger.LogError("webpack-dev-server is not installed. Please install it by executing npm i webpack-dev-server"); |
|||
} |
|||
|
|||
logger.LogInformation("All node modules are properly installed"); |
|||
} |
|||
|
|||
private static string GetNodeExecutable(string module) |
|||
{ |
|||
var executablePath = Path.Combine(Directory.GetCurrentDirectory(), "node_modules", ".bin", module); |
|||
|
|||
var osEnVariable = Environment.GetEnvironmentVariable("OS"); |
|||
|
|||
if (!string.IsNullOrEmpty(osEnVariable) && |
|||
string.Equals(osEnVariable, "Windows_NT", StringComparison.OrdinalIgnoreCase)) |
|||
{ |
|||
executablePath += ".cmd"; |
|||
} |
|||
|
|||
return executablePath; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue