Skip to content

Commit 976cfe4

Browse files
Populate init subcommand shell
Signed-off-by: Jacob Stopak <jacob@initialcommit.io>
1 parent 7a424e7 commit 976cfe4

File tree

1 file changed

+77
-19
lines changed

1 file changed

+77
-19
lines changed

src/git_sim/init.py

Lines changed: 77 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,38 +30,96 @@ def construct(self):
3030
print(f"{settings.INFO_STRING} {self.cmd}")
3131

3232
self.show_intro()
33-
# self.recenter_frame()
34-
# self.scale_frame()
35-
# self.add_details(repo_name)
36-
self.show_command_as_title()
33+
self.add_details()
34+
self.recenter_frame()
35+
self.scale_frame()
3736
self.fadeout()
3837
self.show_outro()
3938

40-
def add_details(self, repo_name):
41-
text1 = m.Text(
42-
f"Successfully cloned from {self.url} into ./{repo_name}",
39+
def add_details(self):
40+
self.camera.frame.scale_to_fit_width(18 * 1.1)
41+
project_root = m.Rectangle(
42+
height=9.0,
43+
width=18.0,
44+
color=self.fontColor,
45+
)
46+
47+
cmd_text = m.Text(
48+
self.cmd,
49+
font=self.font,
50+
font_size=36,
51+
color=self.fontColor,
52+
)
53+
cmd_text.align_to(project_root, m.UP).shift(m.UP * 0.25 + cmd_text.height)
54+
55+
project_root_text = m.Text(
56+
os.path.basename(os.getcwd()) + "/",
4357
font=self.font,
4458
font_size=20,
4559
color=self.fontColor,
46-
weight=m.BOLD,
4760
)
48-
text1.move_to([self.camera.frame.get_center()[0], 4, 0])
61+
project_root_text.align_to(project_root, m.LEFT).align_to(project_root, m.UP).shift(m.RIGHT * 0.25).shift(m.DOWN * 0.25)
4962

50-
text2 = m.Text(
51-
f"Cloned repo log:",
63+
dot_git_text = m.Text(
64+
".git/",
5265
font=self.font,
5366
font_size=20,
5467
color=self.fontColor,
55-
weight=m.BOLD,
5668
)
57-
text2.move_to(text1.get_center()).shift(m.DOWN / 2)
69+
dot_git_text.align_to(project_root_text, m.UP).shift(m.DOWN).align_to(project_root_text, m.LEFT).shift(m.RIGHT * 0.5)
5870

59-
self.toFadeOut.add(text1)
60-
self.toFadeOut.add(text2)
61-
self.recenter_frame()
62-
self.scale_frame()
71+
head_text = m.Text("HEAD", font=self.font, color=self.fontColor, font_size=20).align_to(dot_git_text, m.UP).shift(m.DOWN).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
72+
73+
down_shift = m.DOWN
74+
config_text = m.Text("config", font=self.font, color=self.fontColor, font_size=20).align_to(head_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
75+
description_text = m.Text("description", font=self.font, color=self.fontColor, font_size=20).align_to(config_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
76+
hooks_text = m.Text("hooks/", font=self.font, color=self.fontColor, font_size=20).align_to(description_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
77+
info_text = m.Text("info/", font=self.font, color=self.fontColor, font_size=20).align_to(hooks_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
78+
objects_text = m.Text("objects/", font=self.font, color=self.fontColor, font_size=20).align_to(info_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
79+
refs_text = m.Text("refs/", font=self.font, color=self.fontColor, font_size=20).align_to(objects_text, m.UP).shift(down_shift).align_to(dot_git_text, m.LEFT).shift(m.RIGHT*0.5)
80+
81+
dot_git_text_arrow = m.Arrow(start=dot_git_text.get_right(), end=dot_git_text.get_right() + m.RIGHT * 3.5, color=self.fontColor)
82+
head_text_arrow = m.Arrow(start=head_text.get_right(), end=(dot_git_text_arrow.end[0], head_text.get_right()[1], 0), color=self.fontColor)
83+
config_text_arrow = m.Arrow(start=config_text.get_right(), end=(dot_git_text_arrow.end[0], config_text.get_right()[1], 0), color=self.fontColor)
84+
description_text_arrow = m.Arrow(start=description_text.get_right(), end=(dot_git_text_arrow.end[0], description_text.get_right()[1], 0), color=self.fontColor)
85+
hooks_text_arrow = m.Arrow(start=hooks_text.get_right(), end=(dot_git_text_arrow.end[0], hooks_text.get_right()[1], 0), color=self.fontColor)
86+
info_text_arrow = m.Arrow(start=info_text.get_right(), end=(dot_git_text_arrow.end[0], info_text.get_right()[1], 0), color=self.fontColor)
87+
objects_text_arrow = m.Arrow(start=objects_text.get_right(), end=(dot_git_text_arrow.end[0], objects_text.get_right()[1], 0), color=self.fontColor)
88+
refs_text_arrow = m.Arrow(start=refs_text.get_right(), end=(dot_git_text_arrow.end[0], refs_text.get_right()[1], 0), color=self.fontColor)
89+
90+
dot_git_desc = m.Text("The hidden .git/ folder is created after running the 'git init' command.", font=self.font, font_size=18, color=self.fontColor).next_to(dot_git_text_arrow, m.RIGHT)
91+
head_desc = m.Text("A label (ref) that points to the currently checked-out commit.", font=self.font, font_size=18, color=self.fontColor).next_to(head_text_arrow, m.RIGHT)
92+
config_desc = m.Text("A file containing Git configuration settings for the local repo.", font=self.font, font_size=18, color=self.fontColor).next_to(config_text_arrow, m.RIGHT)
93+
description_desc = m.Text("A file containing an optional description for your Git repo.", font=self.font, font_size=18, color=self.fontColor).next_to(description_text_arrow, m.RIGHT)
94+
hooks_desc = m.Text("A folder containing 'hooks' which allow triggering custom\nscripts after running Git actions.", font=self.font, font_size=18, color=self.fontColor).next_to(hooks_text_arrow, m.RIGHT)
95+
info_desc = m.Text("A folder containing the 'exclude' file, tells Git to ignore\nspecific file patterns on your system.", font=self.font, font_size=18, color=self.fontColor).next_to(info_text_arrow, m.RIGHT)
96+
objects_desc = m.Text("A folder containing Git's object database, which stores the\nobjects representing code files, changes and commits tracked by Git.", font=self.font, font_size=18, color=self.fontColor).next_to(objects_text_arrow, m.RIGHT)
97+
refs_desc = m.Text("A folder holding the refs (labels) Git uses to represent branches & tags.", font=self.font, font_size=18, color=self.fontColor).next_to(refs_text_arrow, m.RIGHT)
6398

6499
if settings.animate:
65-
self.play(m.AddTextLetterByLetter(text1), m.AddTextLetterByLetter(text2))
100+
self.play(m.AddTextLetterByLetter(cmd_text))
101+
self.play(m.Create(project_root))
102+
self.play(m.AddTextLetterByLetter(project_root_text))
103+
self.play(m.AddTextLetterByLetter(dot_git_text), m.Create(dot_git_text_arrow), m.AddTextLetterByLetter(dot_git_desc))
104+
self.play(m.AddTextLetterByLetter(head_text), m.Create(head_text_arrow), m.AddTextLetterByLetter(head_desc))
105+
self.play(m.AddTextLetterByLetter(config_text), m.Create(config_text_arrow), m.AddTextLetterByLetter(config_desc))
106+
self.play(m.AddTextLetterByLetter(description_text), m.Create(description_text_arrow), m.AddTextLetterByLetter(description_desc))
107+
self.play(m.AddTextLetterByLetter(hooks_text), m.Create(hooks_text_arrow), m.AddTextLetterByLetter(hooks_desc))
108+
self.play(m.AddTextLetterByLetter(info_text), m.Create(info_text_arrow), m.AddTextLetterByLetter(info_desc))
109+
self.play(m.AddTextLetterByLetter(objects_text), m.Create(objects_text_arrow), m.AddTextLetterByLetter(objects_desc))
110+
self.play(m.AddTextLetterByLetter(refs_text), m.Create(refs_text_arrow), m.AddTextLetterByLetter(refs_desc))
66111
else:
67-
self.add(text1, text2)
112+
self.add(cmd_text)
113+
self.add(project_root)
114+
self.add(project_root_text)
115+
self.add(dot_git_text)
116+
self.add(head_text, config_text, description_text, hooks_text, info_text, objects_text, refs_text)
117+
self.add(dot_git_text_arrow, head_text_arrow, config_text_arrow, description_text_arrow, hooks_text_arrow, info_text_arrow, objects_text_arrow, refs_text_arrow)
118+
self.add(dot_git_desc, head_desc, config_desc, description_desc, hooks_desc, info_desc, objects_desc, refs_desc)
119+
120+
self.toFadeOut.add(cmd_text)
121+
self.toFadeOut.add(project_root)
122+
self.toFadeOut.add(project_root_text)
123+
self.toFadeOut.add(head_text, config_text, description_text, hooks_text, info_text, objects_text, refs_text)
124+
self.toFadeOut.add(dot_git_text_arrow, head_text_arrow, config_text_arrow, description_text_arrow, hooks_text_arrow, info_text_arrow, objects_text_arrow, refs_text_arrow)
125+
self.toFadeOut.add(dot_git_desc, head_desc)

0 commit comments

Comments
 (0)