@@ -22,6 +22,7 @@ class Npm(PackageManager):
2222
2323 dn_url = 'https://www.npmjs.com/package/'
2424 input_file_name = 'tmp_npm_license_output.json'
25+ tmp_custom_json = 'custom.json'
2526 flag_tmp_node_modules = False
2627
2728 def __init__ (self , input_dir , output_dir ):
@@ -32,17 +33,18 @@ def __del__(self):
3233 os .remove (self .input_file_name )
3334 if self .flag_tmp_node_modules :
3435 shutil .rmtree (node_modules , ignore_errors = True )
36+ if os .path .exists (self .tmp_custom_json ):
37+ os .remove (self .tmp_custom_json )
3538
3639 def run_plugin (self ):
3740 ret = self .start_license_checker ()
3841 return ret
3942
4043 def start_license_checker (self ):
4144 ret = True
42- tmp_custom_json = 'custom.json'
43- license_checker_cmd = f'license-checker --excludePrivatePackages --production --json --out { self .input_file_name } '
45+ license_checker_cmd = f'license-checker --production --json --out { self .input_file_name } '
4446 custom_path_option = ' --customPath '
45- npm_install_cmd = 'npm install --omit=dev '
47+ npm_install_cmd = 'npm install --production '
4648
4749 if os .path .isdir (node_modules ) != 1 :
4850 logger .info (f"node_modules directory is not existed. So it executes '{ npm_install_cmd } '." )
@@ -53,18 +55,18 @@ def start_license_checker(self):
5355 return False
5456
5557 # customized json file for obtaining specific items with license-checker
56- self .make_custom_json (tmp_custom_json )
58+ self .make_custom_json (self . tmp_custom_json )
5759
58- cmd = license_checker_cmd + custom_path_option + tmp_custom_json
60+ cmd = license_checker_cmd + custom_path_option + self . tmp_custom_json
5961 cmd_ret = subprocess .call (cmd , shell = True )
6062 if cmd_ret != 0 :
6163 logger .error (f"It returns the error: { cmd } " )
6264 logger .error ("Please check if the license-checker is installed.(sudo npm install -g license-checker)" )
63- return False
65+ ret = False
6466 else :
6567 self .append_input_package_list_file (self .input_file_name )
66-
67- os .remove (tmp_custom_json )
68+ if os . path . exists ( self . tmp_custom_json ):
69+ os .remove (self . tmp_custom_json )
6870
6971 return ret
7072
@@ -111,21 +113,24 @@ def parse_transitive_relationship(self):
111113 ret = False
112114 if ret :
113115 if result .returncode == 1 :
114- logger .warning (f'npm ls returns an error code: { result .stderr } ' )
116+ logger .warning (f"' { cmd } ' returns error code: { result .stderr } " )
115117
116118 try :
117119 rel_json = json .loads (rel_tree )
118120 if len (rel_json ) < 1 :
119121 ret = False
120122 else :
121123 self .package_name = f'{ rel_json [_name ]} ({ rel_json [_version ]} )'
122- self .parse_rel_dependencies (rel_json [_name ], rel_json [_version ], rel_json [_dependencies ])
124+ if _dependencies in rel_json :
125+ self .parse_rel_dependencies (rel_json [_name ], rel_json [_version ], rel_json [_dependencies ])
123126 except Exception as e :
124127 ret = False
125128 err_msg = e
126129 return ret , err_msg
127130
128131 def parse_direct_dependencies (self ):
132+ if not self .direct_dep :
133+ return
129134 try :
130135 if os .path .isfile (const .SUPPORT_PACKAE .get (self .package_manager_name )):
131136 ret , err_msg = self .parse_transitive_relationship ()
@@ -145,6 +150,9 @@ def parse_oss_information(self, f_name):
145150
146151 sheet_list = []
147152 comment = ''
153+ _licenses = 'licenses'
154+ _repository = 'repository'
155+ _private = 'private'
148156
149157 keys = [key for key in json_data ]
150158
@@ -153,31 +161,38 @@ def parse_oss_information(self, f_name):
153161 oss_init_name = d ['name' ]
154162 oss_name = self .package_manager_name + ":" + oss_init_name
155163
156- if d ['licenses' ]:
157- license_name = d ['licenses' ]
164+ if d [_licenses ]:
165+ license_name = d [_licenses ]
158166 else :
159167 license_name = ''
160168
161169 oss_version = d ['version' ]
162170 package_path = d ['path' ]
163171
164- if d [ 'repository' ]:
165- dn_loc = d [ 'repository' ]
166- else :
167- dn_loc = f" { self . dn_url } { oss_init_name } /v/ { oss_version } "
172+ private_pkg = False
173+ if _private in d :
174+ if d [ _private ] :
175+ private_pkg = True
168176
169177 homepage = self .dn_url + oss_init_name
178+ dn_loc = f"{ self .dn_url } { oss_init_name } /v/{ oss_version } "
179+ if d [_repository ]:
180+ dn_loc = d [_repository ]
181+ elif private_pkg :
182+ dn_loc = ''
170183
171184 comment_list = []
172185 deps_list = []
173- if self .direct_dep and len (self .relation_tree ) > 0 :
174- if self .package_name == f'{ oss_init_name } ({ oss_version } )' :
175- comment_list .append ('root package' )
186+ if private_pkg :
187+ homepage = dn_loc
188+ comment_list .append ('private' )
189+ if self .package_name == f'{ oss_init_name } ({ oss_version } )' :
190+ comment_list .append ('root package' )
191+ elif self .direct_dep and len (self .relation_tree ) > 0 :
192+ if f'{ oss_init_name } ({ oss_version } )' in self .relation_tree [self .package_name ]:
193+ comment_list .append ('direct' )
176194 else :
177- if f'{ oss_init_name } ({ oss_version } )' in self .relation_tree [self .package_name ]:
178- comment_list .append ('direct' )
179- else :
180- comment_list .append ('transitive' )
195+ comment_list .append ('transitive' )
181196
182197 if f'{ oss_init_name } ({ oss_version } )' in self .relation_tree :
183198 rel_items = [f'npm:{ ri } ' for ri in self .relation_tree [f'{ oss_init_name } ({ oss_version } )' ]]
0 commit comments