legionio 0.3.1 → 0.4.0
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/.circleci/config.yml +27 -10
- data/.gitignore +1 -0
- data/.rubocop.yml +7 -2
- data/CHANGELOG.md +21 -0
- data/Dockerfile +9 -0
- data/Gemfile +0 -11
- data/README.md +158 -42
- data/Rakefile +0 -6
- data/bitbucket-pipelines.yml +17 -52
- data/docker_deploy.rb +8 -0
- data/exe/legion +3 -49
- data/{bin/legion → exe/legionio} +5 -42
- data/exe/lex_gen +5 -0
- data/{legion.gemspec → legionio.gemspec} +25 -20
- data/lib/legion.rb +4 -0
- data/lib/legion/cli.rb +56 -0
- data/lib/legion/cli/chain.rb +35 -0
- data/lib/legion/cli/cohort.rb +10 -0
- data/lib/legion/cli/function.rb +41 -0
- data/lib/legion/cli/lex/actor.rb +31 -0
- data/lib/legion/cli/lex/exchange.rb +32 -0
- data/lib/legion/cli/lex/message.rb +32 -0
- data/lib/legion/cli/lex/queue.rb +45 -0
- data/lib/legion/cli/lex/runner.rb +70 -0
- data/lib/legion/cli/lex/templates/actor.erb +6 -0
- data/lib/legion/cli/lex/templates/actor_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/base/bitbucket.yml.erb +69 -0
- data/lib/legion/cli/lex/templates/base/gemfile.erb +3 -0
- data/lib/legion/cli/lex/templates/base/gemspec.erb +26 -0
- data/lib/legion/cli/lex/templates/base/gitignore.erb +11 -0
- data/lib/legion/cli/lex/templates/base/lex.erb +9 -0
- data/lib/legion/cli/lex/templates/base/lex_spec.erb +5 -0
- data/lib/legion/cli/lex/templates/base/lic.erb +21 -0
- data/lib/legion/cli/lex/templates/base/rakefile.erb +6 -0
- data/lib/legion/cli/lex/templates/base/readme.md.erb +2 -0
- data/lib/legion/cli/lex/templates/base/rubocop.yml.erb +15 -0
- data/lib/legion/cli/lex/templates/base/spec_helper.rb.erb +11 -0
- data/lib/legion/cli/lex/templates/base/version.erb +7 -0
- data/lib/legion/cli/lex/templates/exchange.erb +11 -0
- data/lib/legion/cli/lex/templates/exchange_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/message.erb +23 -0
- data/lib/legion/cli/lex/templates/message_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/queue.erb +12 -0
- data/lib/legion/cli/lex/templates/queue_helper.erb +24 -0
- data/lib/legion/cli/lex/templates/queue_spec.erb +11 -0
- data/lib/legion/cli/lex/templates/runner.erb +11 -0
- data/lib/legion/cli/lex/templates/runner_spec.erb +11 -0
- data/lib/legion/cli/relationship.rb +22 -0
- data/lib/legion/cli/task.rb +49 -0
- data/lib/legion/cli/trigger.rb +88 -0
- data/lib/legion/cli/version.rb +5 -0
- data/lib/legion/extensions.rb +57 -62
- data/lib/legion/extensions/actors/base.rb +0 -2
- data/lib/legion/extensions/actors/poll.rb +0 -1
- data/lib/legion/extensions/actors/subscription.rb +1 -0
- data/lib/legion/extensions/builders/runners.rb +5 -0
- data/lib/legion/extensions/core.rb +9 -4
- data/lib/legion/extensions/helpers/base.rb +3 -3
- data/lib/legion/extensions/helpers/lex.rb +29 -1
- data/lib/legion/extensions/helpers/logger.rb +3 -6
- data/lib/legion/extensions/helpers/task.rb +1 -1
- data/lib/legion/extensions/transport.rb +9 -7
- data/lib/legion/lex.rb +89 -0
- data/lib/legion/service.rb +55 -4
- data/lib/legion/version.rb +1 -1
- metadata +196 -51
- data/bin/console +0 -16
- data/bin/setup +0 -8
- data/bin/test +0 -32
- data/lib/legion/exceptions/handled_task.rb +0 -6
- data/lib/legion/exceptions/invalidjson.rb +0 -5
- data/lib/legion/exceptions/missingargument.rb +0 -6
- data/lib/legion/exceptions/wrongtype.rb +0 -10
- data/lib/legion/exceptions/wrongtypes/array.rb +0 -8
- data/lib/legion/exceptions/wrongtypes/hash.rb +0 -8
- data/lib/legion/exceptions/wrongtypes/integer.rb +0 -8
- data/lib/legion/exceptions/wrongtypes/string.rb +0 -8
- data/settings/client.json +0 -25
data/docker_deploy.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require './lib/legion/version'
|
4
|
+
puts "Building docker image for Legion v#{Legion::VERSION}"
|
5
|
+
system("docker build --tag legionio/legion:v#{Legion::VERSION} .")
|
6
|
+
puts 'Pushing to hub.docker.com'
|
7
|
+
system("docker push legionio/legion:v#{Legion::VERSION}")
|
8
|
+
puts 'completed'
|
data/exe/legion
CHANGED
@@ -1,50 +1,4 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
options = { action: :run }
|
7
|
-
|
8
|
-
daemonize_help = 'run daemonized in the background (default: false)'
|
9
|
-
pidfile_help = 'the pid filename'
|
10
|
-
logfile_help = 'the log filename'
|
11
|
-
include_help = 'an additional $LOAD_PATH (may be used more than once)'
|
12
|
-
debug_help = 'set $DEBUG to true'
|
13
|
-
warn_help = 'enable warnings'
|
14
|
-
time_help = 'only run legion for X seconds'
|
15
|
-
|
16
|
-
op = OptionParser.new
|
17
|
-
op.banner = 'An example of how to daemonize a long running Ruby process.'
|
18
|
-
op.separator ''
|
19
|
-
op.separator 'Usage: server [options]'
|
20
|
-
op.separator ''
|
21
|
-
|
22
|
-
op.separator ''
|
23
|
-
op.separator 'Process options:'
|
24
|
-
op.on('-d', '--daemonize', daemonize_help) { options[:daemonize] = true }
|
25
|
-
op.on('-p', '--pid PIDFILE', pidfile_help) { |value| options[:pidfile] = value }
|
26
|
-
op.on('-l', '--log LOGFILE', logfile_help) { |value| options[:logfile] = value }
|
27
|
-
op.on('-t', '--time 10', time_help) { |value| options[:time_limit] = value }
|
28
|
-
|
29
|
-
op.separator ''
|
30
|
-
op.separator 'Ruby options:'
|
31
|
-
op.on('-I', '--include PATH', include_help) do |value|
|
32
|
-
$LOAD_PATH.unshift(*value.split(':').map do |v|
|
33
|
-
File.expand_path(v)
|
34
|
-
end)
|
35
|
-
end
|
36
|
-
op.on('--debug', debug_help) { $DEBUG = true }
|
37
|
-
op.on('--warn', warn_help) { $-w = true }
|
38
|
-
|
39
|
-
op.separator ''
|
40
|
-
op.separator 'Common options:'
|
41
|
-
op.on('-h', '--help') { options[:action] = :help }
|
42
|
-
op.on('-v', '--version') { options[:action] = :version }
|
43
|
-
|
44
|
-
op.separator ''
|
45
|
-
op.parse!(ARGV)
|
46
|
-
|
47
|
-
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
48
|
-
Legion.start
|
49
|
-
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
50
|
-
Legion::Process.new(options).run!
|
2
|
+
require 'thor'
|
3
|
+
require 'legion/cli'
|
4
|
+
Legion::CLI.start
|
data/{bin/legion → exe/legionio}
RENAMED
@@ -1,9 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
5
|
-
require 'etc'
|
4
|
+
$LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
5
|
|
6
|
+
require 'optparse'
|
7
7
|
options = { action: :run }
|
8
8
|
|
9
9
|
daemonize_help = 'run daemonized in the background (default: false)'
|
@@ -45,46 +45,9 @@ op.on('-v', '--version') { options[:action] = :version }
|
|
45
45
|
op.separator ''
|
46
46
|
op.parse!(ARGV)
|
47
47
|
|
48
|
-
|
49
|
-
|
50
|
-
if children == 1
|
51
|
-
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
52
|
-
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
48
|
+
unless options[:action] == :help
|
49
|
+
require 'legion'
|
53
50
|
Legion.start
|
51
|
+
require 'legion/process'
|
54
52
|
Legion::Process.new(options).run!
|
55
|
-
else
|
56
|
-
children.times do
|
57
|
-
@children.push(
|
58
|
-
Process.fork do
|
59
|
-
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
60
|
-
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
61
|
-
|
62
|
-
Legion.start
|
63
|
-
sleep(1)
|
64
|
-
Legion::Process.new(options).run!
|
65
|
-
end
|
66
|
-
)
|
67
|
-
sleep(5)
|
68
|
-
end
|
69
|
-
|
70
|
-
@quit = false
|
71
|
-
trap('SIGINT') do
|
72
|
-
@quit = true
|
73
|
-
@children.each do |child|
|
74
|
-
Process.kill('SIGINT', child)
|
75
|
-
end
|
76
|
-
sleep(5)
|
77
|
-
end
|
78
|
-
|
79
|
-
trap('SIGTERM') do
|
80
|
-
@children.each do |child|
|
81
|
-
Process.kill('SIGTERM', child)
|
82
|
-
end
|
83
|
-
|
84
|
-
sleep(5)
|
85
|
-
end
|
86
|
-
|
87
|
-
sleep(1) until @quit
|
88
53
|
end
|
89
|
-
|
90
|
-
sleep(2)
|
data/exe/lex_gen
ADDED
@@ -5,7 +5,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
5
5
|
require 'legion/version'
|
6
6
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
|
-
spec.name =
|
8
|
+
spec.name = 'legionio'
|
9
9
|
spec.version = Legion::VERSION
|
10
10
|
spec.authors = ['Esity']
|
11
11
|
spec.email = ['matthewdiverson@gmail.com']
|
@@ -13,47 +13,52 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.summary = 'Legion Core Software to string it all together'
|
14
14
|
spec.description = 'Legion Core runs Legion Framwork'
|
15
15
|
spec.homepage = 'https://bitbucket.org/legion-io/legion/'
|
16
|
-
spec.
|
16
|
+
spec.metadata['source_code_uri'] = 'https://bitbucket.org/legion-io/legion/src/master/'
|
17
|
+
spec.metadata['documentation_uri'] = 'https://legionio.atlassian.net/wiki/spaces/LEGION/overview'
|
18
|
+
spec.metadata['bug_tracker_uri'] = 'https://legionio.atlassian.net/browse/LEG'
|
19
|
+
spec.license = 'MIT'
|
17
20
|
spec.required_ruby_version = '>= 2.5.0'
|
18
21
|
|
19
22
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
23
|
f.match(%r{^(test|spec|features)/})
|
21
24
|
end
|
25
|
+
|
22
26
|
spec.bindir = 'exe'
|
23
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
28
|
spec.require_paths = ['lib']
|
25
29
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
else
|
32
|
-
spec.add_dependency 'concurrent-ruby-ext'
|
33
|
-
spec.add_dependency 'legion-data'
|
34
|
-
spec.add_dependency 'legion-transport'
|
35
|
-
spec.add_dependency 'oj'
|
36
|
-
end
|
37
|
-
|
38
|
-
spec.add_dependency 'concurrent-ruby'
|
39
|
-
spec.add_dependency 'daemons'
|
40
|
-
spec.add_dependency 'hashdiff'
|
30
|
+
spec.add_dependency 'concurrent-ruby', '>= 1.1.7'
|
31
|
+
spec.add_dependency 'concurrent-ruby-ext', '>= 1.1.7'
|
32
|
+
spec.add_dependency 'daemons', '>= 1.3.1'
|
33
|
+
spec.add_dependency 'oj', '>= 3.10'
|
34
|
+
spec.add_dependency 'thor', '>= 1'
|
41
35
|
|
42
|
-
spec.add_dependency 'bunny'
|
43
36
|
spec.add_dependency 'legion-cache'
|
44
|
-
spec.add_dependency 'legion-crypt'
|
37
|
+
spec.add_dependency 'legion-crypt', '>= 0.2.0'
|
45
38
|
spec.add_dependency 'legion-exceptions'
|
46
39
|
spec.add_dependency 'legion-json'
|
47
40
|
spec.add_dependency 'legion-logging'
|
48
41
|
spec.add_dependency 'legion-settings'
|
42
|
+
spec.add_dependency 'legion-transport', '>= 1.1.8'
|
49
43
|
|
50
44
|
spec.add_dependency 'lex-node'
|
51
45
|
|
52
|
-
spec.add_development_dependency 'bundler'
|
53
46
|
spec.add_development_dependency 'codecov'
|
47
|
+
spec.add_development_dependency 'legion-data'
|
54
48
|
spec.add_development_dependency 'rake'
|
55
49
|
spec.add_development_dependency 'rspec'
|
56
50
|
spec.add_development_dependency 'rspec_junit_formatter'
|
57
51
|
spec.add_development_dependency 'rubocop'
|
52
|
+
spec.add_development_dependency 'rubocop-rake'
|
53
|
+
spec.add_development_dependency 'rubocop-rspec'
|
58
54
|
spec.add_development_dependency 'simplecov'
|
55
|
+
|
56
|
+
spec.add_development_dependency 'lex-conditioner'
|
57
|
+
spec.add_development_dependency 'lex-health'
|
58
|
+
spec.add_development_dependency 'lex-http'
|
59
|
+
spec.add_development_dependency 'lex-lex'
|
60
|
+
spec.add_development_dependency 'lex-log'
|
61
|
+
spec.add_development_dependency 'lex-scheduler'
|
62
|
+
spec.add_development_dependency 'lex-tasker'
|
63
|
+
spec.add_development_dependency 'lex-transformer'
|
59
64
|
end
|
data/lib/legion.rb
CHANGED
data/lib/legion/cli.rb
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# require 'legion/cli/version'
|
2
|
+
require 'thor'
|
3
|
+
require 'legion'
|
4
|
+
require 'legion/service'
|
5
|
+
|
6
|
+
require 'legion/lex'
|
7
|
+
require 'legion/cli/cohort'
|
8
|
+
|
9
|
+
require 'legion/cli/relationship'
|
10
|
+
require 'legion/cli/task'
|
11
|
+
require 'legion/cli/chain'
|
12
|
+
require 'legion/cli/trigger'
|
13
|
+
require 'legion/cli/function'
|
14
|
+
|
15
|
+
module Legion
|
16
|
+
class CLI < Thor
|
17
|
+
include Thor::Actions
|
18
|
+
check_unknown_options!
|
19
|
+
|
20
|
+
def self.exit_on_failure?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.source_root
|
25
|
+
File.dirname(__FILE__)
|
26
|
+
end
|
27
|
+
|
28
|
+
desc 'version', 'Display MyGem version'
|
29
|
+
map %w[-v --version] => :version
|
30
|
+
|
31
|
+
def version
|
32
|
+
say "Legion::CLI #{VERSION}"
|
33
|
+
end
|
34
|
+
|
35
|
+
desc 'lex', 'used to build LEXs'
|
36
|
+
subcommand 'lex', Legion::Cli::LexBuilder
|
37
|
+
|
38
|
+
desc 'cohort', ''
|
39
|
+
subcommand 'cohort', Legion::Cli::Cohort
|
40
|
+
|
41
|
+
desc 'function', 'deal with functions'
|
42
|
+
subcommand 'function', Legion::Cli::Function
|
43
|
+
|
44
|
+
desc 'relationship', 'creates and manages relationships'
|
45
|
+
subcommand 'relationship', Legion::Cli::Relationship
|
46
|
+
|
47
|
+
desc 'task', 'creates and manages tasks'
|
48
|
+
subcommand 'task', Legion::Cli::Task
|
49
|
+
|
50
|
+
desc 'chain', 'creates and manages chains'
|
51
|
+
subcommand 'chain', Legion::Cli::Chain
|
52
|
+
|
53
|
+
desc 'trigger', 'sends a task to a worker'
|
54
|
+
subcommand 'trigger', Legion::Cli::Trigger
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Legion
|
2
|
+
class Cli
|
3
|
+
class Chain < Thor
|
4
|
+
desc 'create', 'create'
|
5
|
+
def create(name)
|
6
|
+
Legion::Service.new(cache: false, crypt: false, extensions: false, log_level: 'error')
|
7
|
+
say "chain created, id: #{Legion::Data::Model::Chain.insert({ name: name })}", :green
|
8
|
+
end
|
9
|
+
|
10
|
+
desc 'show', 'show'
|
11
|
+
option :limit, type: :numeric, required: true, default: 10, desc: 'how many tasks to return'
|
12
|
+
def show
|
13
|
+
Legion::Service.new(cache: false, crypt: false, extensions: false, log_level: 'error')
|
14
|
+
rows = [%w[id name active]]
|
15
|
+
Legion::Data::Model::Chain.limit(options[:limit]).order(:id).reverse_each do |row|
|
16
|
+
rows.push([row.values[:id], row.values[:name], row.values[:active]])
|
17
|
+
end
|
18
|
+
|
19
|
+
print_table rows
|
20
|
+
end
|
21
|
+
|
22
|
+
desc 'delete', 'delete'
|
23
|
+
option :confirm, type: :boolean
|
24
|
+
def delete(id)
|
25
|
+
Legion::Service.new(cache: false, crypt: false, extensions: false, log_level: 'error')
|
26
|
+
return if !options[:confirm] && !(yes? "Are you sure you want to delete chain #{id} and all dependent relationships", :red)
|
27
|
+
|
28
|
+
Legion::Data::Model::Chain[id].delete
|
29
|
+
say 'Deleted!'
|
30
|
+
end
|
31
|
+
|
32
|
+
default_task :show
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Legion
|
2
|
+
class Cli
|
3
|
+
class Function < Thor
|
4
|
+
desc 'find', 'find'
|
5
|
+
option :internal, type: :boolean, default: false
|
6
|
+
def find
|
7
|
+
Legion::Service.new(cache: false, crypt: false, extensions: false, log_level: 'error')
|
8
|
+
response = ask 'trigger extension?', limited_to: Legion::Data::Model::Extension.map(:name)
|
9
|
+
trigger_extension = Legion::Data::Model::Extension.where(name: response).first
|
10
|
+
runners = Legion::Data::Model::Runner.where(extension_id: trigger_extension.values[:id])
|
11
|
+
if runners.count == 1
|
12
|
+
trigger_runner = runners.first
|
13
|
+
say "Auto selecting #{trigger_runner.values[:name]} since it is the only option"
|
14
|
+
else
|
15
|
+
response = ask 'trigger runner?', limited_to: runners.map(:name)
|
16
|
+
trigger_runner = Legion::Data::Model::Runner.where(name: response).where(extension_id: trigger_extension.values[:id]).first
|
17
|
+
end
|
18
|
+
|
19
|
+
functions = Legion::Data::Model::Function.where(runner_id: trigger_runner.values[:id])
|
20
|
+
|
21
|
+
if functions.count == 1
|
22
|
+
trigger_function = functions.first
|
23
|
+
say "Auto selecting #{trigger_function.values[:name]} since it is the only option"
|
24
|
+
else
|
25
|
+
response = ask 'trigger function?', limited_to: Legion::Data::Model::Function.where(runner_id: trigger_runner.values[:id]).map(:name)
|
26
|
+
trigger_function = trigger_runner.functions(name: response).first
|
27
|
+
end
|
28
|
+
# say "#{trigger_runner.values[:namespace]}.#{trigger_function.values[:name]} selected as trigger", :green, :italicized
|
29
|
+
# mute { trigger_function.values[:id] }
|
30
|
+
say trigger_function.values[:id]
|
31
|
+
# puts self.methods(false)
|
32
|
+
end
|
33
|
+
|
34
|
+
desc 'delete', 'delete'
|
35
|
+
def delete; end
|
36
|
+
|
37
|
+
desc 'activate', 'activate'
|
38
|
+
def activate; end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Legion
|
2
|
+
class Cli
|
3
|
+
module Lex
|
4
|
+
class Actor < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
no_commands do
|
12
|
+
def lex
|
13
|
+
Dir.pwd.split('/').last.split('-').last
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'create :name', 'creates a new actor'
|
18
|
+
method_option :type, enum: %w[subscription every poll once loop], default: 'subscription'
|
19
|
+
def create(name)
|
20
|
+
template('templates/actor.erb', "#{lex}/lib/actors/#{name}.rb", { name: name, lex: lex, type: options[:type] })
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'delete :name', 'deletes an actor'
|
24
|
+
def delete(name)
|
25
|
+
remove_file("lib/legion/extensions/#{lex}/actors/#{name}.rb")
|
26
|
+
remove_file("spec/actors/#{name}_spec.rb")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Legion
|
2
|
+
class Cli
|
3
|
+
module Lex
|
4
|
+
class Exchange < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
no_commands do
|
12
|
+
def lex
|
13
|
+
Dir.pwd.split('/').last.split('-').last
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'create :name', 'creates a new exchange class'
|
18
|
+
def create(name)
|
19
|
+
template('templates/queue.erb', "lib/legion/extensions/#{lex}/transport/exchanges/#{name}.rb", { name: name, lex: lex })
|
20
|
+
template('templates/queue_spec.erb', "spec/exchanges/#{name}_spec.rb", { name: name, lex: lex })
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'delete :name', 'deletes an exchange class'
|
24
|
+
def delete(name)
|
25
|
+
remove_file("lib/legion/extensions/#{lex}/transport/exchanges/#{name}.rb")
|
26
|
+
remove_file("spec/exchanges/#{name}_spec.rb")
|
27
|
+
remove_file("spec/transport/exchanges/#{name}_spec.rb")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Legion
|
2
|
+
class Cli
|
3
|
+
module Lex
|
4
|
+
class Message < Thor
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
def self.source_root
|
8
|
+
File.dirname(__FILE__)
|
9
|
+
end
|
10
|
+
|
11
|
+
no_commands do
|
12
|
+
def lex
|
13
|
+
Dir.pwd.split('/').last.split('-').last
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'create :name', 'creates a new message'
|
18
|
+
def create(name)
|
19
|
+
template('templates/message.erb', "lib/legion/extensions/#{lex}/transport/messages/#{name}.rb", { name: name, lex: lex })
|
20
|
+
template('templates/message_spec.erb', "spec/messages/#{name}_spec.rb", { name: name, lex: lex })
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'delete :name', 'deletes a message class'
|
24
|
+
def delete(name)
|
25
|
+
remove_file("lib/legion/extensions/#{lex}/transport/messages/#{name}.rb")
|
26
|
+
remove_file("spec/messages/#{name}_spec.rb")
|
27
|
+
remove_file("spec/transport/messages/#{name}_spec.rb")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|