appril-cli 0.0.9 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/boilerplate/app/base/api/base_controller.rb +2 -2
- data/boilerplate/app/base/api/deploy.coffee +12 -2
- data/boilerplate/app/base/api/rtcp_controller.rb +4 -1
- data/boilerplate/app/base/core.coffee +2 -3
- data/boilerplate/app/config/config.yml +2 -2
- data/boilerplate/app/core/Gemfile +2 -2
- data/boilerplate/app/core/generate_configs.rb +10 -11
- data/boilerplate/app/webpack/alias.js +10 -0
- data/boilerplate/app/webpack/config.js +6 -0
- data/boilerplate/app/webpack/entry.js +3 -0
- data/boilerplate/app/webpack/extensions.js +8 -0
- data/boilerplate/app/webpack/loaders.js +15 -0
- data/boilerplate/app/webpack/output.js +11 -0
- data/boilerplate/app/webpack/plugins.js +19 -0
- data/boilerplate/app/webpack.config.js +8 -42
- data/boilerplate/crudle/base/api/deploy.coffee +14 -4
- data/boilerplate/crudle/base/api/index/client.coffee +1 -0
- data/boilerplate/crudle/base/api/index/server.rb +4 -0
- data/boilerplate/crudle/generators/api/client.coffee +7 -13
- data/boilerplate/crudle/generators/api/editor/layout.html +3 -0
- data/boilerplate/crudle/generators/api/list/item.html +3 -0
- data/boilerplate/crudle/generators/api/server.rb +1 -1
- data/boilerplate/crudle/webpack/loaders.js +16 -0
- data/lib/appril-cli/version.rb +1 -1
- metadata +13 -5
- data/boilerplate/crudle/generators/api/editor.html +0 -0
- data/boilerplate/crudle/webpack.config.js +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c4ee73b112f5a00aab967429c4d6f5625f23764
|
4
|
+
data.tar.gz: 8290fa13dd21b4de97b87603bfc83d1dbcc9a640
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 103fcc739853591314068ea3c2571542bd02449c97197968bb67d05b4f6284b93252ea8bb7786ea18323a522d4578e6c94591e78df74fac2301ba519f293a47d
|
7
|
+
data.tar.gz: 5ed2ec0f096f78bdbabff15bedb0ada7635b7cfb92bc2e568ce4754c2c7685cdbb4756fe4ba50813c25a58f6adf0b19ed05cec8821bc1151608a02ede9309f3e
|
@@ -6,10 +6,10 @@ class BaseController < Appril::BaseController
|
|
6
6
|
define_layout :layout, file: '../templates/layout'
|
7
7
|
layout :layout
|
8
8
|
engine :Liquid
|
9
|
-
define_template(:
|
9
|
+
define_template(:index) {''}
|
10
10
|
define_template_var(:client_url, Cfg.client_url)
|
11
11
|
|
12
|
-
def
|
12
|
+
def index
|
13
13
|
render
|
14
14
|
end
|
15
15
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
_ = {
|
2
2
|
has: require('lodash/has')
|
3
|
+
isFunction: require('lodash/isFunction')
|
3
4
|
}
|
4
5
|
|
5
6
|
templates = {
|
@@ -11,10 +12,19 @@ previous_layout = null
|
|
11
12
|
module.exports = (api, env) ->
|
12
13
|
|
13
14
|
layout = if _.has(api, 'layout')
|
14
|
-
|
15
|
-
|
15
|
+
|
16
|
+
api_layout = if _.isFunction(api.layout)
|
17
|
+
api.layout(env)
|
16
18
|
else
|
17
19
|
api.layout
|
20
|
+
#end
|
21
|
+
|
22
|
+
if api_layout == false
|
23
|
+
'none'
|
24
|
+
else
|
25
|
+
api_layout || 'main'
|
26
|
+
#end
|
27
|
+
|
18
28
|
else
|
19
29
|
'main'
|
20
30
|
#end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
class RTCPController < Appril::RTCPController
|
2
2
|
map BaseController.url('__rtcp__')
|
3
|
+
import :error_handlers, from: BaseController
|
3
4
|
|
4
5
|
private
|
5
6
|
# called after socket connection established
|
@@ -8,7 +9,9 @@ class RTCPController < Appril::RTCPController
|
|
8
9
|
|
9
10
|
# data sent to client after connection established
|
10
11
|
def initialization_data
|
11
|
-
{
|
12
|
+
{
|
13
|
+
client_url: Cfg.client_url, # this is highly important setup, do NOT remove
|
14
|
+
}
|
12
15
|
end
|
13
16
|
|
14
17
|
# merged into original env when calling a controller
|
@@ -66,14 +66,13 @@ Core.on_controller_matched = (controller, context) ->
|
|
66
66
|
controller.load (api) ->
|
67
67
|
context.save()
|
68
68
|
|
69
|
-
api.controller = controller
|
70
|
-
|
71
69
|
env = {
|
72
70
|
render: Render
|
73
71
|
render_component: Render.component
|
74
72
|
render_string: Render.string
|
75
73
|
page: new Page
|
76
|
-
|
74
|
+
controller: controller
|
75
|
+
api: controller.ws
|
77
76
|
}
|
78
77
|
_.merge(env, env.page)
|
79
78
|
|
@@ -10,17 +10,16 @@ module Appril
|
|
10
10
|
def generate_configs dir
|
11
11
|
config = load_config("#{dir}/config", env: :development)
|
12
12
|
|
13
|
-
|
14
|
-
webpack_entries = webpack_entries(dir,
|
13
|
+
api = controllers_map(dir)
|
14
|
+
webpack_entries = webpack_entries(dir, api)
|
15
15
|
|
16
|
-
File.open
|
16
|
+
File.open(File.expand_path('api.json', dir), 'w') {|f| f << JSON.pretty_generate(api)}
|
17
|
+
|
18
|
+
File.open File.expand_path('webpack/config.json', dir), 'w' do |f|
|
17
19
|
f << JSON.pretty_generate({
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
url: config[:client_url],
|
22
|
-
entries: webpack_entries
|
23
|
-
}
|
20
|
+
path: config[:client_path],
|
21
|
+
url: config[:client_url],
|
22
|
+
entries: webpack_entries
|
24
23
|
})
|
25
24
|
end
|
26
25
|
end
|
@@ -35,7 +34,7 @@ module Appril
|
|
35
34
|
url: controller.url,
|
36
35
|
url_pattern: url_pattern(controller),
|
37
36
|
name: controller.name.gsub('::', '__'),
|
38
|
-
api: controller.api
|
37
|
+
api: controller.api.keys
|
39
38
|
}
|
40
39
|
end.sort do |a,b|
|
41
40
|
b[:url].split('/').size <=> a[:url].split('/').size
|
@@ -64,7 +63,7 @@ module Appril
|
|
64
63
|
end
|
65
64
|
|
66
65
|
def url_pattern controller
|
67
|
-
controller.url *controller.instance_method(:
|
66
|
+
controller.url *controller.instance_method(:index).parameters.each_with_object([]) {|param,o|
|
68
67
|
pattern = if param[0] == :rest
|
69
68
|
"*"
|
70
69
|
elsif param[0] == :req
|
@@ -0,0 +1,15 @@
|
|
1
|
+
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
2
|
+
|
3
|
+
module.exports = [
|
4
|
+
{ test: /\.coffee$/, loader: 'coffee-loader' },
|
5
|
+
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
|
6
|
+
{ test: /\.json$/, loader: 'json-loader' },
|
7
|
+
{ test: /\.otf($|\?)/, loader: require.resolve('file-loader') },
|
8
|
+
{ test: /\.ttf($|\?)/, loader: require.resolve('file-loader') },
|
9
|
+
{ test: /\.eot($|\?)/, loader: require.resolve('file-loader') },
|
10
|
+
{ test: /\.svg($|\?)/, loader: require.resolve('file-loader') },
|
11
|
+
{ test: /\.png($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=image/png' },
|
12
|
+
{ test: /\.jpg($|\?)/, loader: require.resolve('file-loader') },
|
13
|
+
{ test: /\.gif($|\?)/, loader: require.resolve('file-loader') },
|
14
|
+
{ test: /\.woff[2]?($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=application/font-woff' },
|
15
|
+
]
|
@@ -0,0 +1,11 @@
|
|
1
|
+
var path = require('path'),
|
2
|
+
config = require('./config.js'),
|
3
|
+
app_env = process.env.APP_ENV || 'development'
|
4
|
+
;
|
5
|
+
|
6
|
+
module.exports = {
|
7
|
+
path: path.join(config.path, config.url, app_env),
|
8
|
+
filename: '[name].js',
|
9
|
+
publicPath: path.join(config.url, app_env, '/'), // trailing slash required
|
10
|
+
libraryTarget: 'commonjs2'
|
11
|
+
}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
var webpack = require('webpack'),
|
2
|
+
ExtractTextPlugin = require("extract-text-webpack-plugin")
|
3
|
+
;
|
4
|
+
|
5
|
+
var plugins = [
|
6
|
+
new webpack.optimize.CommonsChunkPlugin('core', 'core.js'),
|
7
|
+
new ExtractTextPlugin("[name].css")
|
8
|
+
]
|
9
|
+
|
10
|
+
if (process.env.APP_ENV == 'production') {
|
11
|
+
plugins.push(new webpack.optimize.UglifyJsPlugin({
|
12
|
+
compress: { warnings: false },
|
13
|
+
screwIE8: true,
|
14
|
+
sourceMap: false,
|
15
|
+
mangle: true
|
16
|
+
}))
|
17
|
+
}
|
18
|
+
|
19
|
+
module.exports = plugins
|
@@ -1,53 +1,19 @@
|
|
1
|
-
var
|
2
|
-
fs = require('fs'),
|
3
|
-
ExtractTextPlugin = require("extract-text-webpack-plugin"),
|
4
|
-
child_process = require('child_process')
|
5
|
-
;
|
1
|
+
var child_process = require('child_process');
|
6
2
|
|
7
|
-
if (process.env.APP_ENV == 'development') {
|
3
|
+
if ((process.env.APP_ENV || 'development') == 'development') {
|
8
4
|
console.log('Generating configs...');
|
9
5
|
child_process.execSync('./core/generate_configs.rb');
|
10
6
|
}
|
11
7
|
|
12
|
-
var setup = JSON.parse(fs.readFileSync('./config.json')).webpack;
|
13
|
-
console.log(JSON.stringify(setup, null, 2))
|
14
|
-
|
15
8
|
module.exports = {
|
16
|
-
entry:
|
17
|
-
output:
|
18
|
-
path: [setup.path, setup.url].join('/'),
|
19
|
-
filename: '[name].js',
|
20
|
-
publicPath: setup.url + '/', // trailing slash required
|
21
|
-
libraryTarget: 'commonjs2'
|
22
|
-
},
|
9
|
+
entry: require('./webpack/entry.js'),
|
10
|
+
output: require('./webpack/output.js'),
|
23
11
|
module: {
|
24
|
-
loaders:
|
25
|
-
{ test: /\.coffee$/, loader: 'coffee-loader' },
|
26
|
-
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
|
27
|
-
{ test: /\.json$/, loader: 'json-loader' },
|
28
|
-
{ test: /\.otf($|\?)/, loader: require.resolve('file-loader') },
|
29
|
-
{ test: /\.ttf($|\?)/, loader: require.resolve('file-loader') },
|
30
|
-
{ test: /\.eot($|\?)/, loader: require.resolve('file-loader') },
|
31
|
-
{ test: /\.svg($|\?)/, loader: require.resolve('file-loader') },
|
32
|
-
{ test: /\.png($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=image/png' },
|
33
|
-
{ test: /\.jpg($|\?)/, loader: require.resolve('file-loader') },
|
34
|
-
{ test: /\.gif($|\?)/, loader: require.resolve('file-loader') },
|
35
|
-
{ test: /\.woff[2]?($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=application/font-woff' },
|
36
|
-
]
|
12
|
+
loaders: require('./webpack/loaders.js')
|
37
13
|
},
|
38
14
|
resolve: {
|
39
|
-
extensions:
|
40
|
-
alias:
|
41
|
-
app: __dirname,
|
42
|
-
base: 'app/base',
|
43
|
-
api: 'base/api',
|
44
|
-
helpers: 'base/helpers',
|
45
|
-
assets: 'base/assets',
|
46
|
-
templates: 'base/templates'
|
47
|
-
}
|
15
|
+
extensions: require('./webpack/extensions.js'),
|
16
|
+
alias: require('./webpack/alias.js')
|
48
17
|
},
|
49
|
-
plugins:
|
50
|
-
new webpack.optimize.CommonsChunkPlugin('core', 'core.js'),
|
51
|
-
new ExtractTextPlugin("[name].css")
|
52
|
-
]
|
18
|
+
plugins: require('./webpack/plugins.js')
|
53
19
|
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
_ = {
|
2
2
|
has: require('lodash/has')
|
3
|
+
isFunction: require('lodash/isFunction')
|
3
4
|
}
|
4
5
|
|
5
6
|
Crudle = require('crudle')
|
@@ -12,15 +13,24 @@ templates = {
|
|
12
13
|
previous_layout = null
|
13
14
|
module.exports = (api, env) ->
|
14
15
|
|
15
|
-
crudle = Crudle(
|
16
|
+
crudle = Crudle(env)
|
16
17
|
crudle.partials.menu = require('templates/menu')
|
17
|
-
crudle.data.url =
|
18
|
+
crudle.data.url = env.controller.url
|
18
19
|
|
19
20
|
layout = if _.has(api, 'layout')
|
20
|
-
|
21
|
-
|
21
|
+
|
22
|
+
api_layout = if _.isFunction(api.layout)
|
23
|
+
api.layout(env)
|
22
24
|
else
|
23
25
|
api.layout
|
26
|
+
#end
|
27
|
+
|
28
|
+
if api_layout == false
|
29
|
+
'none'
|
30
|
+
else
|
31
|
+
api_layout || 'main'
|
32
|
+
#end
|
33
|
+
|
24
34
|
else
|
25
35
|
'main'
|
26
36
|
#end
|
@@ -1,23 +1,17 @@
|
|
1
1
|
|
2
|
-
self = (env, layout) ->
|
3
|
-
|
2
|
+
self = (env, {layout, list, editor}) ->
|
3
|
+
list.partials.item = require('./list/item')
|
4
|
+
editor.template = require('./editor/layout')
|
4
5
|
env.render(layout)
|
5
6
|
#end
|
6
7
|
|
7
8
|
module.exports = self
|
8
9
|
|
9
10
|
# list partials:
|
10
|
-
# -
|
11
|
-
# -
|
12
|
-
# - pager
|
13
|
-
# - list_layout
|
14
|
-
# - list_header
|
15
|
-
# - list_footer
|
11
|
+
# - header
|
12
|
+
# - footer
|
16
13
|
# - items
|
17
14
|
# - item
|
18
15
|
|
19
|
-
#
|
20
|
-
# -
|
21
|
-
|
22
|
-
# self properties:
|
23
|
-
# - self.controller
|
16
|
+
# filters partials:
|
17
|
+
# - filters
|
@@ -0,0 +1,16 @@
|
|
1
|
+
var ExtractTextPlugin = require("extract-text-webpack-plugin");
|
2
|
+
|
3
|
+
module.exports = [
|
4
|
+
{ test: /\.html$/, loader: 'ractive-loader' },
|
5
|
+
{ test: /\.coffee$/, loader: 'coffee-loader' },
|
6
|
+
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
|
7
|
+
{ test: /\.json$/, loader: 'json-loader' },
|
8
|
+
{ test: /\.otf($|\?)/, loader: require.resolve('file-loader') },
|
9
|
+
{ test: /\.ttf($|\?)/, loader: require.resolve('file-loader') },
|
10
|
+
{ test: /\.eot($|\?)/, loader: require.resolve('file-loader') },
|
11
|
+
{ test: /\.svg($|\?)/, loader: require.resolve('file-loader') },
|
12
|
+
{ test: /\.png($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=image/png' },
|
13
|
+
{ test: /\.jpg($|\?)/, loader: require.resolve('file-loader') },
|
14
|
+
{ test: /\.gif($|\?)/, loader: require.resolve('file-loader') },
|
15
|
+
{ test: /\.woff[2]?($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=application/font-woff' },
|
16
|
+
]
|
data/lib/appril-cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appril-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slee Woo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Appril CLI
|
14
14
|
email:
|
@@ -65,6 +65,13 @@ files:
|
|
65
65
|
- boilerplate/app/tmp/.ignore
|
66
66
|
- boilerplate/app/var/.ignore
|
67
67
|
- boilerplate/app/webpack.config.js
|
68
|
+
- boilerplate/app/webpack/alias.js
|
69
|
+
- boilerplate/app/webpack/config.js
|
70
|
+
- boilerplate/app/webpack/entry.js
|
71
|
+
- boilerplate/app/webpack/extensions.js
|
72
|
+
- boilerplate/app/webpack/loaders.js
|
73
|
+
- boilerplate/app/webpack/output.js
|
74
|
+
- boilerplate/app/webpack/plugins.js
|
68
75
|
- boilerplate/crudle/Gemfile
|
69
76
|
- boilerplate/crudle/base/api/deploy.coffee
|
70
77
|
- boilerplate/crudle/base/api/index/client.coffee
|
@@ -72,10 +79,11 @@ files:
|
|
72
79
|
- boilerplate/crudle/base/api/index/server.rb
|
73
80
|
- boilerplate/crudle/base/templates/menu.html
|
74
81
|
- boilerplate/crudle/generators/api/client.coffee
|
75
|
-
- boilerplate/crudle/generators/api/editor.html
|
82
|
+
- boilerplate/crudle/generators/api/editor/layout.html
|
83
|
+
- boilerplate/crudle/generators/api/list/item.html
|
76
84
|
- boilerplate/crudle/generators/api/server.rb
|
77
85
|
- boilerplate/crudle/package.json
|
78
|
-
- boilerplate/crudle/webpack.
|
86
|
+
- boilerplate/crudle/webpack/loaders.js
|
79
87
|
- docker/Dockerfile
|
80
88
|
- docker/run
|
81
89
|
- docker/skel/build.sh
|
@@ -159,5 +167,5 @@ rubyforge_project:
|
|
159
167
|
rubygems_version: 2.5.1
|
160
168
|
signing_key:
|
161
169
|
specification_version: 4
|
162
|
-
summary: '["appril-cli-0.
|
170
|
+
summary: '["appril-cli-0.1.1", "Appril CLI"]'
|
163
171
|
test_files: []
|
File without changes
|
@@ -1,54 +0,0 @@
|
|
1
|
-
var webpack = require('webpack'),
|
2
|
-
fs = require('fs'),
|
3
|
-
ExtractTextPlugin = require("extract-text-webpack-plugin"),
|
4
|
-
child_process = require('child_process')
|
5
|
-
;
|
6
|
-
|
7
|
-
if (process.env.APP_ENV == 'development') {
|
8
|
-
console.log('Generating configs...');
|
9
|
-
child_process.execSync('./core/generate_configs.rb');
|
10
|
-
}
|
11
|
-
|
12
|
-
var setup = JSON.parse(fs.readFileSync('./config.json')).webpack;
|
13
|
-
console.log(JSON.stringify(setup, null, 2))
|
14
|
-
|
15
|
-
module.exports = {
|
16
|
-
entry: setup.entries,
|
17
|
-
output: {
|
18
|
-
path: [setup.path, setup.url].join('/'),
|
19
|
-
filename: '[name].js',
|
20
|
-
publicPath: setup.url + '/', // trailing slash required
|
21
|
-
libraryTarget: 'commonjs2'
|
22
|
-
},
|
23
|
-
module: {
|
24
|
-
loaders: [
|
25
|
-
{ test: /\.coffee$/, loader: 'coffee-loader' },
|
26
|
-
{ test: /\.html$/, loader: 'ractive-loader' },
|
27
|
-
{ test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") },
|
28
|
-
{ test: /\.json$/, loader: 'json-loader' },
|
29
|
-
{ test: /\.otf($|\?)/, loader: require.resolve('file-loader') },
|
30
|
-
{ test: /\.ttf($|\?)/, loader: require.resolve('file-loader') },
|
31
|
-
{ test: /\.eot($|\?)/, loader: require.resolve('file-loader') },
|
32
|
-
{ test: /\.svg($|\?)/, loader: require.resolve('file-loader') },
|
33
|
-
{ test: /\.png($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=image/png' },
|
34
|
-
{ test: /\.jpg($|\?)/, loader: require.resolve('file-loader') },
|
35
|
-
{ test: /\.gif($|\?)/, loader: require.resolve('file-loader') },
|
36
|
-
{ test: /\.woff[2]?($|\?)/, loader: require.resolve('url-loader') + '?limit=10000&mimetype=application/font-woff' },
|
37
|
-
]
|
38
|
-
},
|
39
|
-
resolve: {
|
40
|
-
extensions: ['', '.js', '.css', '.json', '.coffee', '.html'],
|
41
|
-
alias: {
|
42
|
-
app: __dirname,
|
43
|
-
base: 'app/base',
|
44
|
-
api: 'base/api',
|
45
|
-
helpers: 'base/helpers',
|
46
|
-
assets: 'base/assets',
|
47
|
-
templates: 'base/templates'
|
48
|
-
}
|
49
|
-
},
|
50
|
-
plugins: [
|
51
|
-
new webpack.optimize.CommonsChunkPlugin('core', 'core.js'),
|
52
|
-
new ExtractTextPlugin("[name].css")
|
53
|
-
]
|
54
|
-
}
|