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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f21e4dd74cd0cd9e81301b80135055e5af75a46
4
- data.tar.gz: ea285dd75351733413b3baede0ed70f14b9f1f9f
3
+ metadata.gz: 25f9595876e3994a4a5cc45fd2ff64399e89bec1
4
+ data.tar.gz: f4df70cdb56a4d33577c6b1ef3a258788c1c7e08
5
5
  SHA512:
6
- metadata.gz: 3233f43814bdaeab932e4046648f43019170ddccae8c6a5ac68afbc2bd415d2e8d2376f17c745bd0f179a1090e45d6628bbbe29981bf9e42edf9dab076ddbd2d
7
- data.tar.gz: 89064111b3a40c2063fb5f80e70b2779f3c1b2f98aaf8f8400e802ebed9de14ac7cb29a6c5deb9b662fbeb5e7fecb520776fedeba4cb2bd29c8784dcce3ae928
6
+ metadata.gz: 1943afbe6c5502db9f7081ad48b0850c582b28dcea1b0c365c27234e43abb99cb70540f552863372792695d1359e423cda190f025ef63cf76dac9b08cdbd477e
7
+ data.tar.gz: 6275b9c750acb3bf82eaa3131a3059dd83cbc590a4014850cf28902e14b11a4242acc0e4324e2ef078eba526a351c22797a238dc772b4b42757305418498f1a6
@@ -1,17 +1,14 @@
1
- require 'pathname'
2
- require 'yaml'
1
+ require 'xnlogic/cli/core'
3
2
 
4
3
  module Xnlogic
5
- class CLI::Application
6
- attr_reader :options, :app_name, :thor, :base_name, :name, :app, :root
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 + 'config/app_options.yaml'
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
- if options_file.exist?
30
- previous_options = YAML.load_file(options_file.to_s)
31
- @options = previous_options.merge options
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]", "Creates a skeleton of an XN Logic application"
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
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'tasks/deploy'
3
+
4
+ task :not_allowed do
5
+ raise "Deploying to Rubygems.org...That's not allowed!"
6
+ end
7
+
8
+ task :release => :not_allowed
9
+
10
+
@@ -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'
@@ -8,3 +8,4 @@ pkg/*
8
8
  bin/*
9
9
  tmp/
10
10
  .vagrant
11
+ *.knob
@@ -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
- <% if config[:vm_memory] -%>
64
+ <% if config[:vm_memory] -%>
65
65
  vb.customize ["modifyvm", :id, "--memory", '<%= config[:vm_memory] %>']
66
- <% else -%>
67
- #vb.customize ["modifyvm", :id, "--memory", '2048']
68
- <% end -%>
69
- <% if config[:vm_cpus] -%>
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
- <% else -%>
72
- #vb.customize ["modifyvm", :id, "--cpus", 2]
73
- <% end -%>
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
- <% if config[:vm_memory] -%>
79
+ <% if config[:vm_memory] -%>
80
80
  vmwf.vmx["memsize"] = '<%= config[:vm_memory] %>MB'
81
- <% else -%>
82
- #vmwf.vmx["memsize"] = '2048MB'
83
- <% end -%>
84
- <% if config[:vm_cpus] -%>
81
+ <% else -%>
82
+ vmwf.vmx["memsize"] = '2048MB'
83
+ <% end -%>
84
+ <% if config[:vm_cpus] -%>
85
85
  vmwf.vmx["numvcpus"] = <%= config[:vm_cpus] %>
86
- <% else -%>
87
- #vmwf.vmx["numvcpus"] = 2
88
- <% end -%>
86
+ <% else -%>
87
+ vmwf.vmx["numvcpus"] = 2
88
+ <% end -%>
89
89
  end
90
90
 
91
91
  config.vm.provision "shell" do |s|
@@ -1,3 +1,3 @@
1
1
  module Xnlogic
2
- VERSION = "1.0.20"
2
+ VERSION = "1.0.21"
3
3
  end
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.20
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-15 00:00:00.000000000 Z
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: '1.7'
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: '10.0'
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.7.3
62
- type: :development
52
+ version: '10.0'
63
53
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- type: :development
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
- - ".gitignore"
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: