5
5
from ccdb import TypeTable , Assignment
6
6
from ccdb import AlchemyProvider
7
7
from ccdb .cmd import CliCommandBase , UtilityArgumentParser
8
- from ccdb .path_utils import ParseRequestResult , parse_request
9
- from ccdb import BraceMessage as Lfm # lfm is aka log format message. See BraceMessage desc about
10
- from sqlalchemy .orm .exc import NoResultFound
8
+ from ccdb .path_utils import ParseRequestResult , parse_request , parse_time
9
+ from ccdb import BraceMessage as Lfm # lfm is aka log format message. See BraceMessage desc about
11
10
12
11
log = logging .getLogger ("ccdb.cmd.commands.cat" )
13
12
@@ -33,13 +32,6 @@ class Cat(CliCommandBase):
33
32
34
33
def __init__ (self , context ):
35
34
CliCommandBase .__init__ (self , context )
36
- self .raw_entry = "/" # object path with possible pattern, like /mole/*
37
- self .path = "/" # parent path
38
- self .raw_table_path = ""
39
- self .ass_id = 0
40
- self .print_horizontal = True
41
-
42
- self .request = ParseRequestResult ()
43
35
44
36
# ----------------------------------------
45
37
# process
@@ -59,7 +51,7 @@ def execute(self, args):
59
51
60
52
parsed_args = self .process_arguments (args )
61
53
62
- if self .ass_id :
54
+ if parsed_args .ass_id :
63
55
assignment = self .get_assignment_by_id (parsed_args .ass_id )
64
56
else :
65
57
assignment = self .get_assignment_by_request (parsed_args .request )
@@ -123,7 +115,7 @@ def get_assignment_by_request(self, request):
123
115
# ----------------------------------------
124
116
def process_arguments (self , args ):
125
117
parser = UtilityArgumentParser (add_help = False )
126
- parser .add_argument ("obj_name" , default = "" )
118
+ parser .add_argument ("obj_name" , default = "" , nargs = '?' )
127
119
128
120
# border
129
121
group = parser .add_mutually_exclusive_group ()
@@ -140,44 +132,49 @@ def process_arguments(self, args):
140
132
group .add_argument ("-c" , "--comments" , action = "store_true" , dest = 'show_comments' , default = False )
141
133
group .add_argument ("-nc" , "--no-comments" , action = "store_false" , dest = 'show_comments' )
142
134
143
- # time
144
- group = parser .add_mutually_exclusive_group ()
145
- group .add_argument ("-t" , "--time" , action = "store_true" , dest = 'show_date' , default = False )
146
- group .add_argument ("-nt" , "--no-time" , action = "store_true" , dest = 'show_date' )
135
+ # horizontal or vertical
136
+ parser .add_argument ("-ph" , "--horizontal" , action = "store_true" , dest = 'user_request_print_horizontal' )
137
+ parser .add_argument ("-pv" , "--vertical" , action = "store_true" , dest = 'user_request_print_vertical' )
147
138
148
- parser . add_argument ( "-d" , "--directory" )
139
+ # Assignment parameters
149
140
parser .add_argument ("-v" , "--variation" )
150
- parser .add_argument ("-a" , "--id" )
141
+ parser .add_argument ("-a" , "--id" , dest = 'ass_id' )
151
142
parser .add_argument ("-r" , "--run" )
152
- parser .add_argument ("-f" , "--file" )
153
- parser .add_argument ("-ph" , "--horizontal" , action = "store_true" , dest = 'user_request_print_horizontal' )
154
- parser .add_argument ("-pv" , "--vertical" , action = "store_true" , dest = 'user_request_print_vertical' )
143
+ parser .add_argument ("-t" , "--time" , required = False )
155
144
145
+ # Parse args
156
146
result = parser .parse_args (args )
157
- # parse loop
158
- if result .obj_name :
159
- # it probably must be a request or just a table name
160
- result .request = parse_request (result .obj_name )
147
+
148
+ # Parse ccdb request
149
+ result .request = parse_request (result .obj_name ) if result .obj_name else ParseRequestResult ()
150
+
151
+ # Check if user set the variation
152
+ if not result .request .variation_is_parsed and result .variation :
153
+ result .request .variation = result .variation
154
+ result .request .variation_is_parsed = True
161
155
162
156
# Check if user set the default variation
163
157
if not result .request .variation_is_parsed and self .context .current_variation :
164
158
result .request .variation = self .context .current_variation
165
159
result .request .variation_is_parsed = True
166
160
161
+ # Check if user set the run
162
+ if not result .request .run_is_parsed and result .run :
163
+ result .request .run = int (result .run )
164
+ result .request .run_is_parsed = True
165
+
167
166
# Check if user set the default run
168
167
if not result .request .run_is_parsed and self .context .current_run :
169
168
result .request .run = self .context .current_run
170
169
result .request .run_is_parsed = True
171
170
172
- return result
171
+ # Check if user set time
172
+ if not result .request .time_is_parsed and result .time :
173
+ result .request .time_str = result .time
174
+ result .request .time = parse_time (result .time )
175
+ result .request .time_is_parsed = True
173
176
174
- # ----------------------------------------
175
- # validate
176
- # ----------------------------------------
177
- def validate (self ):
178
- if not self .raw_table_path :
179
- return False
180
- return True
177
+ return result
181
178
182
179
# --------------------------------------------------------------------------------
183
180
# print_assignment_vertical
@@ -209,14 +206,14 @@ def print_assignment_horizontal(self, assignment, print_header=True, display_bor
209
206
210
207
# PRINT COMMENTS
211
208
if comments :
212
- # this lsep hack is for Windows. Where os.linesep is \r\n, but file might have \n only line seps
209
+ # this line sep hack is for Windows. Where os.linesep is \r\n, but file might have \n only line seps
213
210
comment_str = assignment .comment
214
211
if os .name == 'nt' :
215
212
# we make sure that it is always os.linesep on windows
216
213
comment_str = comment_str .replace ('\r \n ' , '\n ' ).replace ('\n ' , os .linesep )
217
214
218
215
sharped_lines = "#" + str (comment_str ).replace (os .linesep , os .linesep + "#" )
219
- print (sharped_lines )
216
+ print (sharped_lines )
220
217
221
218
column_names = [column .name for column in table .columns ]
222
219
column_types = [column .type for column in table .columns ]
0 commit comments