spree_cmd 0.0.4 → 1.0.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. data/LICENSE +26 -0
  2. data/README.md +34 -16
  3. data/Rakefile +5 -0
  4. data/bin/spree +2 -147
  5. data/bin/spree_cmd +6 -0
  6. data/lib/spree_cmd.rb +20 -2
  7. data/lib/spree_cmd/extension.rb +65 -0
  8. data/lib/spree_cmd/installer.rb +139 -0
  9. data/lib/spree_cmd/templates/extension/Gemfile +13 -0
  10. data/lib/spree_cmd/templates/extension/LICENSE +26 -0
  11. data/lib/spree_cmd/templates/extension/README.md +21 -0
  12. data/lib/spree_cmd/templates/extension/Rakefile +29 -0
  13. data/lib/spree_cmd/templates/extension/Versionfile +9 -0
  14. data/lib/spree_cmd/templates/extension/app/assets/javascripts/admin/%file_name%.js +1 -0
  15. data/lib/spree_cmd/templates/extension/app/assets/javascripts/store/%file_name%.js +1 -0
  16. data/lib/spree_cmd/templates/extension/app/assets/stylesheets/admin/%file_name%.css +3 -0
  17. data/lib/spree_cmd/templates/extension/app/assets/stylesheets/store/%file_name%.css +3 -0
  18. data/lib/spree_cmd/templates/extension/config/locales/en.yml +5 -0
  19. data/lib/spree_cmd/templates/extension/config/routes.rb +3 -0
  20. data/lib/spree_cmd/templates/extension/extension.gemspec +26 -0
  21. data/lib/spree_cmd/templates/extension/gitignore +10 -0
  22. data/lib/spree_cmd/templates/extension/lib/%file_name%.rb.tt +2 -0
  23. data/lib/spree_cmd/templates/extension/lib/%file_name%/engine.rb.tt +20 -0
  24. data/lib/spree_cmd/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt +29 -0
  25. data/lib/spree_cmd/templates/extension/rspec +1 -0
  26. data/lib/spree_cmd/templates/extension/script/rails.tt +5 -0
  27. data/lib/spree_cmd/templates/extension/spec/spec_helper.rb.tt +32 -0
  28. data/spec/spec_helper.rb +12 -0
  29. data/spree_cmd.gemspec +7 -7
  30. metadata +75 -58
  31. data/.gitignore +0 -4
  32. data/Gemfile +0 -4
  33. data/lib/spree_cmd/version.rb +0 -3
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2007-2012, Spree Commerce, Inc. and other contributors
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md CHANGED
@@ -1,36 +1,46 @@
1
1
  Spree Installer
2
2
  ===============
3
3
 
4
+ **Until the release of Spree 1.0 you must use the --edge option**
5
+
4
6
  Command line utility to create new Spree store applications
7
+ and extensions
5
8
 
6
9
  See the main spree project: https://github.com/spree/spree
7
10
 
8
- Examples
9
- --------
11
+ Installation
12
+ ------------
10
13
 
11
- Until the release of Spree 1.0 you must use the --edge option:
14
+ ```ruby
15
+ gem install spree_cmd
16
+ ```
17
+ This will make the command line utility 'spree' available.
12
18
 
13
- spree new my_store --edge
19
+ You can add Spree to an existing rails application
14
20
 
15
- If you want to accept all the defaults pass --auto_accept
21
+ ```ruby
22
+ rails new my_app
23
+ spree install my_app
24
+ ```
16
25
 
17
- spree new my_store --edge --auto_accept
26
+ Extensions
27
+ ----------
18
28
 
19
- to use a local clone of Spree, pass the --path option
29
+ To build a new Spree Extension, you can run
30
+ ```ruby
31
+ spree extension my_extension
32
+ ```
33
+ Examples
34
+ --------
20
35
 
21
- spree new my_store --path=../spree
36
+ If you want to accept all the defaults pass --auto_accept
22
37
 
