Move Bundler settings parsing out of ruby_crawler into formats/gem/settings.rs, and read .bundle/config keys with one parser (two drifted today)

Aberta
#1,935 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
22/100
Tipo de issue
Refatoração
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
ruby, rust
Domínio
devtools

Direção de pesquisa

Start with crates/socket-patch-core/src/crawlers/ruby_crawler.rs around bundle_config_setting_with and formats/gem/mirror.rs (config_key and the key loop), then compare how each reads .bundle/config lines. Step 1 is the parser move into formats/gem/settings.rs, which needs design choices about which key rules win. Done when formats/gem/* no longer imports crawlers::*, one key parser remains, and the ruby crawler, gem vendor, redirect and mirror tests pass.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

agent:triaged arch-audit priority:p1 refactor

[agent] Filed by the scheduled architecture audit (audit-core). Register: register.

Kind: refactor (placement plus a duplicated parser; extends E20/#833). Register ID: A57.

Problem

  • Bundler settings logic lives in the crawler. About 1,260 lines of it sit in crawlers/ruby_crawler.rs L1270-L2530:`` config scalar parsing and unquoting, the global and app config locations, the cache dir, the loaded manifest and lockfile, and the moved root.
  • Format modules import from that crawler. formats/gem/manifest.rs L58 and formats/gem/mirror.rs L16 import from crawlers::ruby_crawler, and so do vendor/gem.rs, vendor/lock_inventory/gem.rs, vex/discover/gem.rs, hosted/engine.rs, patch/redirect/upstream/gem.rs and the CLI.
  • The .bundle/config key line is parsed twice, and the copies drifted:
    • ruby_crawler::bundle_config_setting_with L2449-L2461 matches KEY: as a plain prefix: it accepts KEY:value with no space, does not decode quoted keys, and does not normalize legacy keys.
    • formats/gem/mirror.rs L125-L230 (config_key and the key loop) requires ": ", decodes Bundler 4.1's quoted keys, and normalizes dot/dash keys.
    • The drift is latent for BUNDLE_PATH/BUNDLE_GEMFILE/BUNDLE_LOCKFILE, because Bundler quotes only keys that contain :.
  • The Gemfile/gems.rb manifest name list is written twice: ruby_crawler.rs L276 and hosted/engine.rs L1167. formats/gem/mod.rs already holds BUNDLER_LOCKS.

Proposed change

This is a tracking issue; do the steps in order.

  1. Create formats/gem/settings.rs and move the pure parsers there: the config-map parse (one key-line reader, following mirror.rs's rules), unquote, bundler_truthy, and the tier rules from #1931. Also move a BUNDLER_MANIFEST_FILES const there.
  2. Leave only file and env I/O in the crawler, as a BundlerEnv::ambient() snapshot that replaces the 4 copies of the ambient-env tuple (L47, L169, L591, L670).
  3. Repoint the formats/gem, vendor, vex, hosted and redirect imports.

Size

About 10 files; mostly moves (~1,000 lines moved, ~−80 net).

Acceptance criteria

  • Behavior is unchanged: the ruby crawler, gem vendor, gem redirect and mirror tests pass.
  • formats/gem/* no longer imports crawlers::*.
  • One .bundle/config key parser remains.
Linguagem predominante
Rust
Estrelas
9
Forks
2
Merge médio
18h 47min
PRs com merge (30d)
637

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de SocketDev/socket-patch

Todas as issues de SocketDev/socket-patch

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.