Skip to content

Commit d8c8765

Browse files
committed
code_style: add CreateIssueTrackerCommand to generate Commands.IssueTracker
Signed-off-by: leo <[email protected]>
1 parent 9802ac9 commit d8c8765

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

src/Commands/IssueTracker.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,17 @@ public IssueTracker(string repo, string storage)
1414
_storage = storage;
1515
}
1616

17-
public async Task<List<Models.IssueTracker>> ReadAllAsync(bool isShared)
17+
public async Task ReadAllAsync(List<Models.IssueTracker> outs, bool isShared)
1818
{
1919
if (!File.Exists(_storage))
20-
return [];
20+
return;
2121

2222
Args = $"config -f {_storage.Quoted()} -l";
2323

24-
var output = await ReadToEndAsync().ConfigureAwait(false);
25-
var rs = new List<Models.IssueTracker>();
26-
if (output.IsSuccess)
24+
var rs = await ReadToEndAsync().ConfigureAwait(false);
25+
if (rs.IsSuccess)
2726
{
28-
var lines = output.StdOut.Split(['\r', '\n'], StringSplitOptions.RemoveEmptyEntries);
27+
var lines = rs.StdOut.Split(['\r', '\n'], StringSplitOptions.RemoveEmptyEntries);
2928
foreach (var line in lines)
3029
{
3130
var parts = line.Split('=', 2);
@@ -43,19 +42,17 @@ public IssueTracker(string repo, string storage)
4342
var prefixLen = "issuetracker.".Length;
4443
var suffixLen = ".regex".Length;
4544
var ruleName = key.Substring(prefixLen, key.Length - prefixLen - suffixLen);
46-
FindOrAdd(rs, ruleName, isShared).RegexString = value;
45+
FindOrAdd(outs, ruleName, isShared).RegexString = value;
4746
}
4847
else if (key.EndsWith(".url", StringComparison.Ordinal))
4948
{
5049
var prefixLen = "issuetracker.".Length;
5150
var suffixLen = ".url".Length;
5251
var ruleName = key.Substring(prefixLen, key.Length - prefixLen - suffixLen);
53-
FindOrAdd(rs, ruleName, isShared).URLTemplate = value;
52+
FindOrAdd(outs, ruleName, isShared).URLTemplate = value;
5453
}
5554
}
5655
}
57-
58-
return rs;
5956
}
6057

6158
public async Task<bool> AddAsync(Models.IssueTracker rule)
@@ -74,6 +71,9 @@ public async Task<bool> AddAsync(Models.IssueTracker rule)
7471

7572
public async Task<bool> RemoveAsync(Models.IssueTracker rule)
7673
{
74+
if (!File.Exists(_storage))
75+
return true;
76+
7777
Args = $"config -f {_storage.Quoted()} --remove-section issuetracker.{rule.Name.Quoted()}";
7878
return await ExecAsync().ConfigureAwait(false);
7979
}

src/ViewModels/Repository.cs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -693,7 +693,7 @@ public CommandLog CreateLog(string name)
693693
URLTemplate = url,
694694
};
695695

696-
var succ = await new Commands.IssueTracker(_fullpath, $"{_gitDir}/sourcegit.issuetracker").AddAsync(rule);
696+
var succ = await CreateIssueTrackerCommand(false).AddAsync(rule);
697697
if (succ)
698698
{
699699
IssueTrackers.Add(rule);
@@ -705,27 +705,15 @@ public CommandLog CreateLog(string name)
705705

706706
public async Task RemoveIssueTrackerAsync(Models.IssueTracker rule)
707707
{
708-
var storage = rule.IsShared ? $"{_fullpath}/.issuetracker" : $"{_gitDir}/sourcegit.issuetracker";
709-
var succ = await new Commands.IssueTracker(_fullpath, storage).RemoveAsync(rule);
708+
var succ = await CreateIssueTrackerCommand(rule.IsShared).RemoveAsync(rule);
710709
if (succ)
711710
IssueTrackers.Remove(rule);
712711
}
713712

714713
public async Task ChangeIssueTrackerShareModeAsync(Models.IssueTracker rule)
715714
{
716-
var shared = new Commands.IssueTracker(_fullpath, $"{_fullpath}/.issuetracker");
717-
var local = new Commands.IssueTracker(_fullpath, $"{_gitDir}/sourcegit.issuetracker");
718-
719-
if (rule.IsShared)
720-
{
721-
await local.RemoveAsync(rule);
722-
await shared.AddAsync(rule);
723-
}
724-
else
725-
{
726-
await local.AddAsync(rule);
727-
await shared.RemoveAsync(rule);
728-
}
715+
await CreateIssueTrackerCommand(!rule.IsShared).RemoveAsync(rule);
716+
await CreateIssueTrackerCommand(rule.IsShared).AddAsync(rule);
729717
}
730718

731719
public void RefreshAll()
@@ -740,13 +728,13 @@ public void RefreshAll()
740728

741729
Task.Run(async () =>
742730
{
743-
var sharedIssueTrackers = await new Commands.IssueTracker(_fullpath, $"{_fullpath}/.issuetracker").ReadAllAsync(true).ConfigureAwait(false);
744-
var localIssueTrackers = await new Commands.IssueTracker(_fullpath, $"{_gitDir}/sourcegit.issuetracker").ReadAllAsync(false).ConfigureAwait(false);
731+
var issuetrackers = new List<Models.IssueTracker>();
732+
await CreateIssueTrackerCommand(true).ReadAllAsync(issuetrackers, true).ConfigureAwait(false);
733+
await CreateIssueTrackerCommand(false).ReadAllAsync(issuetrackers, false).ConfigureAwait(false);
745734
Dispatcher.UIThread.Post(() =>
746735
{
747736
IssueTrackers.Clear();
748-
IssueTrackers.AddRange(sharedIssueTrackers);
749-
IssueTrackers.AddRange(localIssueTrackers);
737+
IssueTrackers.AddRange(issuetrackers);
750738
});
751739

752740
var config = await new Commands.Config(_fullpath).ReadAllAsync().ConfigureAwait(false);
@@ -2909,6 +2897,12 @@ private LauncherPage GetOwnerPage()
29092897
return null;
29102898
}
29112899

2900+
private Commands.IssueTracker CreateIssueTrackerCommand(bool shared)
2901+
{
2902+
var storage = shared ? $"{_fullpath}/.issuetracker" : $"{_gitDir}/sourcegit.issuetracker";
2903+
return new Commands.IssueTracker(_fullpath, storage);
2904+
}
2905+
29122906
private BranchTreeNode.Builder BuildBranchTree(List<Models.Branch> branches, List<Models.Remote> remotes)
29132907
{
29142908
var builder = new BranchTreeNode.Builder(_settings.LocalBranchSortMode, _settings.RemoteBranchSortMode);

0 commit comments

Comments
 (0)