appril 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/appril.gemspec +0 -1
  3. data/lib/appril/version.rb +1 -1
  4. data/lib/appril.rb +0 -117
  5. metadata +4 -73
  6. data/bin/appril +0 -5
  7. data/boilerplate/app/.gitignore +0 -6
  8. data/boilerplate/app/.pryrc +0 -1
  9. data/boilerplate/app/Gemfile +0 -6
  10. data/boilerplate/app/Rakefile +0 -1
  11. data/boilerplate/app/base/api/base_controller.rb +0 -21
  12. data/boilerplate/app/base/api/index/client.coffee +0 -4
  13. data/boilerplate/app/base/api/index/layout.html +0 -3
  14. data/boilerplate/app/base/api/index/server.rb +0 -3
  15. data/boilerplate/app/base/api/rtcp_controller.rb +0 -22
  16. data/boilerplate/app/base/assets/styles.css +0 -0
  17. data/boilerplate/app/base/boot.rb +0 -2
  18. data/boilerplate/app/base/core.coffee +0 -143
  19. data/boilerplate/app/base/helpers/application_helpers.coffee +0 -1
  20. data/boilerplate/app/base/helpers/application_helpers.rb +0 -4
  21. data/boilerplate/app/base/load.rb +0 -0
  22. data/boilerplate/app/base/models/base_model.rb +0 -0
  23. data/boilerplate/app/base/templates/access_denied.html +0 -3
  24. data/boilerplate/app/base/templates/layout.liquid +0 -11
  25. data/boilerplate/app/base/templates/layouts/main.html +0 -1
  26. data/boilerplate/app/base/templates/layouts/none.html +0 -1
  27. data/boilerplate/app/config/config.rb +0 -9
  28. data/boilerplate/app/config/config.yml +0 -18
  29. data/boilerplate/app/config/env/development.yml +0 -0
  30. data/boilerplate/app/config/env/production.yml +0 -0
  31. data/boilerplate/app/config/env/stage.yml +0 -0
  32. data/boilerplate/app/config/env/test.yml +0 -0
  33. data/boilerplate/app/config.ru +0 -3
  34. data/boilerplate/app/core/Gemfile +0 -4
  35. data/boilerplate/app/core/boot.rb +0 -16
  36. data/boilerplate/app/core/generate_configs.rb +0 -7
  37. data/boilerplate/app/core/load.rb +0 -14
  38. data/boilerplate/app/core/load_controllers.rb +0 -14
  39. data/boilerplate/app/generators/api/client.coffee +0 -4
  40. data/boilerplate/app/generators/api/layout.html +0 -0
  41. data/boilerplate/app/generators/api/server.rb +0 -3
  42. data/boilerplate/app/package.json +0 -10
  43. data/boilerplate/app/public/.ignore +0 -0
  44. data/boilerplate/app/tmp/.ignore +0 -0
  45. data/boilerplate/app/var/.ignore +0 -0
  46. data/boilerplate/app/webpack.config.js +0 -53
  47. data/boilerplate/crudle/Gemfile +0 -7
  48. data/boilerplate/crudle/base/core.coffee +0 -128
  49. data/boilerplate/crudle/base/templates/menu.html +0 -3
  50. data/boilerplate/crudle/generators/api/client.coffee +0 -11
  51. data/boilerplate/crudle/generators/api/editor.html +0 -0
  52. data/boilerplate/crudle/generators/api/server.rb +0 -26
  53. data/boilerplate/crudle/package.json +0 -15
  54. data/boilerplate/crudle/webpack.config.js +0 -54
  55. data/docker/Dockerfile +0 -5
  56. data/docker/run +0 -66
  57. data/docker/skel/build.sh +0 -1
  58. data/docker/skel/cleanup.sh +0 -7
  59. data/docker/skel/config.yml +0 -24
  60. data/docker/skel/prepare_build.sh +0 -5
  61. data/docker/skel/start.sh +0 -1
  62. data/docker/start +0 -7
  63. data/lib/appril/cli/app/install.rb +0 -45
  64. data/lib/appril/cli/app/update.rb +0 -26
  65. data/lib/appril/cli/app.rb +0 -11
  66. data/lib/appril/cli/assertions.rb +0 -60
  67. data/lib/appril/cli/docker/build.rb +0 -150
  68. data/lib/appril/cli/docker/install.rb +0 -21
  69. data/lib/appril/cli/docker/update.rb +0 -24
  70. data/lib/appril/cli/docker.rb +0 -16
  71. data/lib/appril/cli/generator.rb +0 -15
  72. data/lib/appril/cli/helpers.rb +0 -47
  73. data/lib/appril/cli.rb +0 -204
