34
34
except ImportError :
35
35
from urllib .parse import unquote , urlparse , urljoin , urldefrag # NOQA
36
36
37
+ from doit .loader import generate_tasks
37
38
import lxml .html
38
39
try :
39
40
import requests
44
45
from nikola .utils import get_logger , req_missing
45
46
46
47
47
- def _call_nikola_list (l , site , arguments ):
48
- class NotReallyAStream (object ):
49
- """A massive hack."""
50
- out = []
48
+ def _call_nikola_list (site ):
49
+ files = []
50
+ for task in generate_tasks ('render_site' , site .gen_tasks ('render_site' , "Task" , '' )):
51
+ files .extend (task .targets )
52
+ for task in generate_tasks ('post_render' , site .gen_tasks ('render_site' , "LateTask" , '' )):
53
+ files .extend (task .targets )
54
+ return files
51
55
52
- def write (self , t ):
53
- self .out .append (t )
54
-
55
- oldstream = l .outstream
56
- newstream = NotReallyAStream ()
57
- try :
58
- l .outstream = newstream
59
- l .parse_execute (arguments )
60
- return newstream .out
61
- finally :
62
- l .outstream = oldstream
63
-
64
-
65
- def real_scan_files (l , site ):
56
+ def real_scan_files (site ):
66
57
task_fnames = set ([])
67
58
real_fnames = set ([])
68
59
output_folder = site .config ['OUTPUT_FOLDER' ]
69
60
# First check that all targets are generated in the right places
70
- for task in _call_nikola_list (l , site , ["--all" ]):
71
- task = task .strip ()
72
- if output_folder in task and ':' in task :
73
- fname = task .split (':' , 1 )[- 1 ]
61
+ for fname in _call_nikola_list (site ):
62
+ fname = fname .strip ()
63
+ if output_folder in fname :
74
64
task_fnames .add (fname )
75
65
# And now check that there are no non-target files
76
66
for root , dirs , files in os .walk (output_folder , followlinks = True ):
@@ -154,7 +144,6 @@ class CommandCheck(Command):
154
144
def _execute (self , options , args ):
155
145
"""Check the generated site."""
156
146
self .logger = get_logger ('check' , self .site .loghandlers )
157
- self .l = self ._doitargs ['cmds' ].get_plugin ('list' )(config = self .config , ** self ._doitargs )
158
147
159
148
if not options ['links' ] and not options ['files' ] and not options ['clean' ]:
160
149
print (self .help ())
@@ -262,7 +251,7 @@ def analyze(self, task, find_sources=False, check_remote=False):
262
251
self .logger .warn ("Broken link in {0}: {1}" .format (filename , target ))
263
252
if find_sources :
264
253
self .logger .warn ("Possible sources:" )
265
- self .logger .warn ("\n " .join (_call_nikola_list (self .l , self . site , [ "--deps" , task ] )))
254
+ self .logger .warn ("\n " .join (_call_nikola_list (self .site )))
266
255
self .logger .warn ("===============================\n " )
267
256
except Exception as exc :
268
257
self .logger .error ("Error with: {0} {1}" .format (filename , exc ))
@@ -273,7 +262,7 @@ def scan_links(self, find_sources=False, check_remote=False):
273
262
self .logger .info ("===============\n " )
274
263
self .logger .notice ("{0} mode" .format (self .site .config ['URL_TYPE' ]))
275
264
failure = False
276
- for task in _call_nikola_list (self .l , self . site , [ "--all" ] ):
265
+ for task in _call_nikola_list (self .site ):
277
266
task = task .strip ()
278
267
if task .split (':' )[0 ] in (
279
268
'render_tags' , 'render_archive' ,
@@ -290,7 +279,7 @@ def scan_files(self):
290
279
failure = False
291
280
self .logger .info ("Checking Files:" )
292
281
self .logger .info ("===============\n " )
293
- only_on_output , only_on_input = real_scan_files (self .l , self . site )
282
+ only_on_output , only_on_input = real_scan_files (self .site )
294
283
295
284
# Ignore folders
296
285
only_on_output = [p for p in only_on_output if not os .path .isdir (p )]
@@ -312,7 +301,7 @@ def scan_files(self):
312
301
return failure
313
302
314
303
def clean_files (self ):
315
- only_on_output , _ = real_scan_files (self .l , self . site )
304
+ only_on_output , _ = real_scan_files (self .site )
316
305
for f in only_on_output :
317
306
os .unlink (f )
318
307
return True
0 commit comments