gloss 0.1.1 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,8 @@ require "listen"
2
2
 
3
3
  module Gloss
4
4
  class Watcher
5
+ @listener: Listen?
6
+
5
7
  def initialize(@paths : Array[String])
6
8
  if @paths.empty?
7
9
  @paths = [File.join(Dir.pwd, Config.src_dir)]
@@ -22,7 +24,7 @@ module Gloss
22
24
 
23
25
  def watch
24
26
  Gloss.logger.info "Now listening for changes in #{@paths.join(', ')}"
25
- listener = Listen.to(
27
+ @listener ||= Listen.to(
26
28
  *@paths,
27
29
  latency: 2,
28
30
  only: @only
@@ -55,12 +57,16 @@ module Gloss
55
57
  end
56
58
  end
57
59
  begin
58
- listener.start
60
+ @listener.start
59
61
  sleep
60
62
  rescue Interrupt
61
- Gloss.logger.info "Interrupt signal received, shutting down"
62
- exit 0
63
+ kill
63
64
  end
64
65
  end
66
+
67
+ def kill
68
+ Gloss.logger.info "Interrupt signal received, shutting down"
69
+ @listener.stop if @listener
70
+ end
65
71
  end
66
72
  end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require "pathname"
4
2
  require "fileutils"
5
3
 
@@ -8,28 +6,46 @@ module Gloss
8
6
  def initialize(
9
7
  @content,
10
8
  @src_path : String,
11
- @output_path : Pathname? = Pathname.new(
12
- Utils.src_path_to_output_path(src_path)
13
- )
9
+ @output : Pathname | IO | NilClass = nil
14
10
  )
15
11
  end
16
12
 
17
13
  def run
18
- FileUtils.mkdir_p(@output_path.parent) unless @output_path.parent.exist?
19
- File.open(@output_path, "wb") do |file|
14
+ write_to_output do |otpt|
20
15
  sb = shebang
21
- file.puts sb if sb
22
- file.puts @content
16
+ otpt.puts sb if sb
17
+ otpt.puts @content
23
18
  end
24
19
  end
25
20
 
26
21
  private def shebang
27
- if @output_path.executable?
28
- first_line = File.open(@src_path) { |f| f.readline }
29
- first_line.start_with?("#!") ? first_line : nil
22
+ case @output
23
+ when Pathname
24
+ if @output.executable?
25
+ first_line = File.open(@src_path) { |f| f.readline }
26
+ first_line.start_with?("#!") ? first_line : nil
27
+ end
30
28
  else
31
29
  nil
32
30
  end
33
31
  end
32
+
33
+ private def write_to_output(&blk)
34
+ case @output
35
+ when IO, StringIO
36
+ # blk.call(@output)
37
+ yield @output
38
+ else
39
+ output = @output || Pathname.new(Utils.src_path_to_output_path(@src_path))
40
+ FileUtils.mkdir_p(output.parent) unless output.parent.exist?
41
+ File.open(output, "wb") do |file|
42
+ # blk.call(file)
43
+ yield file
44
+ end
45
+ if Config.prettify_output_executable_path
46
+ system Config.prettify_output_executable_path, @output.to_s
47
+ end
48
+ end
49
+ end
34
50
  end
35
51
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - johansenja
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-06 00:00:00.000000000 Z
11
+ date: 2021-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fast_blank
@@ -42,24 +42,38 @@ dependencies:
42
42
  name: rbs
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 1.0.4
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 1.0.4
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: steep
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.41.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.41.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ">="
60
74
  - !ruby/object:Gem::Version
61
75
  version: '0'
62
- type: :runtime
76
+ type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
@@ -95,7 +109,7 @@ dependencies:
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
- name: pry-byebug
112
+ name: rubocop
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -109,7 +123,7 @@ dependencies:
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: rubocop
126
+ name: rufo
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ">="
@@ -132,8 +146,7 @@ extensions:
132
146
  extra_rdoc_files: []
133
147
  files:
134
148
  - ".gitattributes"
135
- - ".github/workflows/crystal_specs.yml"
136
- - ".github/workflows/ruby_specs.yml"
149
+ - ".github/workflows/tests.yml"
137
150
  - ".gitignore"
138
151
  - ".gloss.yml"
139
152
  - ".rspec"
@@ -166,6 +179,7 @@ files:
166
179
  - lib/gloss/logger.rb
167
180
  - lib/gloss/parser.rb
168
181
  - lib/gloss/prog_loader.rb
182
+ - lib/gloss/runtime.rb
169
183
  - lib/gloss/scope.rb
170
184
  - lib/gloss/source.rb
171
185
  - lib/gloss/type_checker.rb
@@ -174,6 +188,7 @@ files:
174
188
  - lib/gloss/visitor.rb
175
189
  - lib/gloss/watcher.rb
176
190
  - lib/gloss/writer.rb
191
+ - logo.svg
177
192
  - sig/core.rbs
178
193
  - sig/fast_blank.rbs
179
194
  - sig/gls.rbs
@@ -190,6 +205,7 @@ files:
190
205
  - src/lib/gloss/logger.gl
191
206
  - src/lib/gloss/parser.gl
192
207
  - src/lib/gloss/prog_loader.gl
208
+ - src/lib/gloss/runtime.gl
193
209
  - src/lib/gloss/scope.gl
194
210
  - src/lib/gloss/source.gl
195
211
  - src/lib/gloss/type_checker.gl
@@ -1,26 +0,0 @@
1
- name: Crystal Specs
2
-
3
- on:
4
- push:
5
- branches: [ master ]
6
- pull_request:
7
- branches: [ master ]
8
-
9
- defaults:
10
- run:
11
- working-directory: ext/gloss
12
-
13
- jobs:
14
- build:
15
-
16
- runs-on: ubuntu-latest
17
-
18
- container:
19
- image: crystallang/crystal
20
-
21
- steps:
22
- - uses: actions/checkout@v2
23
- - name: Install dependencies
24
- run: shards install
25
- - name: Run tests
26
- run: crystal spec
@@ -1,33 +0,0 @@
1
- # This workflow uses actions that are not certified by GitHub.
2
- # They are provided by a third-party and are governed by
3
- # separate terms of service, privacy policy, and support
4
- # documentation.
5
- # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
- # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
-
8
- name: Ruby Specs
9
-
10
- on:
11
- push:
12
- branches: [ master ]
13
- pull_request:
14
- branches: [ master ]
15
-
16
- jobs:
17
- test:
18
-
19
- runs-on: ubuntu-20.04
20
-
21
- steps:
22
- - uses: actions/checkout@v2
23
- - name: Set up Ruby
24
- # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
25
- # change this to (see https://github.com/ruby/setup-ruby#versioning):
26
- # uses: ruby/setup-ruby@v1
27
- uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
28
- with:
29
- ruby-version: 2.7
30
- - name: Install dependencies
31
- run: bundle install
32
- - name: Run tests
33
- run: bundle exec rake build && bundle exec rake spec