cogy 0.0.2 → 0.0.3
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/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
|