gibson-cli 0.7.1__py3-none-any.whl → 0.7.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,8 +5,10 @@ from string import Template
5
5
  import gibson.core.Colors as Colors
6
6
  from gibson.api.Cli import Cli
7
7
  from gibson.command.BaseCommand import BaseCommand
8
+ from gibson.command.code.Model import Model
9
+ from gibson.command.code.Schema import Schema
10
+ from gibson.command.code.Test import Test
8
11
  from gibson.command.Merge import Merge
9
- from gibson.command.rewrite.Rewrite import Rewrite
10
12
  from gibson.core.Configuration import Configuration
11
13
  from gibson.display.Header import Header
12
14
  from gibson.display.WorkspaceFooter import WorkspaceFooter
@@ -106,29 +108,32 @@ class Entity(BaseCommand):
106
108
  self.__render_workspace(entity, data["code"][0]["definition"])
107
109
 
108
110
  input_ = input("> ")
109
- if input_ in [".", ":q", ":w"]:
111
+ if input_ in [":q", ":q!", ":wq"]:
110
112
  self.conversation.newline()
111
113
 
112
114
  if input_ == ":q":
115
+ self.conversation.type("Exiting without saving.\n")
116
+
117
+ if input_ in [":q", ":q!"]:
113
118
  exit(1)
114
119
 
115
120
  self.memory.remember_last({"entities": [data["entity"]]})
121
+ self.conversation.mute()
122
+ Merge(self.configuration).execute()
123
+ self.conversation.unmute()
116
124
 
117
- if input_ == ".":
118
- self.conversation.type(
119
- "Damn we write good code. I stored this in last memory. "
120
- + "Your move.\n"
121
- )
122
- else:
123
- self.conversation.mute()
124
- Merge(self.configuration).execute()
125
- self.conversation.unmute()
125
+ self.conversation.type("Entity saved! ✅\n\n")
126
+ self.conversation.type("Gibson is writing the code...\n\n")
126
127
 
127
- Rewrite(self.configuration, wipe=False).write()
128
+ Model(self.configuration).execute(entity.name)
129
+ Schema(self.configuration).execute(entity.name)
130
+ Test(self.configuration).execute(entity.name)
128
131
 
129
- self.conversation.newline()
132
+ self.conversation.type(
133
+ f"All code for the {Colors.violet(entity.name)} entity has been written 🎉\n\n"
134
+ )
130
135
 
131
- exit(1)
136
+ exit()
132
137
  elif input_ == "":
133
138
  continue
134
139
 
@@ -180,14 +185,13 @@ class Entity(BaseCommand):
180
185
  print(WorkspaceHeader().render(self.configuration.project.name))
181
186
 
182
187
  print("")
183
- print(Header().render("SQL"))
188
+ print(Header().render("SQL", Colors.Color.CYAN))
184
189
  print("")
185
190
  print(Colors.table(entity.create_statement(), entity.name))
186
191
 
187
192
  print("")
188
- print(Header().render("Model"))
193
+ print(Header().render("Model", Colors.Color.YELLOW))
189
194
  print("")
190
- print(model)
195
+ print(Colors.model(model, entity.name))
191
196
 
192
- print("")
193
197
  print(WorkspaceFooter().render())
@@ -8,12 +8,12 @@ from gibson.dev.Dev import Dev
8
8
 
9
9
 
10
10
  class Model(BaseCommand):
11
- def execute(self):
11
+ def execute(self, entity_name=sys.argv[3]):
12
12
  self.configuration.require_project()
13
- entity = self.memory.recall_stored_entity(sys.argv[3])
13
+ entity = self.memory.recall_stored_entity(entity_name)
14
14
  if entity is None:
15
15
  self.conversation.not_sure_no_entity(
16
- self.configuration.project.name, sys.argv[3]
16
+ self.configuration.project.name, entity_name
17
17
  )
18
18
  exit(1)
19
19
 
@@ -8,12 +8,12 @@ from gibson.dev.Dev import Dev
8
8
 
9
9
 
10
10
  class Schema(BaseCommand):
