isomorfeus-installer 1.0.0.epsilon1 → 1.0.0.epsilon2

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
  SHA256:
3
- metadata.gz: 5f11a7687ae980e634af3ad56768c27545f37ae18d650b511049444cae750ba3
4
- data.tar.gz: 0b63dd0818682491794c91ab198c312d254fcbde5e9386c72f36b6ea4139af85
3
+ metadata.gz: '08896fbcd932ba150cd01138d9ed2c8e72aea9fa35b82eea8bf158a964dcc5d4'
4
+ data.tar.gz: 1f2d2b698199fc476937651d158c1587f145db2b35b684d1d311c540ed6deeb6
5
5
  SHA512:
6
- metadata.gz: ffab2b8fe96f3802d15b9a80ade2ab6b1a6eef1d04011f2b03f4e444b7e5078f5f1880db329005b3a43c4cb93022fbc85d97d479d73494c5450637eadbeb1385
7
- data.tar.gz: bf5108d9433deb812027d3d74de16835c0cac71caff768f39718c1063031d398ad5c9f9ee7984e00da047d0ede487a993198c8fdf9ab8ca7124ba3283903bb3e
6
+ metadata.gz: 5d5d55a002f4f234465134748f531246c2012a8015d7a3a6bed0af9be14d0df4751b5c4d0cfb9d2d574b335ce555b975a2a3553d3f504e2c1ec39450725a6d46
7
+ data.tar.gz: 412c41e42c0fc3cbccdf4263021764b039e3f09288965d97d2b690461cd2d552451aece678f23a7bc14813074e8e34cf6c1f63298d496d0d54c5720a9f41413e
data/bin/isomorfeus CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
-
2
+ require 'fileutils'
3
3
  require 'erb'
4
4
  require 'active_support/core_ext/string'
5
5
  require 'thor'
@@ -2,7 +2,7 @@ module Isomorfeus
2
2
  module Installer
3
3
  class CLI < Thor
4
4
 
5
- desc "new project_name", "create a new isomorfeus project with project_name"
5
+ desc "new project_name", "Create a new isomorfeus project with project_name."
6
6
  option :rack_server, default: 'iodine', aliases: '-r',
7
7
  desc: "Select rack server, one of: #{Isomorfeus::Installer.sorted_rack_servers.join(', ')}. (optional)"
8
8
  option :yarn_and_bundle, default: true, required: false, type: :boolean, aliases: '-y', desc: "Execute yarn install and bundle install. (optional)"
@@ -11,6 +11,18 @@ module Isomorfeus
11
11
  Isomorfeus::Installer.options = options
12
12
  Isomorfeus::Installer::NewProject.execute(yarn_and_bundle: options[:yarn_and_bundle])
13
13
  end
14
+
15
+ desc "test_app", "Create a test_app for internal framework tests."
16
+ option :module, required: true, type: :string, aliases: '-m', desc: "Isomorfeus module name for which to generate the test app, eg: 'i18n'. (required)"
17
+ option :source_dir, required: false, type: :string, aliases: '-s', desc: "Recursively copy files from source dir into app. (optional)"
18
+ option :rack_server, default: 'iodine', aliases: '-r',
19
+ desc: "Select rack server, one of: #{Isomorfeus::Installer.sorted_rack_servers.join(', ')}. (optional)"
20
+ option :yarn_and_bundle, default: true, required: false, type: :boolean, aliases: '-y', desc: "Execute yarn install and bundle install. (optional)"
21
+ def test_app
22
+ Isomorfeus::Installer.set_project_names('test_app')
23
+ Isomorfeus::Installer.options = options
24
+ Isomorfeus::Installer::NewProject.execute(yarn_and_bundle: options[:yarn_and_bundle])
25
+ end
14
26
  end
15
27
  end
16
28
  end
@@ -4,28 +4,21 @@ require 'opal-webpack-loader/version'
4
4
  module Isomorfeus
5
5
  module Installer
6
6
  class NewProject
7
- attr_reader :installer
8
-
9
- def self.installer
10
- Isomorfeus::Installer
11
- end
12
-
13
7
  def self.execute(yarn_and_bundle: true)
14
8
  begin