23
- Installation
24
- ------------
38
+ spree install my_store --edge --auto_accept
25
39
 
26
- ```ruby
27
- gem install spree_cmd
28
- spree new my_store
40
+ to use a local clone of Spree, pass the --path option
29
41
 
30
- or for an existing application
42
+ spree install my_store --path=../spree
31
43
 
32
- spree install existing_rails_app
33
- ```
34
44
 
35
45
  options
36
46
  -------
@@ -38,8 +48,16 @@ options
38
48
  * --auto_accept - answer yes to all questions
39
49
  * --edge - to use the edge version of Spree
40
50
  * --path=../spree - to use a local version of spree
51
+ * --git=git@github.com:cmar/spree.git
52
+ * --branch=my_changes or --ref=23423423423423 or --tag=my_tag
41
53
 
54
+ Older Versions of Spree
55
+ -----------------------
42
56
 
57
+ Versions of the Spree gem before 1.0 included a spree binary. If you
58
+ have one of these installed in your gemset, then you can alternatively
59
+ use the command line utility "spree_cmd". For example "spree_cmd install
60
+ my_app".
43
61
 
44
62
 
45
63
 
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ desc 'alias for :build to work with other spree gems'
4
+ task :gem => :build do
5
+
6
+ end
data/bin/spree CHANGED
@@ -1,150 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubygems'
4
- require 'thor/group'
3
+ require 'spree_cmd'
5
4
 
