xnlogic 1.0.20 → 1.0.21
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/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:
|