14 parser = argparse.ArgumentParser(
15 "Verifies that all .dart files are included in sources, and sources don't include nonexsitent files"
18 "--source_dir", help=
"Path to the directory containing the package sources", required=
True
20 parser.add_argument(
"--stamp", help=
"File to touch when source checking succeeds", required=
True)
21 parser.add_argument(
"sources", help=
"source files", nargs=argparse.REMAINDER)
22 args = parser.parse_args()
24 actual_sources = set()
26 src_dir_path = pathlib.Path(args.source_dir)
27 for (dirpath, dirnames, filenames)
in os.walk(src_dir_path, topdown=
True):
28 relpath_to_src_root = pathlib.Path(dirpath).relative_to(src_dir_path)
29 actual_sources.update(
30 os.path.normpath(relpath_to_src_root.joinpath(filename))
31 for filename
in filenames
32 if pathlib.Path(filename).suffix ==
".dart"
35 expected_sources = set(args.sources)
37 actual_sources.update([
38 s
for s
in (expected_sources - actual_sources)
if src_dir_path.joinpath(s).resolve().exists()
41 if actual_sources == expected_sources:
42 with open(args.stamp,
"w")
as stamp:
43 stamp.write(
"Success!")
46 def sources_to_abs_path(sources):
47 return sorted(str(src_dir_path.joinpath(s))
for s
in sources)
49 missing_sources = actual_sources - expected_sources
52 '\nSource files found that were missing from the "sources" parameter:\n{}\n'.
format(
53 "\n".join(sources_to_abs_path(missing_sources))
56 nonexistent_sources = expected_sources - actual_sources
57 if nonexistent_sources:
59 '\nSource files listed in "sources" parameter but not found:\n{}\n'.
format(
60 "\n".join(sources_to_abs_path(nonexistent_sources))
uint32_t uint32_t * format