File without changes
File without changes
File without changes
@@ -1,53 +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: /\.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
- ]
37
- },
38
- 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
- }
48
- },
49
- plugins: [
50
- new webpack.optimize.CommonsChunkPlugin('core', 'core.js'),
51
- new ExtractTextPlugin("[name].css")
52
- ]
53
- }
@@ -1,7 +0,0 @@
1
- source 'https://rubygems.org'
2
- # keep this line
3
- eval File.read(File.expand_path('../core/Gemfile', __FILE__))
4
-
5
- # add your gems here
6
- gem 'crudle'
7
- gem 'liquid', '~> 3'
@@ -1,128 +0,0 @@
1
- _ =
2
- merge: require('lodash/merge')
3
- has: require('lodash/has')
4
- isFunction: require('lodash/isFunction')
5
- #end
6
-
7
- Core = require('appril')
8
- Page = require('appril-page')
9
- Render = require('appril-ractive')
10
- Reporter = require('appril-reporter')
11
- require 'appril-polyfills'
12
- require 'assets/styles.css'
13
-
14
- CONSIDER_IDLE_AFTER = 5 * 60
15
-
16
- window.Cfg = {}
17
- window.Util = {}
18
- window.App = {}
19
- # window.Alert = require('appril-alert')
20
-
21
- for k, v of require('appril-util')
22
- Util[k] = v
23
- #end
24
-
25
- # for k, v of require('appril-datetime')
26
- # Util[k] = v
27
- # #end
28
-
29
- for k, v of require('helpers/application_helpers.coffee')
30
- Util[k] = v
31
- #end
32
-
33
- Object.freeze(Util)
34
-
35
- Render.default_el = -> '#content'
36
- Render.global_data = -> {App: App, Cfg: Cfg, Util: Util}
37
- Render.global_handlers = -> {}
38
-
39
- for name, controller of Core.controllers
40
- App[name] = controller
41
- #end
42
-
43
- Core.on_initialize = (msg) ->
44
- if window.Cfg = msg.data.cfg
45
- delete msg.data.cfg
46
- Object.freeze(Cfg)
47
-
48
- for k, v of msg.data
49
- App[k] = v
50
- #end
51
-
52
- Reporter CONSIDER_IDLE_AFTER, (status) ->
53
- # close connection if user went away
54
- Core.disconnect() if status == 'away'
55
- #end
56
- #end
57
-
58
- templates =
59
- none: require('templates/layouts/none.html')
60
- main: require('templates/layouts/main.html')
61
- access_denied: require('templates/access_denied.html')
62
- #end
63
-
64
- partials = {}
65
-
66
- Crudle = require('crudle')
67
- CrudleList = require('crudle-list')
68
- CrudleEditor = require('crudle-editor')
69
-
70
- deploy_api = (api) ->
71
-
72
- page = new Page
73
- env = _.merge({
74
- render: Render
75
- render_component: Render.component
76
- render_string: Render.string
77
- }, page)
78
-
79
- crudle = Crudle(api.controller.ws, page)
80
- crudle.partials.menu = require('templates/menu.html')
81
- crudle.data.url = api.controller.url
82
-
83
- api(
84
- env,
85
- crudle,
86
- CrudleList(api.controller.ws, page),
87
- CrudleEditor(api.controller.ws, page)
88
- )
89
- #end
90
-
91
- previous_api = null
92
- Core.on_controller_matched = (controller, context) ->
93
-
94
- controller.load (api) ->
95
- context.save()
96
-
97
- api.controller = controller
98
-
99
- if previous_api?.teardown
100
- previous_api.teardown()
101
- #end
102
- previous_api = api
103
-
104
- if _.has(api, 'acl')
105
- unless _.isFunction(api.acl)
106
- throw new Error("#{controller.name}.acl should be a function")
107
-
108
- if api.acl()
109
- deploy_api(api)
110
- else
111
- Render
112
- el: 'body'
113
- template: templates.main
114
- partials: partials
115
- oncomplete: ->
116
- Render(template: templates.access_denied)
117
- #end
118
-
119
- else
120
- deploy_api(api)
121
- #end
122
- #end
123
- #end
124
-
125
- document.addEventListener 'DOMContentLoaded', ->
126
- # make sure this matches the RTCPController URL.
127
- Core.connect('__rtcp__')
128
- #end
@@ -1,3 +0,0 @@
1
- <a href="{{App.X.url}}" class="nav-item nav-link {{ url == App.X.url ? 'active' : '' }}">
2
- X
3
- </a>
@@ -1,11 +0,0 @@
1
- # refer to underlying controller as self.controller
2
-
3
- self = (env, layout, list, editor) ->
4
- editor.partials.editor = require('./editor')
5
- layout.components =
6
- list: env.render_component(list)
7
- editor: env.render_component(editor)
8
- env.render(layout)
9
- #end
10
-
11
- module.exports = self
File without changes
@@ -1,26 +0,0 @@
1
- class CONTROLLER_NAME < BaseController
2
- include Crudle::Controller
3
-
4
- private
5
- def model; MODEL_NAME end
6
-
7
- # def order; end
8
-
9
- # def filter_by_name params, dataset
10
- # return if params[:name].nil? || params[:name].empty?
11
- # dataset.where('name LIKE ?', params[:name] + '%')
12
- # end
13
-
14
- # def list_serializer item
15
- # serializer(item)
16
- # end
17
-
18
- # def editor_serializer item
19
- # serializer(item)
20
- # end
21
-
22
- # def serializer item
23
- # item
24
- # end
25
-
26
- end
@@ -1,15 +0,0 @@
1
- {
2
- "name": "MyApp",
3
- "version": "0.0.0",
4
- "description": "...",
5
- "dependencies": {
6
- "appril": "*",
7
- "appril-ractive": "*",
8
- "appril-reporter": "*",
9
- "appril-polyfills": "*",
10
- "crudle": "*",
11
- "crudle-list": "*",
12
- "crudle-editor": "*",
13
- "extract-text-webpack-plugin": "1"
14
- }
15
- }
@@ -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
- }
data/docker/Dockerfile DELETED
@@ -1,5 +0,0 @@
1
- FROM appril/base
2
- COPY start /
3
- COPY build /build
4
- RUN sh /build/build && sh /build/cleanup && mkdir /app
5
- CMD sh /start
data/docker/run DELETED
@@ -1,66 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- run() {
4
- echo -e "\n$ $@"
5
- "$@"
6
- }
7
-
8
- container_is_built() {
9
- [[ -n $(docker ps -a | grep -E "\s$CONTAINER_NAME\s") ]]
10
- }
11
-
12
- container_is_running() {
13
- [[ -n $(docker ps | grep -E "\s$CONTAINER_NAME\s") ]]
14
- }
15
-
16
- stop_container() {
17
- run docker stop $CONTAINER_NAME
18
- }
19
-
20
- remove_container() {
21
- run docker rm $CONTAINER_NAME
22
- }
23
-
24
- env_prompt() {
25
- read APP_ENV
26
- [ "$(echo " {environments} " | grep -E "\s$APP_ENV\s")" = "" ] && env_prompt
27
- }
28
-
29
- echo "Let's set APP_ENV"
30
- echo "{environments}"
31
- echo -n "> "
32
- env_prompt
33
-
34
- set -e
35
-
36
- {container_definitions}
37
-
38
- if [ "$CONTAINER_NAME" = "" ]; then
39
- echo -e "\n\t::: $APP_ENV environment not supported. Use one of: {environments} :::\n"
40
- exit 1
41
- fi
42
-
43
- APP_UID="$(id -u)"
44
- APP_GID="$(id -g)"
45
- APP_DIR="$(cd "$(dirname ${BASH_SOURCE[0]})/{script_path_traversal}"; pwd)"
46
-
47
- if [ "$APP_UID" = "0" ]; then
48
- echo -e "\n\t::: No superpowers accepted here! Run this as a regular user :::\n"
49
- exit 1
50
- fi
51
-
52
- run docker pull {image}
53
- container_is_running && stop_container
54
- container_is_built && remove_container
55
-
56
- run docker run \
57
- --name "$CONTAINER_NAME" \
58
- -e APP_ENV="$APP_ENV" \
59
- -e APP_UID="$APP_UID" \
60
- -e APP_GID="$APP_GID" \
61
- -e LANG="en_US.UTF-8" \
62
- -e LC_ALL="en_US.UTF-8" \
63
- -e LC_TYPE="en_US.UTF-8" \
64
- -v "$APP_DIR":/app \
65
- {run_opts} {image}
66
- echo
data/docker/skel/build.sh DELETED
@@ -1 +0,0 @@
1
- # running inside container.
@@ -1,7 +0,0 @@
1
- set -e
2
-
3
- apk del build-base libxml2-dev libxslt-dev \
4
- ruby-dev postgresql-dev imagemagick-dev \
5
- nodejs-dev python git
6
-
7
- rm -rf /var/cache/apk/*
@@ -1,24 +0,0 @@
1
- # a image with this name will be built (see prepare_build.sh and build.sh)
2
- IMAGE_NAME:
3
-
4
- # the name of container to be run on your server(s).
5
- # name depends on APP_ENV variable.
6
- # you can add/remove environments but at least one is required.
7
- CONTAINER_NAME:
8
- development:
9
- test:
10
- stage:
11
- production:
12
-
13
- # path to app.
14
- # should be absolute or relative to this file.
15
- APP_DIR:
16
-
17
- # a file with this name will be generated and installed inside APP_DIR.
18
- RUN_SCRIPT: docker/run
19
-
20
- # options passed to `docker build`
21
- BUILD_OPTS: --force-rm --no-cache
22
-
23
- # options passed to `docker run`
24
- RUN_OPTS: -d --restart always
@@ -1,5 +0,0 @@
1
- # running before image building started.
2
- # will run inside building dir so copy into ./ any files you need for building.
3
- # APP_DIR variable points to your app directory
4
- # so use it to copy any files from your app into building dir.
5
- # running outside container, e.g. on your dev machine.
data/docker/skel/start.sh DELETED
@@ -1 +0,0 @@
1
- # start your app
data/docker/start DELETED
@@ -1,7 +0,0 @@
1
- set -e
2
-
3
- [ "$(getent group $APP_GID)" = "" ] && addgroup -g $APP_GID app
4
-
5
- [ "$(getent passwd $APP_UID)" = "" ] && adduser -D -u $APP_UID -G app app
6
-
7
- {start}
@@ -1,45 +0,0 @@
1
- module Appril
2
- class CLI
3
- class App
4
- class Install
5
- include Helpers
6
-
7
- def initialize dir, namespace: nil, working_dir_opted: false, crudle_app: false
8
- install(dir, working_dir_opted, crudle_app)
9
- make_executable(dir / 'core/generate_configs.rb')
10
- add_namespace(dir, namespace) if namespace
11
- puts "Done. All files installed into #{dir}"
12
- end
13
-
14
- def install dir, working_dir_opted, crudle_app
15
- src = working_dir_opted ? APP_DIR.to_path + '/.' : APP_DIR
16
- FileUtils.cp_r(src, dir)
17
- if crudle_app
18
- FileUtils.cp_r(CRUDLE_DIR.to_path + '/.', dir)
19
- end
20
- cleanup(dir)
21
- end
22
-
23
- def add_namespace dir, namespace
24
- %w[
25
- base/base_controller.rb
26
- base/rtcp_controller.rb
27
- config/config.rb
28
- ].each do |file|
29
- code = File.read(dir / file)
30
- File.open dir / file, 'w' do |f|
31
- f.puts "module #{namespace}"
32
- code.split("\n").each {|l| f.puts " #{l}"}
33
- f.puts "end"
34
- end
35
- end
36
- end
37
-
38
- def cleanup dir
39
- Dir[dir / "**/.ignore"].each {|f| FileUtils.rm_f(f)}
40
- end
41
-
42
- end
43
- end
44
- end
45
- end
@@ -1,26 +0,0 @@
1
- module Appril
2
- class CLI
3
- class App
4
- class Update
5
- include Helpers
6
-
7
- def initialize dir
8
- FileUtils.rm_rf(dir / 'core')
9
- Dir.chdir APP_DIR do
10
-
11
- Dir['**/*'].select {|e| File.file?(e)}.each do |file|
12
- next if File.file?(dir / file)
13
- create_dirname_for(dir / file)
14
- puts "Installing #{File.basename(dir)}/#{file}"
15
- FileUtils.cp(file, dir / file)
16
- end
17
-
18
- end
19
- make_executable(dir / 'core/generate_configs.rb')
20
- puts "Done"
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
@@ -1,11 +0,0 @@
1
- module Appril
2
- class CLI
3
- class App
4
- APP_DIR = Appril::BOILERPLATE_DIR / 'app'
5
- CRUDLE_DIR = Appril::BOILERPLATE_DIR / 'crudle'
6
- end
7
- end
8
- end
9
-
10
- require 'appril/cli/app/install'
11
- require 'appril/cli/app/update'
@@ -1,60 +0,0 @@
1
- module Appril
2
- class CLI
3
- module Assertions
4
-
5
- def assert_directory_provided dir
6
- return if dir
7
- fatal_error! "Please provide a directory"
8
- end
9
-
10
- def assert_installable_dir dir, working_dir_opted
11
- if working_dir_opted
12
- assert_empty_directory(dir)
13
- else
14
- assert_directory_does_not_exists(dir)
15
- end
16
- end
17
-
18
- def assert_is_docker_dir dir
19
- return if File.exists?(dir / Docker::CONFIG_FILE)
20
- fatal_error! "#{dir} does not look like a Appril docker dir"
21
- end
22
-
23
- def assert_is_app_dir dir
24
- return if %w[
25
- core
26
- base/api
27
- config
28
- ].all? {|e| File.exists?(dir / e)}
29
- fatal_error! "#{dir} does not look like a Appril app dir"
30
- end
31
-
32
- def assert_empty_directory dir
33
- return if Dir[dir / '*'].empty?
34
- fatal_error! "#{dir} should be empty"
35
- end
36
-
37
- def assert_directory_exists dir
38
- return if File.directory?(dir)
39
- fatal_error! "#{dir} should be a directory"
40
- end
41
-
42
- def assert_directory_does_not_exists dir
43
- return unless File.exists?(dir)
44
- fatal_error! "#{dir} already exists"
45
- end
46
-
47
- def assert_config_file_exists dir
48
- return if File.file?(dir / Docker::CONFIG_FILE)
49
- fatal_error! "#{dir / Docker::CONFIG_FILE} file is missing"
50
- end
51
-
52
- def assert_valid_api_name_given api_name
53
- api_name || fatal_error!('Please provide api name')
54
- api_name =~ /\W/ && fatal_error!('Api name should contain only alphanumerics')
55
- api_name =~ /\A[a-z]/i || fatal_error!('Api name should start with a letter')
56
- end
57
-
58
- end
59
- end
60
- end