dependabot_gitlab 0.1.4 → 0.1.5
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.
- checksums.yaml +4 -4
- data/lib/dependabot_gitlab/core_functions.rb +125 -0
- data/lib/dependabot_gitlab/updater.rb +39 -0
- data/lib/dependabot_gitlab/version.rb +5 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0809afad8c8cd6468cf13426b56dae01f71ea9fa0f94fecf1da26cf153362de
|
4
|
+
data.tar.gz: bc449248466de947f7a14ddb7bb612ad83fe08be62f9aa09d30c4ceb7340932e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4dfaf945c2aebdec1665a079f53a1cfd53ff0158f8e3c600e3b2ba346a7831674d0a0448ad817b0d16ccb8de27c07bb1168f4030b2651d349aa931c7056d669
|
7
|
+
data.tar.gz: 6345b0619c1dcd2ba03cc1a3fd7a5b40f10dfa6df137d08e120bfb0da6ce4313c266ecd5f26695e8a90aff03666da79b8ef98594abb9f1a63fc20784754431b8
|
@@ -0,0 +1,125 @@
|
|
1
|
+
module DependabotGitlab
|
2
|
+
class CoreFunctions
|
3
|
+
|
4
|
+
DEFAULT_HOST_NAME = 'gitlab.com'.freeze
|
5
|
+
DEFAULT_PROVIDER = 'gitlab'.freeze
|
6
|
+
DEFAULT_API_ENDPOINT = 'https://gitlab.com/api/v4'.freeze
|
7
|
+
DEFAULT_BRANCH = 'master'.freeze
|
8
|
+
|
9
|
+
def initialize(credentials, settings)
|
10
|
+
@settings = settings
|
11
|
+
@credentials = credentials
|
12
|
+
end
|
13
|
+
|
14
|
+
def dependencies_info(create_merge_request)
|
15
|
+
messages = []
|
16
|
+
|
17
|
+
init_source
|
18
|
+
|
19
|
+
file_fetcher = fetcher
|
20
|
+
files = file_fetcher.files
|
21
|
+
|
22
|
+
dependencies = parser(files).parse
|
23
|
+
|
24
|
+
commit = file_fetcher.commit
|
25
|
+
|
26
|
+
dependencies.select(&:top_level?).each do |dep|
|
27
|
+
checker = checker(files, dep)
|
28
|
+
|
29
|
+
next if checker.up_to_date?
|
30
|
+
|
31
|
+
requirements_to_unlock = unlock_requirements(checker)
|
32
|
+
|
33
|
+
next if requirements_to_unlock == :update_not_possible
|
34
|
+
|
35
|
+
updated_deps = checker.updated_dependencies(
|
36
|
+
requirements_to_unlock: requirements_to_unlock
|
37
|
+
)
|
38
|
+
|
39
|
+
updater = file_updater(updated_deps, files)
|
40
|
+
updated_files = updater.updated_dependency_files
|
41
|
+
|
42
|
+
create_mr(updated_files, updated_deps, commit) if create_merge_request
|
43
|
+
|
44
|
+
messages << {name: dep.name, old_version: dep.version, new_version: updater.dependencies.first.version}
|
45
|
+
end
|
46
|
+
|
47
|
+
messages.join
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def init_source
|
53
|
+
@source = Dependabot::Source.new(
|
54
|
+
provider: @settings[:provider] || DEFAULT_PROVIDER,
|
55
|
+
hostname: @settings[:hostname] || DEFAULT_HOST_NAME,
|
56
|
+
api_endpoint: @settings[:api_endpoint] || DEFAULT_API_ENDPOINT,
|
57
|
+
repo: @settings[:repo],
|
58
|
+
directory: @settings[:dir],
|
59
|
+
branch: @settings[:branch] || DEFAULT_BRANCH
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
def fetcher
|
64
|
+
Dependabot::FileFetchers.for_package_manager(@settings[:pkg_manager]).new(
|
65
|
+
source: @source,
|
66
|
+
credentials: @credentials,
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def parser(files)
|
71
|
+
Dependabot::FileParsers.for_package_manager(@settings[:pkg_manager]).new(
|
72
|
+
dependency_files: files,
|
73
|
+
source: @source,
|
74
|
+
credentials: @credentials,
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
def checker(files, dep)
|
79
|
+
Dependabot::UpdateCheckers.for_package_manager(@settings[:pkg_manager]).new(
|
80
|
+
dependency: dep,
|
81
|
+
dependency_files: files,
|
82
|
+
credentials: @credentials,
|
83
|
+
)
|
84
|
+
end
|
85
|
+
|
86
|
+
def unlock_requirements(checker)
|
87
|
+
if !checker.requirements_unlocked_or_can_be?
|
88
|
+
if checker.can_update?(requirements_to_unlock: :none) then
|
89
|
+
:none
|
90
|
+
else
|
91
|
+
:update_not_possible
|
92
|
+
end
|
93
|
+
elsif checker.can_update?(requirements_to_unlock: :own) then
|
94
|
+
:own
|
95
|
+
elsif checker.can_update?(requirements_to_unlock: :all) then
|
96
|
+
:all
|
97
|
+
else
|
98
|
+
:update_not_possible
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def file_updater(updated_deps, files)
|
103
|
+
Dependabot::FileUpdaters.for_package_manager(@settings[:pkg_manager]).new(
|
104
|
+
dependencies: updated_deps,
|
105
|
+
dependency_files: files,
|
106
|
+
credentials: @credentials,
|
107
|
+
)
|
108
|
+
end
|
109
|
+
|
110
|
+
def create_mr(updated_files, updated_deps, commit)
|
111
|
+
pr_creator = Dependabot::PullRequestCreator.new(
|
112
|
+
source: @source,
|
113
|
+
base_commit: commit,
|
114
|
+
dependencies: updated_deps,
|
115
|
+
files: updated_files,
|
116
|
+
credentials: @credentials,
|
117
|
+
assignees: @settings[:assignees],
|
118
|
+
author_details: @settings[:author_details] || {name: "Dependabot", email: "no-reply@github.com"},
|
119
|
+
label_language: true,
|
120
|
+
)
|
121
|
+
|
122
|
+
pr_creator.create
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require "dependabot/file_fetchers"
|
2
|
+
require "dependabot/file_parsers"
|
3
|
+
require "dependabot/update_checkers"
|
4
|
+
require "dependabot/file_updaters"
|
5
|
+
require "dependabot/pull_request_creator"
|
6
|
+
require "dependabot/omnibus"
|
7
|
+
|
8
|
+
require_relative 'core_functions'
|
9
|
+
|
10
|
+
module DependabotGitlab
|
11
|
+
class Updater
|
12
|
+
def initialize(credentials, settings, verbose: true)
|
13
|
+
@credentials = credentials
|
14
|
+
@core = CoreFunctions.new(credentials, settings)
|
15
|
+
@verbose = verbose
|
16
|
+
end
|
17
|
+
|
18
|
+
def update_dependencies(create_merge_request:)
|
19
|
+
return dependencies_update_with_timer(create_merge_request) if @verbose
|
20
|
+
|
21
|
+
dependencies_update(create_merge_request)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def dependencies_update_with_timer(create_merge_request)
|
27
|
+
p 'Start dependencies update'
|
28
|
+
time = Time.now
|
29
|
+
|
30
|
+
@core.dependencies_info(create_merge_request)
|
31
|
+
|
32
|
+
p "Done (#{Time.now - time })"
|
33
|
+
end
|
34
|
+
|
35
|
+
def dependencies_update(create_merge_request)
|
36
|
+
@core.dependencies_info(create_merge_request)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dependabot_gitlab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- storozhenkoalex
|
@@ -18,6 +18,9 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- lib/dependabot_gitlab.rb
|
21
|
+
- lib/dependabot_gitlab/core_functions.rb
|
22
|
+
- lib/dependabot_gitlab/updater.rb
|
23
|
+
- lib/dependabot_gitlab/version.rb
|
21
24
|
homepage:
|
22
25
|
licenses:
|
23
26
|
- MIT
|