opal-webpack-loader 0.3.8 → 0.4.0
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 +4 -4
- data/bin/opal-webpack-compile-server +52 -1
- data/lib/opal-webpack-loader/compile_server.rb +12 -8
- data/lib/opal-webpack-loader/manifest.rb +2 -2
- data/lib/opal-webpack-loader/rails_view_helper.rb +5 -10
- data/lib/opal-webpack-loader/version.rb +1 -1
- data/lib/opal-webpack-loader/view_helper.rb +7 -13
- data/lib/opal-webpack-loader.rb +42 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47e3de8dc59fca8c77ec96cce2a2d981360ffc59a1d5b3081d5b38ac9e872abc
|
4
|
+
data.tar.gz: 74ee8b8d003d7d4f7da72f2b778a6f6eca2d74188231b56eefdc2de45b1f0bbf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2fe218979c2f394a314e49a5c10beb6fcdd016928eba20fb0f7b5bf50ea6523ecccbbfe98aae2b44b506ab660749843a3c998e7ce70873784f959326e5bd3ef3
|
7
|
+
data.tar.gz: e49f7d2c1171b2e0b7c314424706fc020927126a91a69b9472ea13d887b838a308e360a2670ca3eda50605a8d0073709edd7abf3fdb9b7d4e206a363f0da3b0e
|
@@ -1,8 +1,59 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'opal-webpack-loader/compile_server'
|
3
|
+
require 'open3'
|
4
|
+
|
5
|
+
puts "args: #{ARGV}"
|
3
6
|
|
4
7
|
if ARGV[0] == 'stop' || ARGV[0] == 'kill'
|
5
8
|
OpalWebpackCompileServer::Exe.stop
|
6
9
|
else
|
7
|
-
|
10
|
+
if ARGV[0] == 'start'
|
11
|
+
OpalWebpackCompileServer::Exe.stop
|
12
|
+
runargs = ARGV[1..-1]
|
13
|
+
else
|
14
|
+
runargs = ARGV
|
15
|
+
end
|
16
|
+
|
17
|
+
fork { OpalWebpackCompileServer::Exe.run }
|
18
|
+
|
19
|
+
have_socket = false
|
20
|
+
start_time = Time.now
|
21
|
+
begin
|
22
|
+
until have_socket
|
23
|
+
if File.exist?(OpalWebpackCompileServer::OWCS_SOCKET_PATH)
|
24
|
+
have_socket = true
|
25
|
+
else
|
26
|
+
if Time.now - start_time > 60
|
27
|
+
puts "opal-webpack-compile-server didnt start in time. Exiting"
|
28
|
+
OpalWebpackCompileServer::Exe.stop(false)
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
rescue Exception => e
|
34
|
+
OpalWebpackCompileServer::Exe.stop(false)
|
35
|
+
puts "opal-webpack-compile-server couldn't start:"
|
36
|
+
puts e.backtrace.join("\n")
|
37
|
+
puts e.message
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
|
41
|
+
begin
|
42
|
+
# see: http://stackoverflow.com/a/1162850/83386
|
43
|
+
Open3.popen3(*runargs) do |stdin, stdout, stderr, thread|
|
44
|
+
# read each stream from a new thread
|
45
|
+
{ :out => stdout, :err => stderr }.each do |key, stream|
|
46
|
+
Thread.new do
|
47
|
+
until (raw_line = stream.gets).nil? do
|
48
|
+
puts raw_line
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
thread.join # don't exit until the external process is done
|
54
|
+
end
|
55
|
+
rescue Interrupt => e
|
56
|
+
puts "opal-webpack-compile-server got interrupted. Exiting with drama."
|
57
|
+
exit 0
|
58
|
+
end
|
8
59
|
end
|
@@ -26,7 +26,9 @@ module OpalWebpackCompileServer
|
|
26
26
|
exit(0)
|
27
27
|
end
|
28
28
|
|
29
|
-
|
29
|
+
request_hash = Oj.load(data)
|
30
|
+
filename = request_hash['filename']
|
31
|
+
compile_source_map = request_hash['source_map']
|
30
32
|
|
31
33
|
operation = proc do
|
32
34
|
begin
|
@@ -34,10 +36,12 @@ module OpalWebpackCompileServer
|
|
34
36
|
c = Opal::Compiler.new(source, file: filename, es6_modules: true)
|
35
37
|
c.compile
|
36
38
|
result = { 'javascript' => c.result }
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
if compile_source_map
|
40
|
+
result['source_map'] = c.source_map.as_json
|
41
|
+
result['source_map']['sourcesContent'] = [source]
|
42
|
+
result['source_map']['file'] = filename
|
43
|
+
result['source_map']['names'] = result['source_map']['names'].map(&:to_s)
|
44
|
+
end
|
41
45
|
result['required_trees'] = c.required_trees
|
42
46
|
Oj.dump(result)
|
43
47
|
rescue Exception => e
|
@@ -120,7 +124,7 @@ module OpalWebpackCompileServer
|
|
120
124
|
@unlink = false
|
121
125
|
end
|
122
126
|
|
123
|
-
def self.stop
|
127
|
+
def self.stop(do_exit = true)
|
124
128
|
if File.exist?(OWCS_SOCKET_PATH)
|
125
129
|
dont_unlink_on_exit
|
126
130
|
begin
|
@@ -131,7 +135,7 @@ module OpalWebpackCompileServer
|
|
131
135
|
# socket cant be reached so owcs is already dead, delete socket
|
132
136
|
unlink_on_exit
|
133
137
|
end
|
134
|
-
exit(0)
|
138
|
+
exit(0) if do_exit
|
135
139
|
end
|
136
140
|
end
|
137
141
|
|
@@ -145,7 +149,7 @@ module OpalWebpackCompileServer
|
|
145
149
|
load_paths = OpalWebpackCompileServer::LoadPathManager.get_load_paths
|
146
150
|
if load_paths
|
147
151
|
Opal.append_paths(*load_paths)
|
148
|
-
Process.daemon(true)
|
152
|
+
# Process.daemon(true)
|
149
153
|
EventMachine.run do
|
150
154
|
EventMachine.start_unix_domain_server(OWCS_SOCKET_PATH, OpalWebpackCompileServer::Compiler)
|
151
155
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module OpalWebpackLoader
|
2
2
|
class Manifest
|
3
3
|
def self.manifest
|
4
|
-
@manifest ||= JSON.parse(File.read(
|
4
|
+
@manifest ||= JSON.parse(File.read(OpalWebpackLoader.manifest_path))
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.lookup_path_for(asset)
|
8
8
|
manifest[asset]
|
9
9
|
end
|
10
10
|
end
|
11
|
-
end
|
11
|
+
end
|
@@ -2,18 +2,13 @@ module OpalWebpackLoader
|
|
2
2
|
module RailsViewHelper
|
3
3
|
def owl_include_tag(path)
|
4
4
|
case Rails.env
|
5
|
-
when 'production'
|
6
|
-
public, packs, asset = path.split('/')
|
7
|
-
asset_path = OpalWebpackLoader::Manifest.lookup_path_for(asset)
|
8
|
-
javascript_include_tag(asset_path)
|
9
5
|
when 'development'
|
10
|
-
javascript_include_tag(
|
11
|
-
|
12
|
-
|
13
|
-
public, packs, asset = real_path.split('/')
|
6
|
+
javascript_include_tag("http://localhost:3035#{OpalWebpackLoader.client_asset_path}/#{path}")
|
7
|
+
else
|
8
|
+
asset = path.split('/').last
|
14
9
|
asset_path = OpalWebpackLoader::Manifest.lookup_path_for(asset)
|
15
|
-
javascript_include_tag(asset_path)
|
10
|
+
javascript_include_tag("#{OpalWebpackLoader.client_asset_path}/#{asset_path}")
|
16
11
|
end
|
17
12
|
end
|
18
13
|
end
|
19
|
-
end
|
14
|
+
end
|
@@ -1,19 +1,13 @@
|
|
1
1
|
module OpalWebpackLoader
|
2
2
|
module ViewHelper
|
3
|
-
def owl_include_tag(path)
|
4
|
-
case
|
5
|
-
when 'production'
|
6
|
-
public, packs, asset = path.split('/')
|
7
|
-
asset_path = OpalWebpackLoader::Manifest.lookup_path_for(asset)
|
8
|
-
"<script type=\"application/javascript\" src=\"#{asset_path}\"></script>"
|
3
|
+
def owl_include_tag(path, env = 'development')
|
4
|
+
case env
|
9
5
|
when 'development'
|
10
|
-
"<script type=\"application/javascript\" src=\"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
asset_path = OpalWebpackLoader::Manifest.lookup_path_for(asset)
|
15
|
-
"<script type=\"application/javascript\" src=\"#{asset_path}\"></script>"
|
6
|
+
"<script type=\"application/javascript\" src=\"http://localhost:3035#{OpalWebpackLoader.client_asset_path}/#{path}\"></script>"
|
7
|
+
else
|
8
|
+
asset_path = OpalWebpackLoader::Manifest.lookup_path_for(path)
|
9
|
+
"<script type=\"application/javascript\" src=\"#{OpalWebpackLoader.client_asset_path}/#{asset_path}\"></script>"
|
16
10
|
end
|
17
11
|
end
|
18
12
|
end
|
19
|
-
end
|
13
|
+
end
|
data/lib/opal-webpack-loader.rb
CHANGED
@@ -1,8 +1,50 @@
|
|
1
1
|
# check version of opal-webpack-loader-npm
|
2
2
|
require 'opal-webpack-loader/version'
|
3
3
|
require 'opal-webpack-loader/manifest'
|
4
|
+
|
5
|
+
module OpalWebpackLoader
|
6
|
+
def self.manifest_path
|
7
|
+
@manifest_path
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.manifest_path=(path)
|
11
|
+
@manifest_path = path
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.client_asset_path
|
15
|
+
@client_asset_path
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.client_asset_path=(path)
|
19
|
+
@client_asset_path = path
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
4
23
|
if defined? Rails
|
5
24
|
require 'opal-webpack-loader/rails_view_helper'
|
6
25
|
else
|
7
26
|
require 'opal-webpack-loader/view_helper'
|
8
27
|
end
|
28
|
+
|
29
|
+
OpalWebpackLoader.manifest_path = File.join(Dir.getwd, 'public', 'assets', 'manifest.json')
|
30
|
+
OpalWebpackLoader.client_asset_path = '/assets'
|
31
|
+
|
32
|
+
npm = `which npm`.chop
|
33
|
+
|
34
|
+
if npm != ''
|
35
|
+
owl_version = `#{npm} view opal-webpack-loader version`
|
36
|
+
else
|
37
|
+
yarn = `which yarn`.chop
|
38
|
+
if yarn != ''
|
39
|
+
owl_version = `#{yarn} -s info opal-webpack-loader version`
|
40
|
+
else
|
41
|
+
raise 'opal-webpack-loader: Could not find npm or yarn! Please install npm or yarn'
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if owl_version.chop != OpalWebpackLoader::VERSION
|
46
|
+
raise "opal-webpack-loader: Incorrect version of npm package found or npm package not installed.\n" +
|
47
|
+
"Please install the npm package for opal-webpack-loader:\n" +
|
48
|
+
"\twith npm:\tnpm install opal-webpack-loader@#{OpalWebpackLoader::VERSION} --save-dev\n" +
|
49
|
+
"\twith yarn:\tyarn add opal-webpack-loader@#{OpalWebpackLoader::VERSION} --dev\n"
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opal-webpack-loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-12-
|
11
|
+
date: 2018-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: opal
|