renovate 40.14.0 → 40.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -98,7 +98,7 @@ exports.hashMap.set('setup-cfg', '9a778d8a58f643fff1d23d750dfebed21e45bce99bfdcd
98
98
  exports.hashMap.set('sveltos', 'a69f9e206526af08685e20a72344b22d856f2effd882e67333a153a989a0a047');
99
99
  exports.hashMap.set('swift', '4866ba3e6d6e9288ae9e3a11ef673b36d1d78360e21d8266ae3a945b8683d669');
100
100
  exports.hashMap.set('tekton', 'eb8fb6a25ca7fd0d304f67d5ab2e93ddd8b34854553130003ce3340ca7b3bba1');
101
- exports.hashMap.set('terraform', '8a0076ea3498d7c15beab4daa102ccc7877d154392f5b1750579a86e47b79c1a');
101
+ exports.hashMap.set('terraform', 'f89aaf7cf02449b1095a375b57f2a6eae10b282826385a5966d7d06b65fc3d12');
102
102
  exports.hashMap.set('terraform-version', 'b08480f326c45daf3daeccc2d2f593a723c30a50437a66ac2290d671b427a355');
103
103
  exports.hashMap.set('terragrunt', '9988ff56620548133596437cd4d03a689ab195dd1addc00bc6074c26455a6486');
104
104
  exports.hashMap.set('terragrunt-version', '45f221b13a193a42687f318e10cf1558079e28c970e91ce25c370f35f88f2f58');
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.generated.js","sourceRoot":"","sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"names":[],"mappings":"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","sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','4c234d79f768392545924fa9b139f8d177f15b6aa46776cf063860a1d36e48c7');\nhashMap.set('ansible-galaxy','a211e40f5c8613986ac16bc8d5389ea23d145cd643091d1b951a7f65926e99ff');\nhashMap.set('argocd','37faccd3854254a2009d963f781e77cf6e5aca3719ffd7cae1fea3d02c153eed');\nhashMap.set('asdf','d4b167265b656f5eb744084dd094c67e699940ddaacb53de30cd5c67e54b6b1d');\nhashMap.set('azure-pipelines','0b741b2629f6d94589524ce9b3886765e5c5648c9b6d707bb0b5fede276f9c09');\nhashMap.set('batect','523e8d7a309b4814a02819371313b2dac3764eab64cabfaf1d58b6e89de4ce43');\nhashMap.set('batect-wrapper','90941650f810adb3d7abe476da7221ff3434aa9d09ffc3d310e35108f360f364');\nhashMap.set('bazel','699577431cada5c8621a238b8f80f0983ee0ed7eac92f93467b5bf8f007e9cda');\nhashMap.set('bazel-module','5b1238473990e1ff5c100d610f871f43bd404a8141b51a9d486faf67a3814538');\nhashMap.set('bazelisk','6fbef61d534724ff259ea6e4fc1cd0a3d5a46d740c375128fa59b225daddd39f');\nhashMap.set('bicep','fbbd74998411012cfba829526701109d1fc184ade0cb11a28e4ca2956174b0f1');\nhashMap.set('bitbucket-pipelines','98c0d715a7eb4e41b8231091b83385f325966373f37dc7d6bc10b1febb6f605e');\nhashMap.set('bitrise','d18d2dcd356e19c4cd94912511a88636198c23b64e54f31da273be11044970cf');\nhashMap.set('buildkite','ac713ce38da057ff3ceb08d092291356dfc74f5b33b75f010bb9db1a211439c0');\nhashMap.set('buildpacks','cc8bbe937416a012df36a5c7ab01ae3cdedbed03615549bbe9f0f27fa40a150b');\nhashMap.set('bun','2b157003f37572d579d6ab95f1c45fad0afe58d2239dad2fbfdc5acf81131a4b');\nhashMap.set('bun-version','49194d7fcb6b7bdd7e7a1264f71532bb2be8142d48478bf74716f7a9d4b306b9');\nhashMap.set('bundler','4cd7892c5c7ab98d254f24a0e62c0f637c8958aebb451158a81656d6be8d6662');\nhashMap.set('cake','a04160b352550cb470acb62f9a532361842c12f2ffbcd473bffca3de024522d9');\nhashMap.set('cargo','62650a1dfa15569c1dbd798a81886e3e78165a4c22f333a70ea93e4a385c8837');\nhashMap.set('cdnurl','70281459e771df007787fc25dba16e4d5109865f97209dcf4f572ddd287d538a');\nhashMap.set('circleci','c7c7a1b71385f0ea7cf1e9fc24c37a1d5dabf13d6952e1e3b2179861b55f4e44');\nhashMap.set('cloudbuild','e4f926bfb907220e97dce98335837c52b4e0fe66d813593a7e572736acfc53f7');\nhashMap.set('cocoapods','c2695071e5aaec8178e29615b6dc1cdf9cc68c5d73d5d88b54fed41e6aaec832');\nhashMap.set('composer','6d1dffffe36e3cfe98d02cefd4c4403d48d1163aef2810a26d05bbe05e1a3213');\nhashMap.set('conan','7a5d054f43548ce08a428637ad1fe62796f635cabbca5e8c9cecfd629514cfce');\nhashMap.set('copier','6fa1b4898a64ca780d933728ddc8876014c6f0dea7a2ab2f84b832e8bf4df408');\nhashMap.set('cpanfile','9b354db9666eee2485b27e44a6e61eaadc86ec2f2c6af9bb7bbc9fab54f31642');\nhashMap.set('crossplane','76261ff27b38f9850ee1a3a7e95168abefd96b4736f2cf04a7343e16827b42d8');\nhashMap.set('deps-edn','4e4b76596229f23524086c1dca79c52159ae3ec094e28d8a59bd8a1926458046');\nhashMap.set('devbox','7acedf4c5d3bef2f6c75c8b490c47f18fb03597680b46e4670ae5fe6f9873960');\nhashMap.set('devcontainer','e9982b5ff8aeac8fefb40dc363d3ab35f58af8c08b91eb45d22937a8c60447bb');\nhashMap.set('docker-compose','39189def818fcafbd25114ad4905e30695e3e9b6e280b7d24390385ac36b2512');\nhashMap.set('dockerfile','0bddc097addf84db6aa48d985567f247ca89affe1265ac09e6cd9635f61710f9');\nhashMap.set('droneci','f2a98fcece07b462baaceb28cd6904e080cb1ab0727fcd7403bea5ffd2e05239');\nhashMap.set('fleet','d091e008ae47b1b1e4ec0a573b1b6439a875a1d9cac987e8b62e27e0cb0234ad');\nhashMap.set('flux','3b87b351f98c11ca0e6cb275deb708dc9bf601a7e578f7a3a7e83fe6e15eb540');\nhashMap.set('fvm','aa154dd5ffe3caced30713a9a55967360b7a0f35edd2fc06bd6f3e73c5c87570');\nhashMap.set('git-submodules','d49d744fffb965dea648af37ea16591b4a0ecf32c4f103b04f4555b58d0f3573');\nhashMap.set('github-actions','2398b1deb9e435b4f99ed353ebe6c4254f1976be23d7140d4bfd672c2cd34098');\nhashMap.set('gitlabci','1bad97e9892ea652b6522154d521aa91b299c52e5618943f04e65f78031a13a9');\nhashMap.set('gitlabci-include','5bc01de9b40ecc8888a37690152f4a2f9cacc509b9cb5902aac024ca7a7c8e65');\nhashMap.set('glasskube','fd415356a866ad174a5b70522d662e4289a2c5d5e34c55d57542b0d8968f1645');\nhashMap.set('gleam','a770dca6b63d34d1a5d7fc63130d5e030aac999d6a3398b8460bdf6f62e9a81e');\nhashMap.set('gomod','c3dafbc3c9c21af83d32309718c208289e021dd37b2c6e1db31238b756ab9958');\nhashMap.set('gradle','0d5ddaed06c1abba30dbf26585aa4d86a7b2e8e5d083599fcf3180c946aa2767');\nhashMap.set('gradle-wrapper','f98404470f93f59794d0fc242779559d5a9d8751f5abc40cb61a49cd0652b1b4');\nhashMap.set('haskell-cabal','a2bf118238529952d0f2f352112dfbc86fb5533ef819625161a130f39c8ca713');\nhashMap.set('helm-requirements','8f643d415ab0cfbef05bce4dce9812eef47bddb7b8b67a191e6a4230489e652f');\nhashMap.set('helm-values','fbd4a0b4bdda8a71dc38ac8916287f73e2b7de5ef122096a5b5d525c1a3306cd');\nhashMap.set('helmfile','ee6a6cfb5680f8f896a2f7ac3d68770b300cfd0a4b75a7ca7edb4e1c1f51b7a2');\nhashMap.set('helmsman','734fa89740fd5140ca3e39204872aba3451c05cd17f0b5e2b635934ed7b1710b');\nhashMap.set('helmv3','1d1683f9a792de9ae9ffd9157d9ccd394c012b4d906299b33f21c2bfadbdf30b');\nhashMap.set('hermit','5d6fe831c5abf4e2439da1cf24648ccb5a099b66fc965af68134a67418202fa1');\nhashMap.set('homebrew','4b05428b846b8a7c260a41500cc14938cca8e7d5df0e2510050f95718f6f823f');\nhashMap.set('html','226a9084e10ebf754906386159db08667394f5432105249bdb30d9c60af9fb56');\nhashMap.set('jenkins','309db014e3590e1cd6d53ede2755395c82e5cd4b880425daf52a6ab60e0d6a42');\nhashMap.set('jsonnet-bundler','83c3b9f3c6903929f6842bafc8219437dc822005505b64ed2cb6e63babc28dcb');\nhashMap.set('kotlin-script','60f8f714bb3aef5d7e3e91c67f658847ad2b01bfc044a2f0dd0798fccb5c7c30');\nhashMap.set('kubernetes','62cfa6c77593b48290f3c26a2f390c4bdfe8ab3cfb79e358b10d8aece689a999');\nhashMap.set('kustomize','b0a7444bde37c7ea3ad47062fddaf03892c7da4912b8c042e8c07dde182da46c');\nhashMap.set('leiningen','0598d2f53cfc92076d47186245a7b591d2b0df157609a7f55a37b54ab2d32a77');\nhashMap.set('maven','6b9eea76855c2d67037872fbeb803af65ff026708061691f75ce0ab2239c1ff8');\nhashMap.set('maven-wrapper','56edbbfaf0844fc497de31159719ef5064389120a1a9ca85c0c67d5328c8ac81');\nhashMap.set('meteor','a9785d85b3520ed9e763c800730f36b95747795699758ecbe1395133c5b0040e');\nhashMap.set('mint','7072e37f18bb57500018406eb8711b2615b1916f073867f30653cdd4a99dab81');\nhashMap.set('mise','a0ef42c93137907c994e4a7506ef7b5a758f9537959f6ff7a2aa6d07ccfff0da');\nhashMap.set('mix','9f506a6e42135fd299d240ac445996f414a502c01588107d7e65848b1368ee03');\nhashMap.set('nix','2630474b9fce0f0d3d8e27df4d86abd7564931e2eae3b4d54b3870bb712366f5');\nhashMap.set('nodenv','d159174d53e39af2013443cf86df88e14aac79a5a8d602180af229dcb2ddeda9');\nhashMap.set('npm','748a29baf190da9e5dd974d4bb7549d9432072d52937be6b76493baacf990db1');\nhashMap.set('nuget','08f2af023c09d9331156e70533fe4ea96e7e2038bb304a9ec763adb765b67cf8');\nhashMap.set('nvm','1928fd50bd6cc9f42d73262630056f2c0f8b0e061282bd02e58d116fc1788e2b');\nhashMap.set('ocb','55559051102728868b619820a6dc95753cdfbbb8aed46840e53db6733bc2ede4');\nhashMap.set('osgi','dae012cd486843eb53da4b032105e54d18f4e7537bd59c5321313950dd108a95');\nhashMap.set('pep621','88db31ca9bddf85c58e420e22bb831f4e750281b9d976271195c1e746ccb4fd5');\nhashMap.set('pep723','bf07d466ea1bc9513c8d2cb475fcca3bc9b61f2184bd9af0a7a28d45b6f57ecd');\nhashMap.set('pip-compile','ae04fc449e79eefe95aa15553b6a6bebd417f3ca3251b37121e17503c808a2ac');\nhashMap.set('pip_requirements','70bfe70544e29f3c7fdbc2261efcebcaf8836e92bd21da35c379c9f4573ff43b');\nhashMap.set('pip_setup','31b330d9666d61474326a761a3ce1479f9a189ef6838ecfee78843ff4c80af73');\nhashMap.set('pipenv','823f1652628a6ce17943fe24a187aa2faa77d21e0aa001d3f8b0f9cd93a74ba9');\nhashMap.set('pixi','e209242b0dc2e6d57bcdec8f6a6f577db249ecb5eba1afea429cb1ff023a90d8');\nhashMap.set('poetry','f520b329d6b408fa727b0fe82bf464caed8525c3a2b12a746e95ce00e32c2129');\nhashMap.set('pre-commit','a881d191bd52396ea815e60a49b047f0f073e5a567c863829efbab32610bfa40');\nhashMap.set('pub','8e80b151d76db21808ddc36532e46fc657d0f8b7925943f1d13ceb19b1e061a3');\nhashMap.set('puppet','34f7e3916780e8ed352b65864bad91bf66547e29f91ee8fca7fd6e8fcd2621fd');\nhashMap.set('pyenv','4e520570d9a1407864aa7c5461d4008372d889254067e405cee2212d0ef8990b');\nhashMap.set('renovate-config-presets','27f100d67e2a1ad20cfd4aa3f1db1f1c34f62910929695f381160b3835a7fa65');\nhashMap.set('ruby-version','4aac2178a20ccdf8136363030e5156017f3d44368b4192b3280997df596dcacc');\nhashMap.set('runtime-version','dbf80ce2a5f07dd34bc9a008159b4f08052cc6fd0d92cbd2aeb0026c8008fa72');\nhashMap.set('sbt','dc1ec4aeeb5e012c7a595478873ad67e2dee6e2af951b12b9e9057cb64f2258d');\nhashMap.set('scalafmt','8a54fef703269ed31ce28887e62b0b838a13359e86fa77c7f4dceb89fda0f352');\nhashMap.set('setup-cfg','9a778d8a58f643fff1d23d750dfebed21e45bce99bfdcdc3de39795a407d983f');\nhashMap.set('sveltos','a69f9e206526af08685e20a72344b22d856f2effd882e67333a153a989a0a047');\nhashMap.set('swift','4866ba3e6d6e9288ae9e3a11ef673b36d1d78360e21d8266ae3a945b8683d669');\nhashMap.set('tekton','eb8fb6a25ca7fd0d304f67d5ab2e93ddd8b34854553130003ce3340ca7b3bba1');\nhashMap.set('terraform','8a0076ea3498d7c15beab4daa102ccc7877d154392f5b1750579a86e47b79c1a');\nhashMap.set('terraform-version','b08480f326c45daf3daeccc2d2f593a723c30a50437a66ac2290d671b427a355');\nhashMap.set('terragrunt','9988ff56620548133596437cd4d03a689ab195dd1addc00bc6074c26455a6486');\nhashMap.set('terragrunt-version','45f221b13a193a42687f318e10cf1558079e28c970e91ce25c370f35f88f2f58');\nhashMap.set('tflint-plugin','40ab6d0c975ff0b8e42651c088e159afe9f0d0c43a1dbf7c1295ec03c77bdc7c');\nhashMap.set('travis','30174e78a6297e44db1c030ea2e111084e14b1eac220f522522c77d684a76285');\nhashMap.set('velaci','9ad5d5d2584b9c189c4edcd25ad9103926bd4ba850a419a3b5e4aba9682817c3');\nhashMap.set('vendir','e2584cb214854405fed0b0e5dd608b709df1d8dadb7b761723125182e166fb02');\nhashMap.set('woodpecker','eaaa0a3bcfd0dc60c0990f2a1d7acf19c4f86ce4641ab3cf0a31f2bf46fc61b8');\nhashMap.set('jsonata','ca3fa7cd5d446eab618371ebf8d5aea3e47a494231c5f93b08496b859e67a020');\nhashMap.set('regex','f855dba6f55cf7e571241a0b273d2b12d8968ff76a0eeb773d006346949b6053');"]}
1
+ {"version":3,"file":"fingerprint.generated.js","sourceRoot":"","sources":["../../../lib/modules/manager/fingerprint.generated.ts"],"names":[],"mappings":"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","sourcesContent":["export const hashMap = new Map<string, string>();\n\nhashMap.set('ansible','4c234d79f768392545924fa9b139f8d177f15b6aa46776cf063860a1d36e48c7');\nhashMap.set('ansible-galaxy','a211e40f5c8613986ac16bc8d5389ea23d145cd643091d1b951a7f65926e99ff');\nhashMap.set('argocd','37faccd3854254a2009d963f781e77cf6e5aca3719ffd7cae1fea3d02c153eed');\nhashMap.set('asdf','d4b167265b656f5eb744084dd094c67e699940ddaacb53de30cd5c67e54b6b1d');\nhashMap.set('azure-pipelines','0b741b2629f6d94589524ce9b3886765e5c5648c9b6d707bb0b5fede276f9c09');\nhashMap.set('batect','523e8d7a309b4814a02819371313b2dac3764eab64cabfaf1d58b6e89de4ce43');\nhashMap.set('batect-wrapper','90941650f810adb3d7abe476da7221ff3434aa9d09ffc3d310e35108f360f364');\nhashMap.set('bazel','699577431cada5c8621a238b8f80f0983ee0ed7eac92f93467b5bf8f007e9cda');\nhashMap.set('bazel-module','5b1238473990e1ff5c100d610f871f43bd404a8141b51a9d486faf67a3814538');\nhashMap.set('bazelisk','6fbef61d534724ff259ea6e4fc1cd0a3d5a46d740c375128fa59b225daddd39f');\nhashMap.set('bicep','fbbd74998411012cfba829526701109d1fc184ade0cb11a28e4ca2956174b0f1');\nhashMap.set('bitbucket-pipelines','98c0d715a7eb4e41b8231091b83385f325966373f37dc7d6bc10b1febb6f605e');\nhashMap.set('bitrise','d18d2dcd356e19c4cd94912511a88636198c23b64e54f31da273be11044970cf');\nhashMap.set('buildkite','ac713ce38da057ff3ceb08d092291356dfc74f5b33b75f010bb9db1a211439c0');\nhashMap.set('buildpacks','cc8bbe937416a012df36a5c7ab01ae3cdedbed03615549bbe9f0f27fa40a150b');\nhashMap.set('bun','2b157003f37572d579d6ab95f1c45fad0afe58d2239dad2fbfdc5acf81131a4b');\nhashMap.set('bun-version','49194d7fcb6b7bdd7e7a1264f71532bb2be8142d48478bf74716f7a9d4b306b9');\nhashMap.set('bundler','4cd7892c5c7ab98d254f24a0e62c0f637c8958aebb451158a81656d6be8d6662');\nhashMap.set('cake','a04160b352550cb470acb62f9a532361842c12f2ffbcd473bffca3de024522d9');\nhashMap.set('cargo','62650a1dfa15569c1dbd798a81886e3e78165a4c22f333a70ea93e4a385c8837');\nhashMap.set('cdnurl','70281459e771df007787fc25dba16e4d5109865f97209dcf4f572ddd287d538a');\nhashMap.set('circleci','c7c7a1b71385f0ea7cf1e9fc24c37a1d5dabf13d6952e1e3b2179861b55f4e44');\nhashMap.set('cloudbuild','e4f926bfb907220e97dce98335837c52b4e0fe66d813593a7e572736acfc53f7');\nhashMap.set('cocoapods','c2695071e5aaec8178e29615b6dc1cdf9cc68c5d73d5d88b54fed41e6aaec832');\nhashMap.set('composer','6d1dffffe36e3cfe98d02cefd4c4403d48d1163aef2810a26d05bbe05e1a3213');\nhashMap.set('conan','7a5d054f43548ce08a428637ad1fe62796f635cabbca5e8c9cecfd629514cfce');\nhashMap.set('copier','6fa1b4898a64ca780d933728ddc8876014c6f0dea7a2ab2f84b832e8bf4df408');\nhashMap.set('cpanfile','9b354db9666eee2485b27e44a6e61eaadc86ec2f2c6af9bb7bbc9fab54f31642');\nhashMap.set('crossplane','76261ff27b38f9850ee1a3a7e95168abefd96b4736f2cf04a7343e16827b42d8');\nhashMap.set('deps-edn','4e4b76596229f23524086c1dca79c52159ae3ec094e28d8a59bd8a1926458046');\nhashMap.set('devbox','7acedf4c5d3bef2f6c75c8b490c47f18fb03597680b46e4670ae5fe6f9873960');\nhashMap.set('devcontainer','e9982b5ff8aeac8fefb40dc363d3ab35f58af8c08b91eb45d22937a8c60447bb');\nhashMap.set('docker-compose','39189def818fcafbd25114ad4905e30695e3e9b6e280b7d24390385ac36b2512');\nhashMap.set('dockerfile','0bddc097addf84db6aa48d985567f247ca89affe1265ac09e6cd9635f61710f9');\nhashMap.set('droneci','f2a98fcece07b462baaceb28cd6904e080cb1ab0727fcd7403bea5ffd2e05239');\nhashMap.set('fleet','d091e008ae47b1b1e4ec0a573b1b6439a875a1d9cac987e8b62e27e0cb0234ad');\nhashMap.set('flux','3b87b351f98c11ca0e6cb275deb708dc9bf601a7e578f7a3a7e83fe6e15eb540');\nhashMap.set('fvm','aa154dd5ffe3caced30713a9a55967360b7a0f35edd2fc06bd6f3e73c5c87570');\nhashMap.set('git-submodules','d49d744fffb965dea648af37ea16591b4a0ecf32c4f103b04f4555b58d0f3573');\nhashMap.set('github-actions','2398b1deb9e435b4f99ed353ebe6c4254f1976be23d7140d4bfd672c2cd34098');\nhashMap.set('gitlabci','1bad97e9892ea652b6522154d521aa91b299c52e5618943f04e65f78031a13a9');\nhashMap.set('gitlabci-include','5bc01de9b40ecc8888a37690152f4a2f9cacc509b9cb5902aac024ca7a7c8e65');\nhashMap.set('glasskube','fd415356a866ad174a5b70522d662e4289a2c5d5e34c55d57542b0d8968f1645');\nhashMap.set('gleam','a770dca6b63d34d1a5d7fc63130d5e030aac999d6a3398b8460bdf6f62e9a81e');\nhashMap.set('gomod','c3dafbc3c9c21af83d32309718c208289e021dd37b2c6e1db31238b756ab9958');\nhashMap.set('gradle','0d5ddaed06c1abba30dbf26585aa4d86a7b2e8e5d083599fcf3180c946aa2767');\nhashMap.set('gradle-wrapper','f98404470f93f59794d0fc242779559d5a9d8751f5abc40cb61a49cd0652b1b4');\nhashMap.set('haskell-cabal','a2bf118238529952d0f2f352112dfbc86fb5533ef819625161a130f39c8ca713');\nhashMap.set('helm-requirements','8f643d415ab0cfbef05bce4dce9812eef47bddb7b8b67a191e6a4230489e652f');\nhashMap.set('helm-values','fbd4a0b4bdda8a71dc38ac8916287f73e2b7de5ef122096a5b5d525c1a3306cd');\nhashMap.set('helmfile','ee6a6cfb5680f8f896a2f7ac3d68770b300cfd0a4b75a7ca7edb4e1c1f51b7a2');\nhashMap.set('helmsman','734fa89740fd5140ca3e39204872aba3451c05cd17f0b5e2b635934ed7b1710b');\nhashMap.set('helmv3','1d1683f9a792de9ae9ffd9157d9ccd394c012b4d906299b33f21c2bfadbdf30b');\nhashMap.set('hermit','5d6fe831c5abf4e2439da1cf24648ccb5a099b66fc965af68134a67418202fa1');\nhashMap.set('homebrew','4b05428b846b8a7c260a41500cc14938cca8e7d5df0e2510050f95718f6f823f');\nhashMap.set('html','226a9084e10ebf754906386159db08667394f5432105249bdb30d9c60af9fb56');\nhashMap.set('jenkins','309db014e3590e1cd6d53ede2755395c82e5cd4b880425daf52a6ab60e0d6a42');\nhashMap.set('jsonnet-bundler','83c3b9f3c6903929f6842bafc8219437dc822005505b64ed2cb6e63babc28dcb');\nhashMap.set('kotlin-script','60f8f714bb3aef5d7e3e91c67f658847ad2b01bfc044a2f0dd0798fccb5c7c30');\nhashMap.set('kubernetes','62cfa6c77593b48290f3c26a2f390c4bdfe8ab3cfb79e358b10d8aece689a999');\nhashMap.set('kustomize','b0a7444bde37c7ea3ad47062fddaf03892c7da4912b8c042e8c07dde182da46c');\nhashMap.set('leiningen','0598d2f53cfc92076d47186245a7b591d2b0df157609a7f55a37b54ab2d32a77');\nhashMap.set('maven','6b9eea76855c2d67037872fbeb803af65ff026708061691f75ce0ab2239c1ff8');\nhashMap.set('maven-wrapper','56edbbfaf0844fc497de31159719ef5064389120a1a9ca85c0c67d5328c8ac81');\nhashMap.set('meteor','a9785d85b3520ed9e763c800730f36b95747795699758ecbe1395133c5b0040e');\nhashMap.set('mint','7072e37f18bb57500018406eb8711b2615b1916f073867f30653cdd4a99dab81');\nhashMap.set('mise','a0ef42c93137907c994e4a7506ef7b5a758f9537959f6ff7a2aa6d07ccfff0da');\nhashMap.set('mix','9f506a6e42135fd299d240ac445996f414a502c01588107d7e65848b1368ee03');\nhashMap.set('nix','2630474b9fce0f0d3d8e27df4d86abd7564931e2eae3b4d54b3870bb712366f5');\nhashMap.set('nodenv','d159174d53e39af2013443cf86df88e14aac79a5a8d602180af229dcb2ddeda9');\nhashMap.set('npm','748a29baf190da9e5dd974d4bb7549d9432072d52937be6b76493baacf990db1');\nhashMap.set('nuget','08f2af023c09d9331156e70533fe4ea96e7e2038bb304a9ec763adb765b67cf8');\nhashMap.set('nvm','1928fd50bd6cc9f42d73262630056f2c0f8b0e061282bd02e58d116fc1788e2b');\nhashMap.set('ocb','55559051102728868b619820a6dc95753cdfbbb8aed46840e53db6733bc2ede4');\nhashMap.set('osgi','dae012cd486843eb53da4b032105e54d18f4e7537bd59c5321313950dd108a95');\nhashMap.set('pep621','88db31ca9bddf85c58e420e22bb831f4e750281b9d976271195c1e746ccb4fd5');\nhashMap.set('pep723','bf07d466ea1bc9513c8d2cb475fcca3bc9b61f2184bd9af0a7a28d45b6f57ecd');\nhashMap.set('pip-compile','ae04fc449e79eefe95aa15553b6a6bebd417f3ca3251b37121e17503c808a2ac');\nhashMap.set('pip_requirements','70bfe70544e29f3c7fdbc2261efcebcaf8836e92bd21da35c379c9f4573ff43b');\nhashMap.set('pip_setup','31b330d9666d61474326a761a3ce1479f9a189ef6838ecfee78843ff4c80af73');\nhashMap.set('pipenv','823f1652628a6ce17943fe24a187aa2faa77d21e0aa001d3f8b0f9cd93a74ba9');\nhashMap.set('pixi','e209242b0dc2e6d57bcdec8f6a6f577db249ecb5eba1afea429cb1ff023a90d8');\nhashMap.set('poetry','f520b329d6b408fa727b0fe82bf464caed8525c3a2b12a746e95ce00e32c2129');\nhashMap.set('pre-commit','a881d191bd52396ea815e60a49b047f0f073e5a567c863829efbab32610bfa40');\nhashMap.set('pub','8e80b151d76db21808ddc36532e46fc657d0f8b7925943f1d13ceb19b1e061a3');\nhashMap.set('puppet','34f7e3916780e8ed352b65864bad91bf66547e29f91ee8fca7fd6e8fcd2621fd');\nhashMap.set('pyenv','4e520570d9a1407864aa7c5461d4008372d889254067e405cee2212d0ef8990b');\nhashMap.set('renovate-config-presets','27f100d67e2a1ad20cfd4aa3f1db1f1c34f62910929695f381160b3835a7fa65');\nhashMap.set('ruby-version','4aac2178a20ccdf8136363030e5156017f3d44368b4192b3280997df596dcacc');\nhashMap.set('runtime-version','dbf80ce2a5f07dd34bc9a008159b4f08052cc6fd0d92cbd2aeb0026c8008fa72');\nhashMap.set('sbt','dc1ec4aeeb5e012c7a595478873ad67e2dee6e2af951b12b9e9057cb64f2258d');\nhashMap.set('scalafmt','8a54fef703269ed31ce28887e62b0b838a13359e86fa77c7f4dceb89fda0f352');\nhashMap.set('setup-cfg','9a778d8a58f643fff1d23d750dfebed21e45bce99bfdcdc3de39795a407d983f');\nhashMap.set('sveltos','a69f9e206526af08685e20a72344b22d856f2effd882e67333a153a989a0a047');\nhashMap.set('swift','4866ba3e6d6e9288ae9e3a11ef673b36d1d78360e21d8266ae3a945b8683d669');\nhashMap.set('tekton','eb8fb6a25ca7fd0d304f67d5ab2e93ddd8b34854553130003ce3340ca7b3bba1');\nhashMap.set('terraform','f89aaf7cf02449b1095a375b57f2a6eae10b282826385a5966d7d06b65fc3d12');\nhashMap.set('terraform-version','b08480f326c45daf3daeccc2d2f593a723c30a50437a66ac2290d671b427a355');\nhashMap.set('terragrunt','9988ff56620548133596437cd4d03a689ab195dd1addc00bc6074c26455a6486');\nhashMap.set('terragrunt-version','45f221b13a193a42687f318e10cf1558079e28c970e91ce25c370f35f88f2f58');\nhashMap.set('tflint-plugin','40ab6d0c975ff0b8e42651c088e159afe9f0d0c43a1dbf7c1295ec03c77bdc7c');\nhashMap.set('travis','30174e78a6297e44db1c030ea2e111084e14b1eac220f522522c77d684a76285');\nhashMap.set('velaci','9ad5d5d2584b9c189c4edcd25ad9103926bd4ba850a419a3b5e4aba9682817c3');\nhashMap.set('vendir','e2584cb214854405fed0b0e5dd608b709df1d8dadb7b761723125182e166fb02');\nhashMap.set('woodpecker','eaaa0a3bcfd0dc60c0990f2a1d7acf19c4f86ce4641ab3cf0a31f2bf46fc61b8');\nhashMap.set('jsonata','ca3fa7cd5d446eab618371ebf8d5aea3e47a494231c5f93b08496b859e67a020');\nhashMap.set('regex','f855dba6f55cf7e571241a0b273d2b12d8968ff76a0eeb773d006346949b6053');"]}
@@ -12,7 +12,7 @@ const terraform_module_1 = require("../../../../datasource/terraform-module");
12
12
  const base_1 = require("../../base");
