@@ -71,48 +71,70 @@ def switch_project(args):
7171
7272def show_project (args ):
7373 """
74- Get the current project/group from credentials.
74+ Get the current project/group from credentials or show a specific project by ID .
7575
7676 Parameters
7777 ----------
7878 args : argparse.Namespace
79- Command line arguments
79+ Command line arguments, may include project_id
8080
8181 Returns
8282 -------
8383 dict or None
8484 Dictionary containing project details if successful, None if no project set
8585 """
86- with open ( CREDENTIALS_FILE ) as f :
87- credentials = json . load ( f )
88-
89- current_group_id = credentials . get ( "current_group_id" )
90- if not current_group_id :
91- return None
92-
93- # Get fresh group details from server
94- group_endpoint = f" { cbrain_url } /groups/ { current_group_id } "
95- headers = auth_headers ( api_token )
96-
97- request = urllib . request . Request ( group_endpoint , data = None , headers = headers , method = "GET " )
98-
99- try :
100- with urllib .request . urlopen ( request ) as response :
101- data = response . read (). decode ( "utf-8" )
102- group_data = json . loads ( data )
103- return group_data
104-
105- except urllib . error . HTTPError as e :
106- if e . code == 404 :
107- print ( f"Error: Current project (ID { current_group_id } ) no longer exists" )
108- # Clear the invalid group_id from credentials
109- credentials . pop ( "current_group_id" , None )
110- credentials . pop ( "current_group_name" , None )
111- with open ( CREDENTIALS_FILE , "w" ) as f :
112- json . dump ( credentials , f , indent = 2 )
86+ # Check if a specific project ID was provided
87+ project_id = getattr ( args , "project_id" , None )
88+
89+ if project_id :
90+ # Show specific project by ID
91+ group_endpoint = f" { cbrain_url } /groups/ { project_id } "
92+ headers = auth_headers ( api_token )
93+ request = urllib . request . Request ( group_endpoint , data = None , headers = headers , method = "GET" )
94+
95+ try :
96+ with urllib . request . urlopen ( request ) as response :
97+ data = response . read (). decode ( "utf-8 " )
98+ group_data = json . loads ( data )
99+ return group_data
100+ except urllib .error . HTTPError as e :
101+ if e . code == 404 :
102+ print ( f"Error: Project with ID { project_id } not found" )
103+ return None
104+ else :
105+ raise
106+ else :
107+ # Show current project from credentials
108+ with open ( CREDENTIALS_FILE ) as f :
109+ credentials = json . load ( f )
110+
111+ current_group_id = credentials . get ( "current_group_id" )
112+ if not current_group_id :
113113 return None
114- else :
115- raise
114+
115+ # Get fresh group details from server
116+ group_endpoint = f"{ cbrain_url } /groups/{ current_group_id } "
117+ headers = auth_headers (api_token )
118+
119+ request = urllib .request .Request (group_endpoint , data = None , headers = headers , method = "GET" )
120+
121+ try :
122+ with urllib .request .urlopen (request ) as response :
123+ data = response .read ().decode ("utf-8" )
124+ group_data = json .loads (data )
125+ return group_data
126+
127+ except urllib .error .HTTPError as e :
128+ if e .code == 404 :
129+ print (f"Error: Current project (ID { current_group_id } ) no longer exists" )
130+ # Clear the invalid group_id from credentials
131+ credentials .pop ("current_group_id" , None )
132+ credentials .pop ("current_group_name" , None )
133+ with open (CREDENTIALS_FILE , "w" ) as f :
134+ json .dump (credentials , f , indent = 2 )
135+ return None
136+ else :
137+ raise
116138
117139
118140def list_projects (args ):
0 commit comments