kettle-dev 2.3.5 → 2.3.6

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +40 -11
  4. data/README.md +2 -2
  5. data/exe/kettle-release +26 -2
  6. data/lib/kettle/dev/ci_monitor.rb +4 -4
  7. data/lib/kettle/dev/release_cli.rb +8 -2
  8. data/lib/kettle/dev/version.rb +1 -1
  9. data/sig/kettle/dev.rbs +583 -1
  10. data.tar.gz.sig +0 -0
  11. metadata +15 -59
  12. metadata.gz.sig +0 -0
  13. data/AGPL-3.0-only.md +0 -235
  14. data/CITATION.cff +0 -20
  15. data/CODE_OF_CONDUCT.md +0 -134
  16. data/CONTRIBUTING.md +0 -275
  17. data/FUNDING.md +0 -70
  18. data/RUBOCOP.md +0 -71
  19. data/SECURITY.md +0 -21
  20. data/certs/pboling.pem +0 -27
  21. data/sig/kettle/dev/appraisals_ast_merger.rbs +0 -72
  22. data/sig/kettle/dev/changelog_cli.rbs +0 -69
  23. data/sig/kettle/dev/ci_helpers.rbs +0 -42
  24. data/sig/kettle/dev/ci_monitor.rbs +0 -17
  25. data/sig/kettle/dev/commit_msg.rbs +0 -8
  26. data/sig/kettle/dev/dvcs_cli.rbs +0 -8
  27. data/sig/kettle/dev/exit_adapter.rbs +0 -8
  28. data/sig/kettle/dev/gem_spec_reader.rbs +0 -33
  29. data/sig/kettle/dev/git_adapter.rbs +0 -17
  30. data/sig/kettle/dev/git_commit_footer.rbs +0 -16
  31. data/sig/kettle/dev/input_adapter.rbs +0 -8
  32. data/sig/kettle/dev/modular_gemfiles.rbs +0 -12
  33. data/sig/kettle/dev/open_collective_config.rbs +0 -8
  34. data/sig/kettle/dev/pre_release_cli.rbs +0 -34
  35. data/sig/kettle/dev/prism_utils.rbs +0 -56
  36. data/sig/kettle/dev/readme_backers.rbs +0 -21
  37. data/sig/kettle/dev/release_cli.rbs +0 -20
  38. data/sig/kettle/dev/setup_cli.rbs +0 -8
  39. data/sig/kettle/dev/source_merger.rbs +0 -70
  40. data/sig/kettle/dev/tasks/ci_task.rbs +0 -9
  41. data/sig/kettle/dev/tasks/install_task.rbs +0 -10
  42. data/sig/kettle/dev/tasks/template_task.rbs +0 -10
  43. data/sig/kettle/dev/tasks.rbs +0 -7
  44. data/sig/kettle/dev/template_helpers.rbs +0 -84
  45. data/sig/kettle/dev/version.rbs +0 -8
  46. data/sig/kettle/dev/versioning.rbs +0 -21
  47. data/sig/kettle/emoji_regex.rbs +0 -5
  48. data/sig/kettle-dev.rbs +0 -0
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module CommitMsg
4
- BRANCH_RULES: ::Hash[String, ::Regexp]
5
- def self.enforce_branch_rule!: (String path) -> void
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class DvcsCLI
4
- def initialize: (Array[String] argv) -> void
5
- def run!: () -> Integer
6
- end
7
- end
8
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module ExitAdapter
4
- def self.abort: (String msg) -> void
5
- def self.exit: (?Integer status) -> void
6
- end
7
- end
8
- end
@@ -1,33 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class GemSpecReader
4
- DEFAULT_MINIMUM_RUBY: Gem::Version
5
-
6
- def self.load: (String root) -> {
7
- gemspec_path: String?,
8
- gem_name: String,
9
- min_ruby: Gem::Version,
10
- homepage: String,
11
- gh_org: String,
12
- forge_org: String,
13
- funding_org: String?,
14
- gh_repo: String?,
15
- namespace: String,
16
- namespace_shield: String,
17
- entrypoint_require: String,
18
- gem_shield: String,
19
- authors: Array[String],
20
- email: Array[String],
21
- summary: String,
22
- description: String,
23
- licenses: Array[String],
24
- required_ruby_version: Gem::Requirement?,
25
- require_paths: Array[String],
26
- bindir: String,
27
- executables: Array[String],
28
- }
29
-
30
- def self.derive_forge_and_origin_repo: (String? homepage_val) -> { forge_org: String?, origin_repo: String? }
31
- end
32
- end
33
- end
@@ -1,17 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class GitAdapter
4
- def initialize: () -> void
5
- def capture: (Array[String] args) -> [String, bool]
6
- def push: (String? remote, String branch, force: bool) -> bool
7
- def current_branch: () -> String?
8
- def remotes: () -> Array[String]
9
- def remotes_with_urls: () -> Hash[String, String]
10
- def remote_url: (String name) -> String?
11
- def checkout: (String branch) -> bool
12
- def pull: (String remote, String branch) -> bool
13
- def fetch: (String remote, String? ref) -> bool
14
- def clean?: () -> bool
15
- end
16
- end
17
- end
@@ -1,16 +0,0 @@
1
- class GitCommitFooter
2
- NAME_ASSIGNMENT_REGEX: ::Regexp
3
- FOOTER_APPEND: bool
4
- SENTINEL: String?
5
-
6
- def self.git_toplevel: () -> String?
7
- def self.local_hooks_dir: () -> String?
8
- def self.global_hooks_dir: () -> String
9
- def self.hooks_path_for: (String filename) -> String
10
- def self.commit_goalie_path: () -> String
11
- def self.goalie_allows_footer?: (String subject_line) -> bool
12
- def self.render: (*Array[String]) -> void
13
-
14
- def initialize: () -> void
15
- def render: () -> String
16
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module InputAdapter
4
- def self.gets: (*untyped args) -> String?
5
- def self.readline: (*untyped args) -> String
6
- end
7
- end
8
- end
@@ -1,12 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module ModularGemfiles
4
- def self.sync!: (
5
- helpers: untyped,
6
- project_root: String,
7
- gem_checkout_root: String,
8
- min_ruby: untyped
9
- ) -> void
10
- end
11
- end
12
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module OpenCollectiveConfig
4
- def self.yaml_path: (?String) -> String
5
- def self.handle: (?required: bool, ?root: String, ?strict: bool) -> String?
6
- end
7
- end
8
- end
@@ -1,34 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class PreReleaseCLI
4
- IMAGE_URL_CACHE_TTL_SECONDS: Integer
5
- DEFAULT_IMAGE_URL_SKIP_PATTERNS: Array[String]
6
- FAMILY_CONFIG_PATHS: Array[String]
7
-
8
- module HTTP
9
- def self.parse_http_uri: (String url_str) -> ::URI
10
- def self.head_ok?: (String url_str, ?limit: Integer, ?timeout: Integer) -> bool
11
- end
12
-
13
- module Markdown
14
- def self.extract_image_urls_from_text: (String text) -> Array[String]
15
- def self.extract_image_urls_from_files: (?String glob_pattern) -> Array[String]
16
- end
17
-
18
- class ImageUrlCache
19
- VERSION: Integer
20
-
21
- def self.default_path: () -> String?
22
- def initialize: (path: String?, ?ttl_seconds: Integer, ?clock: ^() -> Time) -> void
23
- def fresh_success?: (String url) -> bool
24
- def write_success: (String url) -> void
25
- def to_h: () -> Hash[String, untyped]
26
- end
27
-
28
- def initialize: (?check_num: Integer) -> void
29
- def run: () -> void
30
- def check_markdown_uri_normalization!: () -> void
31
- def check_markdown_images_http!: () -> void
32
- end
33
- end
34
- end
@@ -1,56 +0,0 @@
1
- # TypeProf 0.21.11
2
-
3
- module Kettle
4
- module Dev
5
- # Shared utilities for working with Prism AST nodes
6
- module PrismUtils
7
- # Parse Ruby source code and return Prism parse result with comments
8
- def self.parse_with_comments: (String source) -> Prism::ParseResult
9
-
10
- # Extract statements from a Prism body node
11
- def self.extract_statements: (Prism::Node? body_node) -> Array[Prism::Node]
12
-
13
- # Generate a unique key for a statement node to identify equivalent statements
14
- def self.statement_key: (
15
- Prism::Node node,
16
- ?tracked_methods: Array[Symbol]
17
- ) -> [Symbol, String?]?
18
-
19
- # Extract literal value from string or symbol nodes
20
- def self.extract_literal_value: (Prism::Node? node) -> (String | Symbol)?
21
-
22
- # Extract qualified constant name from a constant node
23
- def self.extract_const_name: (Prism::Node? node) -> String?
24
-
25
- # Find leading comments for a statement node
26
- def self.find_leading_comments: (
27
- Prism::ParseResult parse_result,
28
- Prism::Node current_stmt,
29
- Prism::Node? prev_stmt,
30
- Prism::Node body_node
31
- ) -> Array[Prism::Comment]
32
-
33
- # Find inline comments for a statement node
34
- def self.inline_comments_for_node: (
35
- Prism::ParseResult parse_result,
36
- Prism::Node stmt
37
- ) -> Array[Prism::Comment]
38
-
39
- # Convert a Prism AST node to Ruby source code
40
- def self.node_to_source: (Prism::Node? node) -> String
41
-
42
- # Normalize a call node to use parentheses format
43
- def self.normalize_call_node: (Prism::Node node) -> String
44
-
45
- # Normalize an argument node to canonical format
46
- def self.normalize_argument: (Prism::Node arg) -> String
47
-
48
- # Check if a node is a specific method call
49
- def self.call_to?: (Prism::Node node, Symbol method_name) -> bool
50
-
51
- # Check if a node is a block call to a specific method
52
- def self.block_call_to?: (Prism::Node node, Symbol method_name) -> bool
53
- end
54
- end
55
- end
56
-
@@ -1,21 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class ReadmeBackers
4
- def initialize: (
5
- handle: String?,
6
- readme_path: String?,
7
- osc_api_base: String?,
8
- osc_default_name: String?,
9
- osc_empty_message: String?
10
- ) -> void
11
-
12
- def run!: () -> void
13
- def validate: () -> void
14
-
15
- # Selected public helpers (kept minimal)
16
- def readme_osc_tag: () -> String
17
- def tag_strings: () -> [String, String]
18
- def resolve_handle: () -> String
19
- end
20
- end
21
- end
@@ -1,20 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class ReleaseCLI
4
- def initialize: (?start_step: Integer) -> void
5
- def run: () -> void
6
-
7
- private
8
-
9
- def update_readme_kloc_badge!: () -> void
10
- def update_badge_number_in_file: (String path, String kloc_str) -> void
11
- def update_rakefile_example_header!: (String version) -> void
12
- def validate_copyright_years!: () -> void
13
- def extract_years_from_file: (String path) -> ::Set[Integer]
14
- def collapse_years: (::_ToA[Integer] enum) -> String
15
- def reformat_copyright_year_lines!: (String path) -> void
16
- def inject_years_into_file!: (String path, ::Set[Integer] years_set) -> void
17
- def extract_release_notes_footer: () -> String?
18
- end
19
- end
20
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- class SetupCLI
4
- def initialize: (Array[String] argv) -> void
5
- def run!: () -> void
6
- end
7
- end
8
- end
@@ -1,70 +0,0 @@
1
- # TypeProf 0.21.11
2
-
3
- module Kettle
4
- module Dev
5
- # Prism-based AST merging for templated Ruby files.
6
- # Handles strategy dispatch (skip/replace/append/merge).
7
- #
8
- # Uses prism-merge for AST-aware merging with support for:
9
- # - Freeze blocks (kettle-dev:freeze / kettle-dev:unfreeze)
10
- # - Comment preservation
11
- # - Signature-based node matching
12
- module SourceMerger
13
- BUG_URL: String
14
-
15
- # Apply a templating strategy to merge source and destination Ruby files
16
- #
17
- # @param strategy [Symbol] Merge strategy - :skip, :replace, :append, or :merge
18
- # @param src [String] Template source content
19
- # @param dest [String] Destination file content
20
- # @param path [String] File path (for error messages)
21
- # @return [String] Merged content with comments preserved
22
- # @raise [Kettle::Dev::Error] If strategy is unknown or merge fails
23
- def self.apply: (
24
- strategy: Symbol,
25
- src: String,
26
- dest: String,
27
- path: String
28
- ) -> String
29
-
30
- # Normalize strategy symbol
31
- #
32
- # @param strategy [Symbol, nil] Strategy to normalize
33
- # @return [Symbol] Normalized strategy (:skip if nil)
34
- def self.normalize_strategy: (Symbol? strategy) -> Symbol
35
-
36
- # Warn about bugs and print error information
37
- #
38
- # @param path [String] File path that caused the error
39
- # @param error [StandardError] The error that occurred
40
- # @return [void]
41
- def self.warn_bug: (String path, StandardError error) -> void
42
-
43
- # Ensure text ends with newline
44
- #
45
- # @param text [String, nil] Text to process
46
- # @return [String] Text with trailing newline
47
- def self.ensure_trailing_newline: (String? text) -> String
48
-
49
- # Apply append strategy using prism-merge
50
- #
51
- # @param src_content [String] Template source content
52
- # @param dest_content [String] Destination content
53
- # @return [String] Merged content with destination preference
54
- def self.apply_append: (String src_content, String dest_content) -> String
55
-
56
- # Apply merge strategy using prism-merge
57
- #
58
- # @param src_content [String] Template source content
59
- # @param dest_content [String] Destination content
60
- # @return [String] Merged content with template preference
61
- def self.apply_merge: (String src_content, String dest_content) -> String
62
-
63
- # Create a signature generator for prism-merge
64
- # Handles various Ruby node types for proper matching during merge operations
65
- #
66
- # @return [Proc] Signature generator lambda
67
- def self.create_signature_generator: () -> ^(Prism::Node) -> (Array[untyped] | Prism::Node)
68
- end
69
- end
70
- end
@@ -1,9 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module Tasks
4
- module CITask
5
- def self.act: (?String opt) -> void
6
- end
7
- end
8
- end
9
- end
@@ -1,10 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module Tasks
4
- module InstallTask
5
- # Entrypoint to perform installation steps and project setup.
6
- def self.run: () -> void
7
- end
8
- end
9
- end
10
- end
@@ -1,10 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module Tasks
4
- module TemplateTask
5
- # Entrypoint to copy/update template files into a host project.
6
- def self.run: () -> void
7
- end
8
- end
9
- end
10
- end
@@ -1,7 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module Tasks
4
- # Namespace module for task-related classes and Rake task loaders.
5
- end
6
- end
7
- end
@@ -1,84 +0,0 @@
1
- module Kettle
2
- module Dev
3
- # Helpers shared by kettle:dev Rake tasks for templating and file ops.
4
- module TemplateHelpers
5
- # Symbol actions recorded by templating helpers
6
- type template_action = :create | :replace | :skip | :dir_create | :dir_replace
7
-
8
- # Root of the host project where Rake was invoked
9
- def self.project_root: () -> String
10
-
11
- # Root of this gem's checkout (repository root when working from source)
12
- def self.gem_checkout_root: () -> String
13
-
14
- # Simple yes/no prompt.
15
- def self.ask: (String prompt, bool default) -> bool
16
-
17
- # Write file content creating directories as needed
18
- def self.write_file: (String dest_path, String content) -> void
19
-
20
- # Record a template action for a destination path
21
- def self.record_template_result: (String dest_path, template_action action) -> void
22
-
23
- # Access all template results (read-only clone)
24
- def self.template_results: () -> Hash[String, { action: template_action, timestamp: ::Time }]
25
-
26
- # Returns true if the given path was created or replaced by the template task in this run
27
- def self.modified_by_template?: (String dest_path) -> bool
28
-
29
- # Ensure git working tree is clean before making changes in a task.
30
- # If not a git repo, this is a no-op.
31
- def self.ensure_clean_git!: (root: String, task_label: String) -> void
32
-
33
- # Copy a single file with interactive prompts for create/replace.
34
- def self.copy_file_with_prompt: (
35
- String src_path,
36
- String dest_path,
37
- ?allow_create: bool,
38
- ?allow_replace: bool
39
- ) -> void
40
-
41
- # Copy a directory tree, prompting before creating or overwriting.
42
- def self.copy_dir_with_prompt: (String src_dir, String dest_dir) -> void
43
-
44
- # Apply common token replacements used when templating text files
45
- def self.apply_common_replacements: (
46
- String content,
47
- org: String?,
48
- gem_name: String,
49
- namespace: String,
50
- namespace_shield: String,
51
- gem_shield: String,
52
- ?funding_org: String?,
53
- ?min_ruby: String?
54
- ) -> String
55
-
56
- # Parse gemspec metadata and derive useful strings
57
- # When no gemspec is present, gemspec_path may be nil; gh_org/gh_repo may be nil when not derivable.
58
- def self.gemspec_metadata: (?String root) -> {
59
- gemspec_path: String?,
60
- gem_name: String,
61
- min_ruby: String,
62
- homepage: String,
63
- gh_org: String?,
64
- forge_org: String?,
65
- funding_org: String?,
66
- gh_repo: String?,
67
- namespace: String,
68
- namespace_shield: String,
69
- entrypoint_require: String,
70
- gem_shield: String,
71
- authors: Array[String],
72
- email: Array[String],
73
- summary: String,
74
- description: String,
75
- license: String,
76
- licenses: Array[String],
77
- required_ruby_version: String,
78
- require_paths: Array[String],
79
- bindir: String,
80
- executables: Array[String],
81
- }
82
- end
83
- end
84
- end
@@ -1,8 +0,0 @@
1
- module Kettle
2
- module Dev
3
- module Version
4
- VERSION: String
5
- end
6
- VERSION: String
7
- end
8
- end
@@ -1,21 +0,0 @@
1
- # TypeProf 0.21.11
2
-
3
- module Kettle
4
- module Dev
5
- # Shared helpers for version detection and bump classification
6
- module Versioning
7
- # Detects a unique VERSION constant declared under lib/**/version.rb
8
- def self.detect_version: (String root) -> String
9
-
10
- # Classify the bump type from prev -> cur
11
- def self.classify_bump: (String prev, String cur) -> Symbol
12
-
13
- # Whether MAJOR is an EPIC version (strictly > 1000)
14
- def self.epic_major?: (Integer major) -> bool
15
-
16
- # Abort via ExitAdapter if available; otherwise Kernel.abort
17
- def self.abort!: (String msg) -> void
18
- end
19
- end
20
- end
21
-
@@ -1,5 +0,0 @@
1
- module Kettle
2
- module EmojiRegex
3
- REGEX: ::Regexp
4
- end
5
- end
data/sig/kettle-dev.rbs DELETED
File without changes