dependanot 0.1.5 → 0.1.9
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/dependabot.gemspec +1 -0
- data/lib/dependabot/bundler/update.rb +1 -1
- data/lib/dependabot/cli/scan.rb +11 -22
- data/lib/dependabot/cli.rb +4 -1
- data/lib/dependabot/git.rb +21 -1
- data/lib/dependabot/publish.rb +63 -0
- data/lib/dependabot/version.rb +1 -1
- data/lib/dependabot.rb +6 -1
- data/lib/github.rb +8 -0
- metadata +17 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e34d7bc44fc32487ee5bf6d9c7582282fd2af8c365b9a8e02bf3a00c82587218
|
|
4
|
+
data.tar.gz: 4c3af4d15049a52d8767f3d9a204b7ce3e54ab507d8cf735749a9c6c234a2528
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1914dc7d10d63356e17d7ee4ab551b219d3c482107a3c072b94dad414129ab5d3adec217f88d810419d3320dd3d087198fa122c89212fd74e93c3ad56aff65fa
|
|
7
|
+
data.tar.gz: 034c3507b26657718121ab7ebf3049408c65d96ca94696031f248e5b80996ab2ffaa736f75bad4012cd9ca762c63a50d202c8ae6fb2fe1f40d72883c699cfd5f
|
data/dependabot.gemspec
CHANGED
|
@@ -8,7 +8,7 @@ module Dependabot
|
|
|
8
8
|
|
|
9
9
|
Dir.chdir(dependency.path.parent) do
|
|
10
10
|
::Bundler.with_unbundled_env do
|
|
11
|
-
system "bundle update #{dependency.name} --conservative --quiet"
|
|
11
|
+
system({ "RUBYOPT" => "-W0" }, "bundle update #{dependency.name} --conservative --quiet")
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
data/lib/dependabot/cli/scan.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
module Dependabot
|
|
4
4
|
module CLI
|
|
5
5
|
class Scan
|
|
6
|
-
attr_reader :path
|
|
6
|
+
attr_reader :path, :options
|
|
7
7
|
|
|
8
8
|
def initialize(path, options)
|
|
9
9
|
@path = ::Pathname.new(path)
|
|
@@ -12,7 +12,7 @@ module Dependabot
|
|
|
12
12
|
|
|
13
13
|
def run
|
|
14
14
|
each_dependency do |dependency|
|
|
15
|
-
update
|
|
15
|
+
update(dependency) if match?(dependency)
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ module Dependabot
|
|
|
20
20
|
|
|
21
21
|
def each_file(&block)
|
|
22
22
|
::Spandx::Core::PathTraversal
|
|
23
|
-
.new(path, recursive:
|
|
23
|
+
.new(path, recursive: options[:recursive])
|
|
24
24
|
.each(&block)
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -30,27 +30,16 @@ module Dependabot
|
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
def update
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def branch_name_for(dependency)
|
|
43
|
-
"dependanot/#{dependency.package_manager}/#{dependency.name}"
|
|
33
|
+
def update(dependency)
|
|
34
|
+
::Dependabot.logger.info("Updating #{dependency.name}…")
|
|
35
|
+
::Dependabot::Publish.new(dependency).update!(push: options[:push])
|
|
36
|
+
rescue StandardError => boom
|
|
37
|
+
Dependabot.logger.error(boom)
|
|
38
|
+
boom.backtrace.each { |x| Dependabot.logger.debug(x) }
|
|
44
39
|
end
|
|
45
40
|
|
|
46
|
-
def
|
|
47
|
-
|
|
48
|
-
default_branch = git.repo.head.name
|
|
49
|
-
git.checkout(branch: branch_name)
|
|
50
|
-
yield git
|
|
51
|
-
ensure
|
|
52
|
-
git.repo.checkout_head(strategy: :force)
|
|
53
|
-
git.repo.checkout(default_branch)
|
|
41
|
+
def match?(dependency)
|
|
42
|
+
options[:dependency].nil? || options[:dependency] == dependency.name
|
|
54
43
|
end
|
|
55
44
|
end
|
|
56
45
|
end
|
data/lib/dependabot/cli.rb
CHANGED
|
@@ -7,7 +7,10 @@ require "dependabot/cli/scan"
|
|
|
7
7
|
module Dependabot
|
|
8
8
|
module CLI
|
|
9
9
|
class Application < Thor
|
|
10
|
-
desc "scan [
|
|
10
|
+
desc "scan [OPTION]... [FILE]", "Scan a directory or file for dependencies to update"
|
|
11
|
+
method_option :dependency, aliases: "-d", type: :string, desc: "Update a specific dependency", default: nil
|
|
12
|
+
method_option :push, aliases: "-p", type: :boolean, desc: "Push the update as a pull request. Default: --no-push", default: false
|
|
13
|
+
method_option :recursive, aliases: "-r", type: :boolean, desc: "Perform a recursive. Default: --no-recursive", default: false
|
|
11
14
|
def scan(path = Pathname.pwd)
|
|
12
15
|
::Dependabot::CLI::Scan.new(path, options).run
|
|
13
16
|
end
|
data/lib/dependabot/git.rb
CHANGED
|
@@ -5,7 +5,6 @@ module Dependabot
|
|
|
5
5
|
attr_reader :repo
|
|
6
6
|
|
|
7
7
|
def initialize(path)
|
|
8
|
-
@path = path
|
|
9
8
|
@repo = Rugged::Repository.discover(path)
|
|
10
9
|
end
|
|
11
10
|
|
|
@@ -14,6 +13,14 @@ module Dependabot
|
|
|
14
13
|
repo.checkout(branch)
|
|
15
14
|
end
|
|
16
15
|
|
|
16
|
+
def push(remote: "origin", branch: "HEAD")
|
|
17
|
+
repo.push(remote, ["refs/heads/#{branch}"], credentials: credentials_for(remote))
|
|
18
|
+
rescue StandardError
|
|
19
|
+
Dir.chdir(File.dirname(repo.path)) do
|
|
20
|
+
system("git push #{remote} #{branch}", exception: true)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
17
24
|
def patch
|
|
18
25
|
repo.index.diff.patch
|
|
19
26
|
end
|
|
@@ -36,5 +43,18 @@ module Dependabot
|
|
|
36
43
|
def stage(path)
|
|
37
44
|
repo.index.add(path)
|
|
38
45
|
end
|
|
46
|
+
|
|
47
|
+
def credentials_for(remote)
|
|
48
|
+
Dependabot.logger.debug(repo.remotes[remote].url)
|
|
49
|
+
if ssh?(repo.remotes[remote].url)
|
|
50
|
+
Rugged::Credentials::SshKeyFromAgent.new(username: "git")
|
|
51
|
+
else
|
|
52
|
+
Rugged::Credentials::UserPassword.new(username: "x-access-token", password: Dependabot.github.token)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def ssh?(url)
|
|
57
|
+
url.include?("git@github.com:")
|
|
58
|
+
end
|
|
39
59
|
end
|
|
40
60
|
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dependabot
|
|
4
|
+
class Publish
|
|
5
|
+
attr_reader :dependency
|
|
6
|
+
|
|
7
|
+
def initialize(dependency)
|
|
8
|
+
@dependency = dependency
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def update!(push: false)
|
|
12
|
+
git_for(dependency, push: push) do |git|
|
|
13
|
+
::Spandx::Core::Plugin.enhance(dependency)
|
|
14
|
+
Dependabot.logger.debug(git.patch) unless git.patch.empty?
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def branch_name_for(dependency)
|
|
21
|
+
"dependanot/#{dependency.package_manager}/#{dependency.name}"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def git_for(dependency, branch_name: branch_name_for(dependency), push: false)
|
|
25
|
+
git = ::Dependabot::Git.new(dependency.path.parent)
|
|
26
|
+
default_branch = git.repo.head.name
|
|
27
|
+
git.checkout(branch: branch_name)
|
|
28
|
+
yield git
|
|
29
|
+
publish_pull_request_for(dependency, default_branch, branch_name, git, push) unless git.patch.empty?
|
|
30
|
+
ensure
|
|
31
|
+
git.repo.checkout_head(strategy: :force)
|
|
32
|
+
git.repo.checkout(default_branch)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def description_for(dependency)
|
|
36
|
+
<<~MARKDOWN
|
|
37
|
+
Bumps [#{dependency.name}](#)
|
|
38
|
+
|
|
39
|
+
<details>
|
|
40
|
+
<summary>Changelog</summary>
|
|
41
|
+
</details>
|
|
42
|
+
|
|
43
|
+
<details>
|
|
44
|
+
<summary>Commits</summary>
|
|
45
|
+
</details>
|
|
46
|
+
MARKDOWN
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def publish_pull_request_for(dependency, default_branch, branch_name, git, push)
|
|
50
|
+
git.commit(all: true, message: "chore: Update #{dependency.name}")
|
|
51
|
+
return unless push
|
|
52
|
+
|
|
53
|
+
git.push(remote: "origin", branch: branch_name)
|
|
54
|
+
Dependabot.octokit.create_pull_request(
|
|
55
|
+
GitHub.name_with_owner_from(git.repo.remotes["origin"].url),
|
|
56
|
+
default_branch,
|
|
57
|
+
branch_name,
|
|
58
|
+
"chore(deps): bump #{dependency.name} from #{dependency.version}",
|
|
59
|
+
description_for(dependency)
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
data/lib/dependabot/version.rb
CHANGED
data/lib/dependabot.rb
CHANGED
|
@@ -9,6 +9,7 @@ require "spandx"
|
|
|
9
9
|
|
|
10
10
|
require_relative "dependabot/bundler/update"
|
|
11
11
|
require_relative "dependabot/git"
|
|
12
|
+
require_relative "dependabot/publish"
|
|
12
13
|
require_relative "dependabot/tracer"
|
|
13
14
|
require_relative "dependabot/version"
|
|
14
15
|
|
|
@@ -16,7 +17,11 @@ module Dependabot
|
|
|
16
17
|
class Error < StandardError; end
|
|
17
18
|
|
|
18
19
|
def self.logger
|
|
19
|
-
@logger ||= Logger.new($stderr)
|
|
20
|
+
@logger ||= Logger.new($stderr, level: ENV.fetch("LOG_LEVEL", Logger::INFO)).tap do |x|
|
|
21
|
+
x.formatter = proc do |_severity, _datetime, _progname, message|
|
|
22
|
+
"[v#{VERSION}] #{message}\n"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
20
25
|
end
|
|
21
26
|
|
|
22
27
|
def self.tracer
|
data/lib/github.rb
CHANGED
|
@@ -18,6 +18,14 @@ class GitHub
|
|
|
18
18
|
@workspace = workspace
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
class << self
|
|
22
|
+
def name_with_owner_from(url)
|
|
23
|
+
regex = %r{(?<x>(?<scheme>https|ssh)://)?(?<username>git@)?github.com[:|/](?<nwo>\w+/\w+)(?<extension>\.git)?}
|
|
24
|
+
match = url.match(regex)
|
|
25
|
+
match && match["nwo"]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
private
|
|
22
30
|
|
|
23
31
|
def default_api_url
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependanot
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mo khan
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-12-
|
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '1.1'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: debug
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '1.4'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '1.4'
|
|
83
97
|
description: The Dependabot CLI
|
|
84
98
|
email:
|
|
85
99
|
- xlgmokha@github.com
|
|
@@ -97,6 +111,7 @@ files:
|
|
|
97
111
|
- lib/dependabot/cli.rb
|
|
98
112
|
- lib/dependabot/cli/scan.rb
|
|
99
113
|
- lib/dependabot/git.rb
|
|
114
|
+
- lib/dependabot/publish.rb
|
|
100
115
|
- lib/dependabot/tracer.rb
|
|
101
116
|
- lib/dependabot/version.rb
|
|
102
117
|
- lib/github.rb
|