public static OptionsConfig Create(RosaliaOptions options)
 {
     return new OptionsConfig
     {
         {
             new Option("nl|nologo", "Do not show Rosalia logo"),
             (v, s) => options.NoLogo = true
         },
         {
             new Option("h|help|?", "Show this help message"),
             (v, s) => options.ShowHelp = true
         },
         {
             new Option("p|prop|property", "Set property"),
             (v, s) => options.Properties.Add(s, v)
         },
         {
             new Option("w|workflow", "Set workflow type (if multiples in assembly)"),
             (v, s) => options.Workflow = v
         },
         {
             new Option("t|task", "Set task to run"),
             (v, s) => options.Tasks += new Identity(v)
         },
         {
             new Option("hl|hold", "Do not close console"),
             (v, s) => options.Hold = true
         },
         {
             new Option("wd|workDirectory", "Work directory"),
             (v, s) => options.WorkDirectory = v
         },
         {
             new Option("ll|logLevel", "Log Level"),
             (v, s) => options.LogLevel = (MessageLevel?) Enum.Parse(typeof(MessageLevel), v)
         },
         {
             new Option("workflowBuildOutput", "Workflow project build output path"),
             (v, s) => options.WorkflowBuildOutputPath = v
         },
         {
             new Option("workflowBuildConfiguration", "Workflow build configuration"),
             (v, s) => options.WorkflowProjectBuildConfiguration = v
         },
         {
             new Option("o|out|output", "Path to a file to write log to"),
             (v, s) => options.OutputFiles.Add(v)
         }
     };
 }
        private static IFile GetInputFile(RosaliaOptions options, IDirectory workDirectory)
        {
            var inputFile = options.InputFile;
            if (string.IsNullOrEmpty(inputFile))
            {
                return null;
            }

            IFile result = Path.IsPathRooted(inputFile)
                ? new DefaultFile(inputFile)
                : workDirectory[options.InputFile].AsFile();

            return result;
        }
        private static InitializationResult InitializeWorkflow(
            RosaliaOptions options,
            IDirectory workDirectory,
            ILogRenderer logRenderer,
            IFile inputFile)
        {
            var runner = new Runner();

            var runningOptions = new RunningOptions
            {
                InputFile = inputFile,
                WorkflowBuildOutputPath = options.WorkflowBuildOutputPath,
                WorkflowProjectBuildConfiguration = options.WorkflowProjectBuildConfiguration,
                LogRenderer = logRenderer,
                WorkDirectory = workDirectory,
                Properties = options.Properties
            };

            return runner.Init(runningOptions);
        }