15
- Dir.mkdir(installer.project_dir)
16
- Dir.chdir(installer.project_dir)
9
+ Dir.mkdir(Isomorfeus::Installer.project_dir)
10
+ Dir.chdir(Isomorfeus::Installer.project_dir)
17
11
  rescue
18
12
  puts "Directory #{installer.project_dir} could not be created!"
19
13
  exit 1
20
14
  end
21
15
 
22
- root = Dir.open('.')
23
-
24
16
  begin
25
17
  Isomorfeus::Installer.create_directories
26
18
  Isomorfeus::Installer.install_framework
27
19
 
28
20
  OpalWebpackLoader::Installer::CLI.start(['iso'])
21
+ Isomorfeus::Installer.install_webpack_config
29
22
 
30
23
  Isomorfeus::Installer.install_styles
31
24
  Isomorfeus::Installer.install_js_entries
@@ -38,11 +31,13 @@ module Isomorfeus
38
31
  Isomorfeus::Installer.create_gemfile
39
32
  Isomorfeus::Installer.create_procfile
40
33
 
34
+ Isomorfeus::Installer.copy_source_dir_files if Isomorfeus::Installer.source_dir
35
+
41
36
  if yarn_and_bundle
42
37
  puts 'Executing yarn install:'
43
- system('yarn install')
38
+ system('env -i PATH=$PATH yarn install')
44
39
  puts 'Executing bundle install:'
45
- system('bundle install')
40
+ system('env -i PATH=$PATH bundle install')
46
41
  end
47
42
 
48
43
  Dir.chdir('..')
@@ -8,6 +8,8 @@ module Isomorfeus
8
8
  else
9
9
  Isomorfeus::Installer.rack_server = Isomorfeus::Installer.rack_servers['iodine']
10
10
  end
11
+ Isomorfeus::Installer.source_dir = File.expand_path(options[:source_dir]) if options.key?(:source_dir)
12
+ Isomorfeus::Installer.isomorfeus_module = "isomorfeus-#{options[:module]}".to_sym if options.key?(:module)
11
13
  end
12
14
  end
13
15
  end
@@ -11,12 +11,12 @@ gem 'opal-activesupport', '~> 0.3.3'
11
11
  gem 'opal-webpack-loader', '>= 0.9.2'
12
12
 
13
13
  gem 'isomorfeus-redux', '~> 4.0.11'
14
- gem 'isomorfeus-react', '>= 16.9.2'
15
- gem 'isomorfeus-transport', '<%= isomorfeus_version %>'
16
- gem 'isomorfeus-data', '<%= isomorfeus_version %>'
17
- gem 'isomorfeus-i18n', '<%= isomorfeus_version %>'
18
- gem 'isomorfeus-operation', '<%= isomorfeus_version %>'
19
- gem 'isomorfeus-policy', '<%= isomorfeus_version %>'
14
+ gem 'isomorfeus-react', '>= 16.9.4'
15
+ gem 'isomorfeus-policy', <%= isomorfeus_policy %>
16
+ gem 'isomorfeus-transport', <%= isomorfeus_transport %>
17
+ gem 'isomorfeus-data', <%= isomorfeus_data %>
18
+ gem 'isomorfeus-operation', <%= isomorfeus_operation %>
19
+ gem 'isomorfeus-i18n', <%= isomorfeus_i18n %>
20
20
 
21
21
  group :development do
22
22
  gem 'auto_reloader'
@@ -11,7 +11,7 @@ class <%= app_class %> < Roda
11
11
  use_isomorfeus_middlewares
12
12
  plugin :public, root: 'public'
13
13
 
14
- def page_content(location)
14
+ def page_content(host, location)
15
15
  <<~HTML
16
16
  <html>
17
17
  <head>
@@ -19,7 +19,7 @@ class <%= app_class %> < Roda
19
19
  #{owl_script_tag 'application.js'}
20
20
  </head>
21
21
  <body>
22
- #{mount_component('<%= app_class %>', location: location)}
22
+ #{mount_component('<%= app_class %>', location_host: host, location: location)}
23
23
  </body>
24
24
  </html>
25
25
  HTML
@@ -27,7 +27,7 @@ class <%= app_class %> < Roda
27
27
 
28
28
  route do |r|
29
29
  r.root do
30
- page_content('/')
30
+ page_content(env['HTTP_HOST'], '/')
31
31
  end
