// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'regexp_debug.dart';

// Directories or files that are not included in the final binaries.
//
// These are absolute paths relative to the root of the buildroot repository
// as checked out after gclient imports all the dependencies.
//
// Do not provide trailing slashes for directories.
//
// Including a directory in this list excludes the entire subtree rooted at
// that directory.
//
// Keep this list in lexical order.
final Set<String> skippedPaths = <String>{
  r'README.md',
  r'build', // only used by build
  r'build_overrides', // only used by build
  r'buildtools', // only used by build
  r'flutter/build',
  r'flutter/ci',
  r'flutter/docs',
  r'flutter/flutter_frontend_server',
  r'flutter/impeller/docs',
  r'flutter/lib/web_ui/build', // this is compiler-generated output
  r'flutter/lib/web_ui/dev', // these are build tools; they do not end up in Engine artifacts
  r'flutter/prebuilts',
  r'flutter/sky/packages/sky_engine/LICENSE',
  r'flutter/third_party/benchmark', // only used by tests
  r'flutter/third_party/expat/expat/doc',
  r'flutter/third_party/expat/expat/win32/expat.iss',
  r'flutter/third_party/flatbuffers/android',
  r'flutter/third_party/flatbuffers/benchmarks',
  r'flutter/third_party/flatbuffers/docs',
  r'flutter/third_party/flatbuffers/go',
  r'flutter/third_party/flatbuffers/net',
  r'flutter/third_party/flatbuffers/php',
  r'flutter/third_party/flatbuffers/python',
  r'flutter/third_party/flatbuffers/rust',
  r'flutter/third_party/flatbuffers/ts',
  r'flutter/third_party/glfw/deps', // Only used by examples and tests; not linked in build.
  r'flutter/third_party/glfw/docs',
  r'flutter/third_party/gn',
  r'flutter/third_party/imgui',
  r'flutter/third_party/inja/doc', // documentation
  r'flutter/third_party/inja/third_party/amalgamate', // only used at build time
  r'flutter/third_party/inja/third_party/include/doctest', // seems to be a unit test library
  r'flutter/third_party/libtess2/Contrib/nanosvg.c', // only used by the ../Example
  r'flutter/third_party/libtess2/Contrib/nanosvg.h', // only used by the ../Example
  r'flutter/third_party/libtess2/Example',
  r'flutter/third_party/libwebp/doc',
  r'flutter/third_party/libwebp/gradle', // not included in our build
  r'flutter/third_party/libwebp/swig', // not included in our build
  r'flutter/third_party/libwebp/webp_js',
  r'flutter/third_party/ninja', // build system
  r'flutter/third_party/ocmock', // only used for tests
  r'flutter/third_party/pkg/archive', // contains nothing that ends up in the binary executable
  r'flutter/third_party/pkg/equatable',
  r'flutter/third_party/pkg/flutter_packages',
  r'flutter/third_party/pkg/gcloud',
  r'flutter/third_party/pkg/googleapis',
  r'flutter/third_party/pkg/platform',
  r'flutter/third_party/pkg/process',
  r'flutter/third_party/pkg/process_runner',
  r'flutter/third_party/pkg/vector_math',
  r'flutter/third_party/pyyaml', // build-time dependency only
  r'flutter/third_party/rapidjson/contrib', // contains nothing that ends up in the binary executable
  r'flutter/third_party/rapidjson/doc', // documentation
  r'flutter/third_party/shaderc/third_party/LICENSE.glslang', // unclear what the purpose of this file is
  r'flutter/third_party/shaderc/third_party/LICENSE.spirv-tools', // unclear what the purpose of this file is
  r'flutter/third_party/skia/bazel', // contains nothing that ends up in the binary executable
  r'flutter/third_party/skia/bench',
  r'flutter/third_party/skia/demos.skia.org',
  r'flutter/third_party/skia/docs',
  r'flutter/third_party/skia/experimental',
  r'flutter/third_party/skia/infra', // contains nothing that ends up in the binary executable
  r'flutter/third_party/skia/modules/canvaskit/go/gold_test_env',
  r'flutter/third_party/skia/platform_tools', // contains nothing that ends up in the binary executable
  r'flutter/third_party/skia/resources', // contains nothing that ends up in the binary executable
  r'flutter/third_party/skia/samplecode',
  r'flutter/third_party/skia/site',
  r'flutter/third_party/skia/specs',
  r'flutter/third_party/skia/third_party/freetype2', // we use our own version
  r'flutter/third_party/skia/third_party/icu', // we use our own version
  r'flutter/third_party/skia/third_party/libjpeg-turbo', // we use our own version
  r'flutter/third_party/skia/third_party/libpng', // we use our own version
  r'flutter/third_party/skia/third_party/lua', // not linked in
  r'flutter/third_party/skia/third_party/vello', // not linked in
  r'flutter/third_party/skia/tools', // contains nothing that ends up in the binary executable
  r'flutter/third_party/stb',
  r'flutter/third_party/test_shaders', // for tests only
  r'flutter/third_party/tinygltf',
  r'flutter/third_party/txt/third_party/fonts',
  r'flutter/third_party/wuffs/docs',
  r'flutter/third_party/wuffs/script',
  r'flutter/third_party/yapf', // only used for code formatting
  r'flutter/tools',
  r'flutter/web_sdk', // this code is not linked into Flutter apps; it's only used by engine tests and tools
  r'fuchsia/sdk/linux/docs',
  r'fuchsia/sdk/linux/meta',
  r'fuchsia/sdk/linux/NOTICE.fuchsia', // covers things that contribute to the Fuchsia SDK; see fxb/94240
  r'fuchsia/sdk/linux/packages/blobs', // See https://github.com/flutter/flutter/issues/134042.
  r'fuchsia/sdk/linux/tools',
  r'fuchsia/sdk/mac/docs',
  r'fuchsia/sdk/mac/meta',
  r'fuchsia/sdk/mac/NOTICE.fuchsia',
  r'fuchsia/sdk/mac/tools',
  r'out', // output of build
  r'third_party/android_embedding_dependencies', // Not shipped. Used only for the build-time classpath, and for the in-tree testing framework for Android
  r'third_party/android_tools', // excluded on advice
  r'third_party/angle/android',
  r'third_party/angle/doc',
  r'third_party/angle/extensions',
  r'third_party/angle/infra',
  r'third_party/angle/scripts',
  r'third_party/angle/src/libANGLE/renderer/metal/doc',
  r'third_party/angle/src/libANGLE/renderer/vulkan/doc',
  r'third_party/angle/src/third_party/volk', // We don't use Vulkan in our ANGLE build.
  r'third_party/angle/third_party', // Unused by Flutter: BUILD files with forwarding targets (but no code).
  r'third_party/angle/tools', // These are build-time tools, and aren't shipped.
  r'third_party/angle/util',
  r'third_party/boringssl/src/crypto/err/err_data_generate.go',
  r'third_party/boringssl/src/fuzz', // testing tools, not shipped
  r'third_party/boringssl/src/rust', // rust-related code is not shipped
  r'third_party/boringssl/src/util', // code generators, not shipped
  r'third_party/dart/benchmarks', // not shipped in binary
  r'third_party/dart/build', // not shipped in binary
  r'third_party/dart/docs', // not shipped in binary
  r'third_party/dart/pkg', // packages that don't become part of the binary (e.g. the analyzer)
  r'third_party/dart/runtime/bin/ffi_test',
  r'third_party/dart/runtime/docs',
  r'third_party/dart/runtime/vm/service',
  r'third_party/dart/sdk/lib/html/doc',
  r'third_party/dart/third_party/binary_size', // not linked in
  r'third_party/dart/third_party/binaryen', // not linked in
  r'third_party/dart/third_party/d3', // Siva says "that is the charting library used by the binary size tool"
  r'third_party/dart/third_party/d8', // testing tool for dart2js
  r'third_party/dart/third_party/devtools', // not linked in
  r'third_party/dart/third_party/firefox_jsshell', // testing tool for dart2js
  r'third_party/dart/third_party/pkg',
  r'third_party/dart/third_party/pkg_tested',
  r'third_party/dart/third_party/requirejs', // only used by DDC
  r'third_party/dart/tools', // not shipped in binary
  r'third_party/google_fonts_for_unit_tests', // only used in web unit tests
  r'third_party/freetype2/builds',
  r'third_party/freetype2/src/tools',
  r'third_party/gradle',
  r'third_party/harfbuzz/docs',
  r'third_party/harfbuzz/util', // utils are command line tools that do not end up in the binary
  r'third_party/icu/filters',
  r'third_party/icu/fuzzers',
  r'third_party/icu/scripts',
  r'third_party/icu/source/common/unicode/uvernum.h', // this file contains strings that confuse the analysis
  r'third_party/icu/source/config',
  r'third_party/icu/source/data/brkitr/dictionaries/burmesedict.txt', // explicitly handled by ICU license
  r'third_party/icu/source/data/brkitr/dictionaries/cjdict.txt', // explicitly handled by ICU license
  r'third_party/icu/source/data/brkitr/dictionaries/laodict.txt', // explicitly handled by ICU license
  r'third_party/icu/source/data/dtd',
  r'third_party/java', // only used for Android builds
  r'third_party/json/docs',
  r'third_party/libcxx/benchmarks',
  r'third_party/libcxx/docs',
  r'third_party/libcxx/src/support/solaris',
  r'third_party/libcxx/utils',
  r'third_party/libcxxabi/www',
  r'third_party/libpng/contrib', // not linked in
  r'third_party/libpng/mips', // not linked in
  r'third_party/libpng/powerpc', // not linked in
  r'third_party/libpng/projects', // not linked in
  r'third_party/libpng/scripts', // not linked in
  r'third_party/libxml', // dependency of the testing system that we don't actually use
  r'third_party/perfetto/debian', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/infra', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/protos', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/python/perfetto/trace_processor', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/ipc', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/profiling/memory', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/tools', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/trace_processor', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/traced', // contains nothing that ends up in the binary executable
  r'third_party/perfetto/src/tracing', // contains nothing that ends up in the binary executable
  r'third_party/protobuf', // build-time dependency only
  r'third_party/root_certificates/certdata.pem',
  r'third_party/root_certificates/certdata.txt',
  r'third_party/swiftshader', // only used on hosts for tests
  r'third_party/vulkan-deps/glslang/LICENSE', // excluded to make sure we don't accidentally apply it as a default license
  r'third_party/vulkan-deps/glslang/src/LICENSE.txt', // redundant with licenses inside files
  r'third_party/vulkan-deps/glslang/src/glslang/OSDependent/Web', // we only use glslang in impellerc, not in web apps
  r'third_party/vulkan-deps/glslang/src/kokoro', // only build files
  r'third_party/vulkan-deps/spirv-cross/src/LICENSES', // directory with license templates
  r'third_party/vulkan-deps/spirv-cross/src/shaders', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-hlsl', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-hlsl-no-opt', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-msl', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-msl-no-opt', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-no-opt', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-other', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-reflection', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-ue4', // used by regression tests
  r'third_party/vulkan-deps/spirv-cross/src/shaders-ue4-no-opt', // used by regression tests
  r'third_party/vulkan-deps/spirv-headers', // only used on hosts for tests
  r'third_party/vulkan-deps/spirv-tools', // only used on hosts for tests
  r'third_party/vulkan-deps/vulkan-headers/src/registry',
  r'third_party/vulkan-deps/vulkan-loader', // on hosts for tests
  r'third_party/vulkan-deps/vulkan-tools', // on hosts for tests
  r'third_party/vulkan-deps/vulkan-validation-layers/src/docs',
  r'third_party/vulkan_memory_allocator/bin',
  r'third_party/vulkan_memory_allocator/docs',
  r'third_party/vulkan_memory_allocator/media',
  r'third_party/vulkan_memory_allocator/src',
  r'third_party/vulkan_memory_allocator/tools',
  r'third_party/web_dependencies/canvaskit', // redundant; covered by Skia dependencies
  r'third_party/zlib/contrib/minizip/miniunz.c', // sample file
  r'third_party/zlib/contrib/minizip/minizip.c', // sample file
  r'tools', // not distributed in binary
};

