private bool CheckFileExtension(string filePath, string allowedFileExtensionGLobPattern) { bool isRightFileExtension; if (Glob.IsMatch(filePath, allowedFileExtensionGLobPattern)) { if (File.Exists(filePath)) { isRightFileExtension = true; } else { _flubuSession.LogInfo("File not found"); isRightFileExtension = false; } } else { isRightFileExtension = false; _flubuSession.LogInfo("Not allowed file extension"); } return(isRightFileExtension); }
public virtual async Task <int> ExecuteAsync() { if (Args.DisableColoredLogging) { FlubuConsoleLogger.DisableColloredLogging = true; } if (Args.Help) { return(1); } if (Args.IsInternalCommand()) { await ExecuteInternalCommand(); return(0); } try { int result = 0; do { IBuildScript script = null; try { if (!_flubuSession.InteractiveMode) { script = await _scriptProvider.GetBuildScriptAsync(Args); } else { script = await _scriptProvider.GetBuildScriptAsync(_flubuSession .InteractiveArgs, true); } } catch (BuildScriptLocatorException) { if (Args.InteractiveMode && !_flubuSession.InteractiveMode) { _flubuSession.LogInfo("Build script not found."); script = await SimpleFlubuInteractiveMode(script); } else { throw; } } _flubuSession.ScriptArgs = Args.ScriptArguments; _flubuSession.InteractiveMode = Args.InteractiveMode; _flubuSession.InteractiveArgs = Args; _flubuSession.TargetTree.BuildScript = script; _flubuSession.Properties.Set(BuildProps.IsWebApi, Args.IsWebApi); _flubuSession.TargetTree.ResetTargetTree(); if (script != null) { if (_flubuSession.InteractiveMode) { FlubuInteractiveMode(_flubuSession, script); } else { result = script.Run(_flubuSession); } } }while (_flubuSession.InteractiveMode && InternalTerminalCommands.ReloadCommands.Contains(_flubuSession.InteractiveArgs.MainCommands[0], StringComparer.OrdinalIgnoreCase)); return(result); } catch (TaskExecutionException e) { if (Args.RethrowOnException) { throw; } _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{e}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (FlubuException e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(StatusCodes.BuildScriptNotFound); } catch (Exception e) { if (Args.RethrowOnException) { throw; } var str = Args.Debug ? e.ToString() : e.Message; _log.Log(LogLevel.Error, 1, $"EXECUTION FAILED:\r\n{str}", null, (t, ex) => t); return(3); } }
protected virtual void FlubuInteractiveMode(IFlubuSession flubuSession, IBuildScript script) { flubuSession.InteractiveMode = true; var flubuConsole = InitializeFlubuConsole(flubuSession, script); flubuSession.TargetTree.ScriptArgsHelp = _scriptProperties.GetPropertiesHelp(script); flubuSession.TargetTree.RunTarget(flubuSession, FlubuTargets.HelpOnlyTargets); flubuSession.LogInfo(" "); do { if (flubuSession.InteractiveMode) { var commandLine = flubuConsole.ReadLine(); if (string.IsNullOrEmpty(commandLine)) { continue; } var cmdApp = new CommandLineApplication() { UnrecognizedArgumentHandling = UnrecognizedArgumentHandling.CollectAndContinue }; var parser = new FlubuCommandParser(cmdApp, null, null, null); var args = parser.Parse(commandLine.Split(' ') .Where(x => !string.IsNullOrWhiteSpace(x)) .Select(x => x.Trim()).ToArray()); var targetsInfo = DefaultBuildScript.ParseCmdLineArgs(args.MainCommands, flubuSession.TargetTree); if (args.MainCommands.Count == 0) { continue; } if (!args.MainCommands[0].Equals("l", StringComparison.OrdinalIgnoreCase) && !args.MainCommands[0].Equals("load", StringComparison.OrdinalIgnoreCase)) { args.Script = flubuSession.InteractiveArgs.Script; } flubuSession.InteractiveArgs = args; flubuSession.ScriptArgs = args.ScriptArguments; _scriptProperties.InjectProperties(script, flubuSession); if (InternalTerminalCommands.InteractiveExitAndReloadCommands.Contains(args.MainCommands[0], StringComparer.OrdinalIgnoreCase)) { break; } if (targetsInfo.unknownTarget) { var internalCommandExecuted = flubuConsole.ExecuteInternalCommand(commandLine); if (internalCommandExecuted) { continue; } var splitedLine = commandLine.Split(' ').ToList(); var command = splitedLine.First(); var runProgram = flubuSession.Tasks().RunProgramTask(command).DoNotLogTaskExecutionInfo() .WorkingFolder(Directory.GetCurrentDirectory()); splitedLine.RemoveAt(0); try { runProgram.WithArguments(splitedLine.ToArray()).Execute(flubuSession); } catch (CommandUnknownException) { flubuSession.LogError( $"'{command}' is not recognized as a flubu target, internal or external command, operable program or batch file."); } catch (TaskExecutionException e) { flubuSession.LogError($"ERROR: {(flubuSession.Args.Debug ? e.ToString() : e.Message)}", Color.Red); } catch (ArgumentException) { } catch (Win32Exception) { } continue; } } try { script.Run(flubuSession); flubuSession.LogInfo(" "); } catch (Exception e) { flubuSession.LogError($"ERROR: {(flubuSession.Args.Debug ? e.ToString() : e.Message)}", Color.Red); } }while (flubuSession.InteractiveMode); }