32
32
 
33
33
  r.public
@@ -37,7 +37,7 @@ class <%= app_class %> < Roda
37
37
  end
38
38
 
39
39
  r.get do
40
- page_content(env['PATH_INFO'])
40
+ page_content(env['HTTP_HOST'], env['PATH_INFO'])
41
41
  end
42
42
  end
43
43
  end
@@ -0,0 +1,135 @@
1
+ const path = require('path');
2
+ const webpack = require('webpack');
3
+ const OwlResolver = require('opal-webpack-loader/resolver'); // to resolve ruby files
4
+ const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin'); // to watch for added ruby files
5
+
6
+ const common_config = {
7
+ context: path.resolve(__dirname, '../isomorfeus'),
8
+ mode: "development",
9
+ optimization: {
10
+ removeAvailableModules: false,
11
+ removeEmptyChunks: false,
12
+ minimize: false // dont minimize for debugging
13
+ },
14
+ performance: {
15
+ maxAssetSize: 20000000,
16
+ maxEntrypointSize: 2000000
17
+ },
18
+ // use one of these below for source maps
19
+ devtool: 'source-map', // this works well, good compromise between accuracy and performance
20
+ // devtool: 'cheap-eval-source-map', // less accurate
21
+ // devtool: 'inline-source-map', // slowest
22
+ // devtool: 'inline-cheap-source-map',
23
+ output: {
24
+ filename: '[name].js',
25
+ path: path.resolve(__dirname, '../public/assets'),
26
+ publicPath: 'http://localhost:3035/assets/'
27
+ },
28
+ resolve: {
29
+ plugins: [new OwlResolver('resolve', 'resolved')], // this makes it possible for webpack to find ruby files
30
+ alias: {
31
+ 'react-dom': 'react-dom/profiling',
32
+ 'schedule/tracing': 'schedule/tracing-profiling',
33
+ }
34
+ },
35
+ plugins: [
36
+ // both for hot reloading
37
+ new webpack.NamedModulesPlugin(),
38
+ new webpack.HotModuleReplacementPlugin(),
39
+ // watch for added files in opal dir
40
+ new ExtraWatchWebpackPlugin({ dirs: [path.resolve(__dirname, '../isomorfeus')] })
41
+ ],
42
+ module: {
43
+ rules: [
44
+ {
45
+ test: /.scss$/,
46
+ use: [ "cache-loader", "style-loader",
47
+ {
48
+ loader: "css-loader",
49
+ options: { sourceMap: true }
50
+ },
51
+ {
52
+ loader: "sass-loader",
53
+ options: {
54
+ includePaths: [path.resolve(__dirname, '../isomorfeus/styles')],
55
+ sourceMap: true // set to false to speed up hot reloads
56
+ }
57
+ }
58
+ ]
59
+ },
60
+ {
61
+ test: /.css$/,
62
+ use: [ "cache-loader", "style-loader",
63
+ {
64
+ loader: "css-loader",
65
+ options: { sourceMap: true }
66
+ }
67
+ ]
68
+ },
69
+ {
70
+ test: /.(png|svg|jpg|gif|woff|woff2|eot|ttf|otf)$/,
71
+ use: [ "cache-loader", "file-loader" ]
72
+ },
73
+ {
74
+ test: /.(rb|js.rb)$/,
75
+ use: [ "cache-loader",
76
+ {
77
+ loader: 'opal-webpack-loader', // opal-webpack-loader will compile and include ruby files in the pack
78
+ options: {
79
+ sourceMap: true,
80
+ hmr: true,
81
+ hmrHook: 'Opal.Isomorfeus.$force_render()'
82
+ }
83
+ }
84
+ ]
85
+ }
86
+ ]
87
+ },
88
+ // configuration for webpack-dev-server
89
+ devServer: {
90
+ open: false,
91
+ lazy: false,
92
+ port: 3035,
93
+ hot: true,
94
+ // hotOnly: true,
95
+ inline: true,
96
+ https: false,
97
+ disableHostCheck: true,
98
+ headers: {
99
+ "Access-Control-Allow-Origin": "*",
100
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
101
+ "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
102
+ },
103
+ watchOptions: {
104
+ // in case of problems with hot reloading uncomment the following two lines:
105
+ // aggregateTimeout: 250,
106
+ // poll: 50,
107
+ ignored: /\bnode_modules\b/
108
+ },
109
+ contentBase: path.resolve(__dirname, 'public'),
110
+ useLocalIp: false
111
+ }
112
+ };
113
+
114
+ const browser_config = {
115
+ target: 'web',
116
+ entry: { application: [path.resolve(__dirname, '../isomorfeus/imports/application.js')] },
117
+ externals: { crypto: 'Crypto' }
118
+ };
119
+
120
+ const ssr_config = {
121
+ target: 'node',
122
+ entry: { application_ssr: [path.resolve(__dirname, '../isomorfeus/imports/application_ssr.js')] }
123
+ };
124
+
125
+ const web_worker_config = {
126
+ target: 'webworker',
127
+ entry: { web_worker: [path.resolve(__dirname, '../isomorfeus/imports/application_web_worker.js')] },
128
+ externals: { crypto: 'Crypto' }
129
+ };
130
+
131
+ const browser = Object.assign({}, common_config, browser_config);
132
+ const ssr = Object.assign({}, common_config, ssr_config);
133
+ const web_worker = Object.assign({}, common_config, web_worker_config);
134
+
135
+ module.exports = [ browser, ssr ];
@@ -0,0 +1,116 @@
1
+ // require requirements used below
2
+ const path = require('path');
3
+ const webpack = require('webpack');
4
+ const OwlResolver = require('opal-webpack-loader/resolver'); // to resolve ruby files
5
+ const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin'); // to watch for added ruby files
6
+
7
+ const common_config = {
8
+ context: path.resolve(__dirname, '../isomorfeus'),
9
+ mode: "development",
10
+ optimization: {
11
+ removeAvailableModules: false,
12
+ removeEmptyChunks: false,
13
+ minimize: false // dont minimize in development, to speed up hot reloads
14
+ },
15
+ performance: {
16
+ maxAssetSize: 20000000,
17
+ maxEntrypointSize: 2000000
18
+ },
19
+ output: {
20
+ filename: '[name].js',
21
+ path: path.resolve(__dirname, '../public/assets'),
22
+ publicPath: 'http://localhost:3035/assets/'
23
+ },
24
+ resolve: { plugins: [new OwlResolver('resolve', 'resolved')] }, // resolve ruby files
25
+ plugins: [
26
+ // both for hot reloading
27
+ new webpack.NamedModulesPlugin(),
28
+ new webpack.HotModuleReplacementPlugin(),
29
+ // watch for added files in opal dir
30
+ new ExtraWatchWebpackPlugin({ dirs: [ path.resolve(__dirname, '../isomorfeus') ] })
31
+ ],
32
+ module: {
33
+ rules: [
34
+ {
35
+ test: /.scss$/,
36
+ use: [ "cache-loader", "style-loader" , "css-loader",
37
+ {
38
+ loader: "sass-loader",
39
+ options: {
40
+ includePaths: [path.resolve(__dirname, '../isomorfeus/styles')],
41
+ sourceMap: false
42
+ }
43
+ }
44
+ ]
45
+ },
46
+ {
47
+ test: /.css$/,
48
+ use: ["cache-loader", "style-loader", "css-loader"]
49
+ },
50
+ {
51
+ test: /.(png|svg|jpg|gif|woff|woff2|eot|ttf|otf)$/,
52
+ use: ["cache-loader", "file-loader"]
53
+ },
54
+ {
55
+ test: /.(rb|js.rb)$/,
56
+ use: ["cache-loader",
57
+ {
58
+ loader: 'opal-webpack-loader', // opal-webpack-loader will compile and include ruby files in the pack
59
+ options: {
60
+ sourceMap: false,
61
+ hmr: true,
62
+ hmrHook: 'Opal.Isomorfeus.$force_render()'
63
+ }
64
+ }
65
+ ]
66
+ }
67
+ ]
68
+ },
69
+ // configuration for webpack-dev-server
70
+ devServer: {
71
+ open: false,
72
+ lazy: false,
73
+ port: 3035,
74
+ hot: true,
75
+ // hotOnly: true,
76
+ inline: true,
77
+ https: false,
78
+ disableHostCheck: true,
79
+ headers: {
80
+ "Access-Control-Allow-Origin": "*",
81
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, PATCH, OPTIONS",
82
+ "Access-Control-Allow-Headers": "X-Requested-With, content-type, Authorization"
83
+ },
84
+ watchOptions: {
85
+ // in case of problems with hot reloading uncomment the following two lines:
86
+ // aggregateTimeout: 250,
87
+ // poll: 50,
88
+ ignored: /\bnode_modules\b/
89
+ },
90
+ contentBase: path.resolve(__dirname, 'public'),
91
+ useLocalIp: false
92
+ }
93
+ };
94
+
95
+ const browser_config = {
96
+ target: 'web',
97
+ entry: { application: [path.resolve(__dirname, '../isomorfeus/imports/application.js')] },
98
+ externals: { crypto: 'Crypto' }
99
+ };
100
+
101
+ const ssr_config = {
102
+ target: 'node',
103
+ entry: { application_ssr: [path.resolve(__dirname, '../isomorfeus/imports/application_ssr.js')] }
104
+ };
105
+
106
+ const web_worker_config = {
107
+ target: 'webworker',
108
+ entry: { web_worker: [path.resolve(__dirname, '../isomorfeus/imports/application_web_worker.js')] },
109
+ externals: { crypto: 'Crypto' }
110
+ };
111
+
112
+ const browser = Object.assign({}, common_config, browser_config);
113
+ const ssr = Object.assign({}, common_config, ssr_config);
114
+ const web_worker = Object.assign({}, common_config, web_worker_config);
115
+
116
+ module.exports = [ browser, ssr ];
@@ -2,16 +2,16 @@ require 'opal'
2
2
  require 'opal-autoloader'