6
- module SpreeCmd
7
- class Install < Thor::Group
8
- include Thor::Actions
9
-
10
- desc "Creates a new rails project with a spree store"
11
- argument :new_or_install, :desc => 'new project_name or install existing_project'
12
- argument :app_path, :type => :string, :desc => 'rails app_path', :default => '.'
13
-
14
- class_option :auto_accept, :type => :boolean, :aliases => '-A', :desc => "Answer yes to all prompts"
15
-
16
- class_option :skip_install_data, :type => :boolean, :default => false,
17
- :desc => 'Skip running migrations and loading seed and sample data'
18
-
19
- class_option :version, :type => :string, :default => 'current',
20
- :desc => 'Spree Version to use (current, edge, local)'
21
-
22
- class_option :edge, :type => :boolean
23
- class_option :path, :type => :string
24
-
25
- def prepare_options
26
- if options[:edge]
27
- @spree_gem_options = { :git => 'https://github.com/spree/spree.git' }
28
- elsif options[:path]
29
- @spree_gem_options = { :path => options[:path] }
30
- else
31
- @spree_gem_options = {}
32
- end
33
-
34
- if @new_or_install == 'new' && @app_path == '.'
35
- say "ERROR: Must provide store name when using new"
36
- exit(1)
37
- end
38
- end
39
-
40
- def ask_questions
41
- @install_blue_theme = ask_with_default("Would you like to install the default blue theme?")
42
- @install_default_gateways = ask_with_default("Would you like to install the default gateways?")
43
-
44
- if options[:skip_install_data]
45
- @run_migrations = false
46
- @load_seed_data = false
47
- @load_sample_data = false
48
- else
49
- @run_migrations = ask_with_default("Would you like to run the migrations?")
50
- if @run_migrations
51
- @load_seed_data = ask_with_default("Would you like to load the seed data?")
52
- @load_sample_data = ask_with_default("Would you like to load the sample data?")
53
- else
54
- @load_seed_data = false
55
- @load_sample_data = false
56
- end
57
- end
58
- end
59
-
60
- def rails_app
61
- case @new_or_install
62
- when 'new'
63
- create_rails_app
64
- when 'install'
65
- if is_rails_project?
66
- say :install, "Adding Spree to #{@app_path}"
67
- else
68
- raise "#{@app_path} rails project not found"
69
- end
70
- else
71
- raise "specify new or install"
72
- end
73
- end
74
-
75
- def add_gems
76
- inside @app_path do
77
-
78
- gem :spree, @spree_gem_options
79
-
80
- if @install_blue_theme
81
- gem :spree_blue_theme, { :git => 'git@github.com:spree/spree_blue_theme.git',
82
- :ref => '10666404ccb3ed4a4cc9cbe41e822ab2bb55112e' }
83
- end
84
-
85
- if @install_default_gateways
86
- gem :spree_usa_epay, { :git => 'git@github.com:spree/spree_usa_epay.git',
87
- :ref => '2be3faede9594327b9bb548ad042ef28f2836509' }
88
-
89
- gem :spree_skrill, { :git => 'git@github.com:spree/spree_skrill.git',
90
- :ref => '6743bcbd0146d1c7145d6befc648005d8d0cf79a' }
91
- end
92
-
93
- run 'bundle install'
94
- end
95
- end
96
-
97
- def initialize_spree
98
- spree_options = []
99
- spree_options << "--migrate=#{@run_migrations}"
100
- spree_options << "--seed=#{@load_seed_data}"
101
- spree_options << "--sample=#{@load_sample_data}"
102
- spree_options << "--auto_accept" if options[:auto_accept]
103
-
104
- inside @app_path do
105
- run "rails generate spree:install #{spree_options.join(' ')}"
106
- end
107
- end
108
-
109
- private
110
-
111
- def gem(name, options={})
112
- say_status :gemfile, name
113
- parts = ["'#{name}'"]
114
- options.each {|key, value| parts << ":#{key} => '#{value}'" }
115
- append_file "Gemfile", "gem #{parts.join(', ')}\n", :verbose => false
116
- end
117
-
118
- def ask_with_default(message, default='yes')
119
- return true if options[:auto_accept]
120
-
121
- valid = false
122
- until valid
123
- response = ask "#{message} (yes/no) [#{default}]"
124
- response = default if response.empty?
125
- valid = (response =~ /\Ay(?:es)?|no?\Z/i)
126
- end
127
- response.downcase[0] == ?y
128
- end
129
-
130
- def create_rails_app
131
- say :create, @app_path
132
-
133
- rails_cmd = "rails new #{@app_path} --skip-bundle"
134
- if options[:template]
135
- rails_cmd += " -m #{options[:template]}"
136
- end
137
- if options[:database]
138
- rails_cmd += " -d #{options[:database]}"
139
- end
140
- run(rails_cmd)
141
- end
142
-
143
- def is_rails_project?
144
- File.exists? File.join(@app_path, 'script', 'rails')
145
- end
146
-
147
- end
148
-
149
- Install.start
150
- end
5
+ SpreeCmd::Command.start
data/bin/spree_cmd ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spree_cmd'
4
+
5
+ SpreeCmd::Command.start
6
+
data/lib/spree_cmd.rb CHANGED
@@ -1,5 +1,23 @@
1
- require "spree_cmd/version"
1
+ require 'thor'
2
+ require 'thor/group'
3
+
4
+ require "spree_cmd/installer"
5
+ require "spree_cmd/extension"
2
6
 
3
7
  module SpreeCmd
4
- # Your code goes here...
8
+ class Command < Thor
9
+
10
+ desc "install", "adds spree to an existing rails app"
11
+ method_option :app_path, :type => :string, :desc => 'path to rails application'
12
+ def install(app_path='.')
13
+ invoke Installer
14
+ end
15
+
16
+ desc "extension", "builds a spree extension"
17
+ method_option :app_path, :type => :string, :desc => 'path to new extension'
18
+ def extension(app_path)
19
+ invoke Extension
20
+ end
21
+
22
+ end
5
23
  end