// Directories that should be skipped anywhere we find them.
//
// Any directory whose name matches one of these strings is skipped, including
// its entire subtree.
//
// Keep this list in lexical order.
final Set<String> skippedCommonDirectories = <String>{
  r'.bazelci',
  r'.build-id',
  r'.ccls-cache',
  r'.cipd',
  r'.dart_tool',
  r'.git',
  r'.github',
  r'.reuse',
  r'.versions',
  r'.vscode',
  r'CMake',
  r'Test',
  r'cmake',
  r'example',
  r'examples',
  r'fixtures',
  r'googletest',
  r'javatests',
  r'jvmTest',
  r'playground',
  r'samples',
  r'test',
  r'test.disabled',
  r'test_runner',
  r'test_support',
  r'testdata',
  r'testing',
  r'tests',
  r'unit_tests',
};

// Filenames of files we never look at.
//
// Any file with a name in this list is skipped.
//
// Be careful about adding files like "LICENSE" or "README" (and such
// variants) to this list as many packages put important license text in those
// files and we don't want to skip them. Only include files here whose names
// we would want to skip in ANY package.
//
// Keep this list in lexical order.
final Set<String> skippedCommonFiles = <String>{
  r'.DS_Store',
  r'.appveyor.yml',
  r'.bazelrc',
  r'.bazelversion',
  r'.clang-format',
  r'.clang-tidy',
  r'.editorconfig',
  r'.eslintrc.js',
  r'.gitattributes',
  r'.gitconfig',
  r'.gitignore',
  r'.gitlab-ci.yml',
  r'.gitmodules',
  r'.gn',
  r'.lgtm.yml',
  r'.mailmap',
  r'.packages',
  r'.project',
  r'.style.yapf',
  r'.travis.yml',
  r'.vpython',
  r'.vpython3',
  r'.yapfignore',
  r'ABSEIL_ISSUE_TEMPLATE.md',
  r'ANNOUNCE',
  r'API-CONVENTIONS.md',
  r'AUTHORS',
  r'BREAKING-CHANGES.md',
  r'BUILD.bazel',
  r'BUILD.md',
  r'BUILDING.md',
  r'Brewfile',
  r'CHANGES',
  r'CHANGES.md',
  r'CITATION.cff',
  r'CMake.README',
  r'CMakeLists.txt',
  r'CODEOWNERS',
  r'CODE_CONVENTIONS.md',
  r'CODE_OF_CONDUCT.adoc',
  r'CODE_OF_CONDUCT.md',
  r'CONFIG.md',
  r'CONTRIBUTORS',
  r'CONTRIBUTORS.md',
  r'CPPLINT.cfg',
  r'CQ_COMMITTERS',
  r'CREDITS.TXT',
  r'Changes',
  r'CodingStandard.md',
  r'DEPS',
  r'DIR_METADATA',
  r'Dockerfile',
  r'Doxyfile',
  r'FAQ.md',
  r'FIPS.md',
  r'FUZZING.md',
  r'FeatureSupportGL.md',
  r'FormatTables.md',
  r'Formatters.md',
  r'GIT_REVISION',
  r'HACKING.md',
  r'INCORPORATING.md',
  r'LAYER_CONFIGURATION.md',
  r'LOCALE_DEPS.json',
  r'MANIFEST.in',
  r'MANIFEST.txt',
  r'METADATA',
  r'NEWS',
  r'OWNERS',
  r'OWNERS.android',
  r'PATENT_GRANT',
  r'PORTING.md',
  r'README.asciidoc',
  r'RELEASE_NOTES.TXT',
  r'RELEASING.md',
  r'RapidJSON.pc.in',
  r'RapidJSONConfig.cmake.in',
  r'RapidJSONConfigVersion.cmake.in',
  r'SANDBOXING.md',
  r'SECURITY.md',
  r'STYLE.md',
  r'TESTING.md',
  r'THANKS',
  r'TODO',
  r'TODO.TXT',
  r'TRADEMARK',
  r'UPGRADES.md',
  r'UniformBlockToStructuredBufferTranslation.md',
  r'WATCHLISTS',
  r'WORKSPACE',
  r'WORKSPACE.bazel',
  r'_config.yml',
  r'additional_readme_paths.json',
  r'alg_outline.md',
  r'allowed_experiments.json',
  r'amalgamate_config.json',
  r'api_readme.md',
  r'appveyor-reqs-install.cmd',
  r'appveyor.yml',
  r'build.xml',
  r'codereview.settings',
  r'coderules.txt',
  r'configure-ac-style.md',
  r'doxygen.config',
  r'example.html',
  r'gerrit.md',
  r'gradle.properties',
  r'include_dirs.js',
  r'known_good.json',
  r'known_good_khr.json',
  r'libraries.json',
  r'library.json',
  r'license-checker.cfg',
  r'license.html',
  r'memory-sanitizer-blacklist.txt',
  r'meson.build',
  r'meta.json',
  r'minizip.md',
  r'package.json',
  r'pkgdataMakefile.in',
  r'pom.xml',
  r'pubspec.lock',
  r'requirements-dev.txt',
  r'requirements.txt',
  r'sources.txt',
  r'structure.txt',
  r'swift.swiftformat',
  r'sync.txt',
  r'unit_tests.md',
  r'version',
  r'version_history.json',
  r'vms_make.com',
  r'vmservice_libraries.json',
};