3
3
  require 'isomorfeus-redux'
4
4
  require 'isomorfeus-react'
5
+ require 'isomorfeus-policy'
5
6
  require 'isomorfeus-transport'
6
7
  require 'isomorfeus-data'
7
8
  require 'isomorfeus-i18n'
8
9
  require 'isomorfeus-operation'
9
- require 'isomorfeus-policy'
10
10
 
11
+ require_tree 'policies'
11
12
  require_tree 'channels'
12
13
  require_tree 'data'
13
- require_tree 'components'
14
14
  require_tree 'operations'
15
- require_tree 'policies'
15
+ require_tree 'components'
16
16
 
17
17
  Isomorfeus.start_app!
@@ -17,7 +17,6 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "cache-loader": "^4.1.0",
20
- "chokidar": "^3.0.2",
21
20
  "compression-webpack-plugin": "^3.0.0",
22
21
  "css-loader": "^3.2.0",
23
22
  "extra-watch-webpack-plugin": "^1.0.3",
@@ -33,5 +32,9 @@
33
32
  "webpack-assets-manifest": "^3.1.1",
34
33
  "webpack-cli": "^3.3.6",
35
34
  "webpack-dev-server": "^3.8.0"
35
+ },
36
+ "optionalDependencies": {
37
+ "bufferutil": "^4.0.1",
38
+ "utf-8-validate": "^5.0.2"
36
39
  }
