semamore 0.0.2
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 +7 -0
- data/bin/semamore +10 -0
- data/lib/semamore.rb +31 -0
- data/lib/semamore_octo_client.rb +23 -0
- metadata +60 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f100dde20e6743280ba73c80efa762df572a934c462fdc20379a1be985857a25
|
4
|
+
data.tar.gz: 99528c7b1c77895f3c59bed8f3184d43fffdda2c923fc598c372d283c5b91c15
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 44a745707e1fb16ddf5012bc5bad335448e4f9662e8b866b8e2cafce8ba591dd216893704f3716c9fea657e14e71769e0c4018e23d0de3cfdfa85e0097c01158
|
7
|
+
data.tar.gz: 1fe68d261e0c6ef547d9fdc05b3d5a5b0660b4355bacf8ce9e61626225bd8b58bc8a03ce0305b2ea5f238916b8c0e646bb1435d9e97b438210d8d9f77c12e448
|
data/bin/semamore
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'semamore'
|
4
|
+
|
5
|
+
command = ARGV[0]
|
6
|
+
pattern = ARGV[1]
|
7
|
+
|
8
|
+
semamore = Semamore.new(token: ENV['GITHUB_TOKEN'])
|
9
|
+
|
10
|
+
semamore.changed_files_guard(repo: ENV['SEMAPHORE_REPO_SLUG'], branch: ENV['BRANCH_NAME'], command: command, pattern: pattern)
|
data/lib/semamore.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'semamore_octo_client'
|
4
|
+
|
5
|
+
class Semamore
|
6
|
+
def initialize(token:, client_options: {})
|
7
|
+
@client = ::SemamoreOctoClient.new(token, options: client_options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def changed_files_guard(repo:, branch:, command:, pattern:)
|
11
|
+
files = client.current_pr_files(repo, branch)
|
12
|
+
|
13
|
+
if has_matching_files?(pattern, files)
|
14
|
+
exec command
|
15
|
+
else
|
16
|
+
exit 0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_reader :client
|
23
|
+
|
24
|
+
def has_matching_files?(pattern, files)
|
25
|
+
files.any? { |file| matches_pattern?(pattern, file[:filename]) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def matches_pattern?(pattern, string)
|
29
|
+
Regexp.new(pattern).match?(string)
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'octokit'
|
2
|
+
|
3
|
+
class SemamoreOctoClient
|
4
|
+
def initialize(token, options: { auto_paginate: true })
|
5
|
+
@client = Octokit::Client.new(options.merge(access_token: token))
|
6
|
+
end
|
7
|
+
|
8
|
+
def current_pr_files(repo, branch)
|
9
|
+
client.pull_request_files(repo, current_pr(repo, branch)[:number])
|
10
|
+
end
|
11
|
+
|
12
|
+
def current_pr(repo, branch)
|
13
|
+
open_prs(repo).select {|pr| pr[:head][:ref] == branch}.first
|
14
|
+
end
|
15
|
+
|
16
|
+
def open_prs(repo)
|
17
|
+
client.pull_requests(repo, :state => "open")
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_reader :repo, :branch, :client
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: semamore
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Luke Bennett
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-07-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: octokit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.14.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.14.0
|
27
|
+
description: Run commands conditionally depending on github PR changed files
|
28
|
+
email: contact@luke.run
|
29
|
+
executables:
|
30
|
+
- semamore
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- bin/semamore
|
35
|
+
- lib/semamore.rb
|
36
|
+
- lib/semamore_octo_client.rb
|
37
|
+
homepage: https://gitlab.com/LukeeeeBennett/semamore
|
38
|
+
licenses:
|
39
|
+
- MIT
|
40
|
+
metadata: {}
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - ">="
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
requirements: []
|
56
|
+
rubygems_version: 3.0.4
|
57
|
+
signing_key:
|
58
|
+
specification_version: 4
|
59
|
+
summary: Run commands depending on changed files
|
60
|
+
test_files: []
|