xnlogic 1.0.20 → 1.0.21
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xnlogic/cli/application.rb +17 -52
- data/lib/xnlogic/cli/core.rb +38 -0
- data/lib/xnlogic/cli/deploy.rb +37 -0
- data/lib/xnlogic/cli.rb +23 -4
- data/lib/xnlogic/deploy.rb +90 -0
- data/lib/xnlogic/server_profile.rb +54 -0
- data/lib/xnlogic/templates/application/Rakefile.tt +10 -0
- data/lib/xnlogic/templates/application/gemspec.tt +2 -0
- data/lib/xnlogic/templates/application/gitignore.tt +1 -0
- data/lib/xnlogic/templates/application/tasks/deploy.rb.tt +16 -0
- data/lib/xnlogic/templates/deploy/server_profiles/profile.rb.tt +10 -0
- data/lib/xnlogic/templates/vagrant/Vagrantfile.tt +16 -16
- data/lib/xnlogic/version.rb +1 -1
- data/man/xnlogic.ronn +12 -8
- metadata +39 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25f9595876e3994a4a5cc45fd2ff64399e89bec1
|
4
|
+
data.tar.gz: f4df70cdb56a4d33577c6b1ef3a258788c1c7e08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1943afbe6c5502db9f7081ad48b0850c582b28dcea1b0c365c27234e43abb99cb70540f552863372792695d1359e423cda190f025ef63cf76dac9b08cdbd477e
|
7
|
+
data.tar.gz: 6275b9c750acb3bf82eaa3131a3059dd83cbc590a4014850cf28902e14b11a4242acc0e4324e2ef078eba526a351c22797a238dc772b4b42757305418498f1a6
|
@@ -1,17 +1,14 @@
|
|
1
|
-
require '
|
2
|
-
require 'yaml'
|
1
|
+
require 'xnlogic/cli/core'
|
3
2
|
|
4
3
|
module Xnlogic
|
5
|
-
class CLI::Application
|
6
|
-
attr_reader :
|
7
|
-
|
8
|
-
def initialize(options, thor)
|
9
|
-
@options = {}.merge options
|
10
|
-
@app_name = app_name
|
11
|
-
@thor = thor
|
12
|
-
end
|
4
|
+
class CLI::Application < CLI::Core
|
5
|
+
attr_reader :app_name, :base_name, :name, :root
|
13
6
|
|
14
7
|
def set_name(app_name)
|
8
|
+
if File.exists?(options_filename)
|
9
|
+
Xnlogic.ui.info "Can not create an application within an application."
|
10
|
+
exit 1
|
11
|
+
end
|
15
12
|
@name = app_name.chomp("/").tr('-', '_') # remove trailing slash if present
|
16
13
|
@root = options.fetch('root', @name)
|
17
14
|
@app = Pathname.pwd.join(root)
|
@@ -19,32 +16,20 @@ module Xnlogic
|
|
19
16
|
self
|
20
17
|
end
|
21
18
|
|
19
|
+
def options_filename
|
20
|
+
'config/app_options.yaml'
|
21
|
+
end
|
22
|
+
|
22
23
|
def options_file
|
23
|
-
app +
|
24
|
+
app + options_filename
|
24
25
|
end
|
25
26
|
|
26
27
|
def in_existing_project
|
27
28
|
@root = options.fetch('root', '.')
|
28
29
|
@app = Pathname.pwd.join(root)
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
@name ||= options['name']
|
33
|
-
self
|
34
|
-
elsif options['name']
|
35
|
-
@name ||= options['name']
|
36
|
-
self
|
37
|
-
else
|
38
|
-
Xnlogic.ui.info "Not in an existing project. Please run the 'application' command first."
|
39
|
-
exit 1
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def write_options
|
44
|
-
Dir.mkdir(app.join('config')) unless app.join('config').exist?
|
45
|
-
File.open(options_file.to_s, 'w') do |f|
|
46
|
-
f.puts YAML.dump options
|
47
|
-
end
|
30
|
+
super()
|
31
|
+
@name ||= options['name']
|
32
|
+
self
|
48
33
|
end
|
49
34
|
|
50
35
|
def show_source(source)
|
@@ -87,14 +72,6 @@ module Xnlogic
|
|
87
72
|
Xnlogic.ui.info "Once that is done, run 'vagrant ssh' to log in to the VM."
|
88
73
|
end
|
89
74
|
|
90
|
-
def deployment
|
91
|
-
generate_deployment
|
92
|
-
write_options
|
93
|
-
Xnlogic.ui.info ""
|
94
|
-
Xnlogic.ui.info "Deployment files generated. You must deploy from within your app by using the xn-deploy command."
|
95
|
-
Xnlogic.ui.info ""
|
96
|
-
end
|
97
|
-
|
98
75
|
def install_vagrant_note
|
99
76
|
ver = `vagrant --version` rescue ''
|
100
77
|
if ver == ''
|
@@ -148,9 +125,11 @@ module Xnlogic
|
|
148
125
|
".rspec.tt" => ".rspec",
|
149
126
|
"gemspec.tt" => "#{namespaced_path}.gemspec",
|
150
127
|
"Gemfile.tt" => "Gemfile",
|
128
|
+
"Rakefile.tt" => "Rakefile",
|
151
129
|
"Readme.md.tt" => "Readme.md",
|
152
130
|
"config.ru.tt" => "config.ru",
|
153
131
|
"dev/console.rb.tt" => "dev/console.rb",
|
132
|
+
"tasks/deploy.rb.tt" => "tasks/deploy.rb",
|
154
133
|
"torquebox.yml.tt" => "torquebox.yml",
|
155
134
|
"torquebox_init.rb.tt" => "torquebox_init.rb",
|
156
135
|
"lib/gemname.rb.tt" => "lib/#{namespaced_path}.rb",
|
@@ -176,20 +155,6 @@ module Xnlogic
|
|
176
155
|
thor.template("application/#{src}", app.join(dst), opts)
|
177
156
|
end
|
178
157
|
end
|
179
|
-
|
180
|
-
def generate_deployment
|
181
|
-
opts = template_options
|
182
|
-
base_templates = {
|
183
|
-
}
|
184
|
-
|
185
|
-
Xnlogic.ui.info ""
|
186
|
-
Xnlogic.ui.info "Creating Vagrant configuration"
|
187
|
-
Xnlogic.ui.info ""
|
188
|
-
base_templates.each do |src, dst|
|
189
|
-
thor.template("deployment/#{src}", app.join('deployment').join(dst), opts)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
158
|
end
|
194
159
|
end
|
195
160
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Xnlogic
|
5
|
+
class CLI::Core
|
6
|
+
attr_reader :options, :thor, :app
|
7
|
+
|
8
|
+
def initialize(options, thor)
|
9
|
+
@options = {}.merge options
|
10
|
+
@thor = thor
|
11
|
+
@app = Pathname.pwd
|
12
|
+
end
|
13
|
+
|
14
|
+
def options_file
|
15
|
+
app + 'config/deploy_options.yaml'
|
16
|
+
end
|
17
|
+
|
18
|
+
def in_existing_project
|
19
|
+
if options_file.exist?
|
20
|
+
previous_options = YAML.load_file(options_file.to_s)
|
21
|
+
@options = previous_options.merge options
|
22
|
+
else
|
23
|
+
Xnlogic.ui.info "Not in an existing project. Please run the 'application' command first."
|
24
|
+
exit 1
|
25
|
+
end
|
26
|
+
self
|
27
|
+
end
|
28
|
+
|
29
|
+
def write_options
|
30
|
+
Dir.mkdir(app.join('config')) unless app.join('config').exist?
|
31
|
+
File.open(options_file.to_s, 'w') do |f|
|
32
|
+
f.puts YAML.dump options
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'xnlogic/cli/core'
|
2
|
+
|
3
|
+
module Xnlogic
|
4
|
+
class CLI::Deploy
|
5
|
+
attr_reader :options, :thor, :app
|
6
|
+
|
7
|
+
def initialize(options, thor)
|
8
|
+
@options = {}.merge options
|
9
|
+
@thor = thor
|
10
|
+
@app = Pathname.pwd
|
11
|
+
end
|
12
|
+
|
13
|
+
def options_file
|
14
|
+
app + 'config/deploy_options.yaml'
|
15
|
+
end
|
16
|
+
|
17
|
+
def server_profile(hostname)
|
18
|
+
opts = {
|
19
|
+
hostname: hostname,
|
20
|
+
api_hostname: options.fetch('api_hostname', hostname),
|
21
|
+
ssh_user: options['ssh_user'],
|
22
|
+
ssh_key: options['ssh_key']
|
23
|
+
}
|
24
|
+
base_templates = {
|
25
|
+
"server_profiles/profile.rb.tt" => "server_profiles/#{hostname.gsub('.', '_')}.rb",
|
26
|
+
}
|
27
|
+
Xnlogic.ui.info ""
|
28
|
+
Xnlogic.ui.info "Creating server profile for #{ hostname }"
|
29
|
+
Xnlogic.ui.info ""
|
30
|
+
base_templates.each do |src, dst|
|
31
|
+
thor.template("deploy/#{src}", app.join(dst), opts)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
data/lib/xnlogic/cli.rb
CHANGED
@@ -3,6 +3,7 @@ require 'thor'
|
|
3
3
|
module Xnlogic
|
4
4
|
class CLI < Thor
|
5
5
|
require 'xnlogic/cli/application'
|
6
|
+
require 'xnlogic/cli/deploy'
|
6
7
|
include Thor::Actions
|
7
8
|
|
8
9
|
def self.start(*)
|
@@ -59,19 +60,23 @@ module Xnlogic
|
|
59
60
|
method_option "key", type: :string, banner:
|
60
61
|
"You must supply an XN key to be able to download the proprietary dependencies needed to boot your application"
|
61
62
|
method_option "cpus", type: :numeric, banner:
|
62
|
-
"Number of Virtual CPUs the Development VM should use"
|
63
|
+
"Number of Virtual CPUs the Development VM should use (default 2)"
|
63
64
|
method_option "memory", type: :numeric, banner:
|
64
|
-
"Amount of RAM to allow the Development VM to use (in MB)"
|
65
|
+
"Amount of RAM to allow the Development VM to use (default 2048, in MB)"
|
65
66
|
method_option "root", type: :string, banner:
|
66
67
|
"Optionally specify a different root directory name"
|
67
68
|
end
|
68
69
|
|
69
|
-
desc "application NAME [OPTIONS]",
|
70
|
+
desc "application [NAME] [OPTIONS]", <<EOD
|
71
|
+
Creates a skeleton of an XN Logic application.
|
72
|
+
|
73
|
+
If rerunning within an existing project, do not specify a name."
|
74
|
+
EOD
|
70
75
|
vm_config_options
|
71
76
|
method_option "vm_config", type: :boolean, default: true, banner:
|
72
77
|
"Generate VM configuration files"
|
73
78
|
method_option "same", type: :boolean, default: false, banner:
|
74
|
-
"Use previous config"
|
79
|
+
"Use previous config (implies --root .)"
|
75
80
|
def application(name = nil)
|
76
81
|
app = Application.new(options, self)
|
77
82
|
if options['same'] or name.nil?
|
@@ -110,6 +115,20 @@ module Xnlogic
|
|
110
115
|
end
|
111
116
|
|
112
117
|
|
118
|
+
desc "server_profile HOSTNAME [OPTIONS]",
|
119
|
+
"Generate a new server profile"
|
120
|
+
method_option "ssh_user", type: :string, default: 'deploy', banner:
|
121
|
+
"Use a different user account on deploy server"
|
122
|
+
method_option "ssh_key", type: :string, default: "#{ENV['HOME']}/.ssh/id_rsa",
|
123
|
+
banner: "Use a specific ssh key when connecting to the deploy server"
|
124
|
+
method_option "api_hostname", type: :string, banner:
|
125
|
+
"Optional distinct API Hostname"
|
126
|
+
def server_profile(hostname)
|
127
|
+
app = Deploy.new(options, self)
|
128
|
+
app.server_profile(hostname)
|
129
|
+
end
|
130
|
+
|
131
|
+
|
113
132
|
def self.source_root
|
114
133
|
File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
115
134
|
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# xnlogic gem does not require these dependencies itself, they are used by the
|
2
|
+
# generated app which does require them.
|
3
|
+
require 'torquebox-rake-support'
|
4
|
+
require 'torquebox-remote-deployer'
|
5
|
+
|
6
|
+
# Monkey patches deploy utils to modify the environment to allow bundler to run successfully.
|
7
|
+
module TorqueBox
|
8
|
+
module DeployUtils
|
9
|
+
def self.run_command(cmd)
|
10
|
+
puts cmd
|
11
|
+
|
12
|
+
# RUBYOPT has to be unset from the environment so bundler doesn't lose its shit
|
13
|
+
env_vars = { 'RUBYOPT' => nil }
|
14
|
+
|
15
|
+
system(env_vars, "#{cmd} 2>&1")
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.precompile_assets(app_dir)
|
19
|
+
Dir.chdir( app_dir ) do
|
20
|
+
jruby_command( "-S bundle exec rake assets:precompile" )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Exposes remote ssh functionality to the world
|
27
|
+
module TorqueBox
|
28
|
+
module RemoteDeployUtils
|
29
|
+
def self.exec_cmd(archive_name, cmd, pwd = :staged_app)
|
30
|
+
with_config(archive_name) do |config, app_name|
|
31
|
+
unless config.local
|
32
|
+
puts cmd
|
33
|
+
dir =
|
34
|
+
case pwd
|
35
|
+
when :deployments
|
36
|
+
"#{config.torquebox_home}/jboss/standalone/deployments"
|
37
|
+
else
|
38
|
+
pwd
|
39
|
+
end
|
40
|
+
ssh_exec(config, "cd #{dir}", "#{cmd}")
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# TorqueboxDeployUtils#do_deploy uploads the knob.yml file with 0600 permissions, which prevents the torquebox user from
|
46
|
+
# reading it. This function will change permissions on the file, and then touch the .dodeploy to trigger a deploy.
|
47
|
+
def self.change_yml_permissions(archive_name)
|
48
|
+
with_config(archive_name) do |config, app_name|
|
49
|
+
exec_cmd(archive_name, "chmod g+r #{app_name}-knob.yml", :deployments)
|
50
|
+
exec_cmd(archive_name, "touch #{app_name}-knob.yml.dodeploy", :deployments)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
module Xn
|
57
|
+
module DeployUtils
|
58
|
+
class << self
|
59
|
+
def deploy(options = {}, &post_stage_proc)
|
60
|
+
if !ENV.key?('CONFIG_FILE')
|
61
|
+
fail 'CONFIG_FILE environment variable required'
|
62
|
+
elsif !File.exists?(ENV['CONFIG_FILE'])
|
63
|
+
fail "No configuration file found at #{ENV['CONFIG_FILE']}"
|
64
|
+
end
|
65
|
+
|
66
|
+
puts "Creating application knob with options #{ options.inspect }"
|
67
|
+
path = TorqueBox::DeployUtils.create_archive options
|
68
|
+
puts "Archive created: #{path} size: #{File.size(path)}"
|
69
|
+
archive_name = TorqueBox::DeployUtils.archive_name
|
70
|
+
puts 'Deploying to staging area...'
|
71
|
+
puts " #{ archive_name }"
|
72
|
+
TorqueBox::RemoteDeployUtils.stage(archive_name)
|
73
|
+
|
74
|
+
# Give calling Rake task an opportunity to do whatever extra work is required.
|
75
|
+
post_stage_proc.call archive_name if post_stage_proc
|
76
|
+
|
77
|
+
puts "Application has been uploaded to /opt/torquebox/current/stage/#{archive_name}"
|
78
|
+
puts 'Deployment paused to give you the opportunity to log in and run any necessary rake tasks'
|
79
|
+
puts 'Press enter to continue...'
|
80
|
+
STDIN.gets
|
81
|
+
|
82
|
+
TorqueBox::RemoteDeployUtils.deploy_from_stage(archive_name)
|
83
|
+
TorqueBox::RemoteDeployUtils.change_yml_permissions(archive_name)
|
84
|
+
|
85
|
+
puts 'Deployed!'
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
if defined?(Capistrano)
|
2
|
+
# Captures Capistrano-relevant configuration from a server profile.
|
3
|
+
class CapConfig
|
4
|
+
class << self
|
5
|
+
attr_reader :roles, :variables
|
6
|
+
|
7
|
+
def configure(&config_block)
|
8
|
+
@roles = {}
|
9
|
+
@variables = {}
|
10
|
+
instance_eval &config_block
|
11
|
+
end
|
12
|
+
|
13
|
+
# config_binding is the binding taken from the Capistrano configuration file
|
14
|
+
def apply_config(config_binding)
|
15
|
+
roles.each { |role, user| config_binding.eval("role #{role.inspect}, #{user.inspect}") }
|
16
|
+
variables.each { |name, val| config_binding.eval("set #{name.inspect}, #{val.inspect}") }
|
17
|
+
end
|
18
|
+
|
19
|
+
# Setters
|
20
|
+
|
21
|
+
def hostname(hn)
|
22
|
+
@roles[:web] = hn
|
23
|
+
end
|
24
|
+
|
25
|
+
def api_hostname(hn)
|
26
|
+
@variables[:api_hostname] = hn
|
27
|
+
end
|
28
|
+
|
29
|
+
def user(u)
|
30
|
+
@variables[:user] = u
|
31
|
+
end
|
32
|
+
|
33
|
+
def method_missing(symbol, *args)
|
34
|
+
# Swallow config settings we don't care about
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def server_profile(&config_block)
|
40
|
+
CapConfig.configure(&config_block)
|
41
|
+
end
|
42
|
+
else # torquebox remote deployer
|
43
|
+
# Monkey patching this to extend the configuration
|
44
|
+
class TorqueBox::RemoteDeploy
|
45
|
+
def api_hostname(hn)
|
46
|
+
# Unused
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def server_profile(&config_block)
|
51
|
+
TorqueBox::RemoteDeploy.configure(&config_block)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
@@ -26,6 +26,8 @@ Gem::Specification.new do |s|
|
|
26
26
|
|
27
27
|
s.add_dependency 'torquebox', '3.1.1'
|
28
28
|
s.add_dependency 'torquebox-messaging', '3.1.1'
|
29
|
+
s.add_development_dependency 'torquebox-remote-deployer', '0.1.1'
|
30
|
+
s.add_development_dependency 'xnlogic'
|
29
31
|
|
30
32
|
s.add_development_dependency 'rspec-core', '~>2.13.0'
|
31
33
|
s.add_development_dependency 'rspec-expectations'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'xnlogic/deploy'
|
2
|
+
|
3
|
+
desc "Deploys the app - Call with CONFIG_FILE=server_profiles/your_server.rb"
|
4
|
+
task :deploy do
|
5
|
+
puts <<EOF
|
6
|
+
Have you tested locally that your application is in a working state?
|
7
|
+
|
8
|
+
Press ENTER to continue
|
9
|
+
EOF
|
10
|
+
STDIN.gets
|
11
|
+
|
12
|
+
Xn::DeployUtils.deploy package_gems: true
|
13
|
+
end
|
14
|
+
|
15
|
+
task :undeploy => 'torquebox:remote:undeploy'
|
16
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require "xnlogic/server_profile"
|
2
|
+
|
3
|
+
server_profile do
|
4
|
+
torquebox_home '/opt/torquebox/current'
|
5
|
+
hostname '<%= config[:hostname] %>'
|
6
|
+
api_hostname '<%= config[:api_hostname] %>'
|
7
|
+
port '22'
|
8
|
+
user '<%= config[:ssh_user] %>'
|
9
|
+
key '<%= config[:ssh_key] %>'
|
10
|
+
end
|
@@ -61,31 +61,31 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|
61
61
|
config.vm.provider "virtualbox" do |vb|
|
62
62
|
# boot with headless mode
|
63
63
|
vb.gui = false
|
64
|
-
|
64
|
+
<% if config[:vm_memory] -%>
|
65
65
|
vb.customize ["modifyvm", :id, "--memory", '<%= config[:vm_memory] %>']
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
66
|
+
<% else -%>
|
67
|
+
vb.customize ["modifyvm", :id, "--memory", '2048']
|
68
|
+
<% end -%>
|
69
|
+
<% if config[:vm_cpus] -%>
|
70
70
|
vb.customize ["modifyvm", :id, "--cpus", <%= config[:vm_cpus] %>]
|
71
|
-
|
72
|
-
|
73
|
-
|
71
|
+
<% else -%>
|
72
|
+
vb.customize ["modifyvm", :id, "--cpus", 2]
|
73
|
+
<% end -%>
|
74
74
|
end
|
75
75
|
|
76
76
|
config.vm.provider "vmware_fusion" do |vmwf|
|
77
77
|
# boot with headless mode
|
78
78
|
vmwf.gui = false
|
79
|
-
|
79
|
+
<% if config[:vm_memory] -%>
|
80
80
|
vmwf.vmx["memsize"] = '<%= config[:vm_memory] %>MB'
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
81
|
+
<% else -%>
|
82
|
+
vmwf.vmx["memsize"] = '2048MB'
|
83
|
+
<% end -%>
|
84
|
+
<% if config[:vm_cpus] -%>
|
85
85
|
vmwf.vmx["numvcpus"] = <%= config[:vm_cpus] %>
|
86
|
-
|
87
|
-
|
88
|
-
|
86
|
+
<% else -%>
|
87
|
+
vmwf.vmx["numvcpus"] = 2
|
88
|
+
<% end -%>
|
89
89
|
end
|
90
90
|
|
91
91
|
config.vm.provision "shell" do |s|
|
data/lib/xnlogic/version.rb
CHANGED
data/man/xnlogic.ronn
CHANGED
@@ -5,6 +5,10 @@ xnlogic(1) -- XN Logic Command-line Tools
|
|
5
5
|
|
6
6
|
`xnlogic` COMMAND [--no-color] [--verbose] [ARGS]
|
7
7
|
|
8
|
+
Example:
|
9
|
+
|
10
|
+
xnlogic application my_app --key my_xn_user:password
|
11
|
+
|
8
12
|
## DESCRIPTION
|
9
13
|
|
10
14
|
XN Logic is a graph database-backed application framework.
|
@@ -12,14 +16,6 @@ XN Logic is a graph database-backed application framework.
|
|
12
16
|
See [the XN Logic website](https://xnlogic.com) for information on getting
|
13
17
|
started, or https://xnlogic.zendesk.com/hc/en-us for support.
|
14
18
|
|
15
|
-
## OPTIONS
|
16
|
-
|
17
|
-
* `--no-color`:
|
18
|
-
Prints all output without color
|
19
|
-
|
20
|
-
* `--verbose`:
|
21
|
-
Prints out additional logging information
|
22
|
-
|
23
19
|
## COMMANDS
|
24
20
|
|
25
21
|
We divide `xnlogic` subcommands into the initial command, update commands, and utilities.
|
@@ -45,3 +41,11 @@ We divide `xnlogic` subcommands into the initial command, update commands, and u
|
|
45
41
|
|
46
42
|
* `xnlogic help(1)`:
|
47
43
|
Displays detailed help for each subcommand
|
44
|
+
|
45
|
+
## OPTIONS
|
46
|
+
|
47
|
+
* `--no-color`:
|
48
|
+
Prints all output without color
|
49
|
+
|
50
|
+
* `--verbose`:
|
51
|
+
Prints out additional logging information
|
metadata
CHANGED
@@ -1,85 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xnlogic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darrick Wiebe
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
15
|
version_requirements: !ruby/object:Gem::Requirement
|
23
16
|
requirements:
|
24
|
-
- -
|
17
|
+
- - '>='
|
25
18
|
- !ruby/object:Gem::Version
|
26
19
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: bundler
|
29
20
|
requirement: !ruby/object:Gem::Requirement
|
30
21
|
requirements:
|
31
|
-
- -
|
22
|
+
- - '>='
|
32
23
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
34
|
-
type: :development
|
24
|
+
version: '0'
|
35
25
|
prerelease: false
|
26
|
+
type: :runtime
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
36
29
|
version_requirements: !ruby/object:Gem::Requirement
|
37
30
|
requirements:
|
38
|
-
- -
|
31
|
+
- - ~>
|
39
32
|
- !ruby/object:Gem::Version
|
40
33
|
version: '1.7'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
34
|
requirement: !ruby/object:Gem::Requirement
|
44
35
|
requirements:
|
45
|
-
- -
|
36
|
+
- - ~>
|
46
37
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :development
|
38
|
+
version: '1.7'
|
49
39
|
prerelease: false
|
40
|
+
type: :development
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
50
43
|
version_requirements: !ruby/object:Gem::Requirement
|
51
44
|
requirements:
|
52
|
-
- -
|
45
|
+
- - ~>
|
53
46
|
- !ruby/object:Gem::Version
|
54
47
|
version: '10.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: ronn
|
57
48
|
requirement: !ruby/object:Gem::Requirement
|
58
49
|
requirements:
|
59
|
-
- -
|
50
|
+
- - ~>
|
60
51
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0
|
62
|
-
type: :development
|
52
|
+
version: '10.0'
|
63
53
|
prerelease: false
|
64
|
-
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: 0.7.3
|
54
|
+
type: :development
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: xn_gem_release_tasks
|
71
|
-
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - '>='
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: 0.1.8
|
76
|
-
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
79
63
|
requirements:
|
80
|
-
- -
|
64
|
+
- - '>='
|
81
65
|
- !ruby/object:Gem::Version
|
82
66
|
version: 0.1.8
|
67
|
+
prerelease: false
|
68
|
+
type: :development
|
83
69
|
description: Build graph applications with XN Logic.
|
84
70
|
email:
|
85
71
|
- dw@xnlogic.com
|
@@ -88,7 +74,7 @@ executables:
|
|
88
74
|
extensions: []
|
89
75
|
extra_rdoc_files: []
|
90
76
|
files:
|
91
|
-
-
|
77
|
+
- .gitignore
|
92
78
|
- Gemfile
|
93
79
|
- README.md
|
94
80
|
- Rakefile
|
@@ -96,11 +82,16 @@ files:
|
|
96
82
|
- lib/xnlogic.rb
|
97
83
|
- lib/xnlogic/cli.rb
|
98
84
|
- lib/xnlogic/cli/application.rb
|
85
|
+
- lib/xnlogic/cli/core.rb
|
86
|
+
- lib/xnlogic/cli/deploy.rb
|
87
|
+
- lib/xnlogic/deploy.rb
|
99
88
|
- lib/xnlogic/friendly_errors.rb
|
100
89
|
- lib/xnlogic/man/xnlogic
|
101
90
|
- lib/xnlogic/man/xnlogic.txt
|
91
|
+
- lib/xnlogic/server_profile.rb
|
102
92
|
- lib/xnlogic/templates/application/.rspec.tt
|
103
93
|
- lib/xnlogic/templates/application/Gemfile.tt
|
94
|
+
- lib/xnlogic/templates/application/Rakefile.tt
|
104
95
|
- lib/xnlogic/templates/application/Readme.md.tt
|
105
96
|
- lib/xnlogic/templates/application/config.ru.tt
|
106
97
|
- lib/xnlogic/templates/application/dev/console.rb.tt
|
@@ -119,8 +110,10 @@ files:
|
|
119
110
|
- lib/xnlogic/templates/application/lib/gemname/version.rb.tt
|
120
111
|
- lib/xnlogic/templates/application/spec/gemname/gemname_spec.rb.tt
|
121
112
|
- lib/xnlogic/templates/application/spec/spec_helper.rb.tt
|
113
|
+
- lib/xnlogic/templates/application/tasks/deploy.rb.tt
|
122
114
|
- lib/xnlogic/templates/application/torquebox.yml.tt
|
123
115
|
- lib/xnlogic/templates/application/torquebox_init.rb.tt
|
116
|
+
- lib/xnlogic/templates/deploy/server_profiles/profile.rb.tt
|
124
117
|
- lib/xnlogic/templates/vagrant/Vagrantfile.tt
|
125
118
|
- lib/xnlogic/templates/vagrant/config/datomic.conf
|
126
119
|
- lib/xnlogic/templates/vagrant/config/transactor.properties
|
@@ -134,24 +127,25 @@ files:
|
|
134
127
|
homepage: https://xnlogic.com
|
135
128
|
licenses: []
|
136
129
|
metadata: {}
|
137
|
-
post_install_message:
|
130
|
+
post_install_message:
|
138
131
|
rdoc_options: []
|
139
132
|
require_paths:
|
140
133
|
- lib
|
141
134
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
135
|
requirements:
|
143
|
-
- -
|
136
|
+
- - '>='
|
144
137
|
- !ruby/object:Gem::Version
|
145
138
|
version: '0'
|
146
139
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
140
|
requirements:
|
148
|
-
- -
|
141
|
+
- - '>='
|
149
142
|
- !ruby/object:Gem::Version
|
150
143
|
version: '0'
|
151
144
|
requirements: []
|
152
|
-
rubyforge_project:
|
145
|
+
rubyforge_project:
|
153
146
|
rubygems_version: 2.4.5
|
154
|
-
signing_key:
|
147
|
+
signing_key:
|
155
148
|
specification_version: 4
|
156
149
|
summary: XN Logic command-line tools
|
157
150
|
test_files: []
|
151
|
+
has_rdoc:
|