diff --git a/engine/src/flutter/tools/licenses/lib/main.dart b/engine/src/flutter/tools/licenses/lib/main.dart index 13d5859ef92..7058b6ac776 100644 --- a/engine/src/flutter/tools/licenses/lib/main.dart +++ b/engine/src/flutter/tools/licenses/lib/main.dart @@ -2144,6 +2144,69 @@ class RepositoryFlutterTxtThirdPartyDirectory extends RepositoryDirectory { } } +class RepositoryGarnetDirectory extends RepositoryDirectory { + RepositoryGarnetDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'bin' + && super.shouldRecurse(entry); + } + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'public') + return new RepositoryGarnetPublicDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class RepositoryGarnetPublicDirectory extends RepositoryDirectory { + RepositoryGarnetPublicDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'lib') + return new RepositoryGarnetLibDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class RepositoryGarnetLibDirectory extends RepositoryDirectory { + RepositoryGarnetLibDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'url' + && super.shouldRecurse(entry); + } + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'fidl') + return new RepositoryGarnetFidlDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + +class RepositoryGarnetFidlDirectory extends RepositoryDirectory { + RepositoryGarnetFidlDirectory(RepositoryDirectory parent, fs.Directory io) : super(parent, io); + + @override + bool shouldRecurse(fs.IoNode entry) { + return entry.name != 'compiler' + && entry.name != 'fuzz' + && super.shouldRecurse(entry); + } + + @override + RepositoryDirectory createSubdirectory(fs.Directory entry) { + if (entry.name == 'public') + return new RepositoryGarnetPublicDirectory(this, entry); + return super.createSubdirectory(entry); + } +} + class RepositoryRoot extends RepositoryDirectory { RepositoryRoot(fs.Directory io) : super(null, io); @@ -2182,6 +2245,8 @@ class RepositoryRoot extends RepositoryDirectory { return new RepositoryDartDirectory(this, entry); if (entry.name == 'flutter') return new RepositoryFlutterDirectory(this, entry); + if (entry.name == 'garnet') + return new RepositoryGarnetDirectory(this, entry); return super.createSubdirectory(entry); } }