13
13
  exports.githubRefMatchRegex = (0, regex_1.regEx)(/github\.com([/:])(?<project>[^/]+\/[a-z0-9-_.]+).*\?(depth=\d+&)?ref=(?<tag>.*?)(&depth=\d+)?$/i);
14
14
  exports.bitbucketRefMatchRegex = (0, regex_1.regEx)(/(?:git::)?(?<url>(?:http|https|ssh)?(?::\/\/)?(?:.*@)?(?<path>bitbucket\.org\/(?<workspace>.*)\/(?<project>.*)\.git\/?(?<subfolder>.*)))\?(depth=\d+&)?ref=(?<tag>.*?)(&depth=\d+)?$/);
15
- exports.gitTagsRefMatchRegex = (0, regex_1.regEx)(/(?:git::)?(?<url>(?:(?:http|https|ssh):\/\/)?(?:.*@)?(?<path>.*\/(?<project>.*\/.*)))\?(depth=\d+&)?ref=(?<tag>.*?)(&depth=\d+)?$/);
15
+ exports.gitTagsRefMatchRegex = (0, regex_1.regEx)(/(?:git::)?(?<url>(?:(?:http|https|ssh):\/\/)?(?:.*@)?(?<path>[^:/]+[:/](?<project>[^/]+(?:\/[^/]+)*))(?:\.git)?)((\/\/)?(?<subfolder>[^?]*))?\?(depth=\d+&)?ref=(?<tag>.*?)(&depth=\d+)?$/);
16
16
  exports.azureDevOpsSshRefMatchRegex = (0, regex_1.regEx)(/(?:git::)?(?<url>git@ssh\.dev\.azure\.com:v3\/(?<organization>[^/]*)\/(?<project>[^/]*)\/(?<repository>[^/]*))(?<modulepath>.*)?\?(depth=\d+&)?ref=(?<tag>.*?)(&depth=\d+)?$/);
17
17
  exports.hostnameMatchRegex = (0, regex_1.regEx)(/^(?<hostname>[a-zA-Z\d]([a-zA-Z\d-]*\.)+[a-zA-Z\d]+)/);
