@@ -45,7 +45,7 @@ def start_license_checker(self):
45
45
npm_install_cmd = 'npm install --omit=dev'
46
46
47
47
if os .path .isdir (node_modules ) != 1 :
48
- logger .info ("node_modules directory is not existed. So it executes 'npm install '." )
48
+ logger .info (f "node_modules directory is not existed. So it executes '{ npm_install_cmd } '." )
49
49
self .flag_tmp_node_modules = True
50
50
cmd_ret = subprocess .call (npm_install_cmd , shell = True )
51
51
if cmd_ret != 0 :
@@ -99,29 +99,39 @@ def parse_transitive_relationship(self):
99
99
_dependencies = 'dependencies'
100
100
_version = 'version'
101
101
_name = 'name'
102
+ ret = True
103
+ err_msg = ''
102
104
103
105
cmd = 'npm ls -a --omit=dev --json -s'
104
106
result = subprocess .run (cmd , shell = True , capture_output = True , text = True )
105
107
rel_tree = result .stdout
106
108
if rel_tree is None :
107
109
logger .error (f"It returns the error: { cmd } " )
108
110
logger .error (f"No output for { cmd } " )
109
- return False
110
-
111
- if result .returncode == 1 :
112
- logger .warning (f'npm ls returns an error code: { result .stderr } ' )
113
-
114
- try :
115
- rel_json = json .loads (rel_tree )
116
- self .package_name = f'{ rel_json [_name ]} ({ rel_json [_version ]} )'
117
- self .parse_rel_dependencies (rel_json [_name ], rel_json [_version ], rel_json [_dependencies ])
118
- except Exception as e :
119
- logger .error (f"Fail to parse transitive relationship: { e } " )
111
+ ret = False
112
+ if ret :
113
+ if result .returncode == 1 :
114
+ logger .warning (f'npm ls returns an error code: { result .stderr } ' )
115
+
116
+ try :
117
+ rel_json = json .loads (rel_tree )
118
+ if len (rel_json ) < 1 :
119
+ ret = False
120
+ else :
121
+ self .package_name = f'{ rel_json [_name ]} ({ rel_json [_version ]} )'
122
+ self .parse_rel_dependencies (rel_json [_name ], rel_json [_version ], rel_json [_dependencies ])
123
+ except Exception as e :
124
+ ret = False
125
+ err_msg = e
126
+ return ret , err_msg
120
127
121
128
def parse_direct_dependencies (self ):
122
129
try :
123
130
if os .path .isfile (const .SUPPORT_PACKAE .get (self .package_manager_name )):
124
- self .parse_transitive_relationship ()
131
+ ret , err_msg = self .parse_transitive_relationship ()
132
+ if not ret :
133
+ self .direct_dep = False
134
+ logger .warning (f'It cannot print direct/transitive dependency: { err_msg } ' )
125
135
else :
126
136
logger .info ('Direct/transitive support is not possible because the package.json file does not exist.' )
127
137
self .direct_dep = False
0 commit comments