@@ -0,0 +1,65 @@
1
+ module SpreeCmd
2
+
3
+ class Extension < Thor::Group
4
+ include Thor::Actions
5
+
6
+ desc "builds a spree extension"
7
+ argument :file_name, :type => :string, :desc => 'rails app_path', :default => '.'
8
+
9
+ source_root File.expand_path('../templates/extension', __FILE__)
10
+
11
+ def generate
12
+ use_prefix "spree_"
13
+
14
+ empty_directory file_name
15
+
16
+ directory "app", "#{file_name}/app"
17
+ directory "lib", "#{file_name}/lib"
18
+ directory "script", "#{file_name}/script"
19
+
20
+ template "extension.gemspec", "#{file_name}/#{file_name}.gemspec"
21
+ template "Gemfile", "#{file_name}/Gemfile"
22
+ template "gitignore", "#{file_name}/.gitignore"
23
+ template "LICENSE", "#{file_name}/LICENSE"
24
+ template "Rakefile", "#{file_name}/Rakefile"
25
+ template "README.md", "#{file_name}/README.md"
26
+ template "config/routes.rb", "#{file_name}/config/routes.rb"
27
+ template "config/locales/en.yml", "#{file_name}/config/locales/en.yml"
28
+ template "rspec", "#{file_name}/.rspec"
29
+ template "spec/spec_helper.rb.tt", "#{file_name}/spec/spec_helper.rb"
30
+ template "Versionfile", "#{file_name}/Versionfile"
31
+ end
32
+
33
+ def final_banner
34
+ say %Q{
35
+ #{'*' * 80}
36
+
37
+ Your extension has been generated with a gemspec dependency on Spree #{spree_version}.
38
+
39
+ Please update the Versionfile to designate compatibilty with different versions of Spree.
40
+ See http://spreecommerce.com/documentation/extensions.html#versionfile
41
+
42
+ Consider listing your extension in the official extension registry http://spreecommerce.com/extensions"
43
+
44
+ #{'*' * 80}
45
+ }
46
+ end
47
+
48
+ no_tasks do
49
+ def class_name
50
+ Thor::Util.camel_case file_name
51
+ end
52
+
53
+ def spree_version
54
+ '1.0.0'
55
+ end
56
+
57
+ def use_prefix(prefix)
58
+ unless file_name =~ /^#{prefix}/
59
+ @file_name = prefix + file_name
60
+ end
61
+ end
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,139 @@
1
+ module SpreeCmd
2
+
3
+ class Installer < Thor::Group
4
+ include Thor::Actions
5
+
6
+ desc "Creates a new rails project with a spree store"
7
+ argument :app_path, :type => :string, :desc => 'rails app_path', :default => '.'
8
+
9
+ class_option :auto_accept, :type => :boolean, :aliases => '-A', :desc => "Answer yes to all prompts"
10
+
11
+ class_option :skip_install_data, :type => :boolean, :default => false,
12
+ :desc => 'Skip running migrations and loading seed and sample data'
13
+
14
+ class_option :version, :type => :string, :default => 'current',
15
+ :desc => 'Spree Version to use (current, edge, local)'
16
+
17
+ class_option :edge, :type => :boolean
18
+
19
+ class_option :path, :type => :string, :desc => 'Spree gem path'
20
+ class_option :git, :type => :string, :desc => 'Spree gem git url'
21
+ class_option :ref, :type => :string, :desc => 'Spree gem git ref'
22
+ class_option :branch, :type => :string, :desc => 'Spree gem git branch'
23
+ class_option :tag, :type => :string, :desc => 'Spree gem git tag'
24
+
25
+ def verify_rails
26
+ unless is_rails_project?
27
+ say "#{@app_path} rails project not found"
28
+ exit(1)
29
+ end
30
+ end
31
+
32
+ def prepare_options
33
+ @spree_gem_options = {}
34
+
35
+ if options[:edge]
36
+ @spree_gem_options[:git] = 'https://github.com/spree/spree.git'
37
+ elsif options[:path]
38
+ @spree_gem_options[:path] = options[:path]
39
+ elsif options[:git]
40
+ @spree_gem_options[:git] = options[:git]
41
+ @spree_gem_options[:ref] = options[:ref] if options[:ref]
42
+ @spree_gem_options[:branch] = options[:branch] if options[:branch]
43
+ @spree_gem_options[:tag] = options[:tag] if options[:tag]
44
+ end
45
+ end
46
+
47
+ def ask_questions
48
+ @install_blue_theme = ask_with_default("Would you like to install the default blue theme?")
49
+ @install_default_gateways = ask_with_default("Would you like to install the default gateways?")
50
+
51
+ if options[:skip_install_data]
52
+ @run_migrations = false
53
+ @load_seed_data = false
54
+ @load_sample_data = false
55
+ else
56
+ @run_migrations = ask_with_default("Would you like to run the migrations?")
57
+ if @run_migrations
58
+ @load_seed_data = ask_with_default("Would you like to load the seed data?")
59
+ @load_sample_data = ask_with_default("Would you like to load the sample data?")
60
+ else
61
+ @load_seed_data = false
62
+ @load_sample_data = false
63
+ end
64
+ end
65
+ end
66
+
67
+ def add_gems
68
+ inside @app_path do
69
+
70
+ gem :spree, @spree_gem_options
71
+
72
+ if @install_blue_theme
73
+ gem :spree_blue_theme, { :git => 'git://github.com/spree/spree_blue_theme.git',
74
+ :ref => '10666404ccb3ed4a4cc9cbe41e822ab2bb55112e' }
75
+ end
76
+
77
+ if @install_default_gateways
78
+ gem :spree_usa_epay, { :git => 'git://github.com/spree/spree_usa_epay.git',
79
+ :ref => '0cb57b4afbf1eef6a0ad67a4a1ea506c6418fde1' }
80
+
81
+ gem :spree_skrill, { :git => 'git://github.com/spree/spree_skrill.git',
82
+ :ref => '6743bcbd0146d1c7145d6befc648005d8d0cf79a' }
83
+ end
84
+
85
+ run 'bundle install'
86
+ end
87
+ end
88
+
89
+ def initialize_spree
90
+ spree_options = []
91
+ spree_options << "--migrate=#{@run_migrations}"
92
+ spree_options << "--seed=#{@load_seed_data}"
93
+ spree_options << "--sample=#{@load_sample_data}"
94
+ spree_options << "--auto_accept" if options[:auto_accept]
95
+
96
+ inside @app_path do
97
+ run "rails generate spree:install #{spree_options.join(' ')}"
98
+ end
99
+ end
100
+
101
+ private
102
+
103
+ def gem(name, options={})
104
+ say_status :gemfile, name
105
+ parts = ["'#{name}'"]
106
+ options.each {|key, value| parts << ":#{key} => '#{value}'" }
107
+ append_file "Gemfile", "gem #{parts.join(', ')}\n", :verbose => false
108
+ end
109
+
110
+ def ask_with_default(message, default='yes')
111
+ return true if options[:auto_accept]
112
+
113
+ valid = false
114
+ until valid
115
+ response = ask "#{message} (yes/no) [#{default}]"
116
+ response = default if response.empty?
117
+ valid = (response =~ /\Ay(?:es)?|no?\Z/i)
118
+ end
119
+ response.downcase[0] == ?y
120
+ end
121
+
122
+ def create_rails_app
123
+ say :create, @app_path
124
+
125
+ rails_cmd = "rails new #{@app_path} --skip-bundle"
126
+ if options[:template]
127
+ rails_cmd += " -m #{options[:template]}"
128
+ end
129
+ if options[:database]
130
+ rails_cmd += " -d #{options[:database]}"
131
+ end
132
+ run(rails_cmd)
133
+ end
134
+
135
+ def is_rails_project?
136
+ File.exists? File.join(@app_path, 'script', 'rails')
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,13 @@
1
+ source 'http://rubygems.org'
2
+
3
+ group :test do
4
+ gem 'ffaker'
5
+ end
6
+
7
+ if RUBY_VERSION < "1.9"
8
+ gem "ruby-debug"
9
+ else
10
+ gem "ruby-debug19"
11
+ end
12
+
13
+ gemspec
@@ -0,0 +1,26 @@
1
+ Copyright (c) <%= Date.today.year %> [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,21 @@
1
+ <%= class_name %>
2
+ <%= "=" * class_name.size %>
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+ Testing
13
+ -------
14
+
15
+ Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.
16
+
17
+ $ bundle
18
+ $ bundle exec rake test app
19
+ $ bundle exec rspec spec
20
+
21
+ Copyright (c) <%= Date.today.year %> [name of extension creator], released under the New BSD License
@@ -0,0 +1,29 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/packagetask'
4
+ require 'rubygems/package_task'
5
+ require 'rspec/core/rake_task'
6
+ require 'spree/core/testing_support/common_rake'
7
+
8
+ RSpec::Core::RakeTask.new
9
+
10
+ task :default => [:spec]
11
+
12
+ spec = eval(File.read('<%=file_name%>.gemspec'))
13
+
14
+ Gem::PackageTask.new(spec) do |p|
15
+ p.gem_spec = spec
16
+ end
17
+
18
+ desc "Release to gemcutter"
19
+ task :release => :package do
20
+ require 'rake/gemcutter'
21
+ Rake::Gemcutter::Tasks.new(spec).define
22
+ Rake::Task['gem:push'].invoke
23
+ end
24
+
25
+ desc "Generates a dummy app for testing"
26
+ task :test_app do
27
+ ENV['LIB_NAME'] = '<%=file_name%>'
28
+ Rake::Task['common:test_app'].invoke
29
+ end
@@ -0,0 +1,9 @@
1
+ # This file is used to designate compatibilty with different versions of Spree
2
+ # Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details
3
+
4
+ # Examples
5
+ #
6
+ # "0.70.x" => { :branch => "master"}
7
+ # "0.60.x" => { :branch => "0-60-stable" }
8
+ # "0.40.x" => { :tag => "v1.0.0", :version => "1.0.0" }
9
+
@@ -0,0 +1 @@
1
+ //= require admin/spree_core
@@ -0,0 +1 @@
1
+ //= require store/spree_core
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require admin/spree_core
3
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require store/spree_core
3
+ */
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,3 @@
1
+ <%= class_name %>::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ end
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = '<%= file_name %>'
5
+ s.version = '<%= spree_version %>'
6
+ s.summary = 'TODO: Add gem summary here'
7
+ s.description = 'TODO: Add (optional) gem description here'
8
+ s.required_ruby_version = '>= 1.8.7'
9
+
10
+ # s.author = 'You'
11
+ # s.email = 'you@example.com'
12
+ # s.homepage = 'http://www.spreecommerce.com'
13
+
14
+ #s.files = `git ls-files`.split("\n")
15
+ #s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.require_path = 'lib'
17
+ s.requirements << 'none'
18
+
19
+ s.add_dependency 'spree_core', '~> <%= spree_version %>'
20
+
21
+ s.add_development_dependency 'capybara', '1.0.1'
22
+ s.add_development_dependency 'factory_girl'
23
+ s.add_development_dependency 'ffaker'
24
+ s.add_development_dependency 'rspec-rails', '~> 2.7'
25
+ s.add_development_dependency 'sqlite3'
26
+ end
@@ -0,0 +1,10 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ tmp
8
+ nbproject
9
+ *.swp
10
+ spec/dummy
@@ -0,0 +1,2 @@
1
+ require 'spree_core'
2
+ require '<%=file_name%>/engine'
@@ -0,0 +1,20 @@
1
+ module <%= class_name %>
2
+ class Engine < Rails::Engine
3
+ engine_name '<%= file_name %>'
4
+
5
+ config.autoload_paths += %W(#{config.root}/lib)
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare &method(:activate).to_proc
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module <%= class_name %>
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+
5
+ def add_javascripts
6
+ append_file "app/assets/javascripts/store/all.js", "//= require store/<%= file_name %>\n"
7
+ append_file "app/assets/javascripts/admin/all.js", "//= require admin/<%= file_name %>\n"
8
+ end
9
+
10
+ def add_stylesheets
11
+ inject_into_file "app/assets/stylesheets/store/all.css", " *= require store/<%= file_name %>\n", :before => /\*\//, :verbose => true
12
+ inject_into_file "app/assets/stylesheets/admin/all.css", " *= require admin/<%= file_name %>\n", :before => /\*\//, :verbose => true
13
+ end
14
+
15
+ def add_migrations
16
+ run 'bundle exec rake railties:install:migrations FROM=<%= file_name %>'
17
+ end
18
+
19
+ def run_migrations
20
+ res = ask "Would you like to run the migrations now? [Y/n]"
21
+ if res == "" || res.downcase == "y"
22
+ run 'bundle exec rake db:migrate'
23
+ else
24
+ puts "Skiping rake db:migrate, don't forget to run it!"
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ ENGINE_PATH = File.expand_path('../..', __FILE__)
5
+ load File.expand_path('../../spec/dummy/script/rails', __FILE__)
@@ -0,0 +1,32 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+
6
+ require 'rspec/rails'
7
+
8
+ # Requires supporting ruby files with custom matchers and macros, etc,
9
+ # in spec/support/ and its subdirectories.
10
+ Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
11
+
12
+ # Requires factories defined in spree_core
13
+ require 'spree/core/testing_support/factories'
14
+
15
+ RSpec.configure do |config|
16
+ # == Mock Framework
17
+ #
18
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
19
+ #
20
+ # config.mock_with :mocha
21
+ # config.mock_with :flexmock
22
+ # config.mock_with :rr
23
+ config.mock_with :rspec
24
+
25
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
26
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
27
+
28
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
29
+ # examples within a transaction, remove the following line or assign false
30
+ # instead of true.
31
+ config.use_transactional_fixtures = true
32
+ end
@@ -0,0 +1,12 @@
1
+ # This file is copied to ~/spec when you run 'ruby script/generate rspec'
2
+ # from the project root directory.
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+
5
+ RSpec.configure do |config|
6
+ config.mock_with :rspec
7
+
8
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
9
+
10
+ config.use_transactional_fixtures = false
11
+
12
+ end
data/spree_cmd.gemspec CHANGED
@@ -1,15 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "spree_cmd/version"
3
+ version = File.read(File.expand_path("../../SPREE_VERSION", __FILE__)).strip
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "spree_cmd"
7
- s.version = SpreeCmd::VERSION
7
+ s.version = version
8
8
  s.authors = ["Chris Mar"]
9
9
  s.email = ["chris@spreecommerce.com"]
10
- s.homepage = ""
11
- s.summary = %q{Create new Spree stores}
12
- s.description = %q{command line utility to create new stores or add Spree to existing applications}
10
+ s.homepage = "http://spreecommerce.com"
11
+ s.summary = %q{Spree Commerce command line utility}
12
+ s.description = %q{tools to create new Spree stores and extensions}
13
13
 
14
14
  s.rubyforge_project = "spree_cmd"
15
15
 
@@ -19,6 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'rails', '>= 3.1.1'
23
-
22
+ s.add_dependency 'rails', '>= 3.1.1', '<= 3.1.3'
23
+ s.add_development_dependency 'rspec'
24
24
  end
metadata CHANGED
@@ -1,88 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: spree_cmd
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 4
10
- version: 0.0.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc2
5
+ prerelease: 6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Chris Mar
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-01-10 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-14 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70095559783600 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 3.1.1
22
+ - - <=
23
+ - !ruby/object:Gem::Version
24
+ version: 3.1.3
21
25
  type: :runtime
22
26
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
27
+ version_requirements: *70095559783600
28
+ - !ruby/object:Gem::Dependency
29
+ name: rspec
30
+ requirement: &70095559782920 !ruby/object:Gem::Requirement
24
31
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 1
29
- segments:
30
- - 3
31
- - 1
32
- - 1
33
- version: 3.1.1
34
- version_requirements: *id001
35
- name: rails
36
- description: command line utility to create new stores or add Spree to existing applications
37
- email:
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: *70095559782920
39
+ description: tools to create new Spree stores and extensions
40
+ email:
38
41
  - chris@spreecommerce.com
39
- executables:
42
+ executables:
40
43
  - spree
44
+ - spree_cmd
41
45
  extensions: []
42
-
43
46
  extra_rdoc_files: []
44
-
45
- files:
46
- - .gitignore
47
- - Gemfile
47
+ files:
48
+ - LICENSE
48
49
  - README.md
49
50
  - Rakefile
50
51
  - bin/spree
52
+ - bin/spree_cmd
51
53
  - lib/spree_cmd.rb
52
- - lib/spree_cmd/version.rb
54
+ - lib/spree_cmd/extension.rb
55
+ - lib/spree_cmd/installer.rb
56
+ - lib/spree_cmd/templates/extension/Gemfile
57
+ - lib/spree_cmd/templates/extension/LICENSE
58
+ - lib/spree_cmd/templates/extension/README.md
59
+ - lib/spree_cmd/templates/extension/Rakefile
60
+ - lib/spree_cmd/templates/extension/Versionfile
61
+ - lib/spree_cmd/templates/extension/app/assets/javascripts/admin/%file_name%.js
62
+ - lib/spree_cmd/templates/extension/app/assets/javascripts/store/%file_name%.js
63
+ - lib/spree_cmd/templates/extension/app/assets/stylesheets/admin/%file_name%.css
64
+ - lib/spree_cmd/templates/extension/app/assets/stylesheets/store/%file_name%.css
65
+ - lib/spree_cmd/templates/extension/config/locales/en.yml
66
+ - lib/spree_cmd/templates/extension/config/routes.rb
67
+ - lib/spree_cmd/templates/extension/extension.gemspec
68
+ - lib/spree_cmd/templates/extension/gitignore
69
+ - lib/spree_cmd/templates/extension/lib/%file_name%.rb.tt
70
+ - lib/spree_cmd/templates/extension/lib/%file_name%/engine.rb.tt
71
+ - lib/spree_cmd/templates/extension/lib/generators/%file_name%/install/install_generator.rb.tt
72
+ - lib/spree_cmd/templates/extension/rspec
73
+ - lib/spree_cmd/templates/extension/script/rails.tt
74
+ - lib/spree_cmd/templates/extension/spec/spec_helper.rb.tt
75
+ - spec/spec_helper.rb
53
76
  - spree_cmd.gemspec
54
- homepage: ""
77
+ homepage: http://spreecommerce.com
55
78
  licenses: []
56
-
57
79
  post_install_message:
58
80
  rdoc_options: []
59
-
60
- require_paths:
81
+ require_paths:
61
82
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
83
+ required_ruby_version: !ruby/object:Gem::Requirement
63
84
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ segments:
69
90
  - 0
70
- version: "0"
71
- required_rubygems_version: !ruby/object:Gem::Requirement
91
+ hash: 260406061965751448
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
93
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
94
+ requirements:
95
+ - - ! '>'
96
+ - !ruby/object:Gem::Version
97
+ version: 1.3.1
80
98
  requirements: []
81
-
82
99
  rubyforge_project: spree_cmd
83
100
  rubygems_version: 1.8.10
84
101
  signing_key:
85
102
  specification_version: 3
86
- summary: Create new Spree stores
87
- test_files: []
88
-
103
+ summary: Spree Commerce command line utility
104
+ test_files:
105
+ - spec/spec_helper.rb
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in spree_cmd.gemspec
4
- gemspec
@@ -1,3 +0,0 @@
1
- module SpreeCmd
2
- VERSION = "0.0.4"
3
- end