/// <summary> /// Create module. /// </summary> /// <param name="m">Module path.</param> /// <param name="s">Source path.</param> public static void Create(string m, string s) { Directory0.Delete(m); Source.Load(m, s); SetSource(m, new string[] { s }); SetTarget(m, FindTarget(m)); }
/// <summary> /// Load from source Zip. /// </summary> /// <param name="d">Destination path.</param> /// <param name="s">Source path.</param> /// <param name="r">Remove source?</param> private static void LoadZip(string d, string s, bool r = false) { var t = File0.Temp(); Directory0.Create(t); ZipFile.ExtractToDirectory(s, t); LoadDirectory(d, t, true); if (r) { File.Delete(s); } }
/// <summary> /// Find module target. /// </summary> /// <param name="m">Module path.</param> /// <returns>Target path.</returns> private static IList <string> FindTarget(string m) { List <string> mt = new List <string>(); foreach (var p in new string[] { "*.exe", "*.com", "*.cmd", "*.bat" }) { foreach (var f in Directory0.GetFiles(m, p, true)) { mt.Add(f); } } return(mt); }
/// <summary> /// Load from source file. /// </summary> /// <param name="d">Destination path.</param> /// <param name="s">Source path.</param> /// <param name="r">Remove source?</param> private static void LoadFile(string d, string s, bool r = false) { if (Path.GetExtension(s).ToLower() == ".zip") { LoadZip(d, s, r); return; } Directory0.Create(d); var f = Path.Combine(d, Path.GetFileName(s)); if (r) { File.Move(s, f); } File.Copy(s, f, true); }
/// <summary> /// Load from source directory. /// </summary> /// <param name="d">Destination path.</param> /// <param name="s">Source path.</param> /// <param name="r">Remove source?</param> private static void LoadDirectory(string d, string s, bool r = false) { var t = File0.Temp(); if (r) { Directory.Move(s, t); } else { Directory0.Copy(s, t, true); } Directory.Move(Directory0.NonEmpty(t), d); Directory0.Delete(Path.Combine(d, ".git"), true); Directory0.Delete(t, true); }
/// <summary> /// Destroy module. /// </summary> /// <param name="m">Module path.</param> public static void Destroy(string m) { Directory0.Delete(m); File0.Delete(m + ".source"); File0.Delete(m + ".target"); }
/// <summary> /// Load from Git URL. /// </summary> /// <param name="d">Destination path.</param> /// <param name="s">Source URL.</param> private static void LoadGit(string d, string s) { Shell.Run("git clone --depth=1 " + s + " " + d); Directory0.Delete(Path.Combine(d, ".git"), true); }