trent 0.1.0 → 0.2.0
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 +5 -5
- data/CHANGELOG.md +10 -0
- data/README.md +20 -6
- data/bin/gem-release.rb +14 -0
- data/lib/command/command.rb +20 -0
- data/lib/command/sh/sh.rb +2 -0
- data/lib/command/ssh/ssh.rb +2 -0
- data/lib/github/github.rb +4 -0
- data/lib/log.rb +2 -0
- data/lib/trent.rb +16 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ae2e50c64156a238d44cea8d8dd2f75d065a67181c83c4c8393b977185a780dc
|
4
|
+
data.tar.gz: 030376142fdf94609f35462eeaf57c6aeae1c3613c2cacaaa3a0b32090a54fea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a04dada57e421b6c9b832dbed4c8f096448dcc89a61afb0da3f0086f2f865816b90e4d6b1f4be9be1d506a47fcf629a64a6bdd1c194407440476c1e145e7b622
|
7
|
+
data.tar.gz: f106b7156d6a8188e58ee7b802b411fc7a297e9dcf52dabcc562234d6710d5e3d91b95e6be45d702051ea2e3ee2e1d559d4d9eb7a6d25b5e95a1054e53c94285
|
data/CHANGELOG.md
CHANGED
@@ -7,3 +7,13 @@ First release!
|
|
7
7
|
- Ability to run remote ssh commands on Travis CI builds.
|
8
8
|
- Ability to send a comment on the GitHub pull request for the Travis CI build.
|
9
9
|
- Trent only works with Travis-CI at this time.
|
10
|
+
|
11
|
+
### [0.2.0] 2018-08-08
|
12
|
+
|
13
|
+
Add `path` function to Trent to perform string replacing in your commands for you.
|
14
|
+
|
15
|
+
### Added
|
16
|
+
- Add `path` function to Trent to perform string replacing in your commands for you.
|
17
|
+
|
18
|
+
### Changed
|
19
|
+
- Each time you run `sh()` or `ssh()` commands, your command will perform a string replace with all commands you add to `path()`.
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
[](https://rubygems.org/gems/trent)
|
2
|
+
[](https://travis-ci.com/levibostian/Trent)
|
3
|
+
[](https://github.com/levibostian/trent)
|
4
|
+
|
5
|
+
# Trent
|
2
6
|
|
3
7
|
Run and debug bash commands on Travis-CI much easier.
|
4
8
|
|
@@ -34,6 +38,10 @@ This makes it difficult to debug when things go wrong. Knowing what commands wer
|
|
34
38
|
|
35
39
|
```
|
36
40
|
$> bundle add trent
|
41
|
+
|
42
|
+
or...
|
43
|
+
|
44
|
+
$> gem install trent
|
37
45
|
```
|
38
46
|
|
39
47
|
* Create a new Ruby file for the scripts you want to run and create an instance of `Trent`.
|
@@ -79,6 +87,9 @@ Let's break this down.
|
|
79
87
|
```ruby
|
80
88
|
# Allow a command to fail and not fail the Travis build.
|
81
89
|
ci.sh("false", :fail_non_success => false)
|
90
|
+
|
91
|
+
# Perform a string replace on your commands where "docker-compose" will be replaced with "/opt/bin/docker-compose"
|
92
|
+
ci.path("docker-compose", "/opt/bin/docker-compose")
|
82
93
|
```
|
83
94
|
|
84
95
|
# Run remote SSH shell commmands
|
@@ -137,6 +148,10 @@ ci.config_github('wfoweifwoeifjweoijwefowefweoif')
|
|
137
148
|
ci.github.comment("Tests pass!") # Send comment to pull request for the Travis build. The pull request information is automatically retrieved from the Travis virtual machine the build is running on.
|
138
149
|
```
|
139
150
|
|
151
|
+
# Docs
|
152
|
+
|
153
|
+
Trent documentation is hosted [here](https://www.rubydoc.info/gems/trent/0.1.0).
|
154
|
+
|
140
155
|
# Advanced Trent configuration
|
141
156
|
|
142
157
|
```ruby
|
@@ -160,8 +175,8 @@ Trent is open for pull requests. Check out the [list of issues](https://github.c
|
|
160
175
|
### Building Trent
|
161
176
|
|
162
177
|
```
|
163
|
-
$>
|
164
|
-
$>
|
178
|
+
$> bundle install --path vendor/bundle
|
179
|
+
$> bundle exec rake init
|
165
180
|
```
|
166
181
|
|
167
182
|
This will install all dependencies including for development. You are ready to write some code.
|
@@ -169,14 +184,13 @@ This will install all dependencies including for development. You are ready to w
|
|
169
184
|
While working on Trent, make sure to lint it:
|
170
185
|
|
171
186
|
```
|
172
|
-
$>
|
187
|
+
$> bundle exec rake lint
|
173
188
|
```
|
174
189
|
|
175
190
|
To test out Trent on your machine:
|
176
191
|
|
177
192
|
```
|
178
|
-
$>
|
179
|
-
$> gem install ./trent-X.X.X.gem
|
193
|
+
$> bundle exec rake build
|
180
194
|
```
|
181
195
|
|
182
196
|
Then, you can use it on your own machine using `require 'trent'` in your ruby scripts.
|
data/bin/gem-release.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../lib/trent'
|
4
|
+
|
5
|
+
ci = Trent.new
|
6
|
+
ci.config_github(ENV['DANGER_GITHUB_API_TOKEN'])
|
7
|
+
|
8
|
+
ci.sh('printf "%s\\n%s " "---" ":rubygems_api_key:" > ~/.gem/credentials')
|
9
|
+
ci.sh('printf $RUBYGEMS_KEY >> ~/.gem/credentials')
|
10
|
+
ci.sh('chmod 0600 ~/.gem/credentials')
|
11
|
+
|
12
|
+
ci.sh('bundle exec rake publish')
|
13
|
+
|
14
|
+
ci.github.comment("Success! Don't forget to create a git tag and git release.")
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Conventient methods when working with commands
|
4
|
+
class Command
|
5
|
+
# Takes a hash (paths) and replaces each occurance of the keys with the value within the "command" string.
|
6
|
+
# This is used when you have a "docker-compose ... up -d" command and you want to replace all occurances of "docker-compose" with "/opt/bin/docker-compose".
|
7
|
+
def self.path_replace(command, paths)
|
8
|
+
# I am doing command.split() instead of a simple `gsub()` because I need to replace *whole words* not substrings.
|
9
|
+
edited_command = []
|
10
|
+
command.split(' ').each do |command_phrase|
|
11
|
+
if paths.key? command_phrase
|
12
|
+
edited_command.push(paths[command_phrase])
|
13
|
+
else
|
14
|
+
edited_command.push(command_phrase)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
edited_command.join(' ')
|
19
|
+
end
|
20
|
+
end
|
data/lib/command/sh/sh.rb
CHANGED
data/lib/command/ssh/ssh.rb
CHANGED
data/lib/github/github.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'net/http'
|
2
4
|
require 'json'
|
3
5
|
require_relative '../log'
|
@@ -21,6 +23,8 @@ class GitHub
|
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
26
|
+
private
|
27
|
+
|
24
28
|
def comment_on_pull_request(message)
|
25
29
|
puts "Commenting on GitHub pull request: #{ENV['TRAVIS_REPO_SLUG']}/#{ENV['TRAVIS_PULL_REQUEST']}"
|
26
30
|
uri = URI("https://api.github.com/repos/#{ENV['TRAVIS_REPO_SLUG']}/issues/#{ENV['TRAVIS_PULL_REQUEST']}/comments")
|
data/lib/log.rb
CHANGED
data/lib/trent.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'command/ssh/ssh'
|
2
4
|
require 'github/github'
|
3
5
|
require 'command/sh/sh'
|
4
6
|
require 'colorize'
|
5
7
|
require_relative './log'
|
8
|
+
require 'command/command'
|
6
9
|
|
7
10
|
# Communicate with all of the Trent library with this class.
|
8
11
|
class Trent
|
@@ -11,6 +14,8 @@ class Trent
|
|
11
14
|
|
12
15
|
@color = color
|
13
16
|
@sh = Sh.new
|
17
|
+
|
18
|
+
@paths = {}
|
14
19
|
end
|
15
20
|
|
16
21
|
# Configure how to run remote SSH commmands on server.
|
@@ -23,8 +28,18 @@ class Trent
|
|
23
28
|
@github = GitHub.new(api_key)
|
24
29
|
end
|
25
30
|
|
31
|
+
# While working with bash commands, some commands are not added to the path. That's annoying.
|
32
|
+
# Convenient method to assign a command to a path for replacing.
|
33
|
+
# Example:
|
34
|
+
# ci.path("docker-compose", "/opt/bin/docker-compose")
|
35
|
+
# Now, when you use ci.sh("docker-compose -f ... up -d"), it will run "/opt/bin/docker-compose -f ... up -d" instead.
|
36
|
+
def path(command, path)
|
37
|
+
@paths[command] = path
|
38
|
+
end
|
39
|
+
|
26
40
|
## Run ssh command
|
27
41
|
def ssh(command, fail_non_success = true)
|
42
|
+
command = Command.path_replace(command, @paths)
|
28
43
|
Log.fatal('You did not configure SSH yet.') unless @ssh
|
29
44
|
|
30
45
|
puts command.colorize(@color)
|
@@ -37,6 +52,7 @@ class Trent
|
|
37
52
|
|
38
53
|
# Run local bash command
|
39
54
|
def sh(command, fail_non_success = true)
|
55
|
+
command = Command.path_replace(command, @paths)
|
40
56
|
puts command.colorize(@color)
|
41
57
|
|
42
58
|
result = @sh.run(command)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Levi Bostian
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.58.2
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 12.3.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 12.3.1
|
55
69
|
description: "I have been using Travis-CI for a few years to build, test, and deploy
|
56
70
|
my apps. Bash is great, but using a higher level language for interacting with Travis
|
57
71
|
and the build machine would be very beneficial. \n\n Trent is a convenient ruby
|
@@ -65,6 +79,8 @@ files:
|
|
65
79
|
- CHANGELOG.md
|
66
80
|
- LICENSE
|
67
81
|
- README.md
|
82
|
+
- bin/gem-release.rb
|
83
|
+
- lib/command/command.rb
|
68
84
|
- lib/command/sh/sh.rb
|
69
85
|
- lib/command/ssh/ssh.rb
|
70
86
|
- lib/github/github.rb
|
@@ -90,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
106
|
version: '0'
|
91
107
|
requirements: []
|
92
108
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.
|
109
|
+
rubygems_version: 2.7.7
|
94
110
|
signing_key:
|
95
111
|
specification_version: 4
|
96
112
|
summary: Run and debug bash commands on Travis-CI much easier.
|