11
- def execute(self):
11
+ def execute(self, entity_name=sys.argv[3]):
12
12
  self.configuration.require_project()
13
- entity = self.memory.recall_stored_entity(sys.argv[3])
13
+ entity = self.memory.recall_stored_entity(entity_name)
14
14
  if entity is None:
15
15
  self.conversation.not_sure_no_entity(
16
- self.configuration.project.name, sys.argv[3]
16
+ self.configuration.project.name, entity_name
17
17
  )
18
18
  exit(1)
19
19
 
@@ -8,12 +8,12 @@ from gibson.dev.Dev import Dev
8
8
 
9
9
 
10
10
  class Test(BaseCommand):
11
- def execute(self):
11
+ def execute(self, entity_name=sys.argv[3]):
12
12
  self.configuration.require_project()
13
- entity = self.memory.recall_stored_entity(sys.argv[3])
13
+ entity = self.memory.recall_stored_entity(entity_name)
14
14
  if entity is None:
15
15
  self.conversation.not_sure_no_entity(
16
- self.configuration.project.name, sys.argv[3]
16
+ self.configuration.project.name, entity_name
17
17
  )
18
18
  exit(1)
19
19
 
gibson/core/Colors.py CHANGED
@@ -57,7 +57,7 @@ def subcommand(text):
57
57
 
58
58
  # Colorize an argument
59
59
  def argument(text):
60
- return colorize(text, Color.VIOLET)
60
+ return violet(text)
61
61
 
62
62
 
63
63
  # Colorize a list of arguments
@@ -92,9 +92,36 @@ def link(text):
92
92
 
93
93
  # Colorize the table name in a SQL statement
94
94
  def table(sql, name):
95
- return sql.replace(name, colorize(name, Color.VIOLET))
95
+ return sql.replace(name, violet(name))
96
+
97
+
98
+ # Colorize the table name in model code
99
+ def model(code, name):
100
+ return code.replace(
101
+ f'__tablename__ = "{name}"', f'__tablename__ = "{violet(name)}"'
102
+ )
96
103
 
97
104
 
98
105
  # Colorize a time/duration output
99
106
  def time(text):
100
107
  return colorize(text, Color.GREEN)
108
+
109
+
110
+ def cyan(text):
111
+ return colorize(text, Color.CYAN)
112
+
113
+
114
+ def green(text):
115
+ return colorize(text, Color.GREEN)
116
+
117
+
118
+ def red(text):
119
+ return colorize(text, Color.RED)
120
+
121
+
122
+ def violet(text):
123
+ return colorize(text, Color.VIOLET)
124
+
125
+
126
+ def yellow(text):
127
+ return colorize(text, Color.YELLOW)
gibson/display/Header.py CHANGED
@@ -1,6 +1,10 @@
1
+ import gibson.core.Colors as Colors
2
+
3
+
1
4
  class Header:
2
- def render(self, text):
3
- header = "+--------------------------------------------------------------+\n"
4
- header += "| " + text + " " * (61 - len(text)) + "|\n"
5
- header += "+--------------------------------------------------------------+"
5
+ def render(self, text, color=None):
6
+ output = text if color is None else Colors.colorize(text, color)
7
+ header = "+-----------------------------------------------------------------------------+\n"
8
+ header += "| " + output + " " * (76 - len(text)) + "|\n"
9
+ header += "+-----------------------------------------------------------------------------+"
6
10
  return header
@@ -1,10 +1,12 @@
1
+ import gibson.core.Colors as Colors
2
+
3
+
1
4
  class WorkspaceFooter:
2
5
  def render(self):
3
6
  return (
4
7
  "=" * 79
5
8
  + "\n"
6
- + "[. + enter = exit] "
7
- + "[:q + enter = abort] "
8
- + "[:w + enter = merge + write code]\n"
9
+ + f"[{Colors.red(':q')} + enter = {Colors.red('discard')} changes] "
10
+ + f"[{Colors.green(':wq')} + enter = {Colors.green('save')} changes + write code]\n\n"
9
11
  + "Using natural language, tell me how I can modify this entity."
10
12
  )
