resr 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02dd19b9cdaacb6853c5b08314058dc6e718b9f2
4
- data.tar.gz: a1ed6da592e72632ce23c6e691d47b2454092be4
3
+ metadata.gz: 9b314612ca9de094798f43a67f908a64675b460a
4
+ data.tar.gz: fc9c46d9e780bd68d6525c94e36e85bf8ba0ee9d
5
5
  SHA512:
6
- metadata.gz: 17a40603be86d7716aa49493a057936fdbf791d09d4e7d09ca912a0afdc9602bcb1b88a17418e0f68ffa66c45d45d81928eedd543ddddc28a0e4b93448be0972
7
- data.tar.gz: e2f467ae630937c97cf80770d4c6d8ce2e930faff01f839b998115d11e32833a416d8e3ce3cb946750abc51144d1cf18025184caded5096b56976f8a4cf3bfbf
6
+ metadata.gz: ebdea240a22f9f2e5220ff7349b3ac55d8b39722b46440b20e7c92644a348f29b4b227c59bfbea6e4e8bdbd6a2acd995134f7a735da040a0b8d8ae42ddd32344
7
+ data.tar.gz: db8fe21c8d39df309b95e848054ffe2a029416e5794c6e41b7c604dc74b1d8a65c8c81a7664e2819cdd41aae35fcf2f9adbad125c7cc2f91296b4217a84b7a86
data/.gitignore CHANGED
@@ -13,3 +13,4 @@
13
13
  *.gem
14
14
  .rspec_status
15
15
  .tags
16
+ .resr.yml
data/README.md CHANGED
@@ -1,22 +1,28 @@
1
1
  # Resr
2
2
 
3
- A ridiculous way soft-managing ownership of staging servers, using Slack and channel topics for state.
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
- Copy the following to `~/.resr.yml`, and adjust as necessary.
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: [YOUR_OAUTH_SLACK_TOKEN]
20
+ slack_token: 'YOUR_LEGACY_SLACK_TOKEN'
15
21
 
16
22
  channels:
17
- dev-deploy-io: # Your slack channel name
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 free SERVER # Free/release ownership of the SERVER
31
- resr help [COMMAND] # Describe available commands or one specific command
32
- resr list # List all servers and who owns them
33
- resr take SERVER # Take ownership of the SERVER
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
@@ -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 ||=
@@ -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
- say Resr.take(server, details: details)
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
@@ -1,3 +1,3 @@
1
1
  module Resr
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
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.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-13 00:00:00.000000000 Z
11
+ date: 2017-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler