rubysketch 0.10.0 → 0.11.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/.github/workflows/release-gem.yml +2 -49
- data/.github/workflows/tag.yml +5 -28
- data/.github/workflows/test.yml +1 -37
- data/ChangeLog.md +12 -0
- data/Gemfile.lock +14 -8
- data/RubySketch.podspec +2 -2
- data/VERSION +1 -1
- data/bin/rubysketch +1 -5
- data/lib/rubysketch/context.rb +16 -16
- data/lib/rubysketch/sprite.rb +9 -5
- data/lib/rubysketch.rb +1 -2
- data/rubysketch.gemspec +8 -8
- data/test/helper.rb +5 -1
- metadata +17 -18
- data/.github/workflows/utils.rb +0 -127
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 96ad467c03e2c1e7ccfce5d79414f57fb01af7f1353b91b7e5af361a4d16744e
|
|
4
|
+
data.tar.gz: 6318d1aa2fa9415f3fb9999544029603a965a81d1d7f79bf2848d2b5f444908b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dbd99157cfcd5d60419bbd78866ad8ab1b38e62880258893234f30b4daec3603c8b19e860749de9bacb3d128b76ca6ff13da24114cbc54e4c13b5131c0c2d3a9
|
|
7
|
+
data.tar.gz: 160e86d51c102494256145980059441ec4c4f161760758051865e3117ba2df4ced8ebd7e1bd13b058b123a41edaf5d680830490a9990afaccd647c37222e7349
|
|
@@ -9,52 +9,5 @@ permissions:
|
|
|
9
9
|
|
|
10
10
|
jobs:
|
|
11
11
|
release:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
steps:
|
|
15
|
-
- name: ruby 3.2
|
|
16
|
-
uses: ruby/setup-ruby@v1
|
|
17
|
-
with:
|
|
18
|
-
ruby-version: 3.2
|
|
19
|
-
|
|
20
|
-
- name: checkout
|
|
21
|
-
uses: actions/checkout@v4
|
|
22
|
-
|
|
23
|
-
- name: setup gems
|
|
24
|
-
run: bundle install
|
|
25
|
-
|
|
26
|
-
- name: setup dependencies
|
|
27
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
|
28
|
-
|
|
29
|
-
- name: packages
|
|
30
|
-
run: bundle exec rake packages
|
|
31
|
-
|
|
32
|
-
- name: setup zig
|
|
33
|
-
if: github.event.repository.name == 'reflex-terminal'
|
|
34
|
-
uses: mlugg/setup-zig@v2
|
|
35
|
-
with:
|
|
36
|
-
version: 0.16.0
|
|
37
|
-
|
|
38
|
-
- name: test
|
|
39
|
-
run: bundle exec rake test
|
|
40
|
-
|
|
41
|
-
- name: create gem
|
|
42
|
-
id: gem
|
|
43
|
-
run: |
|
|
44
|
-
bundle exec rake gem
|
|
45
|
-
echo path=$(ruby -e 'print Dir.glob("*.gem").first') >> $GITHUB_OUTPUT
|
|
46
|
-
|
|
47
|
-
- name: create github release
|
|
48
|
-
env:
|
|
49
|
-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
50
|
-
run: ruby -I.github/workflows -rutils -e 'release(*ARGV)' ./${{ steps.gem.outputs.path }}
|
|
51
|
-
|
|
52
|
-
- name: upload to rubygems
|
|
53
|
-
env:
|
|
54
|
-
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_AUTH_TOKEN }}
|
|
55
|
-
run: |
|
|
56
|
-
mkdir -p $HOME/.gem
|
|
57
|
-
touch $HOME/.gem/credentials
|
|
58
|
-
chmod 0600 $HOME/.gem/credentials
|
|
59
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
60
|
-
bundle exec rake upload
|
|
12
|
+
uses: xord/xot/.github/workflows/release-gem.yml@master
|
|
13
|
+
secrets: inherit
|
data/.github/workflows/tag.yml
CHANGED
|
@@ -1,35 +1,12 @@
|
|
|
1
1
|
name: Tag
|
|
2
2
|
|
|
3
3
|
on:
|
|
4
|
-
|
|
4
|
+
workflow_run:
|
|
5
|
+
workflows: [Test]
|
|
6
|
+
types: [completed]
|
|
5
7
|
branches: [master]
|
|
6
8
|
|
|
7
9
|
jobs:
|
|
8
10
|
tag:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
steps:
|
|
12
|
-
- name: ruby 3.2
|
|
13
|
-
uses: ruby/setup-ruby@v1
|
|
14
|
-
with:
|
|
15
|
-
ruby-version: 3.2
|
|
16
|
-
|
|
17
|
-
- name: checkout
|
|
18
|
-
uses: actions/checkout@v4
|
|
19
|
-
with:
|
|
20
|
-
fetch-depth: 0
|
|
21
|
-
token: ${{ secrets.PAT }}
|
|
22
|
-
|
|
23
|
-
- name: setup dependencies
|
|
24
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies only: :xot'"
|
|
25
|
-
|
|
26
|
-
- name: setup user name and email
|
|
27
|
-
run: |
|
|
28
|
-
git config --global user.email "xordog@gmail.com"
|
|
29
|
-
git config --global user.name "xord"
|
|
30
|
-
|
|
31
|
-
- name: tag versions
|
|
32
|
-
run: "ruby -I.github/workflows -rutils -e 'tag_versions'"
|
|
33
|
-
|
|
34
|
-
- name: push tags
|
|
35
|
-
run: git push origin --tags
|
|
11
|
+
uses: xord/xot/.github/workflows/tag.yml@master
|
|
12
|
+
secrets: inherit
|
data/.github/workflows/test.yml
CHANGED
|
@@ -7,40 +7,4 @@ on:
|
|
|
7
7
|
|
|
8
8
|
jobs:
|
|
9
9
|
test:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
steps:
|
|
13
|
-
- name: ruby 3.2
|
|
14
|
-
uses: ruby/setup-ruby@v1
|
|
15
|
-
with:
|
|
16
|
-
ruby-version: 3.2
|
|
17
|
-
|
|
18
|
-
- name: checkout
|
|
19
|
-
uses: actions/checkout@v4
|
|
20
|
-
|
|
21
|
-
- name: setup gems
|
|
22
|
-
run: bundle install
|
|
23
|
-
|
|
24
|
-
- name: setup dependencies
|
|
25
|
-
run: "ruby -I.github/workflows -rutils -e 'setup_dependencies'"
|
|
26
|
-
|
|
27
|
-
- name: packages
|
|
28
|
-
run: bundle exec rake verbose packages
|
|
29
|
-
|
|
30
|
-
- name: setup zig
|
|
31
|
-
if: github.event.repository.name == 'reflex-terminal'
|
|
32
|
-
uses: mlugg/setup-zig@v2
|
|
33
|
-
with:
|
|
34
|
-
version: 0.16.0
|
|
35
|
-
|
|
36
|
-
- name: vendor
|
|
37
|
-
run: bundle exec rake vendor
|
|
38
|
-
|
|
39
|
-
- name: lib
|
|
40
|
-
run: bundle exec rake verbose lib
|
|
41
|
-
|
|
42
|
-
- name: ext
|
|
43
|
-
run: bundle exec rake verbose ext
|
|
44
|
-
|
|
45
|
-
- name: test
|
|
46
|
-
run: bundle exec rake verbose test
|
|
10
|
+
uses: xord/xot/.github/workflows/test.yml@master
|
data/ChangeLog.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# rubysketch ChangeLog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## [v0.11.0] - 2026-11-04
|
|
5
|
+
|
|
6
|
+
- [BREAKING] Rename Context#controllerIndex to #controllerNumber
|
|
7
|
+
- [BREAKING] Raise the deployment targets to macOS 11.0 and iOS 14.0
|
|
8
|
+
- [BREAKING] loadPixels and updatePixels exchange straight alpha, not premultiplied (from processing)
|
|
9
|
+
- [BREAKING] A shader from createShader sees premultiplied samples from texMap and must emit premultiplied color (from processing)
|
|
10
|
+
- [BREAKING] Report wheel deltas in pixels, in the same direction, on every platform (from reflex)
|
|
11
|
+
- Package a macOS app without CocoaPods
|
|
12
|
+
|
|
13
|
+
- Fix a canceled press, as by a menu popping up, becoming a click
|
|
14
|
+
|
|
15
|
+
|
|
4
16
|
## [v0.10.0] - 2026-08-04
|
|
5
17
|
|
|
6
18
|
- [BREAKING] Remove the context: parameter from Sprite.new and SpriteWorld#createSprite
|
data/Gemfile.lock
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: https://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
power_assert (3.0
|
|
5
|
-
rake (13.
|
|
4
|
+
power_assert (3.1.0)
|
|
5
|
+
rake (13.4.2)
|
|
6
6
|
rexml (3.4.4)
|
|
7
|
-
test-unit (3.7.
|
|
7
|
+
test-unit (3.7.8)
|
|
8
8
|
power_assert
|
|
9
|
-
yard (0.9.
|
|
9
|
+
yard (0.9.45)
|
|
10
10
|
|
|
11
11
|
PLATFORMS
|
|
12
|
-
|
|
13
|
-
arm64-darwin-23
|
|
14
|
-
arm64-darwin-24
|
|
12
|
+
ruby
|
|
15
13
|
|
|
16
14
|
DEPENDENCIES
|
|
17
15
|
rake
|
|
@@ -19,5 +17,13 @@ DEPENDENCIES
|
|
|
19
17
|
test-unit
|
|
20
18
|
yard
|
|
21
19
|
|
|
20
|
+
CHECKSUMS
|
|
21
|
+
bundler (4.0.20) sha256=7978a8ac648767f5e635bc522445b79e80a52b907a39a36c2d8085ed6bc762ae
|
|
22
|
+
power_assert (3.1.0) sha256=fefe98ed5d3140628138f3f9f9194d6ece01f1320e69700d3c928adca7518251
|
|
23
|
+
rake (13.4.2) sha256=cb825b2bd5f1f8e91ca37bddb4b9aaf345551b4731da62949be002fa89283701
|
|
24
|
+
rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142
|
|
25
|
+
test-unit (3.7.8) sha256=689d1ca53f4d46f678b4e5d68d8e4294f87fc5e8b9238cc4de7c5727e8d65943
|
|
26
|
+
yard (0.9.45) sha256=52e211493f7cb8a3ebf7e104a25a1e73937a3103092545d34cb88fafebb3dc51
|
|
27
|
+
|
|
22
28
|
BUNDLED WITH
|
|
23
|
-
|
|
29
|
+
4.0.20
|
data/RubySketch.podspec
CHANGED
|
@@ -11,8 +11,8 @@ Pod::Spec.new do |s|
|
|
|
11
11
|
s.author = {"xordog" => "xordog@gmail.com"}
|
|
12
12
|
s.homepage = "https://github.com/xord/rubysketch"
|
|
13
13
|
|
|
14
|
-
s.osx.deployment_target = "
|
|
15
|
-
s.ios.deployment_target = "
|
|
14
|
+
s.osx.deployment_target = "11.0"
|
|
15
|
+
s.ios.deployment_target = "14.0"
|
|
16
16
|
|
|
17
17
|
root = "${PODS_ROOT}/#{s.name}"
|
|
18
18
|
exts = File.read(File.expand_path 'Rakefile', __dir__)
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.11.0
|
data/bin/rubysketch
CHANGED
|
@@ -5,11 +5,7 @@ require 'reflex/packager'
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
profile = Reflex::Packager::Profile.new(
|
|
8
|
-
|
|
9
|
-
git: 'https://github.com/xord/rubysketch',
|
|
10
|
-
version: RubySketch::Extension.version,
|
|
11
|
-
libraries: %w[Xot Rucy Beeps Rays Reflex Processing RubySketch],
|
|
12
|
-
extensions: %w[beeps_ext rays_ext reflex_ext],
|
|
8
|
+
extension: RubySketch::Extension,
|
|
13
9
|
config_files: %w[rubysketch.yml rubysketch.yaml],
|
|
14
10
|
templates: {'main.rb': <<~MAIN, 'rubysketch.yml': <<~CONFIG})
|
|
15
11
|
require 'rubysketch'
|
data/lib/rubysketch/context.rb
CHANGED
|
@@ -14,15 +14,15 @@ module RubySketch
|
|
|
14
14
|
# @private
|
|
15
15
|
def initialize(window)
|
|
16
16
|
super
|
|
17
|
-
@window__
|
|
18
|
-
@timers__
|
|
19
|
-
@firingTimers__
|
|
20
|
-
@nextTimerID__
|
|
21
|
-
@noteNumber__
|
|
22
|
-
@noteFrequency__
|
|
23
|
-
@noteVelocity__
|
|
24
|
-
@
|
|
25
|
-
@controllerValue__
|
|
17
|
+
@window__ = window
|
|
18
|
+
@timers__ = {}
|
|
19
|
+
@firingTimers__ = {}
|
|
20
|
+
@nextTimerID__ = 0
|
|
21
|
+
@noteNumber__ = 69
|
|
22
|
+
@noteFrequency__ = 440
|
|
23
|
+
@noteVelocity__ = 1
|
|
24
|
+
@controllerNumber__ = 0
|
|
25
|
+
@controllerValue__ = 0
|
|
26
26
|
|
|
27
27
|
@world__ = createWorld
|
|
28
28
|
|
|
@@ -33,14 +33,14 @@ module RubySketch
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
updateControllerStates = -> event {
|
|
36
|
-
@
|
|
37
|
-
@controllerValue__
|
|
36
|
+
@controllerNumber__ = event.controller
|
|
37
|
+
@controllerValue__ = event.value
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
@window__.update_window = proc do
|
|
41
41
|
fireTimers__
|
|
42
42
|
Beeps.process_streams!
|
|
43
|
-
Reflex.process_events
|
|
43
|
+
Reflex.process_events!# TODO: delete this
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
@window__.note_on = proc do |e|
|
|
@@ -364,12 +364,12 @@ module RubySketch
|
|
|
364
364
|
@noteVelocity__
|
|
365
365
|
end
|
|
366
366
|
|
|
367
|
-
# Returns the last controller
|
|
367
|
+
# Returns the last controller number that was changed.
|
|
368
368
|
#
|
|
369
|
-
# @return [Numeric] last controller
|
|
369
|
+
# @return [Numeric] last controller number
|
|
370
370
|
#
|
|
371
|
-
def
|
|
372
|
-
@
|
|
371
|
+
def controllerNumber()
|
|
372
|
+
@controllerNumber__
|
|
373
373
|
end
|
|
374
374
|
|
|
375
375
|
# Returns the last controller value that was changed.
|
data/lib/rubysketch/sprite.rb
CHANGED
|
@@ -1778,12 +1778,20 @@ module RubySketch
|
|
|
1778
1778
|
end
|
|
1779
1779
|
|
|
1780
1780
|
def on_pointer_up(e)
|
|
1781
|
+
pointerEnded e, true
|
|
1782
|
+
end
|
|
1783
|
+
|
|
1784
|
+
def on_pointer_cancel(e)
|
|
1785
|
+
pointerEnded e, false
|
|
1786
|
+
end
|
|
1787
|
+
|
|
1788
|
+
private def pointerEnded(e, click)
|
|
1781
1789
|
updatePointerStates e
|
|
1782
1790
|
updatePointersPressedAndReleased e, false
|
|
1783
1791
|
|
|
1784
1792
|
if e.any? {|p| p.id == @pointer.id}
|
|
1785
1793
|
callBlock @mouseReleased
|
|
1786
|
-
callBlock @mouseClicked if mouseClicked?
|
|
1794
|
+
callBlock @mouseClicked if click && mouseClicked?
|
|
1787
1795
|
end
|
|
1788
1796
|
callBlock @touchEnded
|
|
1789
1797
|
|
|
@@ -1799,10 +1807,6 @@ module RubySketch
|
|
|
1799
1807
|
callBlock @touchMoved
|
|
1800
1808
|
end
|
|
1801
1809
|
|
|
1802
|
-
def on_pointer_cancel(e)
|
|
1803
|
-
on_pointer_up e
|
|
1804
|
-
end
|
|
1805
|
-
|
|
1806
1810
|
def on_pointer_enter(e)
|
|
1807
1811
|
updatePointerStates e
|
|
1808
1812
|
@pointerOver = true
|
data/lib/rubysketch.rb
CHANGED
|
@@ -19,8 +19,7 @@ def RubySketch(snake_case: false)
|
|
|
19
19
|
return RubySketch unless snake_case
|
|
20
20
|
|
|
21
21
|
$rubysketch_refinements_with_snake_case ||= Module.new do
|
|
22
|
-
Processing.alias_snake_case_methods__ Processing
|
|
23
|
-
Processing.alias_snake_case_methods__ RubySketch
|
|
22
|
+
Processing.alias_snake_case_methods__ Processing, RubySketch
|
|
24
23
|
|
|
25
24
|
refine Object do
|
|
26
25
|
Processing.funcs__(RubySketch::Context).each do |func|
|
data/rubysketch.gemspec
CHANGED
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
|
|
12
12
|
ext = RubySketch::Extension
|
|
13
13
|
name = ext.name true
|
|
14
|
-
rdocs = glob.call
|
|
14
|
+
rdocs = glob.call(*%w[README])
|
|
15
15
|
|
|
16
16
|
s.name = name
|
|
17
17
|
s.version = ext.version
|
|
@@ -25,13 +25,13 @@ Gem::Specification.new do |s|
|
|
|
25
25
|
s.platform = Gem::Platform::RUBY
|
|
26
26
|
s.required_ruby_version = '>= 3.0.0'
|
|
27
27
|
|
|
28
|
-
s.add_dependency 'xot', '~> 0.
|
|
29
|
-
s.add_dependency 'rucy', '~> 0.
|
|
30
|
-
s.add_dependency 'beeps', '~> 0.
|
|
31
|
-
s.add_dependency 'rays', '~> 0.
|
|
32
|
-
s.add_dependency 'reflexion', '~> 0.
|
|
33
|
-
s.add_dependency 'reflex-packager', '~> 0.
|
|
34
|
-
s.add_dependency 'processing', '~> 1.
|
|
28
|
+
s.add_dependency 'xot', '~> 0.5.0'
|
|
29
|
+
s.add_dependency 'rucy', '~> 0.5.0'
|
|
30
|
+
s.add_dependency 'beeps', '~> 0.5.0'
|
|
31
|
+
s.add_dependency 'rays', '~> 0.5.0'
|
|
32
|
+
s.add_dependency 'reflexion', '~> 0.7.0'
|
|
33
|
+
s.add_dependency 'reflex-packager', '~> 0.3.0'
|
|
34
|
+
s.add_dependency 'processing', '~> 1.5.0'
|
|
35
35
|
|
|
36
36
|
s.files = `git ls-files`.split $/
|
|
37
37
|
s.executables = s.files.grep(%r{^bin/}) {|f| File.basename f}
|
data/test/helper.rb
CHANGED
|
@@ -13,7 +13,9 @@ include Xot::Test
|
|
|
13
13
|
module HasContext
|
|
14
14
|
|
|
15
15
|
def new_context()
|
|
16
|
-
RubySketch::Window.new
|
|
16
|
+
window = RubySketch::Window.new
|
|
17
|
+
(@windows_for_context__ ||= []).push window
|
|
18
|
+
window.context
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def setup()
|
|
@@ -24,6 +26,8 @@ module HasContext
|
|
|
24
26
|
def teardown()
|
|
25
27
|
super
|
|
26
28
|
$processing_context__ = nil
|
|
29
|
+
@windows_for_context__&.each(&:close)
|
|
30
|
+
@windows_for_context__ = nil
|
|
27
31
|
end
|
|
28
32
|
|
|
29
33
|
def context()
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rubysketch
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.11.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- xordog
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-11-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: xot
|
|
@@ -16,98 +16,98 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 0.
|
|
19
|
+
version: 0.5.0
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 0.
|
|
26
|
+
version: 0.5.0
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rucy
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.
|
|
33
|
+
version: 0.5.0
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.
|
|
40
|
+
version: 0.5.0
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: beeps
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.
|
|
47
|
+
version: 0.5.0
|
|
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: 0.5.0
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: rays
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0.
|
|
61
|
+
version: 0.5.0
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 0.
|
|
68
|
+
version: 0.5.0
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: reflexion
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: 0.
|
|
75
|
+
version: 0.7.0
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: 0.
|
|
82
|
+
version: 0.7.0
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: reflex-packager
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: 0.
|
|
89
|
+
version: 0.3.0
|
|
90
90
|
type: :runtime
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: 0.
|
|
96
|
+
version: 0.3.0
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: processing
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: 1.
|
|
103
|
+
version: 1.5.0
|
|
104
104
|
type: :runtime
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: 1.
|
|
110
|
+
version: 1.5.0
|
|
111
111
|
description: A game engine based on the Processing API.
|
|
112
112
|
email: xordog@gmail.com
|
|
113
113
|
executables:
|
|
@@ -119,7 +119,6 @@ files:
|
|
|
119
119
|
- ".github/workflows/release-gem.yml"
|
|
120
120
|
- ".github/workflows/tag.yml"
|
|
121
121
|
- ".github/workflows/test.yml"
|
|
122
|
-
- ".github/workflows/utils.rb"
|
|
123
122
|
- ".gitignore"
|
|
124
123
|
- ".yardopts"
|
|
125
124
|
- CONTRIBUTING.md
|
|
@@ -182,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
182
181
|
- !ruby/object:Gem::Version
|
|
183
182
|
version: '0'
|
|
184
183
|
requirements: []
|
|
185
|
-
rubygems_version: 3.
|
|
184
|
+
rubygems_version: 3.5.22
|
|
186
185
|
signing_key:
|
|
187
186
|
specification_version: 4
|
|
188
187
|
summary: A game engine based on the Processing API.
|
data/.github/workflows/utils.rb
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
require 'shellwords'
|
|
2
|
-
|
|
3
|
-
ALL_REPO = 'xord/all'
|
|
4
|
-
ALL_DIR = '../all'
|
|
5
|
-
ALL_FETCH_DEPTH = 100
|
|
6
|
-
|
|
7
|
-
RENAMES = {reflex: 'reflexion'}
|
|
8
|
-
|
|
9
|
-
def sh(cmd)
|
|
10
|
-
puts cmd
|
|
11
|
-
system cmd
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def setup_dependencies(only: nil)
|
|
15
|
-
gemspec_path = `git ls-files`.lines(chomp: true).find {|l| l =~ /\.gemspec$/}
|
|
16
|
-
return unless gemspec_path
|
|
17
|
-
|
|
18
|
-
gemspec = File.read gemspec_path
|
|
19
|
-
name = File.basename gemspec_path, '.gemspec'
|
|
20
|
-
|
|
21
|
-
exts = File.readlines('Rakefile')
|
|
22
|
-
.map {|l| l[%r|^\s*require\W+([\w\-\_]+)/extension\W+$|, 1]}
|
|
23
|
-
.compact
|
|
24
|
-
.reject {|ext| ext == name}
|
|
25
|
-
exts = exts & [only].flatten.map(&:to_s) if only
|
|
26
|
-
return if exts.empty?
|
|
27
|
-
|
|
28
|
-
unless setup_dependencies_via_monorepo(exts)
|
|
29
|
-
setup_dependencies_via_each_repo_by_version(gemspec, exts)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
exts.each {|ext| sh %( cd ../#{ext} && rake ext )}
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def setup_dependencies_via_monorepo(exts)
|
|
36
|
-
return false unless checkout_monorepo
|
|
37
|
-
exts.each {|ext| sh %( ln -snf all/#{ext} ../#{ext} )}
|
|
38
|
-
true
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def checkout_monorepo()
|
|
42
|
-
uuid = `git log -1 --format=%B`[/^\[\[([0-9a-fA-F-]+)\]\]$/, 1]
|
|
43
|
-
return false unless uuid
|
|
44
|
-
|
|
45
|
-
commit = setup_monorepo uuid
|
|
46
|
-
return false unless commit
|
|
47
|
-
|
|
48
|
-
Dir.chdir(ALL_DIR) {sh %( git checkout -q #{commit} )}
|
|
49
|
-
true
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def setup_monorepo(uuid)
|
|
53
|
-
unless File.directory? ALL_DIR
|
|
54
|
-
url = "https://github.com/#{ALL_REPO}.git"
|
|
55
|
-
sh %( git clone --no-tags --depth #{ALL_FETCH_DEPTH} #{url} #{ALL_DIR} )
|
|
56
|
-
end
|
|
57
|
-
loop do
|
|
58
|
-
commit = find_monorepo_commit uuid
|
|
59
|
-
return commit if commit
|
|
60
|
-
|
|
61
|
-
deepened = Dir.chdir ALL_DIR do
|
|
62
|
-
before = `git rev-list --count HEAD`.to_i
|
|
63
|
-
sh %( git fetch --deepen #{ALL_FETCH_DEPTH} )
|
|
64
|
-
`git rev-list --count HEAD`.to_i > before
|
|
65
|
-
end
|
|
66
|
-
return nil unless deepened
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def find_monorepo_commit(uuid)
|
|
71
|
-
Dir.chdir ALL_DIR do
|
|
72
|
-
out = `git log origin/HEAD -F --grep="[[#{uuid}]]" --format=%H -1`.strip
|
|
73
|
-
out.empty? ? nil : out
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def setup_dependencies_via_each_repo_by_version(gemspec, exts)
|
|
78
|
-
exts.each do |ext|
|
|
79
|
-
gem = RENAMES[ext.to_sym].then {|s| s || ext}
|
|
80
|
-
ver = gemspec[/add_dependency.*['"]#{gem}['"].*['"]\s*~>\s*([\d\.]+)\s*['"]/, 1]
|
|
81
|
-
opts = '-c advice.detachedHead=false --depth 1'
|
|
82
|
-
clone = "git clone #{opts} https://github.com/xord/#{ext}.git ../#{ext}"
|
|
83
|
-
|
|
84
|
-
# 'rake subtree:push' pushes all subrepos, so cloning by new tag
|
|
85
|
-
# often fails before tagging each new tag
|
|
86
|
-
sh %( #{clone} --branch v#{ver} || #{clone} )
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def tag_versions()
|
|
91
|
-
changes = changelogs
|
|
92
|
-
tags = `git tag`.lines chomp: true
|
|
93
|
-
vers = `git log --oneline ./VERSION`
|
|
94
|
-
.lines(chomp: true)
|
|
95
|
-
.map {|line| line.split.first[/^\w+$/]}
|
|
96
|
-
.map {|sha| [`git cat-file -p #{sha}:./VERSION 2>/dev/null`[/[\d\.]+/], sha]}
|
|
97
|
-
.select {|ver, sha| ver && sha}
|
|
98
|
-
.reverse
|
|
99
|
-
.to_h
|
|
100
|
-
|
|
101
|
-
vers.to_a.reverse.each do |ver, sha|
|
|
102
|
-
tag = "v#{ver}"
|
|
103
|
-
break if tags.include?(tag)
|
|
104
|
-
sh %( git tag -a -m \"#{changes[tag]&.gsub '"', '\\"'}\" #{tag} #{sha} )
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def release(*paths)
|
|
109
|
-
tag = ENV['GITHUB_REF']&.sub(%r|^refs/tags/|, '') || raise('GITHUB_REF tag not set')
|
|
110
|
-
notes = (changelogs[tag] || '').shellescape
|
|
111
|
-
paths = paths.flatten.join ' '
|
|
112
|
-
|
|
113
|
-
sh(%( gh release create #{tag} #{paths} --notes #{notes} )) ||
|
|
114
|
-
sh(%( gh release upload #{tag} #{paths} --clobber )) ||
|
|
115
|
-
raise('failed to upload to releases')
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def changelogs()
|
|
119
|
-
File.read('ChangeLog.md')
|
|
120
|
-
.split(/^\s*##\s*\[\s*(v[\d\.]+)\s*\].*$/)
|
|
121
|
-
.slice(1..)
|
|
122
|
-
.each_slice(2)
|
|
123
|
-
.to_h
|
|
124
|
-
.transform_values(&:strip!)
|
|
125
|
-
rescue Errno::ENOENT
|
|
126
|
-
raise 'failed to get changelogs'
|
|
127
|
-
end
|