@@ -1,3 +1,6 @@
1
+ import gibson.core.Colors as Colors
2
+
3
+
1
4
  class WorkspaceHeader:
2
5
  def render(self, project_name):
3
6
  return (
@@ -5,4 +8,4 @@ class WorkspaceHeader:
5
8
  + " " * 12
6
9
  + "[PAIR PROGRAMMER]\n"
7
10
  + "=" * 79
8
- )
11
+ ).replace(project_name, Colors.project(project_name))
@@ -1,9 +1,10 @@
1
+ import gibson.core.Colors as Colors
1
2
  from gibson.display.Header import Header
2
3
 
3
4
 
4
5
  def test_render():
5
6
  assert Header().render("abc def ghi") == (
6
- """+--------------------------------------------------------------+
7
- | abc def ghi |
8
- +--------------------------------------------------------------+"""
7
+ """+-----------------------------------------------------------------------------+
8
+ | abc def ghi |
9
+ +-----------------------------------------------------------------------------+"""
9
10
  )
@@ -1,9 +1,11 @@
1
+ import gibson.core.Colors as Colors
1
2
  from gibson.display.WorkspaceFooter import WorkspaceFooter
2
3
 
3
4
 
4
5
  def test_render():
5
6
  assert WorkspaceFooter().render() == (
6
- """===============================================================================
7
- [. + enter = exit] [:q + enter = abort] [:w + enter = merge + write code]
7
+ f"""===============================================================================
8
+ [{Colors.red(':q')} + enter = {Colors.red('discard')} changes] [{Colors.green(':wq')} + enter = {Colors.green('save')} changes + write code]
9
+
8
10
  Using natural language, tell me how I can modify this entity."""
9
11
  )
@@ -1,8 +1,9 @@
1
+ import gibson.core.Colors as Colors
1
2
  from gibson.display.WorkspaceHeader import WorkspaceHeader
2
3
 
3
4
 
4
5
  def test_render():
5
6
  assert WorkspaceHeader().render("abc def ghi") == (
6
- """Project abc def ghi [PAIR PROGRAMMER]
7
+ f"""Project {Colors.project("abc def ghi")} [PAIR PROGRAMMER]
7
8
  ==============================================================================="""
8
9
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gibson-cli
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: Gibson Command Line Interface
5
5
  Author-email: GibsonAI <noc@gibsonai.com>
6
6
  Project-URL: Homepage, https://gibsonai.com/
@@ -26,12 +26,12 @@ gibson/command/auth/Logout.py,sha256=V01q4TdbiBqCnIrM6IA4T25fO6ws0UpXp42I3pwHZVM
26
26
  gibson/command/code/Api.py,sha256=sSvAqEJXdgQjYcu0uiM6ndHE3GnfkfVL6eqP2Otkbww,1002
27
27
  gibson/command/code/Base.py,sha256=YJ2a5Hl0f9NXHUBBPvlt-dUIqEPWQz5vH6-1EHmbFbA,640
28
28
  gibson/command/code/Code.py,sha256=Ce8jilFWl1B7Djabf4KoN3s8IgQPQchhxwOis0nFXvM,4234
29
- gibson/command/code/Entity.py,sha256=Gqmyhm9sALvVaUARi5QjreSSSj9UrG5KHGD5hkhQQ5E,6568
30
- gibson/command/code/Model.py,sha256=rJZfRMVbLgfcYRaWmEnzPe2B5hjnKwKDhuOZjkIEi6U,1087
29
+ gibson/command/code/Entity.py,sha256=MQHtxu_dxd592XA8JYtcOkHeOKqgYC_O6dNbgGI2EMY,6937
30
+ gibson/command/code/Model.py,sha256=UzJOmxgl0nEWRPuP_plKFpPmbFfW3uvur76Kv5QcjjA,1112
31
31
  gibson/command/code/Models.py,sha256=eoUpZHpR0qwNgX60EWfcNz49GHmBw_FGfBuHH2ueZqY,799
32
- gibson/command/code/Schema.py,sha256=VPoTOBsSpyy7g7JGTWMnS3j5ZDjOa4eojALEf3ZUR7o,1091
32
+ gibson/command/code/Schema.py,sha256=aYp-MzNB6UPvtCvoGN0X1JZQ3QYN5ldHtlxb2kGKR08,1116
33
33
  gibson/command/code/Schemas.py,sha256=zZ1gjmOJg77gh70t5y2WkzHWSAvEKx5-gqRN9OcsCXA,802
34
- gibson/command/code/Test.py,sha256=5mamQpHWhSEd5RGEPkxOwyELSc-m3Wh5EJhiZPqvJpA,1082
34
+ gibson/command/code/Test.py,sha256=JgUe5AB7xMw8tHnEaKqUCqRL895nlnwe34GRkOa6P0Y,1107
35
35
  gibson/command/code/Tests.py,sha256=HO1WM6pSToVKsuJn7nUA_I5qrfBN0cgKgBzjlm2Qxt8,799
36
36
  gibson/command/importer/Import.py,sha256=qW__kT7xruUgg2kTZG-80Jah94aqQ7nvd89dZW4uxcg,6792
37
37
  gibson/command/importer/OpenApi.py,sha256=voTthxb0KDTlkEsHsIeJnyMxgEBbJKw9VTKDyGehopI,3759
@@ -64,7 +64,7 @@ gibson/conf/dev/Model.py,sha256=HbHRX3VDxR7hXlzuxkKw4Bf7FH6XMfQ96k9BeIUoBf4,73
64
64
  gibson/conf/dev/Schema.py,sha256=kOSlX1jEyVb82xd8TO8jEAimLcaefIFJr6d2JYvyTqg,74
65
65
  gibson/conf/tests/test_conf_Dependencies.py,sha256=LITeeYiqXM5rKkyWFBqcnMvUR5pzDRuHVAngH372jWc,116
66
66
  gibson/conf/tests/test_conf_Platform.py,sha256=Zc53IsZmV-hT9VRrZEPNrsuehSdWnJXWKGMmOhEqWHo,138
67
- gibson/core/Colors.py,sha256=VLlnhQTReqNnPL0VywOMQpNsyf6hZ2ndM-RvADrO39I,2106
67
+ gibson/core/Colors.py,sha256=dGafcWxDrUV5BcHUdzH2xIlueZW6RgkhFyOWgZ0tfL4,2531
68
68
  gibson/core/CommandRouter.py,sha256=G_4_OToiBQUgvZbO_yuIqYGus0FtV_sk6s9LzGwR4RY,3227
69
69
  gibson/core/Completions.py,sha256=Bsh25vnf0pjpJA6MJNR_2MA2s58Ujj8XolR8fm8AQ_s,1197
70
70
  gibson/core/Configuration.py,sha256=c_YX0GFmiTIr4V0-2GmOuAipdq-WKO6QU2oHtPLP4iU,15784
@@ -82,12 +82,12 @@ gibson/data/postgresql/default-table.tmpl,sha256=4xON0XyY55OiZhZmJ4RemnKMNFLniuS
82
82
  gibson/db/TableExceptions.py,sha256=LGDPxAVjXmb0EJSFpHC6twHoFzv7nFsFzTj2DXNabQU,196
83
83
  gibson/db/tests/test_db_TableExceptions.py,sha256=tNzn6SybygWXSuj-3i_s6t9LOo1P8gI9S4wSz4UxeCk,312
84
84
  gibson/dev/Dev.py,sha256=O-GiMATpVd9kYHsVfbHaC-Omh17HQ8FalFQNelfxh2s,2544
85
- gibson/display/Header.py,sha256=moTxePVMNhtpeFtcI9EhnnLSK1gHIQiwYiWQtBPq_bY,298
86
- gibson/display/WorkspaceFooter.py,sha256=1-PsPtLcC7xUZLwufSSaVo9caXuyZEwfR_iZatxwHF4,316
87
- gibson/display/WorkspaceHeader.py,sha256=qBKtwdtO3jnbQYGwqXZH5ph4jpR9a9KEVUA63VN_zAU,216
88
- gibson/display/tests/test_display_Header.py,sha256=I1GmB9RRa80rcYtgm3YXtpugdp5obca94zBVjmREYCY,324
89
- gibson/display/tests/test_display_WorkspaceFooter.py,sha256=96syJutXZWbGOLiAS5SkRZjwEAgj0E0t-uTT85BJe_w,359
90
- gibson/display/tests/test_display_WorkspaceHeader.py,sha256=eY1ZigLecol5PfyVJSbrbU7N28fnWDpVBqckSYgirIg,316
85
+ gibson/display/Header.py,sha256=Lx7C50pqJiBOo_UgnPXkqL1XhdM1zPFEeEg5CdvPyr0,453
86
+ gibson/display/WorkspaceFooter.py,sha256=qMM-tu9ZPA1E_-uyvrt6rwqXMXMvg5vR817WXmdCEFU,408
87
+ gibson/display/WorkspaceHeader.py,sha256=y05g_RyRWwTeJ5hPpCizYaT-oHWu7htjZwatY8Qo2Lg,306
88
+ gibson/display/tests/test_display_Header.py,sha256=0UWumN0kHjuVYp-Sf707yZgzoMvYt5jUAfWuhoiWwh8,405
89
+ gibson/display/tests/test_display_WorkspaceFooter.py,sha256=EmjK-Yc3uPPaQQKebo1SWt6rUmsPo2imWgpIVb_CLiU,464
90
+ gibson/display/tests/test_display_WorkspaceHeader.py,sha256=bdfWVmnyLd6f28wL1zEANZglX32tz2zEIKvQf9qK-X4,373
91
91
  gibson/lang/Python.py,sha256=WNbCTFhDh9qXVbeySyfaP-6m-c0wllSCZw8A-r_Z0Oo,1764
92
92
  gibson/lang/tests/test_lang_Python.py,sha256=YpdqYOGAssg-jP9GuzfoU4Y4L7Boj0vAUAJgjuZvedo,1862
93
93
  gibson/services/auth/Server.py,sha256=DfemWNZlZ3rDE6PsAAvDP0anK7czwhiadX6Wilo4agY,1936
@@ -124,8 +124,8 @@ gibson/structure/tests/test_structure_Entity.py,sha256=askl8w0p1uqET6HKBogJlRcPP
124
124
  gibson/tests/test_Env.py,sha256=DPWmP0-aEelducq9bAwv7rKoY2NjWXUeCrzfJDQkn2M,369
125
125
  gibson/tests/test_Memory.py,sha256=YP7owToABAk_-s7fD5UG0HTc4lamDjdA39JUlLnk3Fg,2574
126
126
  gibson/tests/test_utils.py,sha256=r_y-EG05YTCNtL8MWiAK1KmPsmeoMgypKsQC_lVgOtM,559
127
- gibson_cli-0.7.1.dist-info/METADATA,sha256=BP2GeRJb4uKyFjdFptfn0Xgj-6RwE2Yf4HNH9-uHnWk,13142
128
- gibson_cli-0.7.1.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
129
- gibson_cli-0.7.1.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
130
- gibson_cli-0.7.1.dist-info/top_level.txt,sha256=RFaUY7VXGiqkMwo1Rj7pM4kGvxkhhnfo-2LmPpuL_fs,11
131
- gibson_cli-0.7.1.dist-info/RECORD,,
127
+ gibson_cli-0.7.2.dist-info/METADATA,sha256=7B6rodHdoyquS6V_sR3QoLpYtlUk22S5UigseI_to74,13142
128
+ gibson_cli-0.7.2.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
129
+ gibson_cli-0.7.2.dist-info/entry_points.txt,sha256=j5VUvq3AzL21xPvVC24zMoXFt-I5lUWulr66nL3OAPM,50
130
+ gibson_cli-0.7.2.dist-info/top_level.txt,sha256=RFaUY7VXGiqkMwo1Rj7pM4kGvxkhhnfo-2LmPpuL_fs,11
131
+ gibson_cli-0.7.2.dist-info/RECORD,,