cogy 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +29 -15
- data/lib/cogy/command.rb +3 -3
- data/lib/cogy/version.rb +1 -1
- data/lib/cogy.rb +4 -4
- 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: 0dc60289e97c5f49e30bfd90581fe24743fc04c6
|
4
|
+
data.tar.gz: 422827094a27717584a27c0f2e1812cd7297811f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a21ad7aa25394ee9eeeb6423f49ad6c122c82a7ed4efce6e81d8704da2bf69850a03ddb69d0bf67b7c6f00b4e042980272c51c4828b754853d27b81a8fc83d7a
|
7
|
+
data.tar.gz: 9c5f3b2626f38622200600577c4f20fc59510414455b5e0db88d32b6e6cccc4f01b4777700fd4673d62e35949d35ce832b305df610056038967cb3e31d430d75
|
data/README.md
CHANGED
@@ -1,36 +1,52 @@
|
|
1
1
|
# Cogy
|
2
2
|
|
3
|
-
Cogy
|
4
|
-
|
3
|
+
Cogy integrates [Cog](https://operable.io/) with Rails
|
4
|
+
in a way that managing commands becomes a breeze.
|
5
|
+
|
6
|
+
## Status
|
7
|
+
|
8
|
+
*DISCLAIMER*: While we use Cogy in production, it's still in public alpha and
|
9
|
+
is under heavy development.
|
10
|
+
|
11
|
+
This means that a few critical bits are missing (the Relay executable and
|
12
|
+
RSpec helpers to name a few) and the API is not stable yet.
|
13
|
+
|
14
|
+
However, feel free to test it and gives us your feedback!
|
5
15
|
|
6
16
|
## Why
|
7
17
|
|
8
|
-
Creating a command that talks with a Rails app
|
18
|
+
Creating a Cog command that talks with a Rails app typically involves writing
|
9
19
|
a route, maybe a controller, an action and code to handle the command arguments
|
10
20
|
and options.
|
11
21
|
|
12
|
-
This is a repetitive task and
|
13
|
-
|
22
|
+
This is a tedious and repetitive task and involves writing a lot of boilerplate
|
23
|
+
code each time someone wants to add a new command.
|
24
|
+
|
25
|
+
Cogy is an opinionated library that provides a way to get rid of all the
|
26
|
+
repetitive work and makes writing commands a breeze!
|
14
27
|
|
15
|
-
|
28
|
+
Making a new command available for use is as simple as adding the following line
|
16
29
|
to a file in your application:
|
17
30
|
|
18
31
|
```ruby
|
19
32
|
# in cogy/my_commands.rb
|
20
33
|
|
21
|
-
on "foo", desc: "Echo a foo bar back at you!" do |
|
34
|
+
on "foo", desc: "Echo a foo bar back at you!" do |_args, _opts, user|
|
22
35
|
"@#{user}: foo bar"
|
23
36
|
end
|
24
37
|
```
|
25
38
|
|
39
|
+
...and deploying!
|
40
|
+
|
26
41
|
## How it works
|
27
42
|
|
28
43
|
Cogy is essentially three things:
|
29
44
|
|
30
|
-
1. An opinionated way to
|
31
|
-
Rails app and end up
|
32
|
-
Cogy provides versioning and dynamically generates the
|
33
|
-
is also served by your Rails app
|
45
|
+
1. An opinionated way to write, manage & ship commands: All Cogy commands are
|
46
|
+
defined in your Rails app and end up invoking a single executable within the
|
47
|
+
Relay (see below). Cogy provides versioning and dynamically generates the
|
48
|
+
bundle config, which is also served by your Rails app (via a Rails Engine).
|
49
|
+
This, accompanied with the command [TODO: INSERT LINK HERE] that
|
34
50
|
can install bundles from other bundles, makes it possible to automatically
|
35
51
|
install the newly-written commands by invoking a trigger when you deploy
|
36
52
|
your app.
|
@@ -120,7 +136,7 @@ on "calc",
|
|
120
136
|
args: [:a, :b],
|
121
137
|
opts: { op: { type: "string", required: true, short_flag: "o" } },
|
122
138
|
desc: "Performs a calculation between numbers <a> and <b>",
|
123
|
-
|
139
|
+
examples: "!myapp:calc sum 1 2" do |req_args, req_opts, user|
|
124
140
|
op = req_opts[:op].to_sym
|
125
141
|
result = req_args.map(&:to_i).inject(&op)
|
126
142
|
"Hello @#{user}, the result is: #{result}"
|
@@ -144,11 +160,9 @@ However it can be overriden in the application by creating a view in
|
|
144
160
|
## Authors
|
145
161
|
|
146
162
|
* [Agis Anastasopoulos](https://github.com/agis-)
|
163
|
+
* [Mpampis Kostas](https://github.com/charkost)
|
147
164
|
|
148
165
|
## License
|
149
166
|
|
150
167
|
Cogy is licensed under MIT. See [LICENSE](LICENSE).
|
151
168
|
|
152
|
-
|
153
|
-
|
154
|
-
|
data/lib/cogy/command.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
module Cogy
|
2
2
|
class Command
|
3
|
-
attr :name, :args, :opts, :desc, :long_desc, :
|
3
|
+
attr :name, :args, :opts, :desc, :long_desc, :examples, :rules, :handler
|
4
4
|
|
5
|
-
def initialize(name, args: [], opts: {}, desc:, long_desc: nil,
|
5
|
+
def initialize(name, args: [], opts: {}, desc:, long_desc: nil, examples: nil, rules: nil)
|
6
6
|
@name = name
|
7
7
|
@args = [args].flatten.map!(&:to_s)
|
8
8
|
@opts = opts.with_indifferent_access
|
9
9
|
@desc = desc
|
10
10
|
@long_desc = long_desc
|
11
|
-
@
|
11
|
+
@examples = examples
|
12
12
|
@rules = rules || ["allow"]
|
13
13
|
end
|
14
14
|
|
data/lib/cogy/version.rb
CHANGED
data/lib/cogy.rb
CHANGED
@@ -10,8 +10,8 @@ module Cogy
|
|
10
10
|
@@commands = {}
|
11
11
|
|
12
12
|
# Bundle config-related stuff
|
13
|
-
|
14
|
-
|
13
|
+
mattr_accessor :bundle_name
|
14
|
+
@@bundle_name = "cogy"
|
15
15
|
|
16
16
|
mattr_accessor :bundle_description
|
17
17
|
@@bundle_description = "Cogy-generated commands"
|
@@ -74,8 +74,8 @@ module Cogy
|
|
74
74
|
config["commands"][name]["long_description"] = cmd.long_desc
|
75
75
|
end
|
76
76
|
|
77
|
-
if cmd.
|
78
|
-
config["commands"][name]["
|
77
|
+
if cmd.examples
|
78
|
+
config["commands"][name]["examples"] = cmd.examples
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cogy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agis Anastasopoulos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|