rugular 0.0.95 → 0.1.0

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: 5146630b5d70b0d26d71eb5bb4d4eff347405f98
4
- data.tar.gz: 747b7d81fcdfaa2c70a9a64a32860b692eac5b40
3
+ metadata.gz: 5b5796fd985793a97b1f3feafb3bbf324858e810
4
+ data.tar.gz: f9dcb0c84fe43ada7b51b0494668c438580408f9
5
5
  SHA512:
6
- metadata.gz: 044165ce25868e12bc7457233718287d08722e5685a92c9eda1476dfff299738b064fb7fb65359da33caa0bba331ecbb80726eb468859e01bc4c8b73676040db
7
- data.tar.gz: 090bf7d3aa4e36468082421d00846f4bdaff2f9cea94b6fdd6867299b4fa37b1e0d13cd62112514892fd3fe34b8553daa41aa42b76d8d45f59c0c87c7a4ae3cb
6
+ metadata.gz: 3ad929a5b189720c4f29e465904cb24bb00c9228c201478d31e19103f767855bccdabb64e8b90282fe17a718b8e3070c9f11a61e14f35e0d8e7050756dded374
7
+ data.tar.gz: 161e4704fe759bd040024ee615af8ff36452c73bbae7a8a5fbac6bd1e9d2e086e92594f3bc18e3c7b3e4a4dd95f16058098b5a846397e398919014d9703dc9b0
data/.gitignore CHANGED
@@ -13,5 +13,6 @@
13
13
  *.a
14
14
  mkmf.log
15
15
  *.gem
16
+ *.log
16
17
  .sass-cache/
17
18
  tags
data/README.md CHANGED
@@ -126,6 +126,14 @@ component, simply run any generator command with the ``-c`` option and the
126
126
  service will be created in the ``src/components`` folder.
127
127
 
128
128
 
129
+ ## Running the Test Suite
130
+
131
+ To run the test suite just once (such as in a continuous environment) execute:
132
+
133
+ ```bash
134
+ rugular ci
135
+ ```
136
+
129
137
  ## TODO (need to build)
130
138
 
131
139
  ### Building the app
@@ -0,0 +1,15 @@
1
+ Feature: Rugular CLI
2
+ In order to run the tests in the continuous integration environment
3
+ As a developer of an application
4
+ I want to run the tests once
5
+
6
+ Scenario: Running the tests for continuous integration
7
+ When I set up Rugular with dependencies and run "rugular ci"
8
+ Then the file "my-app/.tmp/index.html" should contain:
9
+ """
10
+ ng-app
11
+ """
12
+ And the file "my-app/.tmp/app/app.module.js" should contain:
13
+ """
14
+ angular.module
15
+ """
@@ -1,3 +1,11 @@
1
1
  When (/^I set up Rugular and run "(.*?)"$/) do |command|
2
2
  system("cd tmp/aruba && rugular new my-app && cd my-app && #{command}")
3
3
  end
