Files
mpv.net/extensions/ScriptingExtension/ScriptingExtension.cs
Frank Skare 639893f2e7 misc
2020-03-20 17:47:46 +01:00

56 lines
1.7 KiB
C#

// This extension implements the C# scripting feature of mpv.net which
// is based on CS-Script (https://www.cs-script.net).
// I also use this extension to code scripts in order to have full
// code completion and debugger support, once the script code is
// finished I move it from the extension to a standalone script.
using System;
using System.ComponentModel.Composition;
using System.Collections.Generic;
using System.IO;
using mpvnet;
using CSScriptLibrary;
// the file name of extensions must end with 'Extension'
namespace ScriptingExtension
{
[Export(typeof(IExtension))]
public class ScriptingExtension : IExtension
{
//Script Script;
public ScriptingExtension()
{
//Script = new Script();
List<string> files = new List<string>();
if (Directory.Exists(mp.ConfigFolder + "scripts-cs"))
files.AddRange(Directory.GetFiles(mp.ConfigFolder + "scripts-cs", "*.cs"));
if (Directory.Exists(Folder.Startup + "scripts"))
foreach (string path in Directory.GetFiles(Folder.Startup + "scripts", "*.cs"))
files.AddRange(Directory.GetFiles(Folder.Startup + "scripts", "*.cs"));
if (files.Count == 0)
return;
CSScriptLibrary.CSScript.EvaluatorConfig.Engine = EvaluatorEngine.CodeDom;
foreach (string file in files)
{
try
{
CSScriptLibrary.CSScript.Evaluator.LoadCode(File.ReadAllText(file));
}
catch (Exception e)
{
App.ShowException(e);
}
}
}
}
}