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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a59ff3fe21255ea48b9809f16896c7a26abcfdf7
4
- data.tar.gz: 1301cc1479ea82ca40e13948b29e69db18974526
3
+ metadata.gz: 7c4ee73b112f5a00aab967429c4d6f5625f23764
4
+ data.tar.gz: 8290fa13dd21b4de97b87603bfc83d1dbcc9a640
5
5
  SHA512:
6
- metadata.gz: 52d14e4f4f43a047155b907d190db15ea0a85d86dd687c60556193b0bdd8acfa970186b21d160f6dc0bb872ded9e74f56c3a31819d8a30d5bf613349ecb3499c
7
- data.tar.gz: db17c6171a86eb7f9db8a1558c8bb9bfcf08a52917120bcec7329f964b90227e3a152f224ba1cb04d4945bcf4e85fa30e93c388ee4502266138b3a06f52f5c1e
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(:get) {''}
9
+ define_template(:index) {''}
10
10
  define_template_var(:client_url, Cfg.client_url)
11
11
 
12
- def get
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
- if api.layout == false
15
- 'none'
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
- context: context
74
+ controller: controller
75
+ api: controller.ws
77
76
  }
78
77
  _.merge(env, env.page)
79
78
 
@@ -12,7 +12,7 @@
12
12
  server_url: /
13
13
 
14
14
  # base URL for compiled client app
15
- client_url: /app
15
+ client_url: /public_app
16
16
 
17
17
  # where webpack should install compiled app. relative to webpack.config.js
18
- client_path: ./public
18
+ client_path: ./
@@ -1,4 +1,4 @@
1
1
  # do NOT edit this file, edit ../Gemfile instead
2
- gem 'appril', '>= 0.0.5'
3
- gem 'rocketio', '>= 0.1'
2
+ gem 'appril', '>= 0.0.7'
3
+ gem 'rocketio', '>= 0.2'
4
4
  gem 'tubesock', '>= 0.2.7'
@@ -10,17 +10,16 @@ module Appril
10
10
  def generate_configs dir
11
11
  config = load_config("#{dir}/config", env: :development)
12
12
 
13
- controllers = controllers_map(dir)
14
- webpack_entries = webpack_entries(dir, controllers)
13
+ api = controllers_map(dir)
14
+ webpack_entries = webpack_entries(dir, api)
15
15
 
16
- File.open File.expand_path('config.json', dir), 'w' do |f|
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
- controllers: controllers,
19
- webpack: {
20
- path: config[:client_path],
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(:get).parameters.each_with_object([]) {|param,o|
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,10 @@
1
+ var path = require('path')
2
+
3
+ module.exports = {
4
+ app: path.resolve(__dirname, '..'),
5
+ base: 'app/base',
6
+ api: 'base/api',
7
+ helpers: 'base/helpers',
8
+ assets: 'base/assets',
9
+ templates: 'base/templates'
10
+ }
@@ -0,0 +1,6 @@
1
+ var fs = require('fs'),
2
+ path = require('path'),
3
+ config_file = path.resolve(__dirname, 'config.json')
4
+ ;
5
+
6
+ module.exports = JSON.parse(fs.readFileSync(config_file))
@@ -0,0 +1,3 @@
1
+ var config = require('./config.js');
2
+
3
+ module.exports = config.entries
@@ -0,0 +1,8 @@
1
+ module.exports = [
2
+ '',
3
+ '.js',
4
+ '.css',
5
+ '.json',
6
+ '.coffee',
7
+ '.html'
8
+ ]
@@ -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 webpack = require('webpack'),
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: 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
- },
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: ['', '.js', '.css', '.json', '.coffee', '.html'],
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(api.controller.ws, env.page)
16
+ crudle = Crudle(env)
16
17
  crudle.partials.menu = require('templates/menu')
17
- crudle.data.url = api.controller.url
18
+ crudle.data.url = env.controller.url
18
19
 
19
20
  layout = if _.has(api, 'layout')
20
- if api.layout == false
21
- 'none'
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
@@ -2,3 +2,4 @@
2
2
  module.exports = (env, layout) ->
3
3
  layout.partials.content = require('./layout')
4
4
  env.render(layout)
5
+ #end
@@ -1,3 +1,7 @@
1
1
  class Index < BaseController
2
2
  map Cfg.server_url
3
+
4
+ def init params
5
+ {}
6
+ end
3
7
  end
@@ -1,23 +1,17 @@
1
1
 
2
- self = (env, layout) ->
3
- layout.components.editor.partials.editor = require('./editor.html')
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
- # - filters_layout
11
- # - filters
12
- # - pager
13
- # - list_layout
14
- # - list_header
15
- # - list_footer
11
+ # - header
12
+ # - footer
16
13
  # - items
17
14
  # - item
18
15
 
19
- # editor partials:
20
- # - editor
21
-
22
- # self properties:
23
- # - self.controller
16
+ # filters partials:
17
+ # - filters
@@ -0,0 +1,3 @@
1
+ <form id="crudle-editor-form">
2
+
3
+ </form>
@@ -0,0 +1,3 @@
1
+ <a href="#" on-click="open">
2
+ {{self.name}}
3
+ </a>
@@ -6,7 +6,7 @@ class CONTROLLER_NAME < BaseController
6
6
 
7
7
  # def order; end
8
8
 
9
- # def filter_by_name params, dataset
9
+ # def name_filter params, dataset
10
10
  # return if params[:name].nil? || params[:name].empty?
11
11
  # dataset.where('name LIKE ?', params[:name] + '%')
12
12
  # end
@@ -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
+ ]
@@ -1,5 +1,5 @@
1
1
  module Appril
2
2
  class CLI
3
- VERSION = '0.0.9'.freeze
3
+ VERSION = '0.1.1'.freeze
4
4
  end
5
5
  end
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.0.9
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-06 00:00:00.000000000 Z
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.config.js
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.0.9", "Appril CLI"]'
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
- }