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 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: