mwc 0.3.0 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 690be51483f8bb3eb16c1f4a85cfa326bd2602af973c04e06423b7fa445a83db
4
- data.tar.gz: a43bc9935ac9648f72748f88806926e96cc2a1465f27fc3f9274cb9a40689162
3
+ metadata.gz: a4b4b1574d426900e20e49fb707a5538882b7794ffdd147fea85ec9d6f5d4024
4
+ data.tar.gz: 8076656677cf17443b8dd2a245e7bbc44c94e015defec1ca1019d78c0ba0fff6
5
5
  SHA512:
6
- metadata.gz: 22abdd8b084890f6cac3b7d73fc3e6873cb5e1a43c79aaab5294897cb143e322bb51bc91f5365f9407b748c6afa7442cb916cbdefa56a791ef2e70b5ed2d1e44
7
- data.tar.gz: e485459b5a4d99302d229a07e533c0a4547866054a3a6319efc134f320d91d41e30d3852c51a916725dc9a1cfc511837fb37b6c85234d2b5096677c2e98da6ab
6
+ metadata.gz: 61be1d10ff8a8faed53458cb961fdc503e8d10903d0ed0520e379fff50459279b34b8a2e6b409bb93db43895fed0981d9d404a163a53226f5baa877fde7f6911
7
+ data.tar.gz: 59a0720a29ca89f3f9a6e4e36e025b09632fb7088693f64d6a34ad7c5fc719e1481ebe689e527d819fc3b0d7d61e9562e88a8697930e211b04d1dc3514b1e5a9
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mwc (0.3.0)
4
+ mwc (0.4.0)
5
+ listen (~> 3.2.0)
5
6
  rack (~> 2.0.7)
6
7
  rake (~> 10.0)
7
8
  thor (~> 0.20.3)
@@ -15,8 +16,12 @@ GEM
15
16
  thor (~> 0.18)
16
17
  childprocess (3.0.0)
17
18
  diff-lcs (1.3)
19
+ ffi (1.11.3)
18
20
  iniparse (1.4.4)
19
21
  jaro_winkler (1.5.4)
22
+ listen (3.2.1)
23
+ rb-fsevent (~> 0.10, >= 0.10.3)
24
+ rb-inotify (~> 0.9, >= 0.9.10)
20
25
  overcommit (0.51.0)
21
26
  childprocess (>= 0.6.3, < 4)
22
27
  iniparse (~> 1.4)
@@ -26,6 +31,9 @@ GEM
26
31
  rack (2.0.7)
27
32
  rainbow (3.0.0)
28
33
  rake (10.5.0)
34
+ rb-fsevent (0.10.3)
35
+ rb-inotify (0.10.0)
36
+ ffi (~> 1.0)
29
37
  rspec (3.9.0)
30
38
  rspec-core (~> 3.9.0)
31
39
  rspec-expectations (~> 3.9.0)
data/README.md CHANGED
@@ -82,7 +82,7 @@ end
82
82
  ### Project
83
83
 
84
84
  |Name|Type|Description
85
- |----|-----------
85
+ |----|----|-----------
86
86
  |name|string| The project name, will change the generated file name. ex. `mruby.wasm`
87
87
  |shell|string| The shell file template, if you want to use your own html template
88
88
  |source_map|boolean| Enable source map for debug
@@ -91,9 +91,20 @@ end
91
91
  ### mruby
92
92
 
93
93
  |Name|Type|Description
94
- |----|-----------
94
+ |----|----|-----------
95
95
  |version|string| The prefer mruby version
96
96
 
97
+ ## Roadmap
98
+
99
+ * [ ] Unit Test
100
+ * [ ] Download options for mruby
101
+ * [x] Archive
102
+ * [ ] Git Submodule
103
+ * [ ] Integrate to Webpack
104
+ * [ ] Watch Mode
105
+ * [x] Auto re-compile
106
+ * [ ] Add LiveReload support
107
+
97
108
  ## Development
98
109
 
99
110
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -6,6 +6,7 @@ require 'mwc/utils/command_registry'
6
6
  require 'mwc/config'
7
7
  require 'mwc/commands/init'
8
8
  require 'mwc/commands/compile'
