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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 240eec4b8ff3acf8639e063effad34615f7775d41458b10bca7f6c6970146f42
4
- data.tar.gz: 8be08fca8ccd4369ad38a8edfe11e5ad79b903a76824b3ee26fd3d918d3e0c15
3
+ metadata.gz: c0809afad8c8cd6468cf13426b56dae01f71ea9fa0f94fecf1da26cf153362de
4
+ data.tar.gz: bc449248466de947f7a14ddb7bb612ad83fe08be62f9aa09d30c4ceb7340932e
5
5
  SHA512:
6
- metadata.gz: 14a593bfff696de3d8c453198973af7b166f5344131a48a00369521c38caeb4b5a4a49f826e53e191ee7145e82e1298a9664c427381b0dcc3ab5d9257b52262e
7
- data.tar.gz: 21f54b4d4075b66c96c76351318cd85bbc0365850b94f7a12eecab3ba3f3e19aa02b859f4f1098ac6c5f67ee6e4dc3433a14528c1430367c0186da818fcdc6df
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DependabotGitlab
4
+ VERSION = "0.1.5"
5
+ 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
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