resr 0.1.1 → 0.1.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +19 -12
- data/lib/resr.rb +28 -3
- data/lib/resr/cli.rb +26 -3
- data/lib/resr/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b314612ca9de094798f43a67f908a64675b460a
|
4
|
+
data.tar.gz: fc9c46d9e780bd68d6525c94e36e85bf8ba0ee9d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebdea240a22f9f2e5220ff7349b3ac55d8b39722b46440b20e7c92644a348f29b4b227c59bfbea6e4e8bdbd6a2acd995134f7a735da040a0b8d8ae42ddd32344
|
7
|
+
data.tar.gz: db8fe21c8d39df309b95e848054ffe2a029416e5794c6e41b7c604dc74b1d8a65c8c81a7664e2819cdd41aae35fcf2f9adbad125c7cc2f91296b4217a84b7a86
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,22 +1,28 @@
|
|
1
1
|
# Resr
|
2
2
|
|
3
|
-
A
|
3
|
+
A ridiculously simple way of managing soft-ownership of staging servers using Slack and channel topics for state.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
7
|
$ gem install resr
|
8
|
-
|
8
|
+
|
9
9
|
## Setup
|
10
10
|
|
11
|
-
|
11
|
+
### Generate a legacy token in Slack
|
12
|
+
|
13
|
+
Visit the [Slack Legacy tokens](https://api.slack.com/custom-integrations/legacy-tokens) page and generate a token for your Workspace/User.
|
14
|
+
|
15
|
+
### Configure resr
|
16
|
+
|
17
|
+
Copy the following to `~/.resr.yml`, and add the token that was generated in the previous section.
|
12
18
|
|
13
19
|
```yml
|
14
|
-
slack_token:
|
20
|
+
slack_token: 'YOUR_LEGACY_SLACK_TOKEN'
|
15
21
|
|
16
22
|
channels:
|
17
|
-
dev-deploy-io: # Your
|
18
|
-
io: ':flag-io:' # Mapping between the server console name and how
|
19
|
-
cat: ':cat2:' # it is represented in Slack. In this case,
|
23
|
+
dev-deploy-io: # Your Slack channel that manages state
|
24
|
+
io: ':flag-io:' # Mapping between the server console name and how
|
25
|
+
cat: ':cat2:' # it is represented in Slack. In this case,
|
20
26
|
dog: ':trashdog:' # as emoji.
|
21
27
|
|
22
28
|
dev-deploys:
|
@@ -27,11 +33,12 @@ channels:
|
|
27
33
|
## Usage
|
28
34
|
|
29
35
|
Commands:
|
30
|
-
resr
|
31
|
-
resr
|
32
|
-
resr
|
33
|
-
resr
|
34
|
-
|
36
|
+
resr --version, -v # Display the current version
|
37
|
+
resr free SERVER # Free/release ownership of the SERVER
|
38
|
+
resr help [COMMAND] # Describe available commands or one specific command
|
39
|
+
resr list # List all servers and who owns them
|
40
|
+
resr take SERVER [DESC] # Take ownership of the SERVER and set an optional description
|
41
|
+
|
35
42
|
The command options `free`, `list`, and `take` are aliased as `f`, `l`, and `t` respectively.
|
36
43
|
|
37
44
|
## Development
|
data/lib/resr.rb
CHANGED
@@ -4,6 +4,8 @@ require 'slack'
|
|
4
4
|
require 'yaml'
|
5
5
|
|
6
6
|
module Resr
|
7
|
+
DEFAULT_CONFIG = '.resr.yml'.freeze
|
8
|
+
|
7
9
|
def self.list
|
8
10
|
channels
|
9
11
|
end
|
@@ -20,8 +22,34 @@ module Resr
|
|
20
22
|
channel.save
|
21
23
|
end
|
22
24
|
|
25
|
+
def self.config
|
26
|
+
@config ||= YAML::load_file(config_file_location)
|
27
|
+
end
|
28
|
+
|
23
29
|
private
|
24
30
|
|
31
|
+
def self.config_file_location
|
32
|
+
if ENV['RESR_CONFIG']
|
33
|
+
expanded_file_location = File.absolute_path(ENV['RESR_CONFIG'])
|
34
|
+
|
35
|
+
if File.file?(expanded_file_location)
|
36
|
+
return expanded_file_location
|
37
|
+
else
|
38
|
+
raise "Resr config not found at #{expanded_file_location}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
config_file =
|
43
|
+
case
|
44
|
+
when File.file?(DEFAULT_CONFIG)
|
45
|
+
DEFAULT_CONFIG
|
46
|
+
when File.file?(File.join(Dir.home, DEFAULT_CONFIG))
|
47
|
+
File.join(Dir.home, DEFAULT_CONFIG)
|
48
|
+
else
|
49
|
+
raise 'Resr config has not been found.'
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
25
53
|
def self.channels
|
26
54
|
@channels ||= config.dig('channels').map { |name, mappings| State.new(name, mappings, slack_client) }
|
27
55
|
end
|
@@ -30,9 +58,6 @@ module Resr
|
|
30
58
|
config.fetch('slack_token')
|
31
59
|
end
|
32
60
|
|
33
|
-
def self.config
|
34
|
-
@config ||= YAML::load_file(File.join(Dir.home, '.resr.yml'))
|
35
|
-
end
|
36
61
|
|
37
62
|
def self.slack_client
|
38
63
|
@slack_client ||=
|
data/lib/resr/cli.rb
CHANGED
@@ -3,18 +3,36 @@ require "resr"
|
|
3
3
|
|
4
4
|
module Resr
|
5
5
|
class CLI < Thor
|
6
|
+
map %w[--version -v] => :__print_version
|
6
7
|
|
7
|
-
desc 'take SERVER', 'Take ownership of the SERVER'
|
8
|
+
desc 'take SERVER [DESC]', 'Take ownership of the SERVER and set an optional description'
|
9
|
+
long_desc <<-LONGDESC
|
10
|
+
`resr free SERVER` will reserve SERVER using the current git branch name
|
11
|
+
|
12
|
+
`resr free SERVER 'custom desc'` will reserve SERVER using 'custom desc'
|
13
|
+
LONGDESC
|
8
14
|
option aliases: :t
|
9
15
|
def take(server, details = nil)
|
10
16
|
details = `git rev-parse --abbrev-ref HEAD`.chomp if details.nil?
|
11
|
-
|
17
|
+
response = Resr.take(server, details: details)
|
18
|
+
|
19
|
+
if response.ok?
|
20
|
+
say "Reserved #{server}"
|
21
|
+
else
|
22
|
+
say "Reservation failed: #{response.error}"
|
23
|
+
end
|
12
24
|
end
|
13
25
|
|
14
26
|
desc 'free SERVER', 'Free/release ownership of the SERVER'
|
15
27
|
option aliases: :f
|
16
28
|
def free(server)
|
17
|
-
Resr.free server
|
29
|
+
response = Resr.free server
|
30
|
+
|
31
|
+
if response.ok?
|
32
|
+
say "Released #{server}"
|
33
|
+
else
|
34
|
+
say "Release failed: #{response.error}"
|
35
|
+
end
|
18
36
|
end
|
19
37
|
|
20
38
|
desc 'list', 'List all servers and who owns them'
|
@@ -32,5 +50,10 @@ module Resr
|
|
32
50
|
end
|
33
51
|
end
|
34
52
|
end
|
53
|
+
|
54
|
+
desc "--version, -v", "Display the current version"
|
55
|
+
def __print_version
|
56
|
+
puts Resr::VERSION
|
57
|
+
end
|
35
58
|
end
|
36
59
|
end
|
data/lib/resr/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Rustad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|