4
+
5
+ When (/^I set up Rugular with dependencies and run "(.*?)"$/) do |command|
6
+ system(
7
+ "cd tmp/aruba && rugular new my-app "\
8
+ "&& cd my-app && rugular dependencies && "\
9
+ "#{command}"
10
+ )
11
+ end
@@ -0,0 +1,87 @@
1
+ require 'coffee-script'
2
+ require 'sass'
3
+
4
+ module Rugular
5
+ class ContinuousIntegration < Thor::Group
6
+ include Thor::Actions
7
+
8
+ desc('runs the tests once for continuous integration')
9
+
10
+ def compile_to_tmp_folder(folder: Pathname.new(".tmp"))
11
+ compile_coffescript_files(folder)
12
+
13
+ complie_sass_files(folder)
14
+
15
+ compile_haml_files(folder)
16
+ end
17
+
18
+ def run_karma_script
19
+ system(
20
+ "./node_modules/karma/bin/karma start "\
21
+ "--single-run --no-auto-watch karma.conf.js"
22
+ )
23
+
24
+ return false unless $?.exitstatus == 0
25
+ end
26
+
27
+ def completed_tests
28
+ puts "Your tests have passed!!"
29
+ end
30
+
31
+ # TODO: this requires a selenium driver, such as sauce labs.
32
+ # http://stackoverflow.com/questions/23150585/getting-started-with-protractor-travis-and-saucelabs
33
+ # def run_protractor_script
34
+ # system(
35
+ # "npm install -g protractor mocha coffee-script; "\
36
+ # "webdriver-manager update --standalone; "\
37
+ # "webdriver-manager start > /dev/null 2>&1 &; "\
38
+ # "protractor"
39
+ # )
40
+ #
41
+ # return false unless $?.exitstatus == 0
42
+ # end
43
+
44
+ private
45
+
46
+ def compile_coffescript_files(folder)
47
+ src_coffeescript_files.each do |file|
48
+ create_file file.to_s.gsub('./src/', './.tmp/').gsub('coffee', 'js') do
49
+ CoffeeScript.compile(file)
50
+ end
51
+ end
52
+ end
53
+
54
+ def compile_haml_files(folder)
55
+ src_haml_files.each do |file|
56
+ create_file file.to_s.gsub('./src/', './.tmp/').gsub('haml', 'html') do
57
+ HamlRenderer.render(file)
58
+ end
59
+ end
60
+ end
61
+
62
+ def complie_sass_files(folder)
63
+ src_sass_files.each do |file|
64
+ create_file file.to_s.gsub('./src/', './.tmp/').gsub('sass', 'css') do
65
+ Sass::Engine.new(file.read).to_css
66
+ end
67
+ end
68
+ end
69
+
70
+ def src_coffeescript_files
71
+ Dir.glob("./src/**/*.coffee").map(&transform_to_pathname)
72
+ end
73
+
74
+ def src_haml_files
75
+ Dir.glob("./src/**/*.haml").map(&transform_to_pathname)
76
+ end
77
+
78
+ def src_sass_files
79
+ Dir.glob("./src/**/[^_]*.sass").map(&transform_to_pathname)
80
+ end
81
+
82
+ def transform_to_pathname
83
+ ->(file_name) { Pathname.new(file_name) }
84
+ end
85
+
86
+ end
87
+ end
@@ -9,15 +9,17 @@ module Rugular
9
9
  Rugular::AppChecker.check_rugular!(self.name, new.destination_root)
10
10
 
11
11
  def bundle
12
- `bundle install`
12
+ puts 'Installing Ruby gems'
13
+ system('bundle install')
13
14
  end
14
15
 
15
16
  def bower
16
- `bower install`
17
+ puts 'Installing bower packages'
18
+ system('bower install')
17
19
  end
18
20
 
19
21
  def npm_install
20
- `npm install`
22
+ system('npm install')
21
23
  end
22
24
 
23
25
  # Protractor needs to be installed globally
