public IEnumerable<string> ExecuteCommandLine(string workingDirectory,string commandline) {
			var locationOfDll = Assembly.GetExecutingAssembly().Location;
			var loader = new RubyPathLoader();
			var searchPaths =  loader.DiscoverGemPaths(Path.GetDirectoryName(locationOfDll));

			var arguments = new List<string>(commandline.Trim().Split(' '));
			arguments.Insert(0, workingDirectory);

			var setup = IronRuby.Ruby.CreateRubySetup();

			setup.Options.Add("SearchPaths", searchPaths);
			setup.Options.Add("Arguments", arguments.ToArray());

			var sr = new Microsoft.Scripting.Hosting.ScriptRuntimeSetup();
			sr.LanguageSetups.Add(setup);

			var runtime = IronRuby.Ruby.CreateRuntime(sr);

			var memoryStream = new MemoryStream();
			runtime.IO.SetOutput(memoryStream, Encoding.UTF8);

			var engine = runtime.GetEngineByFileExtension(".rb");

			var rubyProgramPath = Path.Combine(Path.GetDirectoryName(locationOfDll), "Program.rb");
			engine.ExecuteFile(rubyProgramPath);

			memoryStream.Seek(0, SeekOrigin.Begin);
			var reader = new StreamReader(runtime.IO.OutputStream);
			var text = reader.ReadToEnd().Split(new[] {Environment.NewLine}, StringSplitOptions.None);
			return text;

		}
Exemple #2
0
        public IEnumerable <string> ExecuteCommandLine(string workingDirectory, string commandline)
        {
            var locationOfDll = Assembly.GetExecutingAssembly().Location;
            var loader        = new RubyPathLoader();
            var searchPaths   = loader.DiscoverGemPaths(Path.GetDirectoryName(locationOfDll));

            var arguments = new List <string>(commandline.Trim().Split(' '));

            arguments.Insert(0, workingDirectory);

            var setup = IronRuby.Ruby.CreateRubySetup();

            setup.Options.Add("SearchPaths", searchPaths);
            setup.Options.Add("Arguments", arguments.ToArray());

            var sr = new Microsoft.Scripting.Hosting.ScriptRuntimeSetup();

            sr.LanguageSetups.Add(setup);

            var runtime = IronRuby.Ruby.CreateRuntime(sr);

            var memoryStream = new MemoryStream();

            runtime.IO.SetOutput(memoryStream, Encoding.UTF8);

            var engine = runtime.GetEngineByFileExtension(".rb");

            var rubyProgramPath = Path.Combine(Path.GetDirectoryName(locationOfDll), "Program.rb");

            engine.ExecuteFile(rubyProgramPath);

            memoryStream.Seek(0, SeekOrigin.Begin);
            var reader = new StreamReader(runtime.IO.OutputStream);
            var text   = reader.ReadToEnd().Split(new[] { Environment.NewLine }, StringSplitOptions.None);

            return(text);
        }
		public void DiscoversLibPaths() {
			var loader = new RubyPathLoader();
			var paths = loader.DiscoverGemPaths(_baseDirectory);
			paths.ShouldContain(Path.Combine(_baseDirectory,"compass-1.1\\lib"));
			paths.ShouldContain(Path.Combine(_baseDirectory,"sass-1.2\\lib"));
		}