refocus 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +5 -7
- data/lib/refocus.rb +1 -1
- data/lib/refocus/cli.rb +3 -0
- data/lib/refocus/cli/aspects.rb +18 -0
- data/lib/refocus/cli/resources.rb +51 -0
- data/lib/refocus/cli/subjects.rb +18 -0
- data/lib/refocus/errors.rb +9 -0
- data/lib/refocus/http.rb +14 -5
- data/lib/refocus/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29e511a576db53916cd93b5a32c1fbb62b2171e5
|
4
|
+
data.tar.gz: 975c4fa9a9ddd4935253e1b44d9e63cbef97f706
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 555c420afa099c429ec8e2aa4a235df161a2b9845f5aa5610423c3196a47578b77d82e46fb79476ceb8fa4ee8b37673cab1fa2609a9899a163fdb5fe7a67bd43
|
7
|
+
data.tar.gz: 8c0f72d975a9434ba1b857536ee7f541d90a46437bd0f0cd070c4e1b7586691db73823dedf01a4743a8e161f5cce447da7a74d72f634fe587165214556d3353e
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -24,8 +24,6 @@ Or install it yourself as:
|
|
24
24
|
## Usage
|
25
25
|
|
26
26
|
### CLI
|
27
|
-
|
28
|
-
Run
|
29
27
|
```
|
30
28
|
Usage:
|
31
29
|
refocus [OPTIONS] SUBCOMMAND [ARG] ...
|
@@ -43,19 +41,19 @@ Options:
|
|
43
41
|
|
44
42
|
### Library
|
45
43
|
|
46
|
-
Refocus will pick up `
|
44
|
+
Refocus will pick up `REFOCUS_URL` and `REFOCUS_API_TOKEN` environment vars if these are set.
|
47
45
|
You can create a client like this in a `pry` or `irb` session, or in your ruby program:
|
48
46
|
|
49
47
|
```ruby
|
50
48
|
require "refocus"
|
51
49
|
|
52
|
-
# Using env vars. This will fail if
|
50
|
+
# Using env vars. This will fail if REFOCUS_URLand REFOCUS_API_TOKEN are unset:
|
53
51
|
refocus = Refocus.client
|
54
52
|
|
55
53
|
# Doing it yourself:
|
56
54
|
refocus = Refocus.client(url: "https://my.refocus.instance.com", token: "some-token-i-generated")
|
57
55
|
```
|
58
|
-
|
56
|
+
#### Subjects
|
59
57
|
|
60
58
|
You can manage subjects like this:
|
61
59
|
|
@@ -73,7 +71,7 @@ refocus.subjects.all
|
|
73
71
|
refocus.subjects.delete(name: "my-subject.child-subject")
|
74
72
|
```
|
75
73
|
|
76
|
-
|
74
|
+
#### Aspects
|
77
75
|
|
78
76
|
You can manage aspects like this:
|
79
77
|
|
@@ -88,7 +86,7 @@ refocus.aspects.get(name: "my-aspect")
|
|
88
86
|
refocus.aspects.delete(name: "my-aspect")
|
89
87
|
```
|
90
88
|
|
91
|
-
|
89
|
+
#### Lenses
|
92
90
|
|
93
91
|
Lenses are not supported at this time.
|
94
92
|
|
data/lib/refocus.rb
CHANGED
@@ -2,7 +2,7 @@ require "refocus/client"
|
|
2
2
|
require "refocus/version"
|
3
3
|
|
4
4
|
module Refocus
|
5
|
-
def self.client(url:
|
5
|
+
def self.client(url: ENV.fetch("REFOCUS_URL"), token: ENV.fetch("REFOCUS_API_TOKEN"))
|
6
6
|
Client.new(url: url, token: token)
|
7
7
|
end
|
8
8
|
end
|
data/lib/refocus/cli.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Refocus
|
2
|
+
class AspectsDeleteCommand< Clamp::Command
|
3
|
+
parameter "ASPECT", "aspect to delete"
|
4
|
+
|
5
|
+
def execute
|
6
|
+
refocus.aspects.delete(name: aspect)
|
7
|
+
end
|
8
|
+
|
9
|
+
def refocus
|
10
|
+
Refocus.client
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
Cli.class_eval do
|
15
|
+
subcommand "aspects:delete", "Delete an aspect", Refocus::AspectsDeleteCommand
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "refocus/cli"
|
2
|
+
require "json"
|
3
|
+
require "yaml"
|
4
|
+
|
5
|
+
module Refocus
|
6
|
+
class ResourcesSyncCommand < Clamp::Command
|
7
|
+
|
8
|
+
option(["-a", "--action"], "ACTION", "action to perform: create or update", default: "create") do |s|
|
9
|
+
(raise ArgumentError, "Invalid action: #{s}") unless %w{create update}.include?(s)
|
10
|
+
s.to_sym
|
11
|
+
end
|
12
|
+
|
13
|
+
def execute
|
14
|
+
subjects.each do |subject|
|
15
|
+
refocus.subjects.send(action, {
|
16
|
+
name: subject.fetch("name"),
|
17
|
+
options: subject.fetch("properties")
|
18
|
+
})
|
19
|
+
end
|
20
|
+
|
21
|
+
aspects.each do |aspect|
|
22
|
+
refocus.aspects.send(action, {
|
23
|
+
name: aspect.fetch("name"),
|
24
|
+
options: aspect.fetch("properties")
|
25
|
+
})
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def input
|
30
|
+
@input ||= YAML.safe_load(STDIN.read)
|
31
|
+
end
|
32
|
+
|
33
|
+
def subjects
|
34
|
+
input["subjects"] || []
|
35
|
+
end
|
36
|
+
|
37
|
+
def aspects
|
38
|
+
input["aspects"] || []
|
39
|
+
end
|
40
|
+
|
41
|
+
def refocus
|
42
|
+
Refocus.client
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
Cli.class_eval do
|
47
|
+
subcommand "resources:sync", "Create refocus resources from STDIN", ResourcesSyncCommand
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Refocus
|
2
|
+
class SubjectsDeleteCommand< Clamp::Command
|
3
|
+
parameter "SUBJECT", "subject to delete"
|
4
|
+
|
5
|
+
def execute
|
6
|
+
refocus.subjects.delete(name: subject)
|
7
|
+
end
|
8
|
+
|
9
|
+
def refocus
|
10
|
+
Refocus.client
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
Cli.class_eval do
|
15
|
+
subcommand "subjects:delete", "Delete a subject", Refocus::SubjectsDeleteCommand
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
data/lib/refocus/http.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "refocus/errors"
|
2
|
+
|
1
3
|
module Refocus
|
2
4
|
class Http
|
3
5
|
|
@@ -10,23 +12,30 @@ module Refocus
|
|
10
12
|
end
|
11
13
|
|
12
14
|
def post(path, body:, expects: 201)
|
13
|
-
connection(path).post(body: convert(body), headers: headers, expects: expects)
|
15
|
+
handle { connection(path).post(body: convert(body), headers: headers, expects: expects) }
|
14
16
|
end
|
15
17
|
|
16
18
|
def get(path)
|
17
|
-
connection(path).get(headers: headers, expects: 200)
|
19
|
+
handle { connection(path).get(headers: headers, expects: 200) }
|
18
20
|
end
|
19
21
|
|
20
22
|
def patch(path, body:)
|
21
|
-
connection(path).patch(body: convert(body), headers: headers, expects: 200)
|
23
|
+
handle { connection(path).patch(body: convert(body), headers: headers, expects: 200) }
|
22
24
|
end
|
23
25
|
|
24
26
|
def put(path, body:)
|
25
|
-
connection(path).put(body: convert(body), headers: headers, expects: 201)
|
27
|
+
handle { connection(path).put(body: convert(body), headers: headers, expects: 201) }
|
26
28
|
end
|
27
29
|
|
28
30
|
def delete(path)
|
29
|
-
connection(path).delete(headers: headers, expects: 200)
|
31
|
+
handle { connection(path).delete(headers: headers, expects: 200) }
|
32
|
+
end
|
33
|
+
|
34
|
+
def handle(&block)
|
35
|
+
yield
|
36
|
+
rescue Excon::Error::BadRequest => e
|
37
|
+
response = JSON.parse(e.response.body)["errors"].first["message"]
|
38
|
+
raise ApiError, JSON.parse(e.response.body)
|
30
39
|
end
|
31
40
|
|
32
41
|
def headers
|
data/lib/refocus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: refocus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Shea
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -116,8 +116,12 @@ files:
|
|
116
116
|
- lib/refocus.rb
|
117
117
|
- lib/refocus/aspects.rb
|
118
118
|
- lib/refocus/cli.rb
|
119
|
+
- lib/refocus/cli/aspects.rb
|
120
|
+
- lib/refocus/cli/resources.rb
|
119
121
|
- lib/refocus/cli/samples.rb
|
122
|
+
- lib/refocus/cli/subjects.rb
|
120
123
|
- lib/refocus/client.rb
|
124
|
+
- lib/refocus/errors.rb
|
121
125
|
- lib/refocus/http.rb
|
122
126
|
- lib/refocus/json_helper.rb
|
123
127
|
- lib/refocus/path_helper.rb
|