diff --git a/SparkleLib/Git/SparkleRepoGit.cs b/SparkleLib/Git/SparkleRepoGit.cs index bc181ae8..694b14ae 100644 --- a/SparkleLib/Git/SparkleRepoGit.cs +++ b/SparkleLib/Git/SparkleRepoGit.cs @@ -29,18 +29,6 @@ namespace SparkleLib { base (path, backend) { } - public override string Url { - get { - SparkleGit git = new SparkleGit (LocalPath, "config --get remote.origin.url"); - git.Start (); - git.WaitForExit (); - - string output = git.StandardOutput.ReadToEnd (); - return output.TrimEnd (); - } - } - - public override string Identifier { get { diff --git a/SparkleLib/Hg/SparkleRepoHg.cs b/SparkleLib/Hg/SparkleRepoHg.cs index 9873d96d..6e545e18 100644 --- a/SparkleLib/Hg/SparkleRepoHg.cs +++ b/SparkleLib/Hg/SparkleRepoHg.cs @@ -29,23 +29,6 @@ namespace SparkleLib { base (path, backend) { } - public override string Url { - get { - string repo_config_file_path = SparkleHelpers.CombineMore (LocalPath, ".hg", "hgrc"); - Regex regex = new Regex (@"default = (.+)"); - - foreach (string line in File.ReadAllLines (repo_config_file_path)) { - Match match = regex.Match (line); - - if (match.Success) - return match.Groups [1].Value.TrimEnd (); - } - - return null; - } - } - - public override string Identifier { get { SparkleHg hg = new SparkleHg (LocalPath, "log -r : --limit 1 --template \"{node}\""); diff --git a/SparkleLib/Scp/SparkleRepoScp.cs b/SparkleLib/Scp/SparkleRepoScp.cs index c49d917f..e6ae3f5d 100644 --- a/SparkleLib/Scp/SparkleRepoScp.cs +++ b/SparkleLib/Scp/SparkleRepoScp.cs @@ -29,13 +29,6 @@ namespace SparkleLib { base (path, backend) { } - public override string Url { - get { - return ""; - } - } - - public override string Identifier { get { return "sparkles"; diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs index e4132fd8..39177e8e 100644 --- a/SparkleLib/SparkleConfig.cs +++ b/SparkleLib/SparkleConfig.cs @@ -121,17 +121,20 @@ namespace SparkleLib { } - public void AddFolder (string name, string backend) + public void AddFolder (string name, string url, string backend) { - XmlNode node_folder = CreateNode (XmlNodeType.Element, "folder", null); - XmlNode node_name = CreateElement ("name"); node_name.InnerText = name; + XmlNode node_url = CreateElement ("url"); + node_url.InnerText = url; + XmlNode node_backend = CreateElement ("backend"); node_backend.InnerText = backend; + XmlNode node_folder = CreateNode (XmlNodeType.Element, "folder", null); node_folder.AppendChild (node_name); + node_folder.AppendChild (node_url); node_folder.AppendChild (node_backend); XmlNode node_root = SelectSingleNode ("/sparkleshare"); @@ -174,6 +177,17 @@ namespace SparkleLib { } + public string GetUrlForFolder (string name) + { + foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) { + if (node_folder ["name"].InnerText.Equals (name)) + return node_folder ["url"].InnerText; + } + + return null; + } + + public string GetConfigOption (string name) { XmlNode node = SelectSingleNode ("/sparkleshare/" + name); diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs index fe645951..45bd1d8f 100644 --- a/SparkleLib/SparkleRepoBase.cs +++ b/SparkleLib/SparkleRepoBase.cs @@ -51,7 +51,6 @@ namespace SparkleLib { private bool has_changed = false; private Object change_lock = new Object (); - public abstract string Url { get; } public abstract bool AnyDifferences { get; } public abstract string Identifier { get; } public abstract string CurrentRevision { get; } @@ -72,7 +71,6 @@ namespace SparkleLib { public event ChangesDetectedEventHandler ChangesDetected; - // TODO: constructor (path, url, backend) public SparkleRepoBase (string path, SparkleBackend backend) { LocalPath = path; @@ -154,7 +152,7 @@ namespace SparkleLib { public string Domain { get { Regex regex = new Regex (@"(@|://)([a-z0-9\.]+)(/|:)"); - Match match = regex.Match (Url); + Match match = regex.Match (SparkleConfig.DefaultConfig.GetUrlForFolder (Name)); if (match.Success) return match.Groups [2].Value; @@ -193,7 +191,8 @@ namespace SparkleLib { public string RemoteName { get { - return Path.GetFileNameWithoutExtension (Url); + string url = SparkleConfig.DefaultConfig.GetUrlForFolder (Name); + return Path.GetFileNameWithoutExtension (url); } } diff --git a/SparkleShare/SparkleController.cs b/SparkleShare/SparkleController.cs index 612f70a5..ebeb6671 100644 --- a/SparkleShare/SparkleController.cs +++ b/SparkleShare/SparkleController.cs @@ -970,7 +970,7 @@ namespace SparkleShare { } - SparkleConfig.DefaultConfig.AddFolder (target_folder_name, backend); + SparkleConfig.DefaultConfig.AddFolder (target_folder_name, url, backend); AddRepository (target_folder_path); if (FolderFetched != null)