37
40
  }
@@ -0,0 +1,84 @@
1
+ const path = require('path');
2
+ const OwlResolver = require('opal-webpack-loader/resolver');
3
+ const CompressionPlugin = require("compression-webpack-plugin"); // for gzipping the packs
4
+ const TerserPlugin = require('terser-webpack-plugin'); // for minifying the packs
5
+ const WebpackAssetsManifest = require('webpack-assets-manifest');
6
+
7
+ const common_config = {
8
+ context: path.resolve(__dirname, '../isomorfeus'),
9
+ mode: "production",
10
+ optimization: {
11
+ minimize: true, // minimize
12
+ minimizer: [new TerserPlugin({ parallel: true, cache: true })]
13
+ },
14
+ performance: {
15
+ maxAssetSize: 20000000,
16
+ maxEntrypointSize: 2000000
17
+ },
18
+ output: {
19
+ filename: '[name]-[chunkhash].js', // include fingerprint in file name, so browsers get the latest
20
+ path: path.resolve(__dirname, '../public/assets'),
21
+ publicPath: '/assets/'
22
+ },
23
+ resolve: { plugins: [new OwlResolver('resolve', 'resolved')] }, // resolve ruby files
24
+ plugins: [
25
+ new CompressionPlugin({ test: /^((?!application_ssr).)*$/, cache: true }), // gzip compress, exclude application_ssr.js
26
+ new WebpackAssetsManifest({ publicPath: true, merge: true }) // generate manifest
27
+ ],
28
+ module: {
29
+ rules: [
30
+ {
31
+ test: /.scss$/,
32
+ use: ["cache-loader", "style-loader", "css-loader",
33
+ {
34
+ loader: "sass-loader",
35
+ options: {
36
+ includePath: [path.resolve(__dirname, '../isomorfeus/styles')],
37
+ sourceMap: false
38
+ }
39
+ }
40
+ ]
41
+ },
42
+ {
43
+ test: /.css$/,
44
+ use: ["cache-loader", "style-loader", "css-loader"]
45
+ },
46
+ {
47
+ test: /.(png|svg|jpg|gif|woff|woff2|eot|ttf|otf)$/,
48
+ use: ["cache-loader", "file-loader"]
49
+ },
50
+ {
51
+ test: /.(rb|js.rb)$/,
52
+ use: ["cache-loader",
53
+ {
54
+ loader: 'opal-webpack-loader', // opal-webpack-loader will compile and include ruby files in the pack
55
+ options: { sourceMap: false, hmr: false }
56
+ }
57
+ ]
58
+ }
59
+ ]
60
+ }
61
+ };
62
+
63
+ const browser_config = {
64
+ target: 'web',
65
+ entry: { application: [path.resolve(__dirname, '../isomorfeus/imports/application.js')] },
66
+ externals: { crypto: 'Crypto' }
67
+ };
68
+
69
+ const ssr_config = {
70
+ target: 'node',
71
+ entry: { application_ssr: [path.resolve(__dirname, '../isomorfeus/imports/application_ssr.js')] }
72
+ };
73
+
74
+ const web_worker_config = {
75
+ target: 'webworker',
76
+ entry: { web_worker: [path.resolve(__dirname, '../isomorfeus/imports/application_web_worker.js')] },
77
+ externals: { crypto: 'Crypto' }
78
+ };
79
+
80
+ const browser = Object.assign({}, common_config, browser_config);
81
+ const ssr = Object.assign({}, common_config, ssr_config);
82
+ const web_worker = Object.assign({}, common_config, web_worker_config);
83
+
84
+ module.exports = [ browser, ssr ];
@@ -17,4 +17,3 @@ Isomorfeus::Puppetmaster.boot_app
17
17
  RSpec.configure do |config|
18
18
  config.include Isomorfeus::Puppetmaster::DSL
19
19
  end
20
-
@@ -1,5 +1,5 @@
1
1
  module Isomorfeus
2
2
  module Installer
3
- VERSION = '1.0.0.epsilon1'
3
+ VERSION = '1.0.0.epsilon2'
4
4
  end
5
5
  end
@@ -16,10 +16,12 @@ module Isomorfeus
16
16
  attr_reader :app_require
17
17
  attr_accessor :database
18
18
  attr_accessor :framework
19
+ attr_accessor :isomorfeus_module
19
20
  attr_reader :project_dir
20
21
  attr_reader :project_name
21
22
  attr_accessor :rack_server
22
23
  attr_accessor :rack_server_name
24
+ attr_accessor :source_dir
23
25
 
24
26
  # installer options
25
27
  attr_reader :options
@@ -91,6 +93,10 @@ module Isomorfeus
91
93
  'isomorfeus'
92
94
  end
93
95
 
96
+ def self.webpack_config_path(config_file)
97
+ File.join( 'webpack', config_file)
98
+ end
99
+
94
100
  def self.stylesheet_path(stylesheet)
95
101
  File.join(isomorfeus_path, 'styles', stylesheet)
96
102
  end
@@ -112,7 +118,7 @@ module Isomorfeus
112
118
  create_directory(File.join(isomorfeus_path, 'channels'))
113
119
  create_directory(File.join(isomorfeus_path, 'components'))
114
120
  create_directory(File.join(isomorfeus_path, 'data'))
115
- create_directory(File.join(isomorfeus_path, 'handlers'))
121
+ # create_directory(File.join(isomorfeus_path, 'handlers'))
116
122
  create_directory(File.join(isomorfeus_path, 'locales'))