@@ -0,0 +1,75 @@
1
+ require 'haml'
2
+ require 'action_view'
3
+
4
+ module Rugular
5
+ class HamlRenderer
6
+ include ActionView::Helpers::AssetTagHelper
7
+
8
+ def self.render(file)
9
+ new(file).render
10
+ end
11
+
12
+ def initialize(file)
13
+ @file = file
14
+ end
15
+
16
+ def render
17
+ Haml::Engine.new(file.read).render(get_binding)
18
+ end
19
+
20
+ private
21
+
22
+ attr_accessor :file
23
+
24
+ def get_binding
25
+ @_binding ||= binding
26
+ end
27
+
28
+ # Override Action View to exclude the 'stylesheets' folder.
29
+ def stylesheet_link_tag(*sources)
30
+ options = sources.extract_options!.stringify_keys
31
+ path_options = options.extract!('protocol').symbolize_keys
32
+ copy_bower_files(
33
+ sources.select { |source| source.match('bower_component') }
34
+ )
35
+
36
+ sources.uniq.map { |source|
37
+ tag_options = {
38
+ "rel" => "stylesheet",
39
+ "media" => "screen",
40
+ "href" => source.gsub('.tmp/', '')
41
+ }.merge!(options)
42
+ tag(:link, tag_options)
43
+ }.join("\n").html_safe
44
+
45
+ end
46
+
47
+ # Override Action View to exclude the 'javascripts' folder.
48
+ def javascript_include_tag(*sources)
49
+ options = sources.extract_options!.stringify_keys
50
+ path_options = options.extract!('protocol', 'extname').symbolize_keys
51
+ copy_bower_files(
52
+ sources.select { |source| source.match('bower_component') }
53
+ )
54
+
55
+ sources.uniq.map { |source|
56
+ tag_options = {
57
+ "src" => source.gsub('.tmp/', '')
58
+ }.merge!(options)
59
+ content_tag(:script, "", tag_options)
60
+ }.join("\n").html_safe
61
+ end
62
+
63
+ def copy_bower_files(bower_components)
64
+ bower_components.each do |bower_component|
65
+ FileUtils.mkdir_p(
66
+ File.dirname(bower_component.gsub('bow', '.tmp/bow'))
67
+ )
68
+ FileUtils.cp_r(
69
+ bower_component, bower_component.gsub('bow', '.tmp/bow')
70
+ ) if File.file?(bower_component)
71
+ end
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,12 @@
1
+ describe 'homepage', ->
2
+ it 'should display the title', ->
3
+ browser.get browser.baseUrl
4
+
5
+ title = element(By.model('app.title'))
6
+ expect(title.getText()).toMatch 'App'
7
+
8
+ return
9
+
10
+ return
11
+
12
+
@@ -3,19 +3,31 @@
3
3
  %head
4
4
  %title Hello
5
5
 
6
+ -# <!--[if lte IE 8]>
7
+ -# <script type="text/javascript">
8
+ -# // define our custom directives here
9
+ -# window.myCustomTags = ['myDirective'];
10
+ -# </script>
11
+ -# <script src="lib/angular-ui-ieshiv.js"></script>
12
+ -# <![endif]-->
13
+
6
14
  /it is recommended to cherry pick which bower components you want
7
15
  = stylesheet_link_tag("./bower_components/bootstrap/dist/css/bootstrap.min.css")
8
16
  = stylesheet_link_tag("./bower_components/font-awesome/css/font-awesome.min.css")
9
- = stylesheet_link_tag(*Dir.glob("./dev/[^bower_components]**/*.css"))
17
+ = stylesheet_link_tag(*Dir.glob(".tmp/app/**/*.css"))
18
+ = stylesheet_link_tag(*Dir.glob(".tmp/components/**/*.css"))
10
19
 
11
20
  %body
12
- /[if lt IE 9] <a href='lthttp://browsehappy.com/'> You are using an out of date browser; this is very dangerous. I strongly urge you to update today.</a>
21
+ /[f lt IE 9] <a href='lthttp://browsehappy.com/'> You are using an out of date browser; this is very dangerous. I strongly urge you to update today.</a>
13
22
 
14
23
  %ui-view
15
24
 
16
25
  /it is recommended to cherry pick which bower components you want
17
26
  = javascript_include_tag("./bower_components/angular/angular.js")
18
27
  = javascript_include_tag("./bower_components/angular-ui-router/release/angular-ui-router.js")
28
+
19
29
  = javascript_include_tag(*Dir.glob(".tmp/**/*.module.js"))
20
30
  = javascript_include_tag(*Dir.glob(".tmp/**/*.routes.js"))
31
+ = javascript_include_tag(*Dir.glob(".tmp/**/*.factory.js"))
21
32
  = javascript_include_tag(*Dir.glob(".tmp/**/*.controller.js"))
33
+ = javascript_include_tag(*Dir.glob(".tmp/**/*.directive.js"))
@@ -2,8 +2,8 @@
2
2
  $urlRouterProvider.otherwise('/')
3
3
 
4
4
  $stateProvider.state '<%= name %>',
5
- url: '<%= name %>'
6
- templateUrl: './<%= name %>/index.html'
5
+ url: '/<%= name %>'
6
+ templateUrl: '/app/<%= name %>/<%= name %>.html'
7
7
  controller: '<%= name %>Controller'
8
8
  controllerAs: '<%= name %>'
9
9
 
@@ -1,3 +1,3 @@
1
1
  module Rugular
2
- VERSION = '0.0.95'
2
+ VERSION = '0.1.0'
3
3
  end
data/lib/rugular.rb CHANGED
@@ -32,5 +32,12 @@ module Rugular
32
32
  'generate',
33
33
  'generate an angular service'
34
34
  )
35
+
36
+ register(
37
+ ContinuousIntegration,
38
+ 'ci',
39
+ 'ci',
40
+ 'run the Rugular tests once for CI'
41
+ )
35
42
  end
36
43
  end
data/rugular.gemspec CHANGED
@@ -20,6 +20,8 @@ Gem::Specification.new do |spec|
20
20
  spec.add_runtime_dependency 'actionview', '~> 4'
21
21
  spec.add_runtime_dependency 'guard', '~> 2'
22
22
  # spec.add_runtime_dependency 'guard-coffeescript', '~> 2'
23
+ spec.add_runtime_dependency 'haml', '~> 4'
24
+ spec.add_runtime_dependency 'sass', '~> 3'
23
25
  spec.add_runtime_dependency 'guard-sass', '~> 1'
24
26
  spec.add_runtime_dependency 'foreman', '~> 0'
25
27
  spec.add_runtime_dependency 'therubyracer', '~> 0'
metadata CHANGED
@@ -1,167 +1,195 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rugular
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.95
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicholas Shook
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-12 00:00:00.000000000 Z
11
+ date: 2014-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionview
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: guard
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: haml
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '4'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sass
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '3'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '3'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: guard-sass
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - "~>"
73
+ - - ~>
46
74
  - !ruby/object:Gem::Version
47
75
  version: '1'
48
76
  type: :runtime
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - "~>"
80
+ - - ~>
53
81
  - !ruby/object:Gem::Version
54
82
  version: '1'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: foreman
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
- - - "~>"
87
+ - - ~>
60
88
  - !ruby/object:Gem::Version
61
89
  version: '0'
62
90
  type: :runtime
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
- - - "~>"
94
+ - - ~>
67
95
  - !ruby/object:Gem::Version
68
96
  version: '0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: therubyracer
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ~>
74
102
  - !ruby/object:Gem::Version
75
103
  version: '0'
76
104
  type: :runtime
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ~>
81
109
  - !ruby/object:Gem::Version
82
110
  version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: thor
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
- - - "~>"
115
+ - - ~>
88
116
  - !ruby/object:Gem::Version
89
117
  version: '0'
90
118
  type: :runtime
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
- - - "~>"
122
+ - - ~>
95
123
  - !ruby/object:Gem::Version
96
124
  version: '0'
97
125
  - !ruby/object:Gem::Dependency
98
126
  name: uglifier
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - "~>"
129
+ - - ~>
102
130
  - !ruby/object:Gem::Version
103
131
  version: '2'
104
132
  type: :runtime
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - "~>"
136
+ - - ~>
109
137
  - !ruby/object:Gem::Version
110
138
  version: '2'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: aruba
113
141
  requirement: !ruby/object:Gem::Requirement
114
142
  requirements:
115
- - - "~>"
143
+ - - ~>
116
144
  - !ruby/object:Gem::Version
117
145
  version: '0'
118
146
  type: :development
119
147
  prerelease: false
120
148
  version_requirements: !ruby/object:Gem::Requirement
121
149
  requirements:
122
- - - "~>"
150
+ - - ~>
123
151
  - !ruby/object:Gem::Version
124
152
  version: '0'
125
153
  - !ruby/object:Gem::Dependency
126
154
  name: byebug
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
- - - "~>"
157
+ - - ~>
130
158
  - !ruby/object:Gem::Version
131
159
  version: '3'
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
- - - "~>"
164
+ - - ~>
137
165
  - !ruby/object:Gem::Version
138
166
  version: '3'
139
167
  - !ruby/object:Gem::Dependency
140
168
  name: pry
141
169
  requirement: !ruby/object:Gem::Requirement
142
170
  requirements:
143
- - - "~>"
171
+ - - ~>
144
172
  - !ruby/object:Gem::Version
145
173
  version: '0'
146
174
  type: :development
147
175
  prerelease: false
148
176
  version_requirements: !ruby/object:Gem::Requirement
149
177
  requirements:
150
- - - "~>"
178
+ - - ~>
151
179
  - !ruby/object:Gem::Version
152
180
  version: '0'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: rake
155
183
  requirement: !ruby/object:Gem::Requirement
156
184
  requirements:
157
- - - "~>"
185
+ - - ~>
158
186
  - !ruby/object:Gem::Version
159
187
  version: '10'
160
188
  type: :development
161
189
  prerelease: false
162
190
  version_requirements: !ruby/object:Gem::Requirement
163
191
  requirements:
164
- - - "~>"
192
+ - - ~>
165
193
  - !ruby/object:Gem::Version
166
194
  version: '10'
167
195
  description:
@@ -172,12 +200,13 @@ executables:
172
200
  extensions: []
173
201
  extra_rdoc_files: []
174
202
  files:
175
- - ".gitignore"
176
- - ".travis.yml"
203
+ - .gitignore
204
+ - .travis.yml
177
205
  - Gemfile
178
206
  - README.md
179
207
  - Rakefile
180
208
  - bin/rugular
209
+ - features/continuous_integration.feature
181
210
  - features/generator_for_directive.feature
182
211
  - features/generator_for_route.feature
183
212
  - features/new.feature
@@ -185,12 +214,14 @@ files:
185
214
  - features/support/setup.rb
186
215
  - lib/rugular.rb
187
216
  - lib/rugular/tasks/build.rb
217
+ - lib/rugular/tasks/continuous_integration.rb
188
218
  - lib/rugular/tasks/dependencies.rb
189
219
  - lib/rugular/tasks/generate.rb
190
220
  - lib/rugular/tasks/generate/directive.rb
191
221
  - lib/rugular/tasks/generate/generator_base.rb
192
222
  - lib/rugular/tasks/generate/route.rb
193
223
  - lib/rugular/tasks/helpers/app_checker.rb
224
+ - lib/rugular/tasks/helpers/haml_renderer.rb
194
225
  - lib/rugular/tasks/new.rb
195
226
  - lib/rugular/tasks/server.rb
196
227
  - lib/rugular/tasks/server/Guardfile
@@ -202,6 +233,7 @@ files:
202
233
  - lib/rugular/templates/directive/app.sass.erb
203
234
  - lib/rugular/templates/new/.gitignore
204
235
  - lib/rugular/templates/new/Gemfile
236
+ - lib/rugular/templates/new/e2e/app_spec.coffee
205
237
  - lib/rugular/templates/new/karma.conf.js
206
238
  - lib/rugular/templates/new/protractor.conf.js
207
239
  - lib/rugular/templates/new/src/app/app.controller.coffee
@@ -233,21 +265,22 @@ require_paths:
233
265
  - lib
234
266
  required_ruby_version: !ruby/object:Gem::Requirement
235
267
  requirements:
236
- - - ">="
268
+ - - '>='
237
269
  - !ruby/object:Gem::Version
238
270
  version: '0'
239
271
  required_rubygems_version: !ruby/object:Gem::Requirement
240
272
  requirements:
241
- - - ">="
273
+ - - '>='
242
274
  - !ruby/object:Gem::Version
243
275
  version: '0'
244
276
  requirements: []
245
277
  rubyforge_project:
246
- rubygems_version: 2.2.2
278
+ rubygems_version: 2.0.14
247
279
  signing_key:
248
280
  specification_version: 4
249
281
  summary: Rugular - a ruby scaffolding framework for AngularJS
250
282
  test_files:
283
+ - features/continuous_integration.feature
251
284
  - features/generator_for_directive.feature
252
285
  - features/generator_for_route.feature
253
286
  - features/new.feature