// 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/gn',
  r'flutter/third_party/ninja', // build system
  r'flutter/third_party/test_shaders', // for tests only
  r'flutter/third_party/txt/third_party/fonts',
  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/tools',
  r'fuchsia/sdk/mac/docs',
  r'fuchsia/sdk/mac/meta',
  r'fuchsia/sdk/mac/tools',
  r'out', // output of build
  r'third_party/android_embedding_dependencies', // 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/benchmark', // only used by tests
  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/util', // code generators, not shipped
  r'third_party/colorama/src/demos',
  r'third_party/colorama/src/screenshots',
  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/third_party/binary_size', // not linked in either
  r'third_party/dart/runtime/third_party/d3', // Siva says "that is the charting library used by the binary size tool"
  r'third_party/dart/runtime/vm/service',
  r'third_party/dart/sdk/lib/html/doc',
  r'third_party/dart/third_party/binaryen', // not linked in
  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/expat/expat/doc',
  r'third_party/expat/expat/win32/expat.iss',
  r'third_party/flatbuffers/android',
  r'third_party/flatbuffers/benchmarks',
  r'third_party/flatbuffers/docs',
  r'third_party/flatbuffers/go',
  r'third_party/flatbuffers/net',
  r'third_party/flatbuffers/php',
  r'third_party/flatbuffers/python',
  r'third_party/flatbuffers/rust',
  r'third_party/flatbuffers/ts',
  r'third_party/fontconfig', // not used in standard configurations
  r'third_party/freetype2/builds',
  r'third_party/freetype2/src/tools',
  r'third_party/glfw/deps', // Only used by examples and tests; not linked in build.
  r'third_party/glfw/docs',
  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/imgui',
  r'third_party/inja/doc', // documentation
  r'third_party/inja/third_party/amalgamate', // only used at build time
  r'third_party/inja/third_party/include/doctest', // seems to be a unit test library
  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/libtess2/Contrib/nanosvg.c', // only used by the ../Example
  r'third_party/libtess2/Contrib/nanosvg.h', // only used by the ../Example
  r'third_party/libtess2/Example',
  r'third_party/libwebp/doc',
  r'third_party/libwebp/gradle', // not included in our build
  r'third_party/libwebp/swig', // not included in our build
  r'third_party/libwebp/webp_js',
  r'third_party/libxml', // dependency of the testing system that we don't actually use
  r'third_party/ocmock', // only used for tests
  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/pkg/archive', // contains nothing that ends up in the binary executable
  r'third_party/pkg/equatable',
  r'third_party/pkg/file',
  r'third_party/pkg/flutter_packages',
  r'third_party/pkg/gcloud',
  r'third_party/pkg/googleapis',
  r'third_party/pkg/platform',
  r'third_party/pkg/process',
  r'third_party/pkg/process_runner',
  r'third_party/pkg/quiver',
  r'third_party/pkg/vector_math',
  r'third_party/pyyaml', // build-time dependency only
  r'third_party/rapidjson/contrib', // contains nothing that ends up in the binary executable
  r'third_party/rapidjson/doc', // documentation
  r'third_party/root_certificates/certdata.pem',
  r'third_party/root_certificates/certdata.txt',
  r'third_party/shaderc/third_party/LICENSE.glslang', // unclear what the purpose of this file is
  r'third_party/shaderc/third_party/LICENSE.spirv-tools', // unclear what the purpose of this file is
  r'third_party/skia/bazel', // contains nothing that ends up in the binary executable
  r'third_party/skia/bench',
  r'third_party/skia/demos.skia.org',
  r'third_party/skia/docs',
  r'third_party/skia/experimental',
  r'third_party/skia/infra', // contains nothing that ends up in the binary executable
  r'third_party/skia/modules/canvaskit/go/gold_test_env',
  r'third_party/skia/platform_tools', // contains nothing that ends up in the binary executable
  r'third_party/skia/resources', // contains nothing that ends up in the binary executable
  r'third_party/skia/samplecode',
  r'third_party/skia/site',
  r'third_party/skia/specs',
  r'third_party/skia/third_party/freetype2', // we use our own version
  r'third_party/skia/third_party/icu', // we use our own version
  r'third_party/skia/third_party/libjpeg-turbo', // we use our own version
  r'third_party/skia/third_party/libpng', // we use our own version
  r'third_party/skia/third_party/lua', // not linked in
  r'third_party/skia/third_party/vello', // not linked in
  r'third_party/skia/tools', // contains nothing that ends up in the binary executable
  r'third_party/swiftshader', // only used on hosts for tests
  r'third_party/tinygltf',
  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/wuffs/docs',
  r'third_party/wuffs/script',
  r'third_party/yapf', // only used for code formatting
  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\.[^/]+$'),
];