117
123
  create_directory(File.join(isomorfeus_path, 'operations'))
118
124
  create_directory(File.join(isomorfeus_path, 'policies'))
@@ -166,6 +172,14 @@ module Isomorfeus
166
172
  create_file_from_template('application.css.erb', stylesheet_path('application.css'), {})
167
173
  end
168
174
 
175
+ def self.install_webpack_config
176
+ File.unlink(webpack_config_path('production.js'), webpack_config_path('development.js'),
177
+ webpack_config_path('debug.js'))
178
+ create_file_from_template('production.js.erb', webpack_config_path('production.js'), {})
179
+ create_file_from_template('development.js.erb', webpack_config_path('development.js'), {})
180
+ create_file_from_template('debug.js.erb', webpack_config_path('debug.js'), {})
181
+ end
182
+
169
183
  def self.create_gemfile
170
184
  rack_server_gems = ''
171
185
  Isomorfeus::Installer.rack_servers[options[:rack_server]]&.fetch(:gems)&.each do |gem|
@@ -176,8 +190,14 @@ module Isomorfeus
176
190
  database_gems << generate_gem_line(gem)
177
191
  end
178
192
  data_hash = { database_gems: database_gems.chop,
179
- rack_server_gems: rack_server_gems.chop,
180
- isomorfeus_version: Isomorfeus::Installer::VERSION }
193
+ rack_server_gems: rack_server_gems.chop }
194
+ %i[isomorfeus_data isomorfeus_i18n isomorfeus_operation isomorfeus_policy isomorfeus_transport].each do |i_module|
195
+ if source_dir
196
+ data_hash[i_module] = i_module == isomorfeus_module ? "path: '..'" : "path: '../../#{i_module.to_s.tr('_', '-')}'"
197
+ else
198
+ data_hash[i_module] = "'~> #{Isomorfeus::Installer::VERSION}'"
199
+ end
200
+ end
181
201
  create_file_from_template('Gemfile.erb', 'Gemfile', data_hash)
182
202
  end
183
203
 
@@ -221,5 +241,17 @@ module Isomorfeus
221
241
  def self.use_asset_bundler?
222
242
  options.has_key?('asset_bundler')
223
243
  end
244
+
245
+ def self.copy_source_dir_files
246
+ Dir.glob("#{source_dir}/**/*").each do |file|
247
+ if File.file?(file)
248
+ target_file = file[(source_dir.size+1)..-1]
249
+ target_dir = File.dirname(target_file)
250
+ Dir.mkdir(target_dir) unless Dir.exist?(target_dir)
251
+ puts "Copying #{file} to #{target_file}."
252
+ FileUtils.copy(file, target_file)
253
+ end
254
+ end
255
+ end
224
256
  end
225
257
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isomorfeus-installer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.epsilon1
4
+ version: 1.0.0.epsilon2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-16 00:00:00.000000000 Z
11
+ date: 2019-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -141,6 +141,8 @@ files:
141
141
  - lib/isomorfeus/installer/templates/application_ssr.js.erb
142
142
  - lib/isomorfeus/installer/templates/application_web_worker.js.erb
143
143
  - lib/isomorfeus/installer/templates/config.ru.erb
144
+ - lib/isomorfeus/installer/templates/debug.js.erb
145
+ - lib/isomorfeus/installer/templates/development.js.erb
144
146
  - lib/isomorfeus/installer/templates/hello_component.rb.erb
145
147
  - lib/isomorfeus/installer/templates/iodine_config.rb.erb
146
148
  - lib/isomorfeus/installer/templates/isomorfeus_loader.rb.erb
@@ -148,6 +150,7 @@ files:
148
150
  - lib/isomorfeus/installer/templates/my_app.rb.erb
149
151
  - lib/isomorfeus/installer/templates/navigation_links.rb.erb
150
152
  - lib/isomorfeus/installer/templates/package.json.erb
153
+ - lib/isomorfeus/installer/templates/production.js.erb
151
154
  - lib/isomorfeus/installer/templates/spec_helper.rb.erb
152
155
  - lib/isomorfeus/installer/templates/test_spec.rb.erb
153
156
  - lib/isomorfeus/installer/templates/welcome_component.rb.erb