// Extensions that we just never look at.
//
// We explicitly do not exclude .txt, .md, .TXT, and .MD files because it is common
// for licenses to be in such files.
//
// This list only works for extensions with a single dot.
//
// Keep this list in lexical order.
final Set<String> skippedCommonExtensions = <String>{
  r'.1',
  r'.3',
  r'.5',
  r'.autopkg',
  r'.build',
  r'.bzl',
  r'.cmake',
  r'.css',
  r'.gn',
  r'.gni',
  r'.gradle',
  r'.log',
  r'.m4',
  r'.mk',
  r'.pl',
  r'.py',
  r'.pyc',
  r'.pylintrc',
  r'.sha1',
  r'.yaml',
  r'.~',
};

// Patterns for files and directories we should skip.
//
// Keep this list to a minimum, preferring all the other lists
// in this file. Testing patterns is more expensive.
//
// Keep this list in lexical order.
final List<Pattern> skippedFilePatterns = <Pattern>[
  RegExp(r'\.[1-8]\.in$'), // man page source files (e.g. foo.1.in)
  RegExp(r'/(?:_|\b)CONTRIBUTING(?:_|\b)[^/]*$'),
  RegExp(r'/(?:_|\b)LAST_UPDATE(?:_|\b)[^/]*$'),
  RegExp(r'/(?:_|\b)PATENTS(?:_|\b)[^/]*$'),
  RegExp(r'/(?:_|\b)README(?!\.IJG)(?:_|\b)[^/]*$', caseSensitive: false),
  RegExp(r'/(?:_|\b)VERSION(?:_|\b)[^/]*$'),
  RegExp(r'/CHANGELOG(?:\.[.A-Z0-9]+)?$', caseSensitive: false),
  RegExp(r'/INSTALL(?:\.[a-zA-Z0-9]+)?$'),
  RegExp(r'/Makefile(?:\.[.A-Z0-9]+)?$', caseSensitive: false),
  RegExp(r'\.~[0-9]+~$', expectNoMatch: true), // files that end in ".~1~", a backup convention of some IDEs
  RegExp(r'\bmanual\.txt$'),
  RegExp(r'^flutter/(?:.+/)*[^/]+_unittests?\.[^/]+$'),
  RegExp(r'^flutter/lib/web_ui/lib/assets/ahem\.ttf$', expectNoMatch: true), // this gitignored file exists only for testing purposes
  RegExp(r'^flutter/sky/packages/sky_engine/LICENSE$'), // that is the output of this script
  RegExp(r'^third_party/abseil-cpp/(?:.+/)*[^/]+_test\.[^/]+$'),
  RegExp(r'^third_party/angle/(?:.+/)*[^/]+_unittest\.[^/]+$'),
  RegExp(r'^third_party/boringssl/(?:.+/)*[^/]+_test\.[^/]+$'),
  RegExp(r'^third_party/boringssl/src/crypto/fipsmodule/bn/[^/]+.go$'),
  RegExp(r'^third_party/boringssl/src/crypto/fipsmodule/ec/[^/]+.go$'),
  RegExp(r'^third_party/dart/(?:.+/)*[^/]+_test\.[^/]+$'),
  RegExp(r'^third_party/freetype2/docs/(?!FTL\.TXT$).+'), // ignore all documentation except the license
  RegExp(r'^third_party/zlib/(?:.+/)*[^/]+_unittest\.[^/]+$'),
];
