dependabot-devbox 0.1.0 → 0.1.1

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/exe/dependabot-devbox-update +74 -32
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11b87d3ad83c9c545c69e83345c8173e7bd9de6873c1b2a789dd03b93998c563
4
- data.tar.gz: 107abd1dd96105c923866884b0624878c3640a7f4fa82b9009ed7b4dc3e518f4
3
+ metadata.gz: 99efa19eeff967724728c2c6010b2c1f625619a0b7716dbbfc13db644defa666
4
+ data.tar.gz: 170cfde66463d21dbad418809c9028456753bdc64a23b7ff43e75817ba3ac7aa
5
5
  SHA512:
6
- metadata.gz: f0f380423454eb53418a9eb2d45d60cfcb8a8d1162567d16904367c9f02156fdfbfc1c6c40f5dc2b067d896140cbe911e9ec0a8d94b99b63026b2b1adc2b267c
7
- data.tar.gz: 7b0fa0c022e3bd8c38dd2442057fcf721c30b6fd3386b447d798d6e6f2935bc95f120effec80c8bd5897c6e3ebc6e1dbd38ce382bc4916249578630a84d48bcf
6
+ metadata.gz: '02429b6a5c826d6130271e1d63120af02d0d49e74082421ed45f62e772fc6dc2fd6fe198d4f84082b55d0b9e0ef29ff6d7f6b62344977403aa52e2589677d6b6'
7
+ data.tar.gz: 855892e0fafa13e2b658110baf461931a717326219968d77732b86fe01b143e5ecbbb54ba44607dff99f2c994f3ebedb0670370f73e326159a430355d5010b21
@@ -11,7 +11,8 @@ require "dependabot/devbox"
11
11
  repo = ENV.fetch("GITHUB_REPOSITORY")
12
12
  token = ENV["GITHUB_ACCESS_TOKEN"] || ENV.fetch("GITHUB_TOKEN")
13
13
  directory = ENV.fetch("DIRECTORY_PATH", "/")
14
- branch = ENV.fetch("BASE_BRANCH", nil)
14
+ branch = ENV["BASE_BRANCH"].then { |b| b&.empty? ? nil : b }
15
+ group = ENV.fetch("GROUP_UPDATES", "false") == "true"
15
16
 
16
17
  credentials = [
17
18
  {
@@ -49,7 +50,7 @@ parser = Dependabot::FileParsers.for_package_manager("devbox").new(
49
50
  dependencies = parser.parse
50
51
  puts "Found #{dependencies.length} devbox package(s)"
51
52
 
52
- dependencies.each do |dep| # rubocop:disable Metrics/BlockLength
53
+ def check_dep(dep, files, credentials)
53
54
  puts "Checking #{dep.name} (#{dep.version})..."
54
55
 
55
56
  checker = Dependabot::UpdateCheckers.for_package_manager("devbox").new(
@@ -58,43 +59,84 @@ dependencies.each do |dep| # rubocop:disable Metrics/BlockLength
58
59
  credentials: credentials
59
60
  )
60
61
 
61
- if checker.up_to_date?
62
- puts " up to date"
63
- next
64
- end
62
+ return nil if checker.up_to_date? && puts(" up to date")
65
63
 
66
64
  requirements_to_unlock = checker.requirements_unlocked_or_can_be? ? :own : :none
67
65
 
68
- updated_deps =
69
- begin
70
- checker.updated_dependencies(requirements_to_unlock: requirements_to_unlock)
71
- rescue Dependabot::AllVersionsIgnored
72
- puts " all versions ignored"
73
- next
74
- end
66
+ begin
67
+ checker.updated_dependencies(requirements_to_unlock: requirements_to_unlock)
68
+ rescue Dependabot::AllVersionsIgnored
69
+ puts " all versions ignored"
70
+ nil
71
+ end
72
+ end
75
73
 
76
- updater = Dependabot::FileUpdaters.for_package_manager("devbox").new(
77
- dependencies: updated_deps,
78
- dependency_files: files,
79
- credentials: credentials
80
- )
74
+ if group
75
+ all_updated_deps = dependencies.filter_map { |dep| check_dep(dep, files, credentials) }.flatten
81
76
 
82
- updated_files = updater.updated_dependency_files
77
+ if all_updated_deps.empty?
78
+ puts "All packages up to date."
79
+ else
80
+ updater = Dependabot::FileUpdaters.for_package_manager("devbox").new(
81
+ dependencies: all_updated_deps,
82
+ dependency_files: files,
83
+ credentials: credentials
84
+ )
85
+
86
+ updated_files = updater.updated_dependency_files
87
+
88
+ pr_creator = Dependabot::PullRequestCreator.new(
89
+ source: source,
90
+ base_commit: commit,
91
+ dependencies: all_updated_deps,
92
+ files: updated_files,
93
+ credentials: credentials,
94
+ label_language: true
95
+ )
83
96
 
84
- pr_creator = Dependabot::PullRequestCreator.new(
85
- source: source,
86
- base_commit: commit,
87
- dependencies: updated_deps,
88
- files: updated_files,
89
- credentials: credentials,
90
- label_language: true
91
- )
97
+ begin
98
+ pr = pr_creator.create
99
+ if pr
100
+ puts "PR created: #{pr.html_url}"
101
+ else
102
+ puts "PR already exists or no changes needed"
103
+ end
104
+ rescue Dependabot::PullRequestCreator::UnmergedPRExists => e
105
+ puts "Skipping: #{e.message} (closed but not merged — delete the branch to recreate)"
106
+ end
107
+ end
108
+ else
109
+ dependencies.each do |dep| # rubocop:disable Metrics/BlockLength
110
+ updated_deps = check_dep(dep, files, credentials)
111
+ next unless updated_deps
112
+
113
+ updater = Dependabot::FileUpdaters.for_package_manager("devbox").new(
114
+ dependencies: updated_deps,
115
+ dependency_files: files,
116
+ credentials: credentials
117
+ )
118
+
119
+ updated_files = updater.updated_dependency_files
120
+
121
+ pr_creator = Dependabot::PullRequestCreator.new(
122
+ source: source,
123
+ base_commit: commit,
124
+ dependencies: updated_deps,
125
+ files: updated_files,
126
+ credentials: credentials,
127
+ label_language: true
128
+ )
92
129
 
93
- pr = pr_creator.create
94
- if pr
95
- puts " PR created: #{pr.html_url}"
96
- else
97
- puts " PR already exists or no changes needed"
130
+ begin
131
+ pr = pr_creator.create
132
+ if pr
133
+ puts " PR created: #{pr.html_url}"
134
+ else
135
+ puts " PR already exists or no changes needed"
136
+ end
137
+ rescue Dependabot::PullRequestCreator::UnmergedPRExists => e
138
+ puts " Skipping: #{e.message} (closed but not merged — delete the branch to recreate)"
139
+ end
98
140
  end
99
141
  end
100
142
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-devbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andoni A.