9
+ require 'mwc/commands/watch'
9
10
  require 'mwc/commands/server'
10
11
 
11
12
  module Mwc
@@ -22,6 +23,7 @@ module Mwc
22
23
 
23
24
  add_command Commands::Init
24
25
  add_command Commands::Compile
26
+ add_command Commands::Watch
25
27
  add_command Commands::Server
26
28
  end
27
29
  end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'listen'
4
+
5
+ require 'mwc/utils/command'
6
+ require 'mwc/tasks'
7
+ require 'mwc'
8
+
9
+ module Mwc
10
+ module Commands
11
+ # :nodoc:
12
+ class Watch < Thor::Group
13
+ include Thor::Actions
14
+ include Utils::Command
15
+
16
+ name 'watch'
17
+ description 'watch src changes and auto re-compile'
18
+ add_option :format, default: 'html', enum: %w[html js wasm]
19
+
20
+ DESIRE_FILES = /\.(h|c|cpp|js)$/.freeze
21
+
22
+ def prepare
23
+ @stopped = false
24
+ @dirs = [
25
+ Mwc.root.join('src'),
26
+ Mwc.root.join('include')
27
+ ].map(&:to_s)
28
+ end
29
+
30
+ def setup_tasks
31
+ Tasks.new
32
+ end
33
+
34
+ def setup_listener
35
+ @listener = Listen.to(*@dirs, only: DESIRE_FILES) do |*_|
36
+ Mwc.use(parent_options['env']) do
37
+ # TODO: Allow change output directory
38
+ empty_directory('dist')
39
+
40
+ compile
41
+ end
42
+ end
43
+ end
44
+
45
+ def start
46
+ puts 'Starting watch file changes...'
47
+ @listener.start
48
+
49
+ Signal.trap(:INT) { exit }
50
+ sleep
51
+ end
52
+
53
+ private
54
+
55
+ def task
56
+ Rake::Task[parent_options['format']]
57
+ end
58
+
59
+ def compile
60
+ task.invoke
61
+ puts 'Compiled!'
62
+ rescue RuntimeError
63
+ puts 'Compile Failed'
64
+ ensure
65
+ reset
66
+ end
67
+
68
+ def reset
69
+ task.all_prerequisite_tasks.each(&:reenable)
70
+ task.reenable
71
+ end
72
+ end
73
+ end
74
+ end
@@ -41,12 +41,11 @@ module Mwc
41
41
  # :nodoc:
42
42
  def compile_wasm_task
43
43
  %i[wasm html js].each do |format|
44
- task "mruby.#{format}" => ['mruby:all'].concat(BINARIES) do
44
+ desc "Compile sources to #{format} WebAssembly"
45
+ task format => BINARIES do
46
+ Rake::Task['mruby:all'].invoke
45
47
  compile(format)
46
48
  end
47
-
48
- desc "Compile sources to #{format} WebAssembly"
49
- task format => "mruby.#{format}"
50
49
  end
51
50
  end
52
51
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mwc
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
+ spec.add_runtime_dependency 'listen', '~> 3.2.0'
34
35
  spec.add_runtime_dependency 'rack', '~> 2.0.7'
35
36
  spec.add_runtime_dependency 'rake', '~> 10.0'
36
37
  spec.add_runtime_dependency 'thor', '~> 0.20.3'
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mwc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - 蒼時弦也
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-29 00:00:00.000000000 Z
11
+ date: 2019-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: listen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 3.2.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rack
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -148,6 +162,7 @@ files:
148
162
  - lib/mwc/commands/compile.rb
149
163
  - lib/mwc/commands/init.rb
150
164
  - lib/mwc/commands/server.rb
165
+ - lib/mwc/commands/watch.rb
151
166
  - lib/mwc/compile_options.rb
152
167
  - lib/mwc/config.rb
153
168
  - lib/mwc/environment.rb
@@ -164,7 +179,7 @@ files:
164
179
  - lib/mwc/utils/hash_accessor.rb
165
180
  - lib/mwc/utils/option.rb
166
181
  - lib/mwc/version.rb
167
- - mwasm.gemspec
182
+ - mwc.gemspec
168
183
  homepage: https://github.com/elct9620/mwc
169
184
  licenses:
170
185
  - MIT