appril-cli 0.0.9 → 0.1.1

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: 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
- }