Skip to content

Commit 9dc21bd

Browse files
committed
Merge remote-tracking branch 'upstream/main' into feat/move-request-specs-too
* upstream/main: Modernize dependencies, fix CI, and add rubocop-gusto (rubyatscale#178) Fix typos and grammatical issues (rubyatscale#179) Add AGENTS.md and CLAUDE.md for AI coding agent guidance (rubyatscale#177) Add CODEOWNERS file (rubyatscale#176)
2 parents e6b7028 + bf737c6 commit 9dc21bd

119 files changed

Lines changed: 304745 additions & 34750 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @rubyatscale/ruby-at-scale

.rubocop.yml

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
inherit_from: .rubocop_todo.yml
2+
3+
inherit_mode:
4+
merge:
5+
- Exclude
6+
- Include
7+
8+
inherit_gem:
9+
rubocop-gusto:
10+
- config/default.yml
11+
12+
plugins:
13+
- rubocop-gusto
14+
115
# The behavior of RuboCop can be controlled via the .rubocop.yml
216
# configuration file. It makes it possible to enable/disable
317
# certain cops (checks) and to alter their behavior if they accept
@@ -13,7 +27,7 @@ AllCops:
1327
SuggestExtensions: false
1428
Exclude:
1529
- vendor/bundle/**/**
16-
TargetRubyVersion: 2.6.0
30+
TargetRubyVersion: 3.2
1731

1832
Metrics/ParameterLists:
1933
Enabled: false
@@ -50,9 +64,6 @@ Style/GuardClause:
5064
Metrics/ModuleLength:
5165
Enabled: false
5266

53-
Layout/LineLength:
54-
Enabled: false
55-
5667
Metrics/BlockLength:
5768
Enabled: false
5869

@@ -93,10 +104,6 @@ Style/EmptyElse:
93104
Style/RedundantCondition:
94105
Enabled: false
95106

96-
# This leads to code that is not very readable at times (very long lines)
97-
Layout/MultilineMethodCallIndentation:
98-
Enabled: false
99-
100107
# Blocks across lines are okay sometimes
101108
Style/BlockDelimiters:
102109
Enabled: false
@@ -105,19 +112,8 @@ Style/BlockDelimiters:
105112
Naming/AccessorMethodName:
106113
Enabled: false
107114

108-
# This leads to code that is not very readable at times (very long lines)
109-
Layout/FirstArgumentIndentation:
110-
Enabled: false
111-
112-
# This leads to code that is not very readable at times (very long lines)
113-
Layout/ArgumentAlignment:
114-
Enabled: false
115-
116115
Style/AccessorGrouping:
117116
Enabled: false
118117

119118
Style/NumericPredicate:
120119
Enabled: false
121-
122-
Layout/BlockEndNewline:
123-
Enabled: false

.rubocop_todo.yml

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# This configuration was generated by
2+
# `rubocop --auto-gen-config --auto-gen-only-exclude --exclude-limit 100`
3+
# on 2026-03-05 21:24:10 UTC using RuboCop version 1.85.1.
4+
# The point is for the user to remove these configuration records
5+
# one by one as the offenses are removed from the code base.
6+
# Note that changes in the inspected code, or installation of new
7+
# versions of RuboCop, may require this file to be generated again.
8+
9+
# Offense count: 8
10+
Gusto/NoMetaprogramming:
11+
Exclude:
12+
- 'lib/packs/cli.rb'
13+
- 'lib/packs/private/interactive_cli/use_cases/interface.rb'
14+
- 'spec/packs/private/cli_spec.rb'
15+
16+
# Offense count: 5
17+
# This cop supports safe autocorrection (--autocorrect).
18+
# Configuration parameters: AllowedPatterns.
19+
Sorbet/BlockMethodDefinition:
20+
Exclude:
21+
- 'spec/packs/private/cli_spec.rb'
22+
- 'spec/packs_spec.rb'
23+
24+
# Offense count: 2
25+
# This cop supports safe autocorrection (--autocorrect).
26+
# Configuration parameters: EnforcedStyle, BlockForwardingName.
27+
# SupportedStyles: anonymous, explicit
28+
Naming/BlockForwarding:
29+
Exclude:
30+
- 'lib/packs/configuration.rb'
31+
- 'lib/packs/logging.rb'
32+
33+
# Offense count: 1
34+
# Configuration parameters: Mode, AllowedMethods, AllowedPatterns, AllowBangMethods, WaywardPredicates.
35+
# AllowedMethods: call
36+
# WaywardPredicates: infinite?, nonzero?
37+
Naming/PredicateMethod:
38+
Exclude:
39+
- 'lib/packs/configuration.rb'
40+
41+
# Offense count: 1
42+
Performance/MapMethodChain:
43+
Exclude:
44+
- 'lib/packs/private/interactive_cli/use_cases/get_info.rb'
45+
46+
# Offense count: 65
47+
# Configuration parameters: Prefixes, AllowedPatterns.
48+
# Prefixes: when, with, without
49+
RSpec/ContextWording:
50+
Exclude:
51+
- 'spec/packs/private/cli_spec.rb'
52+
- 'spec/packs_spec.rb'
53+
54+
# Offense count: 2
55+
# Configuration parameters: CustomTransform, IgnoreMethods, IgnoreMetadata, InflectorPath, EnforcedInflector.
56+
# SupportedInflectors: default, active_support
57+
RSpec/SpecFilePathFormat:
58+
Exclude:
59+
- 'spec/packs/private/cli_spec.rb'
60+
- 'spec/verify_docs_spec.rb'
61+
62+
# Offense count: 12
63+
Sorbet/ConstantsFromStrings:
64+
Exclude:
65+
- 'spec/packs/private/cli_spec.rb'
66+
- 'spec/packs_spec.rb'
67+
- 'spec/spec_helper.rb'
68+
69+
# Offense count: 2
70+
# This cop supports unsafe autocorrection (--autocorrect-all).
71+
# Configuration parameters: SuggestedStrictness.
72+
Sorbet/StrictSigil:
73+
Exclude:
74+
- 'sorbet/tapioca/require.rb'
75+
- 'spec/spec_helper.rb'

AGENTS.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
This file provides guidance to AI coding agents when working with code in this repository.
2+
3+
## What this project is
4+
5+
`packs` is a Ruby gem that provides the development CLI for the packs packaging system — a way to modularize Ruby applications. It provides `bin/packs` commands to create packs, move files between packs, add dependencies, and manage pack configuration.
6+
7+
## Commands
8+
9+
```bash
10+
bundle install
11+
12+
# Run all tests (RSpec)
13+
bundle exec rspec
14+
15+
# Run a single spec file
16+
bundle exec rspec spec/path/to/spec.rb
17+
18+
# Lint
19+
bundle exec rubocop
20+
bundle exec rubocop -a # auto-correct
21+
22+
# Type checking (Sorbet)
23+
bundle exec srb tc
24+
```
25+
26+
## Architecture
27+
28+
- `lib/packs.rb` — public API entry point
29+
- `lib/packs/` — core library: `Configuration`, `CLI` (Thor-based command definitions), post-processors (`RubocopPostProcessor`, `CodeOwnershipPostProcessor`, `UpdateReferencesPostProcessor`), and the `UserEventLogger` interface
30+
- `lib/packs/private/` — internal implementation; `interactive_cli/` contains the interactive TUI mode
31+
- `bin/packs` — CLI executable; runs the interactive mode when called with no arguments, otherwise dispatches to `Packs::CLI` commands like `create`, `add_dependency`, `move`, `validate`, `check`
32+
- `spec/` — RSpec tests; tests use temporary directories created via `packs/rspec/support` rather than static fixtures

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@AGENTS.md

Gemfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,3 @@ source 'https://rubygems.org'
22

33
# Specify your gem's dependencies in packs.gemspec
44
gemspec
5-
6-
gem 'packwerk', github: 'Shopify/packwerk', branch: 'main'

0 commit comments

Comments
 (0)