18
18
  class ModuleExtractor extends base_1.DependencyExtractor {
@@ -74,16 +74,11 @@ class ModuleExtractor extends base_1.DependencyExtractor {
74
74
  dep.datasource = git_tags_1.GitTagsDatasource.id;
75
75
  }
76
76
  else if (gitTagsRefMatch?.groups) {
77
- if (gitTagsRefMatch.groups.path.includes('//')) {
77
+ if (gitTagsRefMatch.groups.subfolder) {
78
78
  logger_1.logger.debug('Terraform module contains subdirectory');
79
- dep.depName = gitTagsRefMatch.groups.path.split('//')[0];
80
- const tempLookupName = gitTagsRefMatch.groups.url.split('//');
81
- dep.packageName = tempLookupName[0] + '//' + tempLookupName[1];
82
- }
83
- else {
84
- dep.depName = gitTagsRefMatch.groups.path.replace('.git', '');
85
- dep.packageName = gitTagsRefMatch.groups.url;
86
79
  }
80
+ dep.depName = gitTagsRefMatch.groups.path.replace('.git', '');
81
+ dep.packageName = gitTagsRefMatch.groups.url.replace('.git', '');
87
82
  dep.currentValue = gitTagsRefMatch.groups.tag;
88
83
  dep.datasource = git_tags_1.GitTagsDatasource.id;
89
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/terraform/extractors/others/modules.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../../../logger';\nimport { regEx } from '../../../../../util/regex';\nimport { BitbucketTagsDatasource } from '../../../../datasource/bitbucket-tags';\nimport { GitTagsDatasource } from '../../../../datasource/git-tags';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags';\nimport { TerraformModuleDatasource } from '../../../../datasource/terraform-module';\nimport type { PackageDependency } from '../../../types';\nimport { DependencyExtractor } from '../../base';\nimport type { TerraformDefinitionFile } from '../../hcl/types';\n\nexport const githubRefMatchRegex = regEx(\n /github\\.com([/:])(?<project>[^/]+\\/[a-z0-9-_.]+).*\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/i,\n);\nexport const bitbucketRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:http|https|ssh)?(?::\\/\\/)?(?:.*@)?(?<path>bitbucket\\.org\\/(?<workspace>.*)\\/(?<project>.*)\\.git\\/?(?<subfolder>.*)))\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const gitTagsRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:(?:http|https|ssh):\\/\\/)?(?:.*@)?(?<path>.*\\/(?<project>.*\\/.*)))\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const azureDevOpsSshRefMatchRegex = regEx(\n /(?:git::)?(?<url>git@ssh\\.dev\\.azure\\.com:v3\\/(?<organization>[^/]*)\\/(?<project>[^/]*)\\/(?<repository>[^/]*))(?<modulepath>.*)?\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const hostnameMatchRegex = regEx(\n /^(?<hostname>[a-zA-Z\\d]([a-zA-Z\\d-]*\\.)+[a-zA-Z\\d]+)/,\n);\n\nexport class ModuleExtractor extends DependencyExtractor {\n getCheckList(): string[] {\n return ['module'];\n }\n\n extract(hclRoot: TerraformDefinitionFile): PackageDependency[] {\n const modules = hclRoot.module;\n if (is.nullOrUndefined(modules)) {\n return [];\n }\n\n // istanbul ignore if\n if (!is.plainObject(modules)) {\n logger.debug({ modules }, 'Terraform: unexpected `modules` value');\n return [];\n }\n\n const dependencies = [];\n for (const [depName, moduleElements] of Object.entries(modules)) {\n for (const moduleElement of moduleElements) {\n const dep = {\n depName,\n depType: 'module',\n currentValue: moduleElement.version,\n managerData: {\n source: moduleElement.source,\n },\n };\n dependencies.push(this.analyseTerraformModule(dep));\n }\n }\n\n return dependencies;\n }\n\n private analyseTerraformModule(dep: PackageDependency): PackageDependency {\n // TODO #22198\n const source = dep.managerData!.source as string;\n const githubRefMatch = githubRefMatchRegex.exec(source);\n const bitbucketRefMatch = bitbucketRefMatchRegex.exec(source);\n const gitTagsRefMatch = gitTagsRefMatchRegex.exec(source);\n const azureDevOpsSshRefMatch = azureDevOpsSshRefMatchRegex.exec(source);\n\n if (githubRefMatch?.groups) {\n dep.packageName = githubRefMatch.groups.project.replace(\n regEx(/\\.git$/),\n '',\n );\n dep.depName = 'github.com/' + dep.packageName;\n dep.currentValue = githubRefMatch.groups.tag;\n dep.datasource = GithubTagsDatasource.id;\n } else if (bitbucketRefMatch?.groups) {\n dep.depName =\n bitbucketRefMatch.groups.workspace +\n '/' +\n bitbucketRefMatch.groups.project;\n dep.packageName = dep.depName;\n dep.currentValue = bitbucketRefMatch.groups.tag;\n dep.datasource = BitbucketTagsDatasource.id;\n } else if (azureDevOpsSshRefMatch?.groups) {\n dep.depName = `${azureDevOpsSshRefMatch.groups.organization}/${azureDevOpsSshRefMatch.groups.project}/${azureDevOpsSshRefMatch.groups.repository}${azureDevOpsSshRefMatch.groups.modulepath}`;\n dep.packageName = azureDevOpsSshRefMatch.groups.url;\n dep.currentValue = azureDevOpsSshRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (gitTagsRefMatch?.groups) {\n if (gitTagsRefMatch.groups.path.includes('//')) {\n logger.debug('Terraform module contains subdirectory');\n dep.depName = gitTagsRefMatch.groups.path.split('//')[0];\n const tempLookupName = gitTagsRefMatch.groups.url.split('//');\n dep.packageName = tempLookupName[0] + '//' + tempLookupName[1];\n } else {\n dep.depName = gitTagsRefMatch.groups.path.replace('.git', '');\n dep.packageName = gitTagsRefMatch.groups.url;\n }\n dep.currentValue = gitTagsRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (source) {\n const moduleParts = source.split('//')[0].split('/');\n if (moduleParts[0] === '.' || moduleParts[0] === '..') {\n dep.skipReason = 'local';\n } else if (moduleParts.length >= 3) {\n const hostnameMatch = hostnameMatchRegex.exec(source);\n if (hostnameMatch?.groups) {\n dep.registryUrls = [`https://${hostnameMatch.groups.hostname}`];\n }\n dep.depName = moduleParts.join('/');\n dep.datasource = TerraformModuleDatasource.id;\n }\n } else {\n logger.debug({ dep }, 'terraform dep has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n }\n}\n"]}
1
+ {"version":3,"file":"modules.js","sourceRoot":"","sources":["../../../../../../lib/modules/manager/terraform/extractors/others/modules.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../../../logger';\nimport { regEx } from '../../../../../util/regex';\nimport { BitbucketTagsDatasource } from '../../../../datasource/bitbucket-tags';\nimport { GitTagsDatasource } from '../../../../datasource/git-tags';\nimport { GithubTagsDatasource } from '../../../../datasource/github-tags';\nimport { TerraformModuleDatasource } from '../../../../datasource/terraform-module';\nimport type { PackageDependency } from '../../../types';\nimport { DependencyExtractor } from '../../base';\nimport type { TerraformDefinitionFile } from '../../hcl/types';\n\nexport const githubRefMatchRegex = regEx(\n /github\\.com([/:])(?<project>[^/]+\\/[a-z0-9-_.]+).*\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/i,\n);\nexport const bitbucketRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:http|https|ssh)?(?::\\/\\/)?(?:.*@)?(?<path>bitbucket\\.org\\/(?<workspace>.*)\\/(?<project>.*)\\.git\\/?(?<subfolder>.*)))\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const gitTagsRefMatchRegex = regEx(\n /(?:git::)?(?<url>(?:(?:http|https|ssh):\\/\\/)?(?:.*@)?(?<path>[^:/]+[:/](?<project>[^/]+(?:\\/[^/]+)*))(?:\\.git)?)((\\/\\/)?(?<subfolder>[^?]*))?\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const azureDevOpsSshRefMatchRegex = regEx(\n /(?:git::)?(?<url>git@ssh\\.dev\\.azure\\.com:v3\\/(?<organization>[^/]*)\\/(?<project>[^/]*)\\/(?<repository>[^/]*))(?<modulepath>.*)?\\?(depth=\\d+&)?ref=(?<tag>.*?)(&depth=\\d+)?$/,\n);\nexport const hostnameMatchRegex = regEx(\n /^(?<hostname>[a-zA-Z\\d]([a-zA-Z\\d-]*\\.)+[a-zA-Z\\d]+)/,\n);\n\nexport class ModuleExtractor extends DependencyExtractor {\n getCheckList(): string[] {\n return ['module'];\n }\n\n extract(hclRoot: TerraformDefinitionFile): PackageDependency[] {\n const modules = hclRoot.module;\n if (is.nullOrUndefined(modules)) {\n return [];\n }\n\n // istanbul ignore if\n if (!is.plainObject(modules)) {\n logger.debug({ modules }, 'Terraform: unexpected `modules` value');\n return [];\n }\n\n const dependencies = [];\n for (const [depName, moduleElements] of Object.entries(modules)) {\n for (const moduleElement of moduleElements) {\n const dep = {\n depName,\n depType: 'module',\n currentValue: moduleElement.version,\n managerData: {\n source: moduleElement.source,\n },\n };\n dependencies.push(this.analyseTerraformModule(dep));\n }\n }\n\n return dependencies;\n }\n\n private analyseTerraformModule(dep: PackageDependency): PackageDependency {\n // TODO #22198\n const source = dep.managerData!.source as string;\n const githubRefMatch = githubRefMatchRegex.exec(source);\n const bitbucketRefMatch = bitbucketRefMatchRegex.exec(source);\n const gitTagsRefMatch = gitTagsRefMatchRegex.exec(source);\n const azureDevOpsSshRefMatch = azureDevOpsSshRefMatchRegex.exec(source);\n\n if (githubRefMatch?.groups) {\n dep.packageName = githubRefMatch.groups.project.replace(\n regEx(/\\.git$/),\n '',\n );\n dep.depName = 'github.com/' + dep.packageName;\n dep.currentValue = githubRefMatch.groups.tag;\n dep.datasource = GithubTagsDatasource.id;\n } else if (bitbucketRefMatch?.groups) {\n dep.depName =\n bitbucketRefMatch.groups.workspace +\n '/' +\n bitbucketRefMatch.groups.project;\n dep.packageName = dep.depName;\n dep.currentValue = bitbucketRefMatch.groups.tag;\n dep.datasource = BitbucketTagsDatasource.id;\n } else if (azureDevOpsSshRefMatch?.groups) {\n dep.depName = `${azureDevOpsSshRefMatch.groups.organization}/${azureDevOpsSshRefMatch.groups.project}/${azureDevOpsSshRefMatch.groups.repository}${azureDevOpsSshRefMatch.groups.modulepath}`;\n dep.packageName = azureDevOpsSshRefMatch.groups.url;\n dep.currentValue = azureDevOpsSshRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (gitTagsRefMatch?.groups) {\n if (gitTagsRefMatch.groups.subfolder) {\n logger.debug('Terraform module contains subdirectory');\n }\n dep.depName = gitTagsRefMatch.groups.path.replace('.git', '');\n dep.packageName = gitTagsRefMatch.groups.url.replace('.git', '');\n dep.currentValue = gitTagsRefMatch.groups.tag;\n dep.datasource = GitTagsDatasource.id;\n } else if (source) {\n const moduleParts = source.split('//')[0].split('/');\n if (moduleParts[0] === '.' || moduleParts[0] === '..') {\n dep.skipReason = 'local';\n } else if (moduleParts.length >= 3) {\n const hostnameMatch = hostnameMatchRegex.exec(source);\n if (hostnameMatch?.groups) {\n dep.registryUrls = [`https://${hostnameMatch.groups.hostname}`];\n }\n dep.depName = moduleParts.join('/');\n dep.datasource = TerraformModuleDatasource.id;\n }\n } else {\n logger.debug({ dep }, 'terraform dep has no source');\n dep.skipReason = 'no-source';\n }\n\n return dep;\n }\n}\n"]}
@@ -526,7 +526,7 @@ async function getFileList() {
526
526
  const branch = config.currentBranch;
527
527
  let files;
528
528
  try {
529
- files = await git.raw(['ls-tree', '-r', branch]);
529
+ files = await git.raw(['ls-tree', '-r', `refs/heads/${branch}`]);
530
530
  /* v8 ignore next 10 -- TODO: add test */
531
531
  }
532
532
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/util/git/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport { setTimeout } from 'timers/promises';\nimport is from '@sindresorhus/is';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport type { Options, SimpleGit, TaskOptions } from 'simple-git';\nimport { ResetMode, simpleGit } from 'simple-git';\nimport upath from 'upath';\nimport { configFileNames } from '../../config/app-strings';\nimport { GlobalConfig } from '../../config/global';\nimport type { RenovateConfig } from '../../config/types';\nimport {\n CONFIG_VALIDATION,\n INVALID_PATH,\n REPOSITORY_CHANGED,\n REPOSITORY_DISABLED,\n REPOSITORY_EMPTY,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport type { GitProtocol } from '../../types/git';\nimport { incLimitedValue } from '../../workers/global/limits';\nimport { getCache } from '../cache/repository';\nimport { getEnv } from '../env';\nimport { newlineRegex, regEx } from '../regex';\nimport { matchRegexOrGlobList } from '../string-match';\nimport { parseGitAuthor } from './author';\nimport {\n getCachedBehindBaseResult,\n setCachedBehindBaseResult,\n} from './behind-base-branch-cache';\nimport { getNoVerify, simpleGitConfig } from './config';\nimport {\n getCachedConflictResult,\n setCachedConflictResult,\n} from './conflicts-cache';\nimport {\n bulkChangesDisallowed,\n checkForPlatformFailure,\n handleCommitError,\n} from './error';\nimport {\n getCachedModifiedResult,\n setCachedModifiedResult,\n} from './modified-cache';\nimport { configSigningKey, writePrivateKey } from './private-key';\nimport type {\n CommitFilesConfig,\n CommitResult,\n LocalConfig,\n LongCommitSha,\n PushFilesConfig,\n StatusResult,\n StorageConfig,\n TreeItem,\n} from './types';\n\nexport { setNoVerify } from './config';\nexport { setPrivateKey } from './private-key';\n\n// Retry parameters\nconst retryCount = 5;\nconst delaySeconds = 3;\nconst delayFactor = 2;\n\n// A generic wrapper for simpleGit.* calls to make them more fault-tolerant\nexport async function gitRetry<T>(gitFunc: () => Promise<T>): Promise<T> {\n let round = 0;\n let lastError: Error | undefined;\n\n while (round <= retryCount) {\n if (round > 0) {\n logger.debug(`gitRetry round ${round}`);\n }\n try {\n const res = await gitFunc();\n if (round > 1) {\n logger.debug('Successful retry of git function');\n }\n return res;\n } catch (err) {\n lastError = err;\n logger.debug({ err }, `Git function thrown`);\n // Try to transform the Error to ExternalHostError\n const errChecked = checkForPlatformFailure(err);\n if (errChecked instanceof ExternalHostError) {\n logger.debug(\n { err: errChecked },\n `ExternalHostError thrown in round ${\n round + 1\n } of ${retryCount} - retrying in the next round`,\n );\n } else {\n throw err;\n }\n }\n\n const nextDelay = delayFactor ^ ((round - 1) * delaySeconds);\n logger.trace({ nextDelay }, `Delay next round`);\n await setTimeout(1000 * nextDelay);\n\n round++;\n }\n\n // Can't be `undefined` here.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw lastError;\n}\n\nasync function isDirectory(dir: string): Promise<boolean> {\n try {\n return (await fs.stat(dir)).isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function getDefaultBranch(git: SimpleGit): Promise<string> {\n // see https://stackoverflow.com/a/62352647/3005034\n try {\n let res = await git.raw(['rev-parse', '--abbrev-ref', 'origin/HEAD']);\n /* v8 ignore start -- TODO: add test */\n if (!res) {\n logger.debug('Could not determine default branch using git rev-parse');\n const headPrefix = 'HEAD branch: ';\n res = (await git.raw(['remote', 'show', 'origin']))\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith(headPrefix))!\n .replace(headPrefix, '');\n }\n /* v8 ignore stop */\n return res.replace('origin/', '').trim();\n /* v8 ignore start -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (\n err.message.startsWith(\n 'fatal: ref refs/remotes/origin/HEAD is not a symbolic ref',\n )\n ) {\n throw new Error(REPOSITORY_EMPTY);\n }\n if (err.message.includes(\"fatal: ambiguous argument 'origin/HEAD'\")) {\n logger.warn({ err }, 'Error getting default branch');\n throw new Error(TEMPORARY_ERROR);\n }\n throw err;\n }\n /* v8 ignore stop */\n}\n\nlet config: LocalConfig = {} as any;\n\n// TODO: can be undefined\nlet git: SimpleGit;\nlet gitInitialized: boolean;\nlet submodulesInitizialized: boolean;\n\nlet privateKeySet = false;\n\nexport const GIT_MINIMUM_VERSION = '2.33.0'; // git show-current\n\nexport async function validateGitVersion(): Promise<boolean> {\n let version: string | undefined;\n const globalGit = simpleGit();\n try {\n const { major, minor, patch, installed } = await globalGit.version();\n /* v8 ignore next 4 -- TODO: add test */\n if (!installed) {\n logger.error('Git not installed');\n return false;\n }\n version = `${major}.${minor}.${patch}`;\n /* v8 ignore next 4 */\n } catch (err) {\n logger.error({ err }, 'Error fetching git version');\n return false;\n }\n /* v8 ignore next 7 -- TODO: add test */\n if (!(version && semver.gte(version, GIT_MINIMUM_VERSION))) {\n logger.error(\n { detectedVersion: version, minimumVersion: GIT_MINIMUM_VERSION },\n 'Git version needs upgrading',\n );\n return false;\n }\n logger.debug(`Found valid git version: ${version}`);\n return true;\n}\n\nasync function fetchBranchCommits(): Promise<void> {\n config.branchCommits = {};\n const opts = ['ls-remote', '--heads', config.url];\n if (config.extraCloneOpts) {\n Object.entries(config.extraCloneOpts).forEach((e) =>\n // TODO: types (#22198)\n opts.unshift(e[0], `${e[1]!}`),\n );\n }\n try {\n const lsRemoteRes = await gitRetry(() => git.raw(opts));\n logger.trace({ lsRemoteRes }, 'git ls-remote result');\n lsRemoteRes\n .split(newlineRegex)\n .filter(Boolean)\n .map((line) => line.trim().split(regEx(/\\s+/)))\n .forEach(([sha, ref]) => {\n config.branchCommits[ref.replace('refs/heads/', '')] =\n sha as LongCommitSha;\n });\n logger.trace({ branchCommits: config.branchCommits }, 'branch commits');\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.debug({ err }, 'git error');\n if (err.message?.includes('Please ask the owner to check their account')) {\n throw new Error(REPOSITORY_DISABLED);\n }\n throw err;\n }\n}\n\nexport async function fetchRevSpec(revSpec: string): Promise<void> {\n await gitRetry(() => git.fetch(['origin', revSpec]));\n}\n\nexport async function initRepo(args: StorageConfig): Promise<void> {\n config = { ...args } as any;\n config.ignoredAuthors = [];\n config.additionalBranches = [];\n config.branchIsModified = {};\n // TODO: safe to pass all env variables? use `getChildEnv` instead?\n git = simpleGit(GlobalConfig.get('localDir'), simpleGitConfig()).env({\n ...getEnv(),\n LANG: 'C.UTF-8',\n LC_ALL: 'C.UTF-8',\n });\n gitInitialized = false;\n submodulesInitizialized = false;\n await fetchBranchCommits();\n}\n\nasync function resetToBranch(branchName: string): Promise<void> {\n logger.debug(`resetToBranch(${branchName})`);\n await git.raw(['reset', '--hard']);\n await gitRetry(() => git.checkout(branchName));\n await git.raw(['reset', '--hard', 'origin/' + branchName]);\n await git.raw(['clean', '-fd']);\n}\n\n/* v8 ignore next 4 -- TODO: add test */\nexport async function resetToCommit(commit: LongCommitSha): Promise<void> {\n logger.debug(`resetToCommit(${commit})`);\n await git.raw(['reset', '--hard', commit]);\n}\n\nasync function deleteLocalBranch(branchName: string): Promise<void> {\n await git.branch(['-D', branchName]);\n}\n\nasync function cleanLocalBranches(): Promise<void> {\n const existingBranches = (await git.raw(['branch']))\n .split(newlineRegex)\n .map((branch) => branch.trim())\n .filter((branch) => branch.length > 0 && !branch.startsWith('* '));\n logger.debug({ existingBranches });\n for (const branchName of existingBranches) {\n await deleteLocalBranch(branchName);\n }\n}\n\nexport function setGitAuthor(gitAuthor: string | undefined): void {\n const gitAuthorParsed = parseGitAuthor(\n gitAuthor ?? 'Renovate Bot <renovate@whitesourcesoftware.com>',\n );\n if (!gitAuthorParsed) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'None';\n error.validationError = 'Invalid gitAuthor';\n error.validationMessage = `\\`gitAuthor\\` is not parsed as valid RFC5322 format: \\`${gitAuthor!}\\``;\n throw error;\n }\n config.gitAuthorName = gitAuthorParsed.name;\n config.gitAuthorEmail = gitAuthorParsed.address;\n}\n\nexport async function writeGitAuthor(): Promise<void> {\n const { gitAuthorName, gitAuthorEmail, writeGitDone } = config;\n /* v8 ignore next 3 -- TODO: add test */\n if (writeGitDone) {\n return;\n }\n config.writeGitDone = true;\n try {\n if (gitAuthorName) {\n logger.debug(`Setting git author name: ${gitAuthorName}`);\n await git.addConfig('user.name', gitAuthorName);\n }\n if (gitAuthorEmail) {\n logger.debug(`Setting git author email: ${gitAuthorEmail}`);\n await git.addConfig('user.email', gitAuthorEmail);\n }\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(\n { err, gitAuthorName, gitAuthorEmail },\n 'Error setting git author config',\n );\n throw new Error(TEMPORARY_ERROR);\n }\n}\n\nexport function setUserRepoConfig({\n gitIgnoredAuthors,\n gitAuthor,\n}: RenovateConfig): void {\n config.ignoredAuthors = gitIgnoredAuthors ?? [];\n setGitAuthor(gitAuthor);\n}\n\nexport async function getSubmodules(): Promise<string[]> {\n try {\n return (\n (await git.raw([\n 'config',\n '--file',\n '.gitmodules',\n '--get-regexp',\n '\\\\.path',\n ])) || ''\n )\n .trim()\n .split(regEx(/[\\n\\s]/))\n .filter((_e: string, i: number) => i % 2);\n /* v8 ignore next 4 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, 'Error getting submodules');\n return [];\n }\n}\n\nexport async function cloneSubmodules(\n shouldClone: boolean,\n cloneSubmodulesFilter: string[] | undefined,\n): Promise<void> {\n if (!shouldClone || submodulesInitizialized) {\n return;\n }\n submodulesInitizialized = true;\n await syncGit();\n const submodules = await getSubmodules();\n for (const submodule of submodules) {\n if (!matchRegexOrGlobList(submodule, cloneSubmodulesFilter ?? ['*'])) {\n logger.debug(\n { cloneSubmodulesFilter },\n `Skipping submodule ${submodule}`,\n );\n continue;\n }\n try {\n logger.debug(`Cloning git submodule at ${submodule}`);\n await gitRetry(() =>\n git.submoduleUpdate(['--init', '--recursive', submodule]),\n );\n } catch (err) {\n logger.warn({ err, submodule }, `Unable to initialise git submodule`);\n }\n }\n}\n\nexport function isCloned(): boolean {\n return gitInitialized;\n}\n\nexport async function syncGit(): Promise<void> {\n if (gitInitialized) {\n /* v8 ignore next 3 -- TODO: add test */\n if (getEnv().RENOVATE_X_CLEAR_HOOKS) {\n await git.raw(['config', 'core.hooksPath', '/dev/null']);\n }\n return;\n }\n /* v8 ignore next 3 -- failsafe TODO: add test */\n if (GlobalConfig.get('platform') === 'local') {\n throw new Error('Cannot sync git when platform=local');\n }\n gitInitialized = true;\n const localDir = GlobalConfig.get('localDir')!;\n logger.debug(`Initializing git repository into ${localDir}`);\n const gitHead = upath.join(localDir, '.git/HEAD');\n let clone = true;\n\n if (await fs.pathExists(gitHead)) {\n try {\n await git.raw(['remote', 'set-url', 'origin', config.url]);\n const fetchStart = Date.now();\n await gitRetry(() => git.fetch(['--prune', 'origin']));\n config.currentBranch =\n config.currentBranch || (await getDefaultBranch(git));\n await resetToBranch(config.currentBranch);\n await cleanLocalBranches();\n const durationMs = Math.round(Date.now() - fetchStart);\n logger.info({ durationMs }, 'git fetch completed');\n clone = false;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message === REPOSITORY_EMPTY) {\n throw err;\n }\n logger.info({ err }, 'git fetch error');\n }\n }\n if (clone) {\n const cloneStart = Date.now();\n try {\n const opts: string[] = [];\n if (config.defaultBranch) {\n opts.push('-b', config.defaultBranch);\n }\n if (config.fullClone) {\n logger.debug('Performing full clone');\n } else {\n logger.debug('Performing blobless clone');\n opts.push('--filter=blob:none');\n }\n if (config.extraCloneOpts) {\n Object.entries(config.extraCloneOpts).forEach((e) =>\n // TODO: types (#22198)\n opts.push(e[0], `${e[1]!}`),\n );\n }\n const emptyDirAndClone = async (): Promise<void> => {\n await fs.emptyDir(localDir);\n await git.clone(config.url, '.', opts);\n };\n await gitRetry(() => emptyDirAndClone());\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n logger.debug({ err }, 'git clone error');\n if (err.message?.includes('No space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (err.message === REPOSITORY_EMPTY) {\n throw err;\n }\n throw new ExternalHostError(err, 'git');\n }\n const durationMs = Math.round(Date.now() - cloneStart);\n logger.debug({ durationMs }, 'git clone completed');\n }\n try {\n config.currentBranchSha = (\n await git.raw(['rev-parse', 'HEAD'])\n ).trim() as LongCommitSha;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: not a git repository')) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n // This will only happen now if set in global config\n await cloneSubmodules(!!config.cloneSubmodules, config.cloneSubmodulesFilter);\n try {\n const latestCommit = (await git.log({ n: 1 })).latest;\n logger.debug({ latestCommit }, 'latest repository commit');\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (err.message.includes('does not have any commits yet')) {\n throw new Error(REPOSITORY_EMPTY);\n }\n logger.warn({ err }, 'Cannot retrieve latest commit');\n }\n config.currentBranch =\n config.currentBranch ??\n config.defaultBranch ??\n (await getDefaultBranch(git));\n /* v8 ignore next -- TODO: add test */\n delete getCache()?.semanticCommits;\n}\n\nexport async function getRepoStatus(path?: string): Promise<StatusResult> {\n if (is.string(path)) {\n const localDir = GlobalConfig.get('localDir');\n const localPath = upath.resolve(localDir, path);\n if (!localPath.startsWith(upath.resolve(localDir))) {\n logger.warn(\n { localPath, localDir },\n 'Preventing access to file outside the local directory',\n );\n throw new Error(INVALID_PATH);\n }\n }\n\n await syncGit();\n return git.status(path ? [path] : []);\n}\n\nexport function branchExists(branchName: string): boolean {\n return !!config.branchCommits[branchName];\n}\n\n// Return the commit SHA for a branch\nexport function getBranchCommit(branchName: string): LongCommitSha | null {\n return config.branchCommits[branchName] || null;\n}\n\nexport async function getCommitMessages(): Promise<string[]> {\n logger.debug('getCommitMessages');\n if (GlobalConfig.get('platform') !== 'local') {\n await syncGit();\n }\n try {\n const res = await git.log({\n n: 20,\n format: { message: '%s' },\n });\n return res.all.map((commit) => commit.message);\n /* v8 ignore next 3 -- TODO: add test */\n } catch {\n return [];\n }\n}\n\nexport async function checkoutBranch(\n branchName: string,\n): Promise<LongCommitSha> {\n logger.debug(`Setting current branch to ${branchName}`);\n await syncGit();\n try {\n await gitRetry(() =>\n git.checkout(\n submodulesInitizialized\n ? ['-f', '--recurse-submodules', branchName, '--']\n : ['-f', branchName, '--'],\n ),\n );\n config.currentBranch = branchName;\n config.currentBranchSha = (\n await git.raw(['rev-parse', 'HEAD'])\n ).trim() as LongCommitSha;\n const latestCommitDate = (await git.log({ n: 1 }))?.latest?.date;\n if (latestCommitDate) {\n logger.debug({ branchName, latestCommitDate }, 'latest commit');\n }\n await git.reset(ResetMode.HARD);\n return config.currentBranchSha;\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (err.message?.includes('fatal: ambiguous argument')) {\n logger.warn({ err }, 'Failed to checkout branch');\n throw new Error(TEMPORARY_ERROR);\n }\n throw err;\n }\n}\n\nexport async function getFileList(): Promise<string[]> {\n await syncGit();\n const branch = config.currentBranch;\n let files: string;\n try {\n files = await git.raw(['ls-tree', '-r', branch]);\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: Not a valid object name')) {\n logger.debug(\n { err },\n 'Branch not found when checking branch list - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n /* v8 ignore next 3 -- TODO: add test */\n if (!files) {\n return [];\n }\n // submodules are starting with `160000 commit`\n return files\n .split(newlineRegex)\n .filter(is.string)\n .filter((line) => line.startsWith('100'))\n .map((line) => line.split(regEx(/\\t/)).pop()!);\n}\n\nexport function getBranchList(): string[] {\n return Object.keys(config.branchCommits ?? {});\n}\n\nexport async function isBranchBehindBase(\n branchName: string,\n baseBranch: string,\n): Promise<boolean> {\n const baseBranchSha = getBranchCommit(baseBranch);\n const branchSha = getBranchCommit(branchName);\n let isBehind = getCachedBehindBaseResult(\n branchName,\n branchSha,\n baseBranch,\n baseBranchSha,\n );\n if (isBehind !== null) {\n logger.debug(`branch.isBehindBase(): using cached result \"${isBehind}\"`);\n return isBehind;\n }\n\n logger.debug('branch.isBehindBase(): using git to calculate');\n\n await syncGit();\n try {\n const behindCount = (\n await git.raw(['rev-list', '--count', `${branchSha!}..${baseBranchSha!}`])\n ).trim();\n isBehind = behindCount !== '0';\n logger.debug(\n { baseBranch, branchName },\n `branch.isBehindBase(): ${isBehind}`,\n );\n setCachedBehindBaseResult(branchName, isBehind);\n return isBehind;\n /* v8 ignore next 7 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n throw err;\n }\n}\n\nexport async function isBranchModified(\n branchName: string,\n baseBranch: string,\n): Promise<boolean> {\n if (!branchExists(branchName)) {\n logger.debug('branch.isModified(): no cache');\n return false;\n }\n // First check local config\n if (config.branchIsModified[branchName] !== undefined) {\n return config.branchIsModified[branchName];\n }\n // Second check repository cache\n const isModified = getCachedModifiedResult(\n branchName,\n getBranchCommit(branchName), // branch sha\n );\n if (isModified !== null) {\n logger.debug(`branch.isModified(): using cached result \"${isModified}\"`);\n config.branchIsModified[branchName] = isModified;\n return isModified;\n }\n\n logger.debug('branch.isModified(): using git to calculate');\n\n await syncGit();\n const committedAuthors = new Set<string>();\n try {\n const commits = await git.log([\n `origin/${baseBranch}..origin/${branchName}`,\n ]);\n\n for (const commit of commits.all) {\n committedAuthors.add(commit.author_email);\n }\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: bad revision')) {\n logger.debug(\n { err },\n 'Remote branch not found when checking last commit author - aborting run',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n logger.warn({ err }, 'Error checking last author for isBranchModified');\n }\n const { gitAuthorEmail, ignoredAuthors } = config;\n\n const includedAuthors = new Set(committedAuthors);\n\n if (gitAuthorEmail) {\n includedAuthors.delete(gitAuthorEmail);\n }\n\n for (const ignoredAuthor of ignoredAuthors) {\n includedAuthors.delete(ignoredAuthor);\n }\n\n if (includedAuthors.size === 0) {\n // authors all match - branch has not been modified\n logger.trace(\n {\n branchName,\n baseBranch,\n committedAuthors: [...committedAuthors],\n includedAuthors: [...includedAuthors],\n gitAuthorEmail,\n ignoredAuthors,\n },\n 'branch.isModified() = false',\n );\n logger.debug('branch.isModified() = false');\n config.branchIsModified[branchName] = false;\n setCachedModifiedResult(branchName, false);\n return false;\n }\n logger.trace(\n {\n branchName,\n baseBranch,\n committedAuthors: [...committedAuthors],\n includedAuthors: [...includedAuthors],\n gitAuthorEmail,\n ignoredAuthors,\n },\n 'branch.isModified() = true',\n );\n logger.debug(\n { branchName, unrecognizedAuthors: [...includedAuthors] },\n 'branch.isModified() = true',\n );\n config.branchIsModified[branchName] = true;\n setCachedModifiedResult(branchName, true);\n return true;\n}\n\nexport async function isBranchConflicted(\n baseBranch: string,\n branch: string,\n): Promise<boolean> {\n logger.debug(`isBranchConflicted(${baseBranch}, ${branch})`);\n\n const baseBranchSha = getBranchCommit(baseBranch);\n const branchSha = getBranchCommit(branch);\n if (!baseBranchSha || !branchSha) {\n logger.warn(\n { baseBranch, branch },\n 'isBranchConflicted: branch does not exist',\n );\n return true;\n }\n\n const isConflicted = getCachedConflictResult(\n branch,\n branchSha,\n baseBranch,\n baseBranchSha,\n );\n if (is.boolean(isConflicted)) {\n logger.debug(\n `branch.isConflicted(): using cached result \"${isConflicted}\"`,\n );\n return isConflicted;\n }\n\n logger.debug('branch.isConflicted(): using git to calculate');\n\n let result = false;\n await syncGit();\n await writeGitAuthor();\n\n const origBranch = config.currentBranch;\n try {\n await git.reset(ResetMode.HARD);\n //TODO: see #18600\n if (origBranch !== baseBranch) {\n await git.checkout(baseBranch);\n }\n await git.merge(['--no-commit', '--no-ff', `origin/${branch}`]);\n } catch (err) {\n result = true;\n /* v8 ignore next 6 -- TODO: add test */\n if (!err?.git?.conflicts?.length) {\n logger.debug(\n { baseBranch, branch, err },\n 'isBranchConflicted: unknown error',\n );\n }\n } finally {\n try {\n await git.merge(['--abort']);\n if (origBranch !== baseBranch) {\n await git.checkout(origBranch);\n }\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n logger.debug(\n { baseBranch, branch, err },\n 'isBranchConflicted: cleanup error',\n );\n }\n }\n\n setCachedConflictResult(branch, result);\n logger.debug(`branch.isConflicted(): ${result}`);\n return result;\n}\n\nexport async function deleteBranch(branchName: string): Promise<void> {\n await syncGit();\n try {\n const deleteCommand = ['push', '--delete', 'origin', branchName];\n\n if (getNoVerify().includes('push')) {\n deleteCommand.push('--no-verify');\n }\n\n await gitRetry(() => git.raw(deleteCommand));\n logger.debug(`Deleted remote branch: ${branchName}`);\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(`No remote branch to delete with name: ${branchName}`);\n }\n try {\n /* v8 ignore next 2 -- TODO: add test (always throws) */\n await deleteLocalBranch(branchName);\n logger.debug(`Deleted local branch: ${branchName}`);\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(`No local branch to delete with name: ${branchName}`);\n }\n delete config.branchCommits[branchName];\n}\n\nexport async function mergeToLocal(refSpecToMerge: string): Promise<void> {\n let status: StatusResult | undefined;\n try {\n await syncGit();\n await writeGitAuthor();\n await git.reset(ResetMode.HARD);\n await gitRetry(() =>\n git.checkout([\n '-B',\n config.currentBranch,\n 'origin/' + config.currentBranch,\n ]),\n );\n status = await git.status();\n await fetchRevSpec(refSpecToMerge);\n await gitRetry(() => git.merge(['FETCH_HEAD']));\n } catch (err) {\n logger.debug(\n {\n baseBranch: config.currentBranch,\n baseSha: config.currentBranchSha,\n refSpecToMerge,\n status,\n err,\n },\n 'mergeLocally error',\n );\n throw err;\n }\n}\n\nexport async function mergeBranch(branchName: string): Promise<void> {\n let status: StatusResult | undefined;\n try {\n await syncGit();\n await writeGitAuthor();\n await git.reset(ResetMode.HARD);\n await gitRetry(() =>\n git.checkout(['-B', branchName, 'origin/' + branchName]),\n );\n await gitRetry(() =>\n git.checkout([\n '-B',\n config.currentBranch,\n 'origin/' + config.currentBranch,\n ]),\n );\n status = await git.status();\n await gitRetry(() => git.merge(['--ff-only', branchName]));\n await gitRetry(() => git.push('origin', config.currentBranch));\n incLimitedValue('Commits');\n } catch (err) {\n logger.debug(\n {\n baseBranch: config.currentBranch,\n baseSha: config.currentBranchSha,\n branchName,\n branchSha: getBranchCommit(branchName),\n status,\n err,\n },\n 'mergeBranch error',\n );\n throw err;\n }\n}\n\nexport async function getBranchLastCommitTime(\n branchName: string,\n): Promise<Date> {\n await syncGit();\n try {\n const time = await git.show(['-s', '--format=%ai', 'origin/' + branchName]);\n return new Date(Date.parse(time));\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n return new Date();\n }\n}\n\nexport async function getBranchFiles(\n branchName: string,\n): Promise<string[] | null> {\n await syncGit();\n try {\n const diff = await gitRetry(() =>\n git.diffSummary([`origin/${branchName}`, `origin/${branchName}^`]),\n );\n return diff.files.map((file) => file.file);\n /* v8 ignore next 8 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, 'getBranchFiles error');\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n return null;\n }\n}\n\nexport async function getFile(\n filePath: string,\n branchName?: string,\n): Promise<string | null> {\n await syncGit();\n try {\n const content = await git.show([\n 'origin/' + (branchName ?? config.currentBranch) + ':' + filePath,\n ]);\n return content;\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n return null;\n }\n}\n\nexport async function getFiles(\n fileNames: string[],\n): Promise<Record<string, string | null>> {\n const fileContentMap: Record<string, string | null> = {};\n\n for (const fileName of fileNames) {\n fileContentMap[fileName] = await getFile(fileName);\n }\n\n return fileContentMap;\n}\n\nexport async function hasDiff(\n sourceRef: string,\n targetRef: string,\n): Promise<boolean> {\n await syncGit();\n try {\n return (\n (await gitRetry(() => git.diff([sourceRef, targetRef, '--']))) !== ''\n );\n } catch {\n return true;\n }\n}\n\nasync function handleCommitAuth(localDir: string): Promise<void> {\n if (!privateKeySet) {\n await writePrivateKey();\n privateKeySet = true;\n }\n await configSigningKey(localDir);\n await writeGitAuthor();\n}\n\n/**\n *\n * Prepare local branch with commit\n *\n * 0. Hard reset\n * 1. Creates local branch with `origin/` prefix\n * 2. Perform `git add` (respecting mode) and `git remove` for each file\n * 3. Perform commit\n * 4. Check whether resulting commit is empty or not (due to .gitignore)\n * 5. If not empty, return commit info for further processing\n *\n */\nexport async function prepareCommit({\n branchName,\n files,\n message,\n force = false,\n}: CommitFilesConfig): Promise<CommitResult | null> {\n const localDir = GlobalConfig.get('localDir')!;\n await syncGit();\n logger.debug(`Preparing files for committing to branch ${branchName}`);\n await handleCommitAuth(localDir);\n try {\n await git.reset(ResetMode.HARD);\n await git.raw(['clean', '-fd']);\n const parentCommitSha = config.currentBranchSha;\n await gitRetry(() =>\n git.checkout(['-B', branchName, 'origin/' + config.currentBranch]),\n );\n const deletedFiles: string[] = [];\n const addedModifiedFiles: string[] = [];\n const ignoredFiles: string[] = [];\n for (const file of files) {\n const fileName = file.path;\n if (file.type === 'deletion') {\n try {\n await git.rm([fileName]);\n deletedFiles.push(fileName);\n /* v8 ignore next 8 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.trace({ err, fileName }, 'Cannot delete file');\n ignoredFiles.push(fileName);\n }\n } else {\n if (await isDirectory(upath.join(localDir, fileName))) {\n // This is usually a git submodule update\n logger.trace({ fileName }, 'Adding directory commit');\n } else if (file.contents === null) {\n continue;\n } else {\n let contents: Buffer;\n if (typeof file.contents === 'string') {\n contents = Buffer.from(file.contents);\n /* v8 ignore next 3 -- TODO: add test */\n } else {\n contents = file.contents;\n }\n // some file systems including Windows don't support the mode\n // so the index should be manually updated after adding the file\n if (file.isSymlink) {\n await fs.symlink(file.contents, upath.join(localDir, fileName));\n } else {\n await fs.outputFile(upath.join(localDir, fileName), contents, {\n mode: file.isExecutable ? 0o777 : 0o666,\n });\n }\n }\n try {\n /* v8 ignore next 2 -- TODO: add test */\n const addParams =\n fileName === configFileNames[0] ? ['-f', fileName] : fileName;\n await git.add(addParams);\n if (file.isExecutable) {\n await git.raw(['update-index', '--chmod=+x', fileName]);\n }\n addedModifiedFiles.push(fileName);\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n if (\n !err.message.includes(\n 'The following paths are ignored by one of your .gitignore files',\n )\n ) {\n throw err;\n }\n logger.debug(`Cannot commit ignored file: ${fileName}`);\n ignoredFiles.push(file.path);\n }\n }\n }\n\n const commitOptions: Options = {};\n if (getNoVerify().includes('commit')) {\n commitOptions['--no-verify'] = null;\n }\n\n const commitRes = await git.commit(message, [], commitOptions);\n if (\n commitRes.summary &&\n commitRes.summary.changes === 0 &&\n commitRes.summary.insertions === 0 &&\n commitRes.summary.deletions === 0\n ) {\n logger.warn({ commitRes }, 'Detected empty commit - aborting git push');\n return null;\n }\n logger.debug(\n { deletedFiles, ignoredFiles, result: commitRes },\n `git commit`,\n );\n if (!force && !(await hasDiff('HEAD', `origin/${branchName}`))) {\n logger.debug(\n { branchName, deletedFiles, addedModifiedFiles, ignoredFiles },\n 'No file changes detected. Skipping commit',\n );\n return null;\n }\n\n const commitSha = (\n await git.revparse([branchName])\n ).trim() as LongCommitSha;\n const result: CommitResult = {\n parentCommitSha,\n commitSha,\n files: files.filter((fileChange) => {\n if (fileChange.type === 'deletion') {\n return deletedFiles.includes(fileChange.path);\n }\n return addedModifiedFiles.includes(fileChange.path);\n }),\n };\n\n return result;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n return handleCommitError(err, branchName, files);\n }\n}\n\nexport async function pushCommit({\n sourceRef,\n targetRef,\n files,\n}: PushFilesConfig): Promise<boolean> {\n await syncGit();\n logger.debug(`Pushing refSpec ${sourceRef}:${targetRef ?? sourceRef}`);\n let result = false;\n try {\n const pushOptions: TaskOptions = {\n '--force-with-lease': null,\n '-u': null,\n };\n if (getNoVerify().includes('push')) {\n pushOptions['--no-verify'] = null;\n }\n\n const pushRes = await gitRetry(() =>\n git.push('origin', `${sourceRef}:${targetRef ?? sourceRef}`, pushOptions),\n );\n delete pushRes.repo;\n logger.debug({ result: pushRes }, 'git push');\n incLimitedValue('Commits');\n result = true;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n handleCommitError(err, sourceRef, files);\n }\n return result;\n}\n\nexport async function fetchBranch(\n branchName: string,\n): Promise<LongCommitSha | null> {\n await syncGit();\n logger.debug(`Fetching branch ${branchName}`);\n try {\n const ref = `refs/heads/${branchName}:refs/remotes/origin/${branchName}`;\n await gitRetry(() => git.pull(['origin', ref, '--force']));\n const commit = (await git.revparse([branchName])).trim() as LongCommitSha;\n config.branchCommits[branchName] = commit;\n config.branchIsModified[branchName] = false;\n return commit;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n return handleCommitError(err, branchName);\n }\n}\n\nexport async function commitFiles(\n commitConfig: CommitFilesConfig,\n): Promise<LongCommitSha | null> {\n try {\n const commitResult = await prepareCommit(commitConfig);\n if (commitResult) {\n const pushResult = await pushCommit({\n sourceRef: commitConfig.branchName,\n files: commitConfig.files,\n });\n if (pushResult) {\n const { branchName } = commitConfig;\n const { commitSha } = commitResult;\n config.branchCommits[branchName] = commitSha;\n config.branchIsModified[branchName] = false;\n return commitSha;\n }\n }\n return null;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message.includes('[rejected] (stale info)')) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n}\n\nexport function getUrl({\n protocol,\n auth,\n hostname,\n host,\n repository,\n}: {\n protocol?: GitProtocol;\n auth?: string;\n hostname?: string;\n host?: string;\n repository: string;\n}): string {\n if (protocol === 'ssh') {\n // TODO: types (#22198)\n return `git@${hostname!}:${repository}.git`;\n }\n return URL.format({\n protocol: protocol ?? 'https',\n auth,\n hostname,\n host,\n pathname: repository + '.git',\n });\n}\n\nlet remoteRefsExist = false;\n\n/**\n *\n * Non-branch refs allow us to store git objects without triggering CI pipelines.\n * It's useful for API-based branch rebasing.\n *\n * @see https://stackoverflow.com/questions/63866947/pushing-git-non-branch-references-to-a-remote/63868286\n *\n */\nexport async function pushCommitToRenovateRef(\n commitSha: string,\n refName: string,\n): Promise<void> {\n const fullRefName = `refs/renovate/branches/${refName}`;\n await git.raw(['update-ref', fullRefName, commitSha]);\n await git.push(['--force', 'origin', fullRefName]);\n remoteRefsExist = true;\n}\n\n/**\n *\n * Removes all remote \"refs/renovate/branches/*\" refs in two steps:\n *\n * Step 1: list refs\n *\n * $ git ls-remote origin \"refs/renovate/branches/*\"\n *\n * > cca38e9ea6d10946bdb2d0ca5a52c205783897aa refs/renovate/branches/foo\n * > 29ac154936c880068994e17eb7f12da7fdca70e5 refs/renovate/branches/bar\n * > 3fafaddc339894b6d4f97595940fd91af71d0355 refs/renovate/branches/baz\n * > ...\n *\n * Step 2:\n *\n * $ git push --delete origin refs/renovate/branches/foo refs/renovate/branches/bar refs/renovate/branches/baz\n *\n * If Step 2 fails because the repo doesn't allow bulk changes, we'll remove them one by one instead:\n *\n * $ git push --delete origin refs/renovate/branches/foo\n * $ git push --delete origin refs/renovate/branches/bar\n * $ git push --delete origin refs/renovate/branches/baz\n */\nexport async function clearRenovateRefs(): Promise<void> {\n if (!gitInitialized || !remoteRefsExist) {\n return;\n }\n\n logger.debug(`Cleaning up Renovate refs: refs/renovate/branches/*`);\n const renovateRefs: string[] = [];\n\n try {\n const rawOutput = await git.listRemote([\n config.url,\n 'refs/renovate/branches/*',\n ]);\n const refs = rawOutput\n .split(newlineRegex)\n .map((line) => line.replace(regEx(/[0-9a-f]+\\s+/i), '').trim())\n .filter((line) => line.startsWith('refs/renovate/branches/'));\n renovateRefs.push(...refs);\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, `Renovate refs cleanup error`);\n }\n\n if (renovateRefs.length) {\n try {\n const pushOpts = ['--delete', 'origin', ...renovateRefs];\n await git.push(pushOpts);\n } catch (err) {\n if (bulkChangesDisallowed(err)) {\n for (const ref of renovateRefs) {\n try {\n const pushOpts = ['--delete', 'origin', ref];\n await git.push(pushOpts);\n /* v8 ignore next 4 -- TODO: add test */\n } catch (err) {\n logger.debug({ err }, 'Error deleting \"refs/renovate/branches/*\"');\n break;\n }\n }\n /* v8 ignore next 3 -- TODO: add test */\n } else {\n logger.warn({ err }, 'Error deleting \"refs/renovate/branches/*\"');\n }\n }\n }\n\n remoteRefsExist = false;\n}\n\nconst treeItemRegex = regEx(\n /^(?<mode>\\d{6})\\s+(?<type>blob|tree|commit)\\s+(?<sha>[0-9a-f]{40})\\s+(?<path>.*)$/,\n);\n\nconst treeShaRegex = regEx(/tree\\s+(?<treeSha>[0-9a-f]{40})\\s*/);\n\n/**\n *\n * Obtain top-level items of commit tree.\n * We don't need subtree items, so here are 2 steps only.\n *\n * Step 1: commit SHA -> tree SHA\n *\n * $ git cat-file -p <commit-sha>\n *\n * > tree <tree-sha>\n * > parent 59b8b0e79319b7dc38f7a29d618628f3b44c2fd7\n * > ...\n *\n * Step 2: tree SHA -> tree items (top-level)\n *\n * $ git cat-file -p <tree-sha>\n *\n * > 040000 tree 389400684d1f004960addc752be13097fe85d776 src\n * > ...\n * > 100644 blob 7d2edde437ad4e7bceb70dbfe70e93350d99c98b package.json\n *\n */\nexport async function listCommitTree(\n commitSha: LongCommitSha,\n): Promise<TreeItem[]> {\n const commitOutput = await git.catFile(['-p', commitSha]);\n const { treeSha } =\n /* v8 ignore next -- will never happen ? */\n treeShaRegex.exec(commitOutput)?.groups ?? {};\n const contents = await git.catFile(['-p', treeSha]);\n const lines = contents.split(newlineRegex);\n const result: TreeItem[] = [];\n for (const line of lines) {\n const matchGroups = treeItemRegex.exec(line)?.groups;\n if (matchGroups) {\n const { path, mode, type, sha } = matchGroups;\n result.push({ path, mode, type, sha: sha as LongCommitSha });\n }\n }\n return result;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/util/git/index.ts"],"names":[],"mappings":"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","sourcesContent":["import URL from 'node:url';\nimport { setTimeout } from 'timers/promises';\nimport is from '@sindresorhus/is';\nimport fs from 'fs-extra';\nimport semver from 'semver';\nimport type { Options, SimpleGit, TaskOptions } from 'simple-git';\nimport { ResetMode, simpleGit } from 'simple-git';\nimport upath from 'upath';\nimport { configFileNames } from '../../config/app-strings';\nimport { GlobalConfig } from '../../config/global';\nimport type { RenovateConfig } from '../../config/types';\nimport {\n CONFIG_VALIDATION,\n INVALID_PATH,\n REPOSITORY_CHANGED,\n REPOSITORY_DISABLED,\n REPOSITORY_EMPTY,\n SYSTEM_INSUFFICIENT_DISK_SPACE,\n TEMPORARY_ERROR,\n} from '../../constants/error-messages';\nimport { logger } from '../../logger';\nimport { ExternalHostError } from '../../types/errors/external-host-error';\nimport type { GitProtocol } from '../../types/git';\nimport { incLimitedValue } from '../../workers/global/limits';\nimport { getCache } from '../cache/repository';\nimport { getEnv } from '../env';\nimport { newlineRegex, regEx } from '../regex';\nimport { matchRegexOrGlobList } from '../string-match';\nimport { parseGitAuthor } from './author';\nimport {\n getCachedBehindBaseResult,\n setCachedBehindBaseResult,\n} from './behind-base-branch-cache';\nimport { getNoVerify, simpleGitConfig } from './config';\nimport {\n getCachedConflictResult,\n setCachedConflictResult,\n} from './conflicts-cache';\nimport {\n bulkChangesDisallowed,\n checkForPlatformFailure,\n handleCommitError,\n} from './error';\nimport {\n getCachedModifiedResult,\n setCachedModifiedResult,\n} from './modified-cache';\nimport { configSigningKey, writePrivateKey } from './private-key';\nimport type {\n CommitFilesConfig,\n CommitResult,\n LocalConfig,\n LongCommitSha,\n PushFilesConfig,\n StatusResult,\n StorageConfig,\n TreeItem,\n} from './types';\n\nexport { setNoVerify } from './config';\nexport { setPrivateKey } from './private-key';\n\n// Retry parameters\nconst retryCount = 5;\nconst delaySeconds = 3;\nconst delayFactor = 2;\n\n// A generic wrapper for simpleGit.* calls to make them more fault-tolerant\nexport async function gitRetry<T>(gitFunc: () => Promise<T>): Promise<T> {\n let round = 0;\n let lastError: Error | undefined;\n\n while (round <= retryCount) {\n if (round > 0) {\n logger.debug(`gitRetry round ${round}`);\n }\n try {\n const res = await gitFunc();\n if (round > 1) {\n logger.debug('Successful retry of git function');\n }\n return res;\n } catch (err) {\n lastError = err;\n logger.debug({ err }, `Git function thrown`);\n // Try to transform the Error to ExternalHostError\n const errChecked = checkForPlatformFailure(err);\n if (errChecked instanceof ExternalHostError) {\n logger.debug(\n { err: errChecked },\n `ExternalHostError thrown in round ${\n round + 1\n } of ${retryCount} - retrying in the next round`,\n );\n } else {\n throw err;\n }\n }\n\n const nextDelay = delayFactor ^ ((round - 1) * delaySeconds);\n logger.trace({ nextDelay }, `Delay next round`);\n await setTimeout(1000 * nextDelay);\n\n round++;\n }\n\n // Can't be `undefined` here.\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw lastError;\n}\n\nasync function isDirectory(dir: string): Promise<boolean> {\n try {\n return (await fs.stat(dir)).isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function getDefaultBranch(git: SimpleGit): Promise<string> {\n // see https://stackoverflow.com/a/62352647/3005034\n try {\n let res = await git.raw(['rev-parse', '--abbrev-ref', 'origin/HEAD']);\n /* v8 ignore start -- TODO: add test */\n if (!res) {\n logger.debug('Could not determine default branch using git rev-parse');\n const headPrefix = 'HEAD branch: ';\n res = (await git.raw(['remote', 'show', 'origin']))\n .split('\\n')\n .map((line) => line.trim())\n .find((line) => line.startsWith(headPrefix))!\n .replace(headPrefix, '');\n }\n /* v8 ignore stop */\n return res.replace('origin/', '').trim();\n /* v8 ignore start -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (\n err.message.startsWith(\n 'fatal: ref refs/remotes/origin/HEAD is not a symbolic ref',\n )\n ) {\n throw new Error(REPOSITORY_EMPTY);\n }\n if (err.message.includes(\"fatal: ambiguous argument 'origin/HEAD'\")) {\n logger.warn({ err }, 'Error getting default branch');\n throw new Error(TEMPORARY_ERROR);\n }\n throw err;\n }\n /* v8 ignore stop */\n}\n\nlet config: LocalConfig = {} as any;\n\n// TODO: can be undefined\nlet git: SimpleGit;\nlet gitInitialized: boolean;\nlet submodulesInitizialized: boolean;\n\nlet privateKeySet = false;\n\nexport const GIT_MINIMUM_VERSION = '2.33.0'; // git show-current\n\nexport async function validateGitVersion(): Promise<boolean> {\n let version: string | undefined;\n const globalGit = simpleGit();\n try {\n const { major, minor, patch, installed } = await globalGit.version();\n /* v8 ignore next 4 -- TODO: add test */\n if (!installed) {\n logger.error('Git not installed');\n return false;\n }\n version = `${major}.${minor}.${patch}`;\n /* v8 ignore next 4 */\n } catch (err) {\n logger.error({ err }, 'Error fetching git version');\n return false;\n }\n /* v8 ignore next 7 -- TODO: add test */\n if (!(version && semver.gte(version, GIT_MINIMUM_VERSION))) {\n logger.error(\n { detectedVersion: version, minimumVersion: GIT_MINIMUM_VERSION },\n 'Git version needs upgrading',\n );\n return false;\n }\n logger.debug(`Found valid git version: ${version}`);\n return true;\n}\n\nasync function fetchBranchCommits(): Promise<void> {\n config.branchCommits = {};\n const opts = ['ls-remote', '--heads', config.url];\n if (config.extraCloneOpts) {\n Object.entries(config.extraCloneOpts).forEach((e) =>\n // TODO: types (#22198)\n opts.unshift(e[0], `${e[1]!}`),\n );\n }\n try {\n const lsRemoteRes = await gitRetry(() => git.raw(opts));\n logger.trace({ lsRemoteRes }, 'git ls-remote result');\n lsRemoteRes\n .split(newlineRegex)\n .filter(Boolean)\n .map((line) => line.trim().split(regEx(/\\s+/)))\n .forEach(([sha, ref]) => {\n config.branchCommits[ref.replace('refs/heads/', '')] =\n sha as LongCommitSha;\n });\n logger.trace({ branchCommits: config.branchCommits }, 'branch commits');\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.debug({ err }, 'git error');\n if (err.message?.includes('Please ask the owner to check their account')) {\n throw new Error(REPOSITORY_DISABLED);\n }\n throw err;\n }\n}\n\nexport async function fetchRevSpec(revSpec: string): Promise<void> {\n await gitRetry(() => git.fetch(['origin', revSpec]));\n}\n\nexport async function initRepo(args: StorageConfig): Promise<void> {\n config = { ...args } as any;\n config.ignoredAuthors = [];\n config.additionalBranches = [];\n config.branchIsModified = {};\n // TODO: safe to pass all env variables? use `getChildEnv` instead?\n git = simpleGit(GlobalConfig.get('localDir'), simpleGitConfig()).env({\n ...getEnv(),\n LANG: 'C.UTF-8',\n LC_ALL: 'C.UTF-8',\n });\n gitInitialized = false;\n submodulesInitizialized = false;\n await fetchBranchCommits();\n}\n\nasync function resetToBranch(branchName: string): Promise<void> {\n logger.debug(`resetToBranch(${branchName})`);\n await git.raw(['reset', '--hard']);\n await gitRetry(() => git.checkout(branchName));\n await git.raw(['reset', '--hard', 'origin/' + branchName]);\n await git.raw(['clean', '-fd']);\n}\n\n/* v8 ignore next 4 -- TODO: add test */\nexport async function resetToCommit(commit: LongCommitSha): Promise<void> {\n logger.debug(`resetToCommit(${commit})`);\n await git.raw(['reset', '--hard', commit]);\n}\n\nasync function deleteLocalBranch(branchName: string): Promise<void> {\n await git.branch(['-D', branchName]);\n}\n\nasync function cleanLocalBranches(): Promise<void> {\n const existingBranches = (await git.raw(['branch']))\n .split(newlineRegex)\n .map((branch) => branch.trim())\n .filter((branch) => branch.length > 0 && !branch.startsWith('* '));\n logger.debug({ existingBranches });\n for (const branchName of existingBranches) {\n await deleteLocalBranch(branchName);\n }\n}\n\nexport function setGitAuthor(gitAuthor: string | undefined): void {\n const gitAuthorParsed = parseGitAuthor(\n gitAuthor ?? 'Renovate Bot <renovate@whitesourcesoftware.com>',\n );\n if (!gitAuthorParsed) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'None';\n error.validationError = 'Invalid gitAuthor';\n error.validationMessage = `\\`gitAuthor\\` is not parsed as valid RFC5322 format: \\`${gitAuthor!}\\``;\n throw error;\n }\n config.gitAuthorName = gitAuthorParsed.name;\n config.gitAuthorEmail = gitAuthorParsed.address;\n}\n\nexport async function writeGitAuthor(): Promise<void> {\n const { gitAuthorName, gitAuthorEmail, writeGitDone } = config;\n /* v8 ignore next 3 -- TODO: add test */\n if (writeGitDone) {\n return;\n }\n config.writeGitDone = true;\n try {\n if (gitAuthorName) {\n logger.debug(`Setting git author name: ${gitAuthorName}`);\n await git.addConfig('user.name', gitAuthorName);\n }\n if (gitAuthorEmail) {\n logger.debug(`Setting git author email: ${gitAuthorEmail}`);\n await git.addConfig('user.email', gitAuthorEmail);\n }\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(\n { err, gitAuthorName, gitAuthorEmail },\n 'Error setting git author config',\n );\n throw new Error(TEMPORARY_ERROR);\n }\n}\n\nexport function setUserRepoConfig({\n gitIgnoredAuthors,\n gitAuthor,\n}: RenovateConfig): void {\n config.ignoredAuthors = gitIgnoredAuthors ?? [];\n setGitAuthor(gitAuthor);\n}\n\nexport async function getSubmodules(): Promise<string[]> {\n try {\n return (\n (await git.raw([\n 'config',\n '--file',\n '.gitmodules',\n '--get-regexp',\n '\\\\.path',\n ])) || ''\n )\n .trim()\n .split(regEx(/[\\n\\s]/))\n .filter((_e: string, i: number) => i % 2);\n /* v8 ignore next 4 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, 'Error getting submodules');\n return [];\n }\n}\n\nexport async function cloneSubmodules(\n shouldClone: boolean,\n cloneSubmodulesFilter: string[] | undefined,\n): Promise<void> {\n if (!shouldClone || submodulesInitizialized) {\n return;\n }\n submodulesInitizialized = true;\n await syncGit();\n const submodules = await getSubmodules();\n for (const submodule of submodules) {\n if (!matchRegexOrGlobList(submodule, cloneSubmodulesFilter ?? ['*'])) {\n logger.debug(\n { cloneSubmodulesFilter },\n `Skipping submodule ${submodule}`,\n );\n continue;\n }\n try {\n logger.debug(`Cloning git submodule at ${submodule}`);\n await gitRetry(() =>\n git.submoduleUpdate(['--init', '--recursive', submodule]),\n );\n } catch (err) {\n logger.warn({ err, submodule }, `Unable to initialise git submodule`);\n }\n }\n}\n\nexport function isCloned(): boolean {\n return gitInitialized;\n}\n\nexport async function syncGit(): Promise<void> {\n if (gitInitialized) {\n /* v8 ignore next 3 -- TODO: add test */\n if (getEnv().RENOVATE_X_CLEAR_HOOKS) {\n await git.raw(['config', 'core.hooksPath', '/dev/null']);\n }\n return;\n }\n /* v8 ignore next 3 -- failsafe TODO: add test */\n if (GlobalConfig.get('platform') === 'local') {\n throw new Error('Cannot sync git when platform=local');\n }\n gitInitialized = true;\n const localDir = GlobalConfig.get('localDir')!;\n logger.debug(`Initializing git repository into ${localDir}`);\n const gitHead = upath.join(localDir, '.git/HEAD');\n let clone = true;\n\n if (await fs.pathExists(gitHead)) {\n try {\n await git.raw(['remote', 'set-url', 'origin', config.url]);\n const fetchStart = Date.now();\n await gitRetry(() => git.fetch(['--prune', 'origin']));\n config.currentBranch =\n config.currentBranch || (await getDefaultBranch(git));\n await resetToBranch(config.currentBranch);\n await cleanLocalBranches();\n const durationMs = Math.round(Date.now() - fetchStart);\n logger.info({ durationMs }, 'git fetch completed');\n clone = false;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message === REPOSITORY_EMPTY) {\n throw err;\n }\n logger.info({ err }, 'git fetch error');\n }\n }\n if (clone) {\n const cloneStart = Date.now();\n try {\n const opts: string[] = [];\n if (config.defaultBranch) {\n opts.push('-b', config.defaultBranch);\n }\n if (config.fullClone) {\n logger.debug('Performing full clone');\n } else {\n logger.debug('Performing blobless clone');\n opts.push('--filter=blob:none');\n }\n if (config.extraCloneOpts) {\n Object.entries(config.extraCloneOpts).forEach((e) =>\n // TODO: types (#22198)\n opts.push(e[0], `${e[1]!}`),\n );\n }\n const emptyDirAndClone = async (): Promise<void> => {\n await fs.emptyDir(localDir);\n await git.clone(config.url, '.', opts);\n };\n await gitRetry(() => emptyDirAndClone());\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n logger.debug({ err }, 'git clone error');\n if (err.message?.includes('No space left on device')) {\n throw new Error(SYSTEM_INSUFFICIENT_DISK_SPACE);\n }\n if (err.message === REPOSITORY_EMPTY) {\n throw err;\n }\n throw new ExternalHostError(err, 'git');\n }\n const durationMs = Math.round(Date.now() - cloneStart);\n logger.debug({ durationMs }, 'git clone completed');\n }\n try {\n config.currentBranchSha = (\n await git.raw(['rev-parse', 'HEAD'])\n ).trim() as LongCommitSha;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: not a git repository')) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n // This will only happen now if set in global config\n await cloneSubmodules(!!config.cloneSubmodules, config.cloneSubmodulesFilter);\n try {\n const latestCommit = (await git.log({ n: 1 })).latest;\n logger.debug({ latestCommit }, 'latest repository commit');\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (err.message.includes('does not have any commits yet')) {\n throw new Error(REPOSITORY_EMPTY);\n }\n logger.warn({ err }, 'Cannot retrieve latest commit');\n }\n config.currentBranch =\n config.currentBranch ??\n config.defaultBranch ??\n (await getDefaultBranch(git));\n /* v8 ignore next -- TODO: add test */\n delete getCache()?.semanticCommits;\n}\n\nexport async function getRepoStatus(path?: string): Promise<StatusResult> {\n if (is.string(path)) {\n const localDir = GlobalConfig.get('localDir');\n const localPath = upath.resolve(localDir, path);\n if (!localPath.startsWith(upath.resolve(localDir))) {\n logger.warn(\n { localPath, localDir },\n 'Preventing access to file outside the local directory',\n );\n throw new Error(INVALID_PATH);\n }\n }\n\n await syncGit();\n return git.status(path ? [path] : []);\n}\n\nexport function branchExists(branchName: string): boolean {\n return !!config.branchCommits[branchName];\n}\n\n// Return the commit SHA for a branch\nexport function getBranchCommit(branchName: string): LongCommitSha | null {\n return config.branchCommits[branchName] || null;\n}\n\nexport async function getCommitMessages(): Promise<string[]> {\n logger.debug('getCommitMessages');\n if (GlobalConfig.get('platform') !== 'local') {\n await syncGit();\n }\n try {\n const res = await git.log({\n n: 20,\n format: { message: '%s' },\n });\n return res.all.map((commit) => commit.message);\n /* v8 ignore next 3 -- TODO: add test */\n } catch {\n return [];\n }\n}\n\nexport async function checkoutBranch(\n branchName: string,\n): Promise<LongCommitSha> {\n logger.debug(`Setting current branch to ${branchName}`);\n await syncGit();\n try {\n await gitRetry(() =>\n git.checkout(\n submodulesInitizialized\n ? ['-f', '--recurse-submodules', branchName, '--']\n : ['-f', branchName, '--'],\n ),\n );\n config.currentBranch = branchName;\n config.currentBranchSha = (\n await git.raw(['rev-parse', 'HEAD'])\n ).trim() as LongCommitSha;\n const latestCommitDate = (await git.log({ n: 1 }))?.latest?.date;\n if (latestCommitDate) {\n logger.debug({ branchName, latestCommitDate }, 'latest commit');\n }\n await git.reset(ResetMode.HARD);\n return config.currentBranchSha;\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n if (err.message?.includes('fatal: ambiguous argument')) {\n logger.warn({ err }, 'Failed to checkout branch');\n throw new Error(TEMPORARY_ERROR);\n }\n throw err;\n }\n}\n\nexport async function getFileList(): Promise<string[]> {\n await syncGit();\n const branch = config.currentBranch;\n let files: string;\n try {\n files = await git.raw(['ls-tree', '-r', `refs/heads/${branch}`]);\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: Not a valid object name')) {\n logger.debug(\n { err },\n 'Branch not found when checking branch list - aborting',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n /* v8 ignore next 3 -- TODO: add test */\n if (!files) {\n return [];\n }\n // submodules are starting with `160000 commit`\n return files\n .split(newlineRegex)\n .filter(is.string)\n .filter((line) => line.startsWith('100'))\n .map((line) => line.split(regEx(/\\t/)).pop()!);\n}\n\nexport function getBranchList(): string[] {\n return Object.keys(config.branchCommits ?? {});\n}\n\nexport async function isBranchBehindBase(\n branchName: string,\n baseBranch: string,\n): Promise<boolean> {\n const baseBranchSha = getBranchCommit(baseBranch);\n const branchSha = getBranchCommit(branchName);\n let isBehind = getCachedBehindBaseResult(\n branchName,\n branchSha,\n baseBranch,\n baseBranchSha,\n );\n if (isBehind !== null) {\n logger.debug(`branch.isBehindBase(): using cached result \"${isBehind}\"`);\n return isBehind;\n }\n\n logger.debug('branch.isBehindBase(): using git to calculate');\n\n await syncGit();\n try {\n const behindCount = (\n await git.raw(['rev-list', '--count', `${branchSha!}..${baseBranchSha!}`])\n ).trim();\n isBehind = behindCount !== '0';\n logger.debug(\n { baseBranch, branchName },\n `branch.isBehindBase(): ${isBehind}`,\n );\n setCachedBehindBaseResult(branchName, isBehind);\n return isBehind;\n /* v8 ignore next 7 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n throw err;\n }\n}\n\nexport async function isBranchModified(\n branchName: string,\n baseBranch: string,\n): Promise<boolean> {\n if (!branchExists(branchName)) {\n logger.debug('branch.isModified(): no cache');\n return false;\n }\n // First check local config\n if (config.branchIsModified[branchName] !== undefined) {\n return config.branchIsModified[branchName];\n }\n // Second check repository cache\n const isModified = getCachedModifiedResult(\n branchName,\n getBranchCommit(branchName), // branch sha\n );\n if (isModified !== null) {\n logger.debug(`branch.isModified(): using cached result \"${isModified}\"`);\n config.branchIsModified[branchName] = isModified;\n return isModified;\n }\n\n logger.debug('branch.isModified(): using git to calculate');\n\n await syncGit();\n const committedAuthors = new Set<string>();\n try {\n const commits = await git.log([\n `origin/${baseBranch}..origin/${branchName}`,\n ]);\n\n for (const commit of commits.all) {\n committedAuthors.add(commit.author_email);\n }\n /* v8 ignore next 10 -- TODO: add test */\n } catch (err) {\n if (err.message?.includes('fatal: bad revision')) {\n logger.debug(\n { err },\n 'Remote branch not found when checking last commit author - aborting run',\n );\n throw new Error(REPOSITORY_CHANGED);\n }\n logger.warn({ err }, 'Error checking last author for isBranchModified');\n }\n const { gitAuthorEmail, ignoredAuthors } = config;\n\n const includedAuthors = new Set(committedAuthors);\n\n if (gitAuthorEmail) {\n includedAuthors.delete(gitAuthorEmail);\n }\n\n for (const ignoredAuthor of ignoredAuthors) {\n includedAuthors.delete(ignoredAuthor);\n }\n\n if (includedAuthors.size === 0) {\n // authors all match - branch has not been modified\n logger.trace(\n {\n branchName,\n baseBranch,\n committedAuthors: [...committedAuthors],\n includedAuthors: [...includedAuthors],\n gitAuthorEmail,\n ignoredAuthors,\n },\n 'branch.isModified() = false',\n );\n logger.debug('branch.isModified() = false');\n config.branchIsModified[branchName] = false;\n setCachedModifiedResult(branchName, false);\n return false;\n }\n logger.trace(\n {\n branchName,\n baseBranch,\n committedAuthors: [...committedAuthors],\n includedAuthors: [...includedAuthors],\n gitAuthorEmail,\n ignoredAuthors,\n },\n 'branch.isModified() = true',\n );\n logger.debug(\n { branchName, unrecognizedAuthors: [...includedAuthors] },\n 'branch.isModified() = true',\n );\n config.branchIsModified[branchName] = true;\n setCachedModifiedResult(branchName, true);\n return true;\n}\n\nexport async function isBranchConflicted(\n baseBranch: string,\n branch: string,\n): Promise<boolean> {\n logger.debug(`isBranchConflicted(${baseBranch}, ${branch})`);\n\n const baseBranchSha = getBranchCommit(baseBranch);\n const branchSha = getBranchCommit(branch);\n if (!baseBranchSha || !branchSha) {\n logger.warn(\n { baseBranch, branch },\n 'isBranchConflicted: branch does not exist',\n );\n return true;\n }\n\n const isConflicted = getCachedConflictResult(\n branch,\n branchSha,\n baseBranch,\n baseBranchSha,\n );\n if (is.boolean(isConflicted)) {\n logger.debug(\n `branch.isConflicted(): using cached result \"${isConflicted}\"`,\n );\n return isConflicted;\n }\n\n logger.debug('branch.isConflicted(): using git to calculate');\n\n let result = false;\n await syncGit();\n await writeGitAuthor();\n\n const origBranch = config.currentBranch;\n try {\n await git.reset(ResetMode.HARD);\n //TODO: see #18600\n if (origBranch !== baseBranch) {\n await git.checkout(baseBranch);\n }\n await git.merge(['--no-commit', '--no-ff', `origin/${branch}`]);\n } catch (err) {\n result = true;\n /* v8 ignore next 6 -- TODO: add test */\n if (!err?.git?.conflicts?.length) {\n logger.debug(\n { baseBranch, branch, err },\n 'isBranchConflicted: unknown error',\n );\n }\n } finally {\n try {\n await git.merge(['--abort']);\n if (origBranch !== baseBranch) {\n await git.checkout(origBranch);\n }\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n logger.debug(\n { baseBranch, branch, err },\n 'isBranchConflicted: cleanup error',\n );\n }\n }\n\n setCachedConflictResult(branch, result);\n logger.debug(`branch.isConflicted(): ${result}`);\n return result;\n}\n\nexport async function deleteBranch(branchName: string): Promise<void> {\n await syncGit();\n try {\n const deleteCommand = ['push', '--delete', 'origin', branchName];\n\n if (getNoVerify().includes('push')) {\n deleteCommand.push('--no-verify');\n }\n\n await gitRetry(() => git.raw(deleteCommand));\n logger.debug(`Deleted remote branch: ${branchName}`);\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(`No remote branch to delete with name: ${branchName}`);\n }\n try {\n /* v8 ignore next 2 -- TODO: add test (always throws) */\n await deleteLocalBranch(branchName);\n logger.debug(`Deleted local branch: ${branchName}`);\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n logger.debug(`No local branch to delete with name: ${branchName}`);\n }\n delete config.branchCommits[branchName];\n}\n\nexport async function mergeToLocal(refSpecToMerge: string): Promise<void> {\n let status: StatusResult | undefined;\n try {\n await syncGit();\n await writeGitAuthor();\n await git.reset(ResetMode.HARD);\n await gitRetry(() =>\n git.checkout([\n '-B',\n config.currentBranch,\n 'origin/' + config.currentBranch,\n ]),\n );\n status = await git.status();\n await fetchRevSpec(refSpecToMerge);\n await gitRetry(() => git.merge(['FETCH_HEAD']));\n } catch (err) {\n logger.debug(\n {\n baseBranch: config.currentBranch,\n baseSha: config.currentBranchSha,\n refSpecToMerge,\n status,\n err,\n },\n 'mergeLocally error',\n );\n throw err;\n }\n}\n\nexport async function mergeBranch(branchName: string): Promise<void> {\n let status: StatusResult | undefined;\n try {\n await syncGit();\n await writeGitAuthor();\n await git.reset(ResetMode.HARD);\n await gitRetry(() =>\n git.checkout(['-B', branchName, 'origin/' + branchName]),\n );\n await gitRetry(() =>\n git.checkout([\n '-B',\n config.currentBranch,\n 'origin/' + config.currentBranch,\n ]),\n );\n status = await git.status();\n await gitRetry(() => git.merge(['--ff-only', branchName]));\n await gitRetry(() => git.push('origin', config.currentBranch));\n incLimitedValue('Commits');\n } catch (err) {\n logger.debug(\n {\n baseBranch: config.currentBranch,\n baseSha: config.currentBranchSha,\n branchName,\n branchSha: getBranchCommit(branchName),\n status,\n err,\n },\n 'mergeBranch error',\n );\n throw err;\n }\n}\n\nexport async function getBranchLastCommitTime(\n branchName: string,\n): Promise<Date> {\n await syncGit();\n try {\n const time = await git.show(['-s', '--format=%ai', 'origin/' + branchName]);\n return new Date(Date.parse(time));\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n return new Date();\n }\n}\n\nexport async function getBranchFiles(\n branchName: string,\n): Promise<string[] | null> {\n await syncGit();\n try {\n const diff = await gitRetry(() =>\n git.diffSummary([`origin/${branchName}`, `origin/${branchName}^`]),\n );\n return diff.files.map((file) => file.file);\n /* v8 ignore next 8 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, 'getBranchFiles error');\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n return null;\n }\n}\n\nexport async function getFile(\n filePath: string,\n branchName?: string,\n): Promise<string | null> {\n await syncGit();\n try {\n const content = await git.show([\n 'origin/' + (branchName ?? config.currentBranch) + ':' + filePath,\n ]);\n return content;\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n /* v8 ignore next 3 -- TODO: add test */\n if (errChecked) {\n throw errChecked;\n }\n return null;\n }\n}\n\nexport async function getFiles(\n fileNames: string[],\n): Promise<Record<string, string | null>> {\n const fileContentMap: Record<string, string | null> = {};\n\n for (const fileName of fileNames) {\n fileContentMap[fileName] = await getFile(fileName);\n }\n\n return fileContentMap;\n}\n\nexport async function hasDiff(\n sourceRef: string,\n targetRef: string,\n): Promise<boolean> {\n await syncGit();\n try {\n return (\n (await gitRetry(() => git.diff([sourceRef, targetRef, '--']))) !== ''\n );\n } catch {\n return true;\n }\n}\n\nasync function handleCommitAuth(localDir: string): Promise<void> {\n if (!privateKeySet) {\n await writePrivateKey();\n privateKeySet = true;\n }\n await configSigningKey(localDir);\n await writeGitAuthor();\n}\n\n/**\n *\n * Prepare local branch with commit\n *\n * 0. Hard reset\n * 1. Creates local branch with `origin/` prefix\n * 2. Perform `git add` (respecting mode) and `git remove` for each file\n * 3. Perform commit\n * 4. Check whether resulting commit is empty or not (due to .gitignore)\n * 5. If not empty, return commit info for further processing\n *\n */\nexport async function prepareCommit({\n branchName,\n files,\n message,\n force = false,\n}: CommitFilesConfig): Promise<CommitResult | null> {\n const localDir = GlobalConfig.get('localDir')!;\n await syncGit();\n logger.debug(`Preparing files for committing to branch ${branchName}`);\n await handleCommitAuth(localDir);\n try {\n await git.reset(ResetMode.HARD);\n await git.raw(['clean', '-fd']);\n const parentCommitSha = config.currentBranchSha;\n await gitRetry(() =>\n git.checkout(['-B', branchName, 'origin/' + config.currentBranch]),\n );\n const deletedFiles: string[] = [];\n const addedModifiedFiles: string[] = [];\n const ignoredFiles: string[] = [];\n for (const file of files) {\n const fileName = file.path;\n if (file.type === 'deletion') {\n try {\n await git.rm([fileName]);\n deletedFiles.push(fileName);\n /* v8 ignore next 8 -- TODO: add test */\n } catch (err) {\n const errChecked = checkForPlatformFailure(err);\n if (errChecked) {\n throw errChecked;\n }\n logger.trace({ err, fileName }, 'Cannot delete file');\n ignoredFiles.push(fileName);\n }\n } else {\n if (await isDirectory(upath.join(localDir, fileName))) {\n // This is usually a git submodule update\n logger.trace({ fileName }, 'Adding directory commit');\n } else if (file.contents === null) {\n continue;\n } else {\n let contents: Buffer;\n if (typeof file.contents === 'string') {\n contents = Buffer.from(file.contents);\n /* v8 ignore next 3 -- TODO: add test */\n } else {\n contents = file.contents;\n }\n // some file systems including Windows don't support the mode\n // so the index should be manually updated after adding the file\n if (file.isSymlink) {\n await fs.symlink(file.contents, upath.join(localDir, fileName));\n } else {\n await fs.outputFile(upath.join(localDir, fileName), contents, {\n mode: file.isExecutable ? 0o777 : 0o666,\n });\n }\n }\n try {\n /* v8 ignore next 2 -- TODO: add test */\n const addParams =\n fileName === configFileNames[0] ? ['-f', fileName] : fileName;\n await git.add(addParams);\n if (file.isExecutable) {\n await git.raw(['update-index', '--chmod=+x', fileName]);\n }\n addedModifiedFiles.push(fileName);\n /* v8 ignore next 11 -- TODO: add test */\n } catch (err) {\n if (\n !err.message.includes(\n 'The following paths are ignored by one of your .gitignore files',\n )\n ) {\n throw err;\n }\n logger.debug(`Cannot commit ignored file: ${fileName}`);\n ignoredFiles.push(file.path);\n }\n }\n }\n\n const commitOptions: Options = {};\n if (getNoVerify().includes('commit')) {\n commitOptions['--no-verify'] = null;\n }\n\n const commitRes = await git.commit(message, [], commitOptions);\n if (\n commitRes.summary &&\n commitRes.summary.changes === 0 &&\n commitRes.summary.insertions === 0 &&\n commitRes.summary.deletions === 0\n ) {\n logger.warn({ commitRes }, 'Detected empty commit - aborting git push');\n return null;\n }\n logger.debug(\n { deletedFiles, ignoredFiles, result: commitRes },\n `git commit`,\n );\n if (!force && !(await hasDiff('HEAD', `origin/${branchName}`))) {\n logger.debug(\n { branchName, deletedFiles, addedModifiedFiles, ignoredFiles },\n 'No file changes detected. Skipping commit',\n );\n return null;\n }\n\n const commitSha = (\n await git.revparse([branchName])\n ).trim() as LongCommitSha;\n const result: CommitResult = {\n parentCommitSha,\n commitSha,\n files: files.filter((fileChange) => {\n if (fileChange.type === 'deletion') {\n return deletedFiles.includes(fileChange.path);\n }\n return addedModifiedFiles.includes(fileChange.path);\n }),\n };\n\n return result;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n return handleCommitError(err, branchName, files);\n }\n}\n\nexport async function pushCommit({\n sourceRef,\n targetRef,\n files,\n}: PushFilesConfig): Promise<boolean> {\n await syncGit();\n logger.debug(`Pushing refSpec ${sourceRef}:${targetRef ?? sourceRef}`);\n let result = false;\n try {\n const pushOptions: TaskOptions = {\n '--force-with-lease': null,\n '-u': null,\n };\n if (getNoVerify().includes('push')) {\n pushOptions['--no-verify'] = null;\n }\n\n const pushRes = await gitRetry(() =>\n git.push('origin', `${sourceRef}:${targetRef ?? sourceRef}`, pushOptions),\n );\n delete pushRes.repo;\n logger.debug({ result: pushRes }, 'git push');\n incLimitedValue('Commits');\n result = true;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n handleCommitError(err, sourceRef, files);\n }\n return result;\n}\n\nexport async function fetchBranch(\n branchName: string,\n): Promise<LongCommitSha | null> {\n await syncGit();\n logger.debug(`Fetching branch ${branchName}`);\n try {\n const ref = `refs/heads/${branchName}:refs/remotes/origin/${branchName}`;\n await gitRetry(() => git.pull(['origin', ref, '--force']));\n const commit = (await git.revparse([branchName])).trim() as LongCommitSha;\n config.branchCommits[branchName] = commit;\n config.branchIsModified[branchName] = false;\n return commit;\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n return handleCommitError(err, branchName);\n }\n}\n\nexport async function commitFiles(\n commitConfig: CommitFilesConfig,\n): Promise<LongCommitSha | null> {\n try {\n const commitResult = await prepareCommit(commitConfig);\n if (commitResult) {\n const pushResult = await pushCommit({\n sourceRef: commitConfig.branchName,\n files: commitConfig.files,\n });\n if (pushResult) {\n const { branchName } = commitConfig;\n const { commitSha } = commitResult;\n config.branchCommits[branchName] = commitSha;\n config.branchIsModified[branchName] = false;\n return commitSha;\n }\n }\n return null;\n /* v8 ignore next 6 -- TODO: add test */\n } catch (err) {\n if (err.message.includes('[rejected] (stale info)')) {\n throw new Error(REPOSITORY_CHANGED);\n }\n throw err;\n }\n}\n\nexport function getUrl({\n protocol,\n auth,\n hostname,\n host,\n repository,\n}: {\n protocol?: GitProtocol;\n auth?: string;\n hostname?: string;\n host?: string;\n repository: string;\n}): string {\n if (protocol === 'ssh') {\n // TODO: types (#22198)\n return `git@${hostname!}:${repository}.git`;\n }\n return URL.format({\n protocol: protocol ?? 'https',\n auth,\n hostname,\n host,\n pathname: repository + '.git',\n });\n}\n\nlet remoteRefsExist = false;\n\n/**\n *\n * Non-branch refs allow us to store git objects without triggering CI pipelines.\n * It's useful for API-based branch rebasing.\n *\n * @see https://stackoverflow.com/questions/63866947/pushing-git-non-branch-references-to-a-remote/63868286\n *\n */\nexport async function pushCommitToRenovateRef(\n commitSha: string,\n refName: string,\n): Promise<void> {\n const fullRefName = `refs/renovate/branches/${refName}`;\n await git.raw(['update-ref', fullRefName, commitSha]);\n await git.push(['--force', 'origin', fullRefName]);\n remoteRefsExist = true;\n}\n\n/**\n *\n * Removes all remote \"refs/renovate/branches/*\" refs in two steps:\n *\n * Step 1: list refs\n *\n * $ git ls-remote origin \"refs/renovate/branches/*\"\n *\n * > cca38e9ea6d10946bdb2d0ca5a52c205783897aa refs/renovate/branches/foo\n * > 29ac154936c880068994e17eb7f12da7fdca70e5 refs/renovate/branches/bar\n * > 3fafaddc339894b6d4f97595940fd91af71d0355 refs/renovate/branches/baz\n * > ...\n *\n * Step 2:\n *\n * $ git push --delete origin refs/renovate/branches/foo refs/renovate/branches/bar refs/renovate/branches/baz\n *\n * If Step 2 fails because the repo doesn't allow bulk changes, we'll remove them one by one instead:\n *\n * $ git push --delete origin refs/renovate/branches/foo\n * $ git push --delete origin refs/renovate/branches/bar\n * $ git push --delete origin refs/renovate/branches/baz\n */\nexport async function clearRenovateRefs(): Promise<void> {\n if (!gitInitialized || !remoteRefsExist) {\n return;\n }\n\n logger.debug(`Cleaning up Renovate refs: refs/renovate/branches/*`);\n const renovateRefs: string[] = [];\n\n try {\n const rawOutput = await git.listRemote([\n config.url,\n 'refs/renovate/branches/*',\n ]);\n const refs = rawOutput\n .split(newlineRegex)\n .map((line) => line.replace(regEx(/[0-9a-f]+\\s+/i), '').trim())\n .filter((line) => line.startsWith('refs/renovate/branches/'));\n renovateRefs.push(...refs);\n /* v8 ignore next 3 -- TODO: add test */\n } catch (err) {\n logger.warn({ err }, `Renovate refs cleanup error`);\n }\n\n if (renovateRefs.length) {\n try {\n const pushOpts = ['--delete', 'origin', ...renovateRefs];\n await git.push(pushOpts);\n } catch (err) {\n if (bulkChangesDisallowed(err)) {\n for (const ref of renovateRefs) {\n try {\n const pushOpts = ['--delete', 'origin', ref];\n await git.push(pushOpts);\n /* v8 ignore next 4 -- TODO: add test */\n } catch (err) {\n logger.debug({ err }, 'Error deleting \"refs/renovate/branches/*\"');\n break;\n }\n }\n /* v8 ignore next 3 -- TODO: add test */\n } else {\n logger.warn({ err }, 'Error deleting \"refs/renovate/branches/*\"');\n }\n }\n }\n\n remoteRefsExist = false;\n}\n\nconst treeItemRegex = regEx(\n /^(?<mode>\\d{6})\\s+(?<type>blob|tree|commit)\\s+(?<sha>[0-9a-f]{40})\\s+(?<path>.*)$/,\n);\n\nconst treeShaRegex = regEx(/tree\\s+(?<treeSha>[0-9a-f]{40})\\s*/);\n\n/**\n *\n * Obtain top-level items of commit tree.\n * We don't need subtree items, so here are 2 steps only.\n *\n * Step 1: commit SHA -> tree SHA\n *\n * $ git cat-file -p <commit-sha>\n *\n * > tree <tree-sha>\n * > parent 59b8b0e79319b7dc38f7a29d618628f3b44c2fd7\n * > ...\n *\n * Step 2: tree SHA -> tree items (top-level)\n *\n * $ git cat-file -p <tree-sha>\n *\n * > 040000 tree 389400684d1f004960addc752be13097fe85d776 src\n * > ...\n * > 100644 blob 7d2edde437ad4e7bceb70dbfe70e93350d99c98b package.json\n *\n */\nexport async function listCommitTree(\n commitSha: LongCommitSha,\n): Promise<TreeItem[]> {\n const commitOutput = await git.catFile(['-p', commitSha]);\n const { treeSha } =\n /* v8 ignore next -- will never happen ? */\n treeShaRegex.exec(commitOutput)?.groups ?? {};\n const contents = await git.catFile(['-p', treeSha]);\n const lines = contents.split(newlineRegex);\n const result: TreeItem[] = [];\n for (const line of lines) {\n const matchGroups = treeItemRegex.exec(line)?.groups;\n if (matchGroups) {\n const { path, mode, type, sha } = matchGroups;\n result.push({ path, mode, type, sha: sha as LongCommitSha });\n }\n }\n return result;\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import type { AllConfig, RenovateConfig } from '../../../config/types';
2
2
  import type { RepoFileConfig } from './types';
3
3
  export declare function detectConfigFile(): Promise<string | null>;
4
- export declare function detectRepoFileConfig(): Promise<RepoFileConfig>;
4
+ export declare function detectRepoFileConfig(branchName?: string): Promise<RepoFileConfig>;
5
5
  export declare function checkForRepoConfigError(repoConfig: RepoFileConfig): void;
6
- export declare function mergeRenovateConfig(config: RenovateConfig): Promise<RenovateConfig>;
6
+ export declare function mergeRenovateConfig(config: RenovateConfig, branchName?: string): Promise<RenovateConfig>;
7
7
  /** needed when using portal secrets for npmToken */
8
8
  export declare function setNpmTokenInNpmrc(config: RenovateConfig): void;
9
9
  export declare function mergeStaticRepoEnvConfig(config: AllConfig, env: NodeJS.ProcessEnv): Promise<AllConfig>;
@@ -57,13 +57,13 @@ async function detectConfigFile() {
57
57
  }
58
58
  return null;
59
59
  }
60
- async function detectRepoFileConfig() {
60
+ async function detectRepoFileConfig(branchName) {
61
61
  const cache = (0, repository_1.getCache)();
62
62
  let { configFileName } = cache;
63
63
  if (is_1.default.nonEmptyString(configFileName)) {
64
64
  let configFileRaw;
65
65
  try {
66
- configFileRaw = await platform_1.platform.getRawFile(configFileName);
66
+ configFileRaw = await platform_1.platform.getRawFile(configFileName, undefined, branchName);
67
67
  }
68
68
  catch (err) {
69
69
  // istanbul ignore if
@@ -157,11 +157,11 @@ function checkForRepoConfigError(repoConfig) {
157
157
  throw error;
158
158
  }
159
159
  // Check for repository config
160
- async function mergeRenovateConfig(config) {
160
+ async function mergeRenovateConfig(config, branchName) {
161
161
  let returnConfig = { ...config };
162
162
  let repoConfig = {};
163
163
  if (config.requireConfig !== 'ignored') {
164
- repoConfig = await detectRepoFileConfig();
164
+ repoConfig = await detectRepoFileConfig(branchName);
165
165
  }
166
166
  if (!repoConfig.configFileParsed && config.mode === 'silent') {
167
167
  logger_1.logger.debug('When mode=silent and repo has no config file, we use the onboarding config as repo config');
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/merge.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../config';\nimport { configFileNames } from '../../../config/app-strings';\nimport { decryptConfig } from '../../../config/decrypt';\nimport { migrateAndValidate } from '../../../config/migrate-validate';\nimport { migrateConfig } from '../../../config/migration';\nimport { parseFileConfig } from '../../../config/parse';\nimport * as presets from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { AllConfig, RenovateConfig } from '../../../config/types';\nimport {\n CONFIG_VALIDATION,\n REPOSITORY_CHANGED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport * as npmApi from '../../../modules/datasource/npm';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { getCache } from '../../../util/cache/repository';\nimport { parseJson } from '../../../util/common';\nimport { setUserEnv } from '../../../util/env';\nimport { readLocalFile } from '../../../util/fs';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport { maskToken } from '../../../util/mask';\nimport { regEx } from '../../../util/regex';\nimport { parseAndValidateOrExit } from '../../global/config/parse/env';\nimport { getOnboardingConfig } from '../onboarding/branch/config';\nimport { getDefaultConfigFileName } from '../onboarding/branch/create';\nimport {\n getOnboardingConfigFromCache,\n getOnboardingFileNameFromCache,\n setOnboardingConfigDetails,\n} from '../onboarding/branch/onboarding-branch-cache';\nimport { OnboardingState } from '../onboarding/common';\nimport type { RepoFileConfig } from './types';\n\nexport async function detectConfigFile(): Promise<string | null> {\n const fileList = await scm.getFileList();\n for (const fileName of configFileNames) {\n if (fileName === 'package.json') {\n try {\n const pJson = JSON.parse(\n (await readLocalFile('package.json', 'utf8'))!,\n );\n if (pJson.renovate) {\n logger.warn(\n 'Using package.json for Renovate config is deprecated - please use a dedicated configuration file instead',\n );\n return 'package.json';\n }\n } catch {\n // Do nothing\n }\n } else if (fileList.includes(fileName)) {\n return fileName;\n }\n }\n return null;\n}\n\nexport async function detectRepoFileConfig(): Promise<RepoFileConfig> {\n const cache = getCache();\n let { configFileName } = cache;\n if (is.nonEmptyString(configFileName)) {\n let configFileRaw: string | null;\n try {\n configFileRaw = await platform.getRawFile(configFileName);\n } catch (err) {\n // istanbul ignore if\n if (err instanceof ExternalHostError) {\n throw err;\n }\n configFileRaw = null;\n }\n if (configFileRaw) {\n let configFileParsed = parseJson(configFileRaw, configFileName) as any;\n if (configFileName === 'package.json') {\n configFileParsed = configFileParsed.renovate;\n }\n return { configFileName, configFileParsed };\n } else {\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n configFileName = getOnboardingFileNameFromCache();\n } else {\n configFileName = (await detectConfigFile()) ?? undefined;\n }\n\n if (!configFileName) {\n logger.debug('No renovate config file found');\n cache.configFileName = '';\n return {};\n }\n cache.configFileName = configFileName;\n logger.debug(`Found ${configFileName} config file`);\n // TODO #22198\n let configFileParsed: any;\n let configFileRaw: string | undefined | null;\n\n if (OnboardingState.onboardingCacheValid) {\n const cachedConfig = getOnboardingConfigFromCache();\n const parsedConfig = cachedConfig ? JSON.parse(cachedConfig) : undefined;\n if (parsedConfig) {\n setOnboardingConfigDetails(configFileName, JSON.stringify(parsedConfig));\n return { configFileName, configFileParsed: parsedConfig };\n }\n }\n\n if (configFileName === 'package.json') {\n // We already know it parses\n configFileParsed = JSON.parse(\n // TODO #22198\n (await readLocalFile('package.json', 'utf8'))!,\n ).renovate;\n if (is.string(configFileParsed)) {\n logger.debug('Massaging string renovate config to extends array');\n configFileParsed = { extends: [configFileParsed] };\n }\n logger.debug({ config: configFileParsed }, 'package.json>renovate config');\n } else {\n configFileRaw = await readLocalFile(configFileName, 'utf8');\n // istanbul ignore if\n if (!is.string(configFileRaw)) {\n logger.warn({ configFileName }, 'Null contents when reading config file');\n throw new Error(REPOSITORY_CHANGED);\n }\n // istanbul ignore if\n if (!configFileRaw.length) {\n configFileRaw = '{}';\n }\n\n const parseResult = parseFileConfig(configFileName, configFileRaw);\n\n if (!parseResult.success) {\n return {\n configFileName,\n configFileParseError: {\n validationError: parseResult.validationError,\n validationMessage: parseResult.validationMessage,\n },\n };\n }\n configFileParsed = parseResult.parsedContents;\n logger.debug(\n { fileName: configFileName, config: configFileParsed },\n 'Repository config',\n );\n }\n\n setOnboardingConfigDetails(configFileName, JSON.stringify(configFileParsed));\n return { configFileName, configFileParsed };\n}\n\nexport function checkForRepoConfigError(repoConfig: RepoFileConfig): void {\n if (!repoConfig.configFileParseError) {\n return;\n }\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError = repoConfig.configFileParseError.validationError;\n error.validationMessage = repoConfig.configFileParseError.validationMessage;\n throw error;\n}\n\n// Check for repository config\nexport async function mergeRenovateConfig(\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n let returnConfig = { ...config };\n let repoConfig: RepoFileConfig = {};\n if (config.requireConfig !== 'ignored') {\n repoConfig = await detectRepoFileConfig();\n }\n if (!repoConfig.configFileParsed && config.mode === 'silent') {\n logger.debug(\n 'When mode=silent and repo has no config file, we use the onboarding config as repo config',\n );\n const configFileName = getDefaultConfigFileName(config);\n repoConfig = {\n configFileName,\n configFileParsed: await getOnboardingConfig(config),\n };\n }\n const configFileParsed = repoConfig?.configFileParsed ?? {};\n // I think we do not need to use combined env here as static repo config is meant to be in the env var and not file/repo config\n const configFileAndEnv = await mergeStaticRepoEnvConfig(\n configFileParsed,\n process.env,\n );\n if (is.nonEmptyArray(returnConfig.extends)) {\n configFileAndEnv.extends = [\n ...returnConfig.extends,\n ...(configFileAndEnv.extends ?? []),\n ];\n delete returnConfig.extends;\n }\n checkForRepoConfigError(repoConfig);\n const migratedConfig = await migrateAndValidate(config, configFileAndEnv);\n if (migratedConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError =\n 'The renovate configuration file contains some invalid settings';\n error.validationMessage = migratedConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n if (migratedConfig.warnings) {\n returnConfig.warnings = [\n ...(returnConfig.warnings ?? []),\n ...migratedConfig.warnings,\n ];\n }\n delete migratedConfig.errors;\n delete migratedConfig.warnings;\n // TODO #22198\n const repository = config.repository!;\n // Decrypt before resolving in case we need npm authentication for any presets\n const decryptedConfig = await decryptConfig(migratedConfig, repository);\n setNpmTokenInNpmrc(decryptedConfig);\n // istanbul ignore if\n if (is.string(decryptedConfig.npmrc)) {\n logger.debug('Found npmrc in decrypted config - setting');\n npmApi.setNpmrc(decryptedConfig.npmrc);\n }\n // Decrypt after resolving in case the preset contains npm authentication instead\n let resolvedConfig = await decryptConfig(\n await presets.resolveConfigPresets(\n decryptedConfig,\n config,\n config.ignorePresets,\n ),\n repository,\n );\n logger.trace({ config: resolvedConfig }, 'resolved config');\n const migrationResult = migrateConfig(resolvedConfig);\n if (migrationResult.isMigrated) {\n logger.debug('Resolved config needs migrating');\n logger.trace({ config: resolvedConfig }, 'resolved config after migrating');\n resolvedConfig = migrationResult.migratedConfig;\n }\n setNpmTokenInNpmrc(resolvedConfig);\n // istanbul ignore if\n if (is.string(resolvedConfig.npmrc)) {\n logger.debug(\n 'Ignoring any .npmrc files in repository due to configured npmrc',\n );\n npmApi.setNpmrc(resolvedConfig.npmrc);\n }\n resolvedConfig = applySecretsToConfig(\n resolvedConfig,\n mergeChildConfig(config.secrets ?? {}, resolvedConfig.secrets ?? {}),\n );\n // istanbul ignore if\n if (resolvedConfig.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of resolvedConfig.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete resolvedConfig.hostRules;\n }\n returnConfig = mergeChildConfig(returnConfig, resolvedConfig);\n returnConfig = await presets.resolveConfigPresets(returnConfig, config);\n returnConfig.renovateJsonPresent = true;\n // istanbul ignore if\n if (returnConfig.ignorePaths?.length) {\n logger.debug(\n { ignorePaths: returnConfig.ignorePaths },\n `Found repo ignorePaths`,\n );\n }\n\n setUserEnv(returnConfig.env);\n delete returnConfig.env;\n\n return returnConfig;\n}\n\n/** needed when using portal secrets for npmToken */\nexport function setNpmTokenInNpmrc(config: RenovateConfig): void {\n if (!is.string(config.npmToken)) {\n return;\n }\n\n const token = config.npmToken;\n logger.debug({ npmToken: maskToken(token) }, 'Migrating npmToken to npmrc');\n\n if (!is.string(config.npmrc)) {\n logger.debug('Adding npmrc to config');\n config.npmrc = `//registry.npmjs.org/:_authToken=${token}\\n`;\n delete config.npmToken;\n return;\n }\n\n if (config.npmrc.includes(`\\${NPM_TOKEN}`)) {\n logger.debug(`Replacing \\${NPM_TOKEN} with npmToken`);\n config.npmrc = config.npmrc.replace(regEx(/\\${NPM_TOKEN}/g), token);\n } else {\n logger.debug('Appending _authToken= to end of existing npmrc');\n config.npmrc = config.npmrc.replace(\n regEx(/\\n?$/),\n `\\n_authToken=${token}\\n`,\n );\n }\n\n delete config.npmToken;\n}\n\nexport async function mergeStaticRepoEnvConfig(\n config: AllConfig,\n env: NodeJS.ProcessEnv,\n): Promise<AllConfig> {\n const repoEnvConfig = await parseAndValidateOrExit(\n env,\n 'RENOVATE_STATIC_REPO_CONFIG',\n );\n\n if (!is.nonEmptyObject(repoEnvConfig)) {\n return config;\n }\n\n return mergeChildConfig(config, repoEnvConfig);\n}\n"]}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../lib/workers/repository/init/merge.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { mergeChildConfig } from '../../../config';\nimport { configFileNames } from '../../../config/app-strings';\nimport { decryptConfig } from '../../../config/decrypt';\nimport { migrateAndValidate } from '../../../config/migrate-validate';\nimport { migrateConfig } from '../../../config/migration';\nimport { parseFileConfig } from '../../../config/parse';\nimport * as presets from '../../../config/presets';\nimport { applySecretsToConfig } from '../../../config/secrets';\nimport type { AllConfig, RenovateConfig } from '../../../config/types';\nimport {\n CONFIG_VALIDATION,\n REPOSITORY_CHANGED,\n} from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport * as npmApi from '../../../modules/datasource/npm';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { getCache } from '../../../util/cache/repository';\nimport { parseJson } from '../../../util/common';\nimport { setUserEnv } from '../../../util/env';\nimport { readLocalFile } from '../../../util/fs';\nimport * as hostRules from '../../../util/host-rules';\nimport * as queue from '../../../util/http/queue';\nimport * as throttle from '../../../util/http/throttle';\nimport { maskToken } from '../../../util/mask';\nimport { regEx } from '../../../util/regex';\nimport { parseAndValidateOrExit } from '../../global/config/parse/env';\nimport { getOnboardingConfig } from '../onboarding/branch/config';\nimport { getDefaultConfigFileName } from '../onboarding/branch/create';\nimport {\n getOnboardingConfigFromCache,\n getOnboardingFileNameFromCache,\n setOnboardingConfigDetails,\n} from '../onboarding/branch/onboarding-branch-cache';\nimport { OnboardingState } from '../onboarding/common';\nimport type { RepoFileConfig } from './types';\n\nexport async function detectConfigFile(): Promise<string | null> {\n const fileList = await scm.getFileList();\n for (const fileName of configFileNames) {\n if (fileName === 'package.json') {\n try {\n const pJson = JSON.parse(\n (await readLocalFile('package.json', 'utf8'))!,\n );\n if (pJson.renovate) {\n logger.warn(\n 'Using package.json for Renovate config is deprecated - please use a dedicated configuration file instead',\n );\n return 'package.json';\n }\n } catch {\n // Do nothing\n }\n } else if (fileList.includes(fileName)) {\n return fileName;\n }\n }\n return null;\n}\n\nexport async function detectRepoFileConfig(\n branchName?: string,\n): Promise<RepoFileConfig> {\n const cache = getCache();\n let { configFileName } = cache;\n if (is.nonEmptyString(configFileName)) {\n let configFileRaw: string | null;\n try {\n configFileRaw = await platform.getRawFile(\n configFileName,\n undefined,\n branchName,\n );\n } catch (err) {\n // istanbul ignore if\n if (err instanceof ExternalHostError) {\n throw err;\n }\n configFileRaw = null;\n }\n if (configFileRaw) {\n let configFileParsed = parseJson(configFileRaw, configFileName) as any;\n if (configFileName === 'package.json') {\n configFileParsed = configFileParsed.renovate;\n }\n return { configFileName, configFileParsed };\n } else {\n logger.debug('Existing config file no longer exists');\n delete cache.configFileName;\n }\n }\n\n if (OnboardingState.onboardingCacheValid) {\n configFileName = getOnboardingFileNameFromCache();\n } else {\n configFileName = (await detectConfigFile()) ?? undefined;\n }\n\n if (!configFileName) {\n logger.debug('No renovate config file found');\n cache.configFileName = '';\n return {};\n }\n cache.configFileName = configFileName;\n logger.debug(`Found ${configFileName} config file`);\n // TODO #22198\n let configFileParsed: any;\n let configFileRaw: string | undefined | null;\n\n if (OnboardingState.onboardingCacheValid) {\n const cachedConfig = getOnboardingConfigFromCache();\n const parsedConfig = cachedConfig ? JSON.parse(cachedConfig) : undefined;\n if (parsedConfig) {\n setOnboardingConfigDetails(configFileName, JSON.stringify(parsedConfig));\n return { configFileName, configFileParsed: parsedConfig };\n }\n }\n\n if (configFileName === 'package.json') {\n // We already know it parses\n configFileParsed = JSON.parse(\n // TODO #22198\n (await readLocalFile('package.json', 'utf8'))!,\n ).renovate;\n if (is.string(configFileParsed)) {\n logger.debug('Massaging string renovate config to extends array');\n configFileParsed = { extends: [configFileParsed] };\n }\n logger.debug({ config: configFileParsed }, 'package.json>renovate config');\n } else {\n configFileRaw = await readLocalFile(configFileName, 'utf8');\n // istanbul ignore if\n if (!is.string(configFileRaw)) {\n logger.warn({ configFileName }, 'Null contents when reading config file');\n throw new Error(REPOSITORY_CHANGED);\n }\n // istanbul ignore if\n if (!configFileRaw.length) {\n configFileRaw = '{}';\n }\n\n const parseResult = parseFileConfig(configFileName, configFileRaw);\n\n if (!parseResult.success) {\n return {\n configFileName,\n configFileParseError: {\n validationError: parseResult.validationError,\n validationMessage: parseResult.validationMessage,\n },\n };\n }\n configFileParsed = parseResult.parsedContents;\n logger.debug(\n { fileName: configFileName, config: configFileParsed },\n 'Repository config',\n );\n }\n\n setOnboardingConfigDetails(configFileName, JSON.stringify(configFileParsed));\n return { configFileName, configFileParsed };\n}\n\nexport function checkForRepoConfigError(repoConfig: RepoFileConfig): void {\n if (!repoConfig.configFileParseError) {\n return;\n }\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError = repoConfig.configFileParseError.validationError;\n error.validationMessage = repoConfig.configFileParseError.validationMessage;\n throw error;\n}\n\n// Check for repository config\nexport async function mergeRenovateConfig(\n config: RenovateConfig,\n branchName?: string,\n): Promise<RenovateConfig> {\n let returnConfig = { ...config };\n let repoConfig: RepoFileConfig = {};\n if (config.requireConfig !== 'ignored') {\n repoConfig = await detectRepoFileConfig(branchName);\n }\n if (!repoConfig.configFileParsed && config.mode === 'silent') {\n logger.debug(\n 'When mode=silent and repo has no config file, we use the onboarding config as repo config',\n );\n const configFileName = getDefaultConfigFileName(config);\n repoConfig = {\n configFileName,\n configFileParsed: await getOnboardingConfig(config),\n };\n }\n const configFileParsed = repoConfig?.configFileParsed ?? {};\n // I think we do not need to use combined env here as static repo config is meant to be in the env var and not file/repo config\n const configFileAndEnv = await mergeStaticRepoEnvConfig(\n configFileParsed,\n process.env,\n );\n if (is.nonEmptyArray(returnConfig.extends)) {\n configFileAndEnv.extends = [\n ...returnConfig.extends,\n ...(configFileAndEnv.extends ?? []),\n ];\n delete returnConfig.extends;\n }\n checkForRepoConfigError(repoConfig);\n const migratedConfig = await migrateAndValidate(config, configFileAndEnv);\n if (migratedConfig.errors?.length) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = repoConfig.configFileName;\n error.validationError =\n 'The renovate configuration file contains some invalid settings';\n error.validationMessage = migratedConfig.errors\n .map((e) => e.message)\n .join(', ');\n throw error;\n }\n if (migratedConfig.warnings) {\n returnConfig.warnings = [\n ...(returnConfig.warnings ?? []),\n ...migratedConfig.warnings,\n ];\n }\n delete migratedConfig.errors;\n delete migratedConfig.warnings;\n // TODO #22198\n const repository = config.repository!;\n // Decrypt before resolving in case we need npm authentication for any presets\n const decryptedConfig = await decryptConfig(migratedConfig, repository);\n setNpmTokenInNpmrc(decryptedConfig);\n // istanbul ignore if\n if (is.string(decryptedConfig.npmrc)) {\n logger.debug('Found npmrc in decrypted config - setting');\n npmApi.setNpmrc(decryptedConfig.npmrc);\n }\n // Decrypt after resolving in case the preset contains npm authentication instead\n let resolvedConfig = await decryptConfig(\n await presets.resolveConfigPresets(\n decryptedConfig,\n config,\n config.ignorePresets,\n ),\n repository,\n );\n logger.trace({ config: resolvedConfig }, 'resolved config');\n const migrationResult = migrateConfig(resolvedConfig);\n if (migrationResult.isMigrated) {\n logger.debug('Resolved config needs migrating');\n logger.trace({ config: resolvedConfig }, 'resolved config after migrating');\n resolvedConfig = migrationResult.migratedConfig;\n }\n setNpmTokenInNpmrc(resolvedConfig);\n // istanbul ignore if\n if (is.string(resolvedConfig.npmrc)) {\n logger.debug(\n 'Ignoring any .npmrc files in repository due to configured npmrc',\n );\n npmApi.setNpmrc(resolvedConfig.npmrc);\n }\n resolvedConfig = applySecretsToConfig(\n resolvedConfig,\n mergeChildConfig(config.secrets ?? {}, resolvedConfig.secrets ?? {}),\n );\n // istanbul ignore if\n if (resolvedConfig.hostRules) {\n logger.debug('Setting hostRules from config');\n for (const rule of resolvedConfig.hostRules) {\n try {\n hostRules.add(rule);\n } catch (err) {\n logger.warn(\n { err, config: rule },\n 'Error setting hostRule from config',\n );\n }\n }\n // host rules can change concurrency\n queue.clear();\n throttle.clear();\n delete resolvedConfig.hostRules;\n }\n returnConfig = mergeChildConfig(returnConfig, resolvedConfig);\n returnConfig = await presets.resolveConfigPresets(returnConfig, config);\n returnConfig.renovateJsonPresent = true;\n // istanbul ignore if\n if (returnConfig.ignorePaths?.length) {\n logger.debug(\n { ignorePaths: returnConfig.ignorePaths },\n `Found repo ignorePaths`,\n );\n }\n\n setUserEnv(returnConfig.env);\n delete returnConfig.env;\n\n return returnConfig;\n}\n\n/** needed when using portal secrets for npmToken */\nexport function setNpmTokenInNpmrc(config: RenovateConfig): void {\n if (!is.string(config.npmToken)) {\n return;\n }\n\n const token = config.npmToken;\n logger.debug({ npmToken: maskToken(token) }, 'Migrating npmToken to npmrc');\n\n if (!is.string(config.npmrc)) {\n logger.debug('Adding npmrc to config');\n config.npmrc = `//registry.npmjs.org/:_authToken=${token}\\n`;\n delete config.npmToken;\n return;\n }\n\n if (config.npmrc.includes(`\\${NPM_TOKEN}`)) {\n logger.debug(`Replacing \\${NPM_TOKEN} with npmToken`);\n config.npmrc = config.npmrc.replace(regEx(/\\${NPM_TOKEN}/g), token);\n } else {\n logger.debug('Appending _authToken= to end of existing npmrc');\n config.npmrc = config.npmrc.replace(\n regEx(/\\n?$/),\n `\\n_authToken=${token}\\n`,\n );\n }\n\n delete config.npmToken;\n}\n\nexport async function mergeStaticRepoEnvConfig(\n config: AllConfig,\n env: NodeJS.ProcessEnv,\n): Promise<AllConfig> {\n const repoEnvConfig = await parseAndValidateOrExit(\n env,\n 'RENOVATE_STATIC_REPO_CONFIG',\n );\n\n if (!is.nonEmptyObject(repoEnvConfig)) {\n return config;\n }\n\n return mergeChildConfig(config, repoEnvConfig);\n}\n"]}
@@ -18,6 +18,6 @@ export interface Stats {
18
18
  total: StatsResult;
19
19
  }
20
20
  export declare function isCacheExtractValid(baseBranchSha: string, configHash: string, cachedExtract?: BaseBranchCache): boolean;
21
- export declare function extract(config: RenovateConfig): Promise<Record<string, PackageFile[]>>;
21
+ export declare function extract(config: RenovateConfig, overwriteCache?: boolean): Promise<Record<string, PackageFile[]>>;
22
22
  export declare function lookup(config: RenovateConfig, packageFiles: Record<string, PackageFile[]>): Promise<ExtractResult>;
23
23
  export declare function update(config: RenovateConfig, branches: BranchConfig[]): Promise<WriteUpdateResult | undefined>;
@@ -91,7 +91,7 @@ function isCacheExtractValid(baseBranchSha, configHash, cachedExtract) {
91
91
  logger_1.logger.debug(`Cached extract for sha=${baseBranchSha} is valid and can be used`);
92
92
  return true;
93
93
  }
94
- async function extract(config) {
94
+ async function extract(config, overwriteCache = true) {
95
95
  logger_1.logger.debug('extract()');
96
96
  const { baseBranch } = config;
97
97
  const baseBranchSha = await scm_1.scm.getBranchCommit(baseBranch);
@@ -101,7 +101,8 @@ async function extract(config) {
101
101
  const cachedExtract = cache.scan[baseBranch];
102
102
  const configHash = (0, fingerprint_1.fingerprint)((0, extract_fingerprint_config_1.generateFingerprintConfig)(config));
103
103
  // istanbul ignore if
104
- if (isCacheExtractValid(baseBranchSha, configHash, cachedExtract)) {
104
+ if (overwriteCache &&
105
+ isCacheExtractValid(baseBranchSha, configHash, cachedExtract)) {
105
106
  packageFiles = cachedExtract.packageFiles;
106
107
  try {
107
108
  for (const files of Object.values(packageFiles)) {
@@ -122,14 +123,16 @@ async function extract(config) {
122
123
  const extractResult = (await (0, extract_1.extractAllDependencies)(config)) || {};
123
124
  packageFiles = extractResult.packageFiles;
124
125
  const { extractionFingerprints } = extractResult;
125
- // TODO: fix types (#22198)
126
- cache.scan[baseBranch] = {
127
- revision: exports.EXTRACT_CACHE_REVISION,
128
- sha: baseBranchSha,
129
- configHash,
130
- extractionFingerprints,
131
- packageFiles,
132
- };
126
+ if (overwriteCache) {
127
+ // TODO: fix types (#22198)
128
+ cache.scan[baseBranch] = {
129
+ revision: exports.EXTRACT_CACHE_REVISION,
130
+ sha: baseBranchSha,
131
+ configHash,
132
+ extractionFingerprints,
133
+ packageFiles,
134
+ };
135
+ }
133
136
  // Clean up cached branch extracts
134
137
  const baseBranches = is_1.default.nonEmptyArray(config.baseBranches)
135
138
  ? config.baseBranches
@@ -1 +1 @@
1
- {"version":3,"file":"extract-update.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/extract-update.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport { hashMap } from '../../../modules/manager';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { scm } from '../../../modules/platform/scm';\nimport * as memCache from '../../../util/cache/memory';\nimport { getCache } from '../../../util/cache/repository';\nimport type { BaseBranchCache } from '../../../util/cache/repository/types';\nimport { checkGithubToken as ensureGithubToken } from '../../../util/check-token';\nimport { fingerprint } from '../../../util/fingerprint';\nimport type { BranchConfig } from '../../types';\nimport { extractAllDependencies } from '../extract';\nimport { generateFingerprintConfig } from '../extract/extract-fingerprint-config';\nimport { branchifyUpgrades } from '../updates/branchify';\nimport { fetchUpdates } from './fetch';\nimport { calculateLibYears } from './libyear';\nimport { sortBranches } from './sort';\nimport { Vulnerabilities } from './vulnerabilities';\nimport type { WriteUpdateResult } from './write';\nimport { writeUpdates } from './write';\n\n// Increment this if needing to cache bust ALL extract caches\nexport const EXTRACT_CACHE_REVISION = 1;\n\nexport interface ExtractResult {\n branches: BranchConfig[];\n branchList: string[];\n packageFiles: Record<string, PackageFile[]>;\n}\n\nexport interface StatsResult {\n fileCount: number;\n depCount: number;\n}\n\nexport interface Stats {\n managers: Record<string, StatsResult>;\n total: StatsResult;\n}\n\n// istanbul ignore next\nfunction extractStats(\n packageFiles: Record<string, PackageFile[]>,\n): Stats | null {\n if (!packageFiles) {\n return null;\n }\n const stats: Stats = {\n managers: {},\n total: {\n fileCount: 0,\n depCount: 0,\n },\n };\n for (const [manager, managerPackageFiles] of Object.entries(packageFiles)) {\n const fileCount = managerPackageFiles.length;\n let depCount = 0;\n for (const file of managerPackageFiles) {\n depCount += file.deps.length;\n }\n stats.managers[manager] = {\n fileCount,\n depCount,\n };\n stats.total.fileCount += fileCount;\n stats.total.depCount += depCount;\n }\n return stats;\n}\n\nexport function isCacheExtractValid(\n baseBranchSha: string,\n configHash: string,\n cachedExtract?: BaseBranchCache,\n): boolean {\n if (!cachedExtract) {\n return false;\n }\n\n if (!cachedExtract.revision) {\n logger.debug('Cached extract is missing revision, so cannot be used');\n return false;\n }\n\n if (cachedExtract.revision !== EXTRACT_CACHE_REVISION) {\n logger.debug(\n `Extract cache revision has changed (old=${cachedExtract.revision}, new=${EXTRACT_CACHE_REVISION})`,\n );\n return false;\n }\n\n if (!(cachedExtract.sha && cachedExtract.configHash)) {\n return false;\n }\n if (cachedExtract.sha !== baseBranchSha) {\n logger.debug(\n `Cached extract result cannot be used due to base branch SHA change (old=${cachedExtract.sha}, new=${baseBranchSha})`,\n );\n return false;\n }\n if (cachedExtract.configHash !== configHash) {\n logger.debug('Cached extract result cannot be used due to config change');\n return false;\n }\n if (!cachedExtract.extractionFingerprints) {\n logger.debug(\n 'Cached extract is missing extractionFingerprints, so cannot be used',\n );\n return false;\n }\n const changedManagers = new Set();\n for (const [manager, fingerprint] of Object.entries(\n cachedExtract.extractionFingerprints,\n )) {\n if (fingerprint !== hashMap.get(manager)) {\n changedManagers.add(manager);\n }\n }\n if (changedManagers.size > 0) {\n logger.debug(\n { changedManagers: [...changedManagers] },\n 'Manager fingerprint(s) have changed, extract cache cannot be reused',\n );\n return false;\n }\n logger.debug(\n `Cached extract for sha=${baseBranchSha} is valid and can be used`,\n );\n return true;\n}\n\nexport async function extract(\n config: RenovateConfig,\n): Promise<Record<string, PackageFile[]>> {\n logger.debug('extract()');\n const { baseBranch } = config;\n const baseBranchSha = await scm.getBranchCommit(baseBranch!);\n let packageFiles: Record<string, PackageFile[]>;\n const cache = getCache();\n cache.scan ??= {};\n const cachedExtract = cache.scan[baseBranch!];\n const configHash = fingerprint(generateFingerprintConfig(config));\n // istanbul ignore if\n if (isCacheExtractValid(baseBranchSha!, configHash, cachedExtract)) {\n packageFiles = cachedExtract.packageFiles;\n try {\n for (const files of Object.values(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n delete dep.updates;\n }\n }\n }\n logger.debug('Deleted cached dep updates');\n } catch (err) {\n logger.info({ err }, 'Error deleting cached dep updates');\n }\n } else {\n await scm.checkoutBranch(baseBranch!);\n const extractResult = (await extractAllDependencies(config)) || {};\n packageFiles = extractResult.packageFiles;\n const { extractionFingerprints } = extractResult;\n // TODO: fix types (#22198)\n cache.scan[baseBranch!] = {\n revision: EXTRACT_CACHE_REVISION,\n sha: baseBranchSha!,\n configHash,\n extractionFingerprints,\n packageFiles,\n };\n // Clean up cached branch extracts\n const baseBranches = is.nonEmptyArray(config.baseBranches)\n ? config.baseBranches\n : [baseBranch];\n Object.keys(cache.scan).forEach((branchName) => {\n if (!baseBranches.includes(branchName)) {\n delete cache.scan![branchName];\n }\n });\n }\n const stats = extractStats(packageFiles);\n logger.info(\n { baseBranch: config.baseBranch, stats },\n `Dependency extraction complete`,\n );\n logger.trace({ config: packageFiles }, 'packageFiles');\n ensureGithubToken(packageFiles);\n return packageFiles;\n}\n\nasync function fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n if (config.osvVulnerabilityAlerts) {\n logger.debug('fetchVulnerabilities() - osvVulnerabilityAlerts=true');\n try {\n const vulnerabilities = await Vulnerabilities.create();\n await vulnerabilities.appendVulnerabilityPackageRules(\n config,\n packageFiles,\n );\n } catch (err) {\n logger.warn({ err }, 'Unable to read vulnerability information');\n }\n }\n}\n\nexport async function lookup(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<ExtractResult> {\n await fetchVulnerabilities(config, packageFiles);\n await fetchUpdates(config, packageFiles);\n memCache.cleanDatasourceKeys();\n calculateLibYears(config, packageFiles);\n const { branches, branchList } = await branchifyUpgrades(\n config,\n packageFiles,\n );\n logger.debug(\n { baseBranch: config.baseBranch, config: packageFiles },\n 'packageFiles with updates',\n );\n sortBranches(branches);\n return { branches, branchList, packageFiles };\n}\n\nexport async function update(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n let res: WriteUpdateResult | undefined;\n if (config.repoIsOnboarded) {\n res = await writeUpdates(config, branches);\n }\n\n return res;\n}\n"]}
1
+ {"version":3,"file":"extract-update.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/extract-update.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport type { RenovateConfig } from '../../../config/types';\nimport { logger } from '../../../logger';\nimport { hashMap } from '../../../modules/manager';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { scm } from '../../../modules/platform/scm';\nimport * as memCache from '../../../util/cache/memory';\nimport { getCache } from '../../../util/cache/repository';\nimport type { BaseBranchCache } from '../../../util/cache/repository/types';\nimport { checkGithubToken as ensureGithubToken } from '../../../util/check-token';\nimport { fingerprint } from '../../../util/fingerprint';\nimport type { BranchConfig } from '../../types';\nimport { extractAllDependencies } from '../extract';\nimport { generateFingerprintConfig } from '../extract/extract-fingerprint-config';\nimport { branchifyUpgrades } from '../updates/branchify';\nimport { fetchUpdates } from './fetch';\nimport { calculateLibYears } from './libyear';\nimport { sortBranches } from './sort';\nimport { Vulnerabilities } from './vulnerabilities';\nimport type { WriteUpdateResult } from './write';\nimport { writeUpdates } from './write';\n\n// Increment this if needing to cache bust ALL extract caches\nexport const EXTRACT_CACHE_REVISION = 1;\n\nexport interface ExtractResult {\n branches: BranchConfig[];\n branchList: string[];\n packageFiles: Record<string, PackageFile[]>;\n}\n\nexport interface StatsResult {\n fileCount: number;\n depCount: number;\n}\n\nexport interface Stats {\n managers: Record<string, StatsResult>;\n total: StatsResult;\n}\n\n// istanbul ignore next\nfunction extractStats(\n packageFiles: Record<string, PackageFile[]>,\n): Stats | null {\n if (!packageFiles) {\n return null;\n }\n const stats: Stats = {\n managers: {},\n total: {\n fileCount: 0,\n depCount: 0,\n },\n };\n for (const [manager, managerPackageFiles] of Object.entries(packageFiles)) {\n const fileCount = managerPackageFiles.length;\n let depCount = 0;\n for (const file of managerPackageFiles) {\n depCount += file.deps.length;\n }\n stats.managers[manager] = {\n fileCount,\n depCount,\n };\n stats.total.fileCount += fileCount;\n stats.total.depCount += depCount;\n }\n return stats;\n}\n\nexport function isCacheExtractValid(\n baseBranchSha: string,\n configHash: string,\n cachedExtract?: BaseBranchCache,\n): boolean {\n if (!cachedExtract) {\n return false;\n }\n\n if (!cachedExtract.revision) {\n logger.debug('Cached extract is missing revision, so cannot be used');\n return false;\n }\n\n if (cachedExtract.revision !== EXTRACT_CACHE_REVISION) {\n logger.debug(\n `Extract cache revision has changed (old=${cachedExtract.revision}, new=${EXTRACT_CACHE_REVISION})`,\n );\n return false;\n }\n\n if (!(cachedExtract.sha && cachedExtract.configHash)) {\n return false;\n }\n if (cachedExtract.sha !== baseBranchSha) {\n logger.debug(\n `Cached extract result cannot be used due to base branch SHA change (old=${cachedExtract.sha}, new=${baseBranchSha})`,\n );\n return false;\n }\n if (cachedExtract.configHash !== configHash) {\n logger.debug('Cached extract result cannot be used due to config change');\n return false;\n }\n if (!cachedExtract.extractionFingerprints) {\n logger.debug(\n 'Cached extract is missing extractionFingerprints, so cannot be used',\n );\n return false;\n }\n const changedManagers = new Set();\n for (const [manager, fingerprint] of Object.entries(\n cachedExtract.extractionFingerprints,\n )) {\n if (fingerprint !== hashMap.get(manager)) {\n changedManagers.add(manager);\n }\n }\n if (changedManagers.size > 0) {\n logger.debug(\n { changedManagers: [...changedManagers] },\n 'Manager fingerprint(s) have changed, extract cache cannot be reused',\n );\n return false;\n }\n logger.debug(\n `Cached extract for sha=${baseBranchSha} is valid and can be used`,\n );\n return true;\n}\n\nexport async function extract(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<Record<string, PackageFile[]>> {\n logger.debug('extract()');\n const { baseBranch } = config;\n const baseBranchSha = await scm.getBranchCommit(baseBranch!);\n let packageFiles: Record<string, PackageFile[]>;\n const cache = getCache();\n cache.scan ??= {};\n const cachedExtract = cache.scan[baseBranch!];\n const configHash = fingerprint(generateFingerprintConfig(config));\n // istanbul ignore if\n if (\n overwriteCache &&\n isCacheExtractValid(baseBranchSha!, configHash, cachedExtract)\n ) {\n packageFiles = cachedExtract.packageFiles;\n try {\n for (const files of Object.values(packageFiles)) {\n for (const file of files) {\n for (const dep of file.deps) {\n delete dep.updates;\n }\n }\n }\n logger.debug('Deleted cached dep updates');\n } catch (err) {\n logger.info({ err }, 'Error deleting cached dep updates');\n }\n } else {\n await scm.checkoutBranch(baseBranch!);\n const extractResult = (await extractAllDependencies(config)) || {};\n packageFiles = extractResult.packageFiles;\n const { extractionFingerprints } = extractResult;\n\n if (overwriteCache) {\n // TODO: fix types (#22198)\n cache.scan[baseBranch!] = {\n revision: EXTRACT_CACHE_REVISION,\n sha: baseBranchSha!,\n configHash,\n extractionFingerprints,\n packageFiles,\n };\n }\n // Clean up cached branch extracts\n const baseBranches = is.nonEmptyArray(config.baseBranches)\n ? config.baseBranches\n : [baseBranch];\n Object.keys(cache.scan).forEach((branchName) => {\n if (!baseBranches.includes(branchName)) {\n delete cache.scan![branchName];\n }\n });\n }\n const stats = extractStats(packageFiles);\n logger.info(\n { baseBranch: config.baseBranch, stats },\n `Dependency extraction complete`,\n );\n logger.trace({ config: packageFiles }, 'packageFiles');\n ensureGithubToken(packageFiles);\n return packageFiles;\n}\n\nasync function fetchVulnerabilities(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<void> {\n if (config.osvVulnerabilityAlerts) {\n logger.debug('fetchVulnerabilities() - osvVulnerabilityAlerts=true');\n try {\n const vulnerabilities = await Vulnerabilities.create();\n await vulnerabilities.appendVulnerabilityPackageRules(\n config,\n packageFiles,\n );\n } catch (err) {\n logger.warn({ err }, 'Unable to read vulnerability information');\n }\n }\n}\n\nexport async function lookup(\n config: RenovateConfig,\n packageFiles: Record<string, PackageFile[]>,\n): Promise<ExtractResult> {\n await fetchVulnerabilities(config, packageFiles);\n await fetchUpdates(config, packageFiles);\n memCache.cleanDatasourceKeys();\n calculateLibYears(config, packageFiles);\n const { branches, branchList } = await branchifyUpgrades(\n config,\n packageFiles,\n );\n logger.debug(\n { baseBranch: config.baseBranch, config: packageFiles },\n 'packageFiles with updates',\n );\n sortBranches(branches);\n return { branches, branchList, packageFiles };\n}\n\nexport async function update(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n let res: WriteUpdateResult | undefined;\n if (config.repoIsOnboarded) {\n res = await writeUpdates(config, branches);\n }\n\n return res;\n}\n"]}
@@ -2,5 +2,5 @@ import type { RenovateConfig } from '../../../config/types';
2
2
  import type { BranchConfig } from '../../types';
3
3
  import type { ExtractResult } from './extract-update';
4
4
  import type { WriteUpdateResult } from './write';
5
- export declare function extractDependencies(config: RenovateConfig): Promise<ExtractResult>;
5
+ export declare function extractDependencies(config: RenovateConfig, overwriteCache?: boolean): Promise<ExtractResult>;
6
6
  export declare function updateRepo(config: RenovateConfig, branches: BranchConfig[]): Promise<WriteUpdateResult | undefined>;
@@ -75,7 +75,7 @@ function unfoldBaseBranches(defaultBranch, baseBranches) {
75
75
  }
76
76
  return [...new Set(unfoldedList)];
77
77
  }
78
- async function extractDependencies(config) {
78
+ async function extractDependencies(config, overwriteCache = true) {
79
79
  await (0, dependency_dashboard_1.readDashboardBody)(config);
80
80
  let res = {
81
81
  branches: [],
@@ -90,7 +90,7 @@ async function extractDependencies(config) {
90
90
  (0, logger_1.addMeta)({ baseBranch });
91
91
  if (await scm_1.scm.branchExists(baseBranch)) {
92
92
  const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);
93
- extracted[baseBranch] = await (0, extract_update_1.extract)(baseBranchConfig);
93
+ extracted[baseBranch] = await (0, extract_update_1.extract)(baseBranchConfig, overwriteCache);
94
94
  }
95
95
  else {
96
96
  logger_1.logger.warn({ baseBranch }, 'Base branch does not exist - skipping');
@@ -115,7 +115,7 @@ async function extractDependencies(config) {
115
115
  }
116
116
  else {
117
117
  logger_1.logger.debug('No baseBranches');
118
- const packageFiles = await (0, extract_update_1.extract)(config);
118
+ const packageFiles = await (0, extract_update_1.extract)(config, overwriteCache);
119
119
  (0, split_1.addSplit)('extract');
120
120
  if (global_1.GlobalConfig.get('dryRun') === 'extract') {
121
121
  res.packageFiles = packageFiles;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO #22198\nimport { mergeChildConfig } from '../../../config';\nimport { GlobalConfig } from '../../../config/global';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages';\nimport { addMeta, logger, removeMeta } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { getCache } from '../../../util/cache/repository';\nimport { clone } from '../../../util/clone';\nimport { getBranchList } from '../../../util/git';\nimport { addSplit } from '../../../util/split';\nimport { getRegexPredicate } from '../../../util/string-match';\nimport type { BranchConfig } from '../../types';\nimport { readDashboardBody } from '../dependency-dashboard';\nimport type { ExtractResult } from './extract-update';\nimport { extract, lookup, update } from './extract-update';\nimport type { WriteUpdateResult } from './write';\n\nasync function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await resolveConfigPresets(baseBranchConfig, config);\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (config.baseBranches!.length > 1) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranches: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranch of baseBranches) {\n const isAllowedPred = getRegexPredicate(baseBranch);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranches regex \"${baseBranch}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranch === '$default') {\n logger.debug(`baseBranches \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranch);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (GlobalConfig.get('platform') !== 'local' && config.baseBranches?.length) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranches,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n for (const baseBranch of config.baseBranches) {\n addMeta({ baseBranch });\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n extracted[baseBranch] = await extract(baseBranchConfig);\n } else {\n logger.warn({ baseBranch }, 'Base branch does not exist - skipping');\n }\n }\n addSplit('extract');\n for (const baseBranch of config.baseBranches) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await extract(config);\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await lookup(config, packageFiles);\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/workers/repository/process/index.ts"],"names":[],"mappings":"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","sourcesContent":["// TODO #22198\nimport { mergeChildConfig } from '../../../config';\nimport { GlobalConfig } from '../../../config/global';\nimport { resolveConfigPresets } from '../../../config/presets';\nimport type { RenovateConfig } from '../../../config/types';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages';\nimport { addMeta, logger, removeMeta } from '../../../logger';\nimport type { PackageFile } from '../../../modules/manager/types';\nimport { platform } from '../../../modules/platform';\nimport { scm } from '../../../modules/platform/scm';\nimport { getCache } from '../../../util/cache/repository';\nimport { clone } from '../../../util/clone';\nimport { getBranchList } from '../../../util/git';\nimport { addSplit } from '../../../util/split';\nimport { getRegexPredicate } from '../../../util/string-match';\nimport type { BranchConfig } from '../../types';\nimport { readDashboardBody } from '../dependency-dashboard';\nimport type { ExtractResult } from './extract-update';\nimport { extract, lookup, update } from './extract-update';\nimport type { WriteUpdateResult } from './write';\n\nasync function getBaseBranchConfig(\n baseBranch: string,\n config: RenovateConfig,\n): Promise<RenovateConfig> {\n logger.debug(`baseBranch: ${baseBranch}`);\n\n let baseBranchConfig: RenovateConfig = clone(config);\n\n if (\n config.useBaseBranchConfig === 'merge' &&\n baseBranch !== config.defaultBranch\n ) {\n logger.debug(\n { baseBranch },\n `Merging config from base branch because useBaseBranchConfig=merge`,\n );\n\n // Retrieve config file name autodetected for this repo\n const cache = getCache();\n // TODO: types (#22198)\n const configFileName = cache.configFileName!;\n\n try {\n baseBranchConfig = await platform.getJsonFile(\n configFileName,\n config.repository,\n baseBranch,\n );\n logger.debug({ config: baseBranchConfig }, 'Base branch config raw');\n } catch {\n logger.error(\n { configFileName, baseBranch },\n `Error fetching config file from base branch - possible config name mismatch between branches?`,\n );\n\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Error fetching config file';\n error.validationMessage = `Error fetching config file \\`${configFileName}\\` from branch \\`${baseBranch}\\``;\n throw error;\n }\n\n baseBranchConfig = await resolveConfigPresets(baseBranchConfig, config);\n baseBranchConfig = mergeChildConfig(config, baseBranchConfig);\n\n // istanbul ignore if\n if (config.printConfig) {\n logger.info(\n { config: baseBranchConfig },\n 'Base branch config after merge',\n );\n }\n\n // baseBranches value should be based off the default branch\n baseBranchConfig.baseBranches = config.baseBranches;\n }\n\n if (config.baseBranches!.length > 1) {\n baseBranchConfig.branchPrefix += `${baseBranch}-`;\n baseBranchConfig.hasBaseBranches = true;\n }\n\n baseBranchConfig = mergeChildConfig(baseBranchConfig, { baseBranch });\n\n return baseBranchConfig;\n}\n\nfunction unfoldBaseBranches(\n defaultBranch: string,\n baseBranches: string[],\n): string[] {\n const unfoldedList: string[] = [];\n\n const allBranches = getBranchList();\n for (const baseBranch of baseBranches) {\n const isAllowedPred = getRegexPredicate(baseBranch);\n if (isAllowedPred) {\n const matchingBranches = allBranches.filter(isAllowedPred);\n logger.debug(\n `baseBranches regex \"${baseBranch}\" matches [${matchingBranches.join()}]`,\n );\n unfoldedList.push(...matchingBranches);\n } else if (baseBranch === '$default') {\n logger.debug(`baseBranches \"$default\" matches \"${defaultBranch}\"`);\n unfoldedList.push(defaultBranch);\n } else {\n unfoldedList.push(baseBranch);\n }\n }\n\n return [...new Set(unfoldedList)];\n}\n\nexport async function extractDependencies(\n config: RenovateConfig,\n overwriteCache = true,\n): Promise<ExtractResult> {\n await readDashboardBody(config);\n let res: ExtractResult = {\n branches: [],\n branchList: [],\n packageFiles: {},\n };\n if (GlobalConfig.get('platform') !== 'local' && config.baseBranches?.length) {\n config.baseBranches = unfoldBaseBranches(\n config.defaultBranch!,\n config.baseBranches,\n );\n logger.debug({ baseBranches: config.baseBranches }, 'baseBranches');\n const extracted: Record<string, Record<string, PackageFile[]>> = {};\n for (const baseBranch of config.baseBranches) {\n addMeta({ baseBranch });\n if (await scm.branchExists(baseBranch)) {\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n extracted[baseBranch] = await extract(baseBranchConfig, overwriteCache);\n } else {\n logger.warn({ baseBranch }, 'Base branch does not exist - skipping');\n }\n }\n addSplit('extract');\n for (const baseBranch of config.baseBranches) {\n if (await scm.branchExists(baseBranch)) {\n addMeta({ baseBranch });\n const baseBranchConfig = await getBaseBranchConfig(baseBranch, config);\n const packageFiles = extracted[baseBranch];\n const baseBranchRes = await lookup(baseBranchConfig, packageFiles);\n res.branches = res.branches.concat(baseBranchRes?.branches);\n res.branchList = res.branchList.concat(baseBranchRes?.branchList);\n if (!res.packageFiles || !Object.keys(res.packageFiles).length) {\n // Use the first branch\n res.packageFiles = baseBranchRes?.packageFiles;\n }\n }\n }\n removeMeta(['baseBranch']);\n } else {\n logger.debug('No baseBranches');\n const packageFiles = await extract(config, overwriteCache);\n addSplit('extract');\n if (GlobalConfig.get('dryRun') === 'extract') {\n res.packageFiles = packageFiles;\n logger.info({ packageFiles }, 'Extracted dependencies');\n return res;\n }\n res = await lookup(config, packageFiles);\n }\n addSplit('lookup');\n return res;\n}\n\nexport function updateRepo(\n config: RenovateConfig,\n branches: BranchConfig[],\n): Promise<WriteUpdateResult | undefined> {\n logger.debug('processRepo()');\n\n return update(config, branches);\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "renovate",
3
3
  "description": "Automated dependency updates. Flexible so you don't need to be.",
4
- "version": "40.14.0",
4
+ "version": "40.14.2",
5
5
  "type": "commonjs",
6
6
  "bin": {
7
7
  "renovate": "dist/renovate.js",