Skip to content

Commit 8984488

Browse files
Add --all option to log subcommand
Signed-off-by: Jacob Stopak <jacob@initialcommit.io>
1 parent 5dfedf1 commit 8984488

File tree

1 file changed

+31
-6
lines changed

1 file changed

+31
-6
lines changed

git_sim/log.py

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99

1010
class Log(GitSimBaseCommand):
11-
def __init__(self, commits: int):
11+
def __init__(self, commits: int, all: bool):
1212
super().__init__()
1313
self.numCommits = commits + 1
1414
self.defaultNumCommits = commits + 1
@@ -17,13 +17,18 @@ def __init__(self, commits: int):
1717
except TypeError:
1818
pass
1919
self.arrow_map = []
20+
self.all = all
2021

2122
def construct(self):
2223
if not settings.stdout:
2324
print(f"{settings.INFO_STRING} {type(self).__name__.lower()}")
2425
self.show_intro()
2526
self.get_commits()
2627
self.parse_commits(self.commits[0], 0)
28+
if self.all:
29+
for branch in self.repo.branches:
30+
self.get_commits(start=branch.name)
31+
self.parse_commits(self.commits[0], 0)
2732
self.recenter_frame()
2833
self.scale_frame()
2934
self.fadeout()
@@ -44,9 +49,21 @@ def parse_commits(
4449
self.draw_head(commit, commitId)
4550
self.draw_branch(commit)
4651
self.draw_tag(commit)
47-
if [arrow.start.tolist(), arrow.end.tolist()] not in self.arrow_map:
52+
if (
53+
not isinstance(arrow, m.CurvedArrow)
54+
and [arrow.start.tolist(), arrow.end.tolist()] not in self.arrow_map
55+
):
4856
self.draw_arrow(prevCircle, arrow)
4957
self.arrow_map.append([arrow.start.tolist(), arrow.end.tolist()])
58+
elif (
59+
isinstance(arrow, m.CurvedArrow)
60+
and [arrow.get_start().tolist(), arrow.get_end().tolist()]
61+
not in self.arrow_map
62+
):
63+
self.draw_arrow(prevCircle, arrow)
64+
self.arrow_map.append(
65+
[arrow.get_start().tolist(), arrow.get_end().tolist()]
66+
)
5067
if i == 0 and len(self.drawnRefs) < 2:
5168
self.draw_dark_ref()
5269

@@ -102,7 +119,11 @@ def draw_commit(
102119
end = circle.get_center()
103120
else:
104121
circle.move_to(self.drawnCommits[commit.hexsha].get_center())
105-
start = prevCircle.get_center()
122+
start = (
123+
prevCircle.get_center()
124+
if prevCircle
125+
else (m.LEFT if settings.reverse else m.RIGHT)
126+
)
106127
end = self.drawnCommits[commit.hexsha].get_center()
107128

108129
arrow = m.Arrow(start, end, color=self.fontColor)
@@ -126,9 +147,9 @@ def draw_commit(
126147
if inter.has_points():
127148
arrow = m.CurvedArrow(start, end)
128149
if start[1] == end[1]:
129-
arrow.shift(UP * 1.25)
150+
arrow.shift(m.UP * 1.25)
130151
if start[0] < end[0] and start[1] == end[1]:
131-
arrow.flip(RIGHT).shift(UP)
152+
arrow.flip(m.RIGHT).shift(m.UP)
132153

133154
commitId, commitMessage, commit, hide_refs = self.build_commit_id_and_message(
134155
commit, dots
@@ -175,6 +196,10 @@ def log(
175196
help="The number of commits to display in the simulated log output",
176197
min=1,
177198
),
199+
all: bool = typer.Option(
200+
default=False,
201+
help="Display all local branches in the log output",
202+
),
178203
):
179-
scene = Log(commits=commits)
204+
scene = Log(commits=commits, all=all)
180205
handle_animations(scene=scene)

0 commit comments

Comments
 (0)