fronton 0.1.0.alpha → 0.1.0.beta1

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: f4ea27d21a7fcbac4a66a2266e4bd76851a8f21f
4
- data.tar.gz: a14b250d931a46b335928e6546d0d1016ef6d59b
3
+ metadata.gz: de4648602955f0e1a83acd30520544ce7825d0d4
4
+ data.tar.gz: 31c6e74a8ddd726d507d6cbb34924e59ae38120f
5
5
  SHA512:
6
- metadata.gz: 8b54192e91e2e0b9f7ffd1d3427311b3673b40d1665a8f348f04a06b33e68e4e642a94d128af3aa866f35c986fce697f6ede3b0389932036c10627ab60e9a3af
7
- data.tar.gz: 2965585b4697e93a81b7deefa9e431cbcfab67133dc4e6592d9b24edec0510a0e8e90f08b4cb72b9d07ae780e35f9046c9a484ea194c589fca118ce02fe0fab9
6
+ metadata.gz: 1eec1348c528f8632df53bf638c2ddd3b64ffa9902c915494f02bed0d2dc470ef21ae0bd46f7e196e8bf376342dcf5843b89ede89bfa0877f597afe8c35fbc1a
7
+ data.tar.gz: df1776427fb2db49f841f4cb660e264cefa5d7d2452878d5df3221153c5b31a452e9e4f033df21f6c5993372476524889f571acb14fa5761cfeede4b1183c94f
data/README.md CHANGED
@@ -2,29 +2,124 @@
2
2
 
3
3
  A command-line tool for build frontend apps in Ruby.
4
4
 
5
+ It uses [Sprockets](https://github.com/rails/sprockets) and
6
+ [Tilt](https://github.com/rtomayko/tilt) to creates an environment for assets
7
+ compiling similar to
8
+ [Rails Assets Pipeline](http://guides.rubyonrails.org/asset_pipeline.html). It
9
+ support all engines supported by *Sprockets* and *Tilt* like *Javascript*,
10
+ *Sass*, *CoffeeScript*, *Haml*, *Slim*, etc.
11
+
5
12
 
6
13
  ## Status
7
14
 
15
+ [![Gem Version](https://badge.fury.io/rb/fronton.svg)](https://badge.fury.io/rb/fronton)
16
+
8
17
  > **This project is still experimental, use with caution!**
9
18
 
10
19
 
11
20
  ## Installation
12
21
 
13
22
  ```
14
- $ gem install fronton
23
+ $ gem install fronton --pre
15
24
  ```
16
25
 
17
- `TODO`: Write an advanced installation guide
18
26
 
27
+ ## Getting Started
28
+
29
+ ### Available commands
30
+
31
+ * **fronton new**: generate a new blank app with a default skeleton.
32
+ * **fronton server**: start a development server for html & assets.
33
+ * **fronton compile**: compile html & assets files for distribution.
34
+ * **fronton clean**: remove old compiled html & assets files.
35
+ * **fronton clobber**: remove all compiled html & assets files.
36
+ * **fronton info**: show information about the environment.
37
+ * **fronton help**: show commands help.
38
+
39
+ ### Config file
40
+
41
+ Configuration options are readed from a `fronton.yml` file located in project
42
+ top folder.
43
+
44
+ ```yaml
45
+ assets:
46
+ - application.js
47
+ - application.css
48
+ - "*.png"
49
+ assets_paths:
50
+ - assets/javascripts
51
+ - assets/stylesheets
52
+ - assets/fonts
53
+ - assets/images
54
+ - vendor/javascripts
55
+ - vendor/stylesheets
56
+ - vendor/fonts
57
+ - vendor/images
58
+ assets_url: https://assets.example.com
59
+ compressors:
60
+ css: scss
61
+ js: uglifier
62
+ dependencies:
63
+ - rails-assets-jquery: 3.1.0
64
+ - slim: 3.0.7
65
+ output: public
66
+ pages:
67
+ - index.slim: /
68
+ pages_paths:
69
+ - pages
70
+ ```
71
+
72
+ | Attribute | Type | Description |
73
+ | ------------ | ------ | ---------------------------------------------------------- |
74
+ | assets | Array | List of assets to compile (only js and css files) |
75
+ | assets_paths | Array | List of directories where Sprockets find files for require |
76
+ | assets_url | String | URL for assets in production |
77
+ | compressors | Hash | Hash with selected compressors by type |
78
+ | dependencies | Array | List of gems to install and require |
79
+ | output | String | Path to a directory where compiled assets will be written |
80
+ | pages | Array | List of pages to compile |
81
+ | pages_paths | Array | List of directories where Fronton find html files |
19
82
 
20
- ## Usage
83
+ ### Gem sources
21
84
 
22
- `TODO`: Write usage instructions here
85
+ In order to allow **Fronton** to install project gem dependencies automatically,
86
+ if you use gems from others sources than `https://rubygems.org` like
87
+ `https://rails-assets.org`, you must add these sources to rubygems configuration
88
+ file.
89
+
90
+ ```
91
+ $ gem sources --add https://rails-assets.org
92
+ ```
23
93
 
94
+ ### Proposed folders hierarchy
95
+
96
+ ```
97
+ .
98
+ ├── assets
99
+ │   ├── fonts
100
+ │   ├── images
101
+ │   ├── javascripts
102
+ │   └── stylesheets
103
+ ├── fronton.yml
104
+ ├── locales
105
+ │   └── es
106
+ │   └── index.yml
107
+ ├── pages
108
+ ├── public
109
+ └── vendor
110
+ ├── fonts
111
+ ├── images
112
+ ├── javascripts
113
+ └── stylesheets
114
+ ```
24
115
 
25
116
  ## Testing
26
117
 
27
- `TODO`: Write how to test
118
+ Tests are written using *Minitest*.
119
+
120
+ ```
121
+ $ bundle exec rake
122
+ ```
28
123
 
29
124
 
30
125
  ## Contributing
data/fronton.gemspec CHANGED
@@ -28,7 +28,16 @@ Gem::Specification.new do |spec|
28
28
  #
29
29
  ## DEPENDENCIES
30
30
  #
31
- spec.add_dependency 'thor', '~> 0.19', '>= 0.19.1'
32
- spec.add_dependency 'rack', '~> 2.0', '>= 2.0.1'
31
+ spec.add_dependency 'thor', '~> 0.19'
32
+ spec.add_dependency 'rack', '~> 2.0'
33
33
  spec.add_dependency 'sprockets', '~> 3.7'
34
+
35
+ #
36
+ ## DEVELOPMENT DEPENDENCIES
37
+ #
38
+ spec.add_development_dependency 'coveralls', '~> 0.8'
39
+ spec.add_development_dependency 'minitest', '~> 5.9'
40
+ spec.add_development_dependency 'minitest-reporters', '~> 1.1'
41
+ spec.add_development_dependency 'rake', '~> 11.2'
42
+ spec.add_development_dependency 'simplecov', '~> 0.12'
34
43
  end
data/lib/fronton/cli.rb CHANGED
@@ -5,7 +5,7 @@ require 'fronton/config'
5
5
  require 'fronton/html_server'
6
6
 
7
7
  module Fronton
8
- class CLI < Thor
8
+ class CLI < Thor # rubocop:disable Metrics/ClassLength
9
9
  include Thor::Actions
10
10
 
11
11
  def self.source_root
@@ -46,6 +46,17 @@ module Fronton
46
46
  # require dependencies for rails assets
47
47
  config.require_dependencies
48
48
 
49
+ # assets helpers
50
+ config.environment.context_class.class_eval do
51
+ def asset_path(path, _options = {})
52
+ "assets/#{path}"
53
+ end
54
+
55
+ def asset_url(path, _options = {})
56
+ "url(#{asset_path(path)})"
57
+ end
58
+ end
59
+
49
60
  conf = config
50
61
 
51
62
  app = Rack::Builder.new do
@@ -77,6 +88,24 @@ module Fronton
77
88
  config.environment.css_compressor = config.compressor_css.to_sym
78
89
  end
79
90
 
91
+ # assets helpers
92
+ config.environment.context_class.class_eval do
93
+ class << self
94
+ attr_accessor :fronton_config
95
+ end
96
+
97
+ def asset_path(path, _options = {})
98
+ path = self.class.superclass.fronton_config.manifest.assets[path]
99
+ "#{self.class.superclass.fronton_config.assets_url}/#{path}"
100
+ end
101
+
102
+ def asset_url(path, _options = {})
103
+ "url(#{asset_path(path)})"
104
+ end
105
+ end
106
+
107
+ config.environment.context_class.fronton_config = config
108
+
80
109
  # compile assets
81
110
  config.manifest.compile(config.assets)
82
111
 
@@ -42,6 +42,10 @@ module Fronton
42
42
  end
43
43
  end
44
44
 
45
+ def assets_url
46
+ @config['assets_url'] || '/assets'
47
+ end
48
+
45
49
  def output
46
50
  @output ||= working_dir.join(@config['output'] || 'public')
47
51
  end
@@ -3,7 +3,7 @@ module Fronton
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
5
  TINY = 0
6
- PRE = 'alpha'.freeze
6
+ PRE = 'beta1'.freeze
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
9
9
  end
data/template/fronton.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  assets:
2
2
  - application.js
3
3
  - application.css
4
+ - "*.png"
4
5
  assets_paths:
5
6
  - assets/javascripts
6
7
  - assets/stylesheets
@@ -10,6 +11,10 @@ assets_paths:
10
11
  - vendor/stylesheets
11
12
  - vendor/fonts
12
13
  - vendor/images
14
+ assets_url: https://assets.example.com
15
+ compressors:
16
+ css: scss
17
+ js: uglifier
13
18
  dependencies:
14
19
  - rails-assets-jquery: 3.1.0
15
20
  - slim: 3.0.7
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fronton
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.alpha
4
+ version: 0.1.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Aranda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-07 00:00:00.000000000 Z
11
+ date: 2016-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.19'
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.19.1
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0.19'
30
- - - ">="
31
- - !ruby/object:Gem::Version
32
- version: 0.19.1
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: rack
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +31,6 @@ dependencies:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
33
  version: '2.0'
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- version: 2.0.1
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,9 +38,6 @@ dependencies:
47
38
  - - "~>"
48
39
  - !ruby/object:Gem::Version
49
40
  version: '2.0'
50
- - - ">="
51
- - !ruby/object:Gem::Version
52
- version: 2.0.1
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: sprockets
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -64,6 +52,76 @@ dependencies:
64
52
  - - "~>"
65
53
  - !ruby/object:Gem::Version
66
54
  version: '3.7'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.8'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.8'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.9'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.9'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest-reporters
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.1'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.1'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '11.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '11.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.12'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.12'
67
125
  description: ''
68
126
  email: javier.aranda.varo@gmail.com
69
127
  executables:
@@ -91,7 +149,7 @@ files:
91
149
  - template/assets/stylesheets/.keep
92
150
  - template/fronton.yml
93
151
  - template/locales/es/index.yml
94
- - template/pages/partials/.keep
152
+ - template/pages/.keep
95
153
  - template/public/.keep
96
154
  - template/vendor/fonts/.keep
97
155
  - template/vendor/images/.keep
File without changes