private DefaultBuildScriptGenerator CreateDefaultScriptGenerator(
            IProgrammingPlatform[] platforms,
            BuildScriptGeneratorOptions commonOptions,
            IEnumerable <IChecker> checkers = null)
        {
            commonOptions                = commonOptions ?? new BuildScriptGeneratorOptions();
            commonOptions.SourceDir      = "/app";
            commonOptions.DestinationDir = "/output";

            var defaultPlatformDetector = new DefaultPlatformsInformationProvider(
                platforms,
                new DefaultStandardOutputWriter());
            var envScriptProvider = new BuildScriptGenerator.PlatformsInstallationScriptProvider(
                platforms,
                defaultPlatformDetector,
                new DefaultStandardOutputWriter());

            return(new DefaultBuildScriptGenerator(
                       defaultPlatformDetector,
                       envScriptProvider,
                       Options.Create(commonOptions),
                       new DefaultCompatiblePlatformDetector(
                           platforms,
                           NullLogger <DefaultCompatiblePlatformDetector> .Instance,
                           Options.Create(commonOptions)),
                       checkers,
                       NullLogger <DefaultBuildScriptGenerator> .Instance,
                       new DefaultStandardOutputWriter()));
        }
        private PlatformsInstallationScriptProvider CreateEnvironmentSetupScriptProvider(
            IEnumerable <IProgrammingPlatform> platforms)
        {
            var platformDetector = new DefaultPlatformsInformationProvider(
                platforms,
                new DefaultStandardOutputWriter());

            return(new PlatformsInstallationScriptProvider(
                       platforms,
                       platformDetector,
                       new DefaultStandardOutputWriter()));
        }