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 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