squared 0.6.5 → 0.6.7

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: 42ae11aaf561b6e6d821f7590e37982c408cb4f09aa4946084e4d3ec29c6fdff
4
- data.tar.gz: 3ef75c9101dfd1676c035396055bd5585b33e3be41498dbd19eac2a98ea80a81
3
+ metadata.gz: 73203f27b80dac94c1a96127b27afeb60d939e27adc578724264c9db26380ac0
4
+ data.tar.gz: 308784d8e94aefcb5b2da4b75e6614bb94e6d1a5d66fc4754d7e72072655e588
5
5
  SHA512:
6
- metadata.gz: cf24602228107b3e1a760749acf96f367cd0877ea6d45a2b0153ea08ba2a3bb014b547986e2406d2aaca4744e005bad2d9994d4a5807a7cc1afe517191aca775
7
- data.tar.gz: 87e429e0eb78518ea637ecd863aab3359fef584b3c87340cc5a4d9f83718e7b89ac7b258a9e7a9f7d7ece3169776a8fb61d6e5f575c7420778510f3a122d84db
6
+ metadata.gz: 1f477ca8a24e892a052a2375283fbbf08af5cfc4714eaadba8c9465d59ad20e5d9bc6ae6cd624ff09780d62831cf2355918f01a851bbe09c52861d45479b1b6b
7
+ data.tar.gz: 289b353519bd3d5d7b13eb6f190428c74d9f4975e176094e65ba052a1febf28b2d719210efae09768cf0c3729d03b944bfd2344bde2025705cf2b0627d6bdfeb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,95 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.7] - 2025-12-07
4
+
5
+ ### Added
6
+
7
+ - Docker command options were updated to 29.1.
8
+
9
+ ### Fixed
10
+
11
+ - Bundler did not recognize sub-commands options.
12
+ - Project graph did not use built-in comparison method.
13
+
14
+ ## [0.5.19] - 2025-12-07
15
+
16
+ ### Fixed
17
+
18
+ - See `0.4.33`.
19
+
20
+ ## [0.4.33] - 2025-12-07
21
+
22
+ ### Added
23
+
24
+ - Ruby attribute setter gemdir for copy method was created.
25
+ - Project inline run executables binary path are replaced with global alias.
26
+
27
+ ### Fixed
28
+
29
+ - Workspace class Series created non-existent keys when queried.
30
+ - Application class did not support changing base Project class.
31
+ - Git command rev action build did not check build? method.
32
+ - Python command build action python did not use outdir option.
33
+
34
+ ## [0.6.6] - 2025-11-30
35
+
36
+ ### Added
37
+
38
+ - Python application method with stored command options was created.
39
+ - Ruby task depend can install binstubs through ENV.
40
+ - Project application methods can throw exceptions to halt processing.
41
+ - Project application methods can read multiple files from STDIN.
42
+ - Ruby attribute setter gemdir for copy method was created.
43
+
44
+ ### Changed
45
+
46
+ - Project base method semgte? optional argument compares with RUBY_VERSION.
47
+ - Project task branch in a single workspace displays all branches.
48
+ - Ruby application method first argument can be used as a symbol flag.
49
+ - Ruby task copy does not write into protected system directories.
50
+
51
+ ### Fixed
52
+
53
+ - RuboCop did not include config file when default was not found.
54
+ - RuboCop path globs are not expanded except for choice selections.
55
+ - Ruby target application file appeared before the delimiter.
56
+ - JoinSet can keep arguments with a duplicate value.
57
+ - OptionPartition did not quarantine options added from extras.
58
+ - Python method pyprojectfile did not always return nil.
59
+
60
+ ## [0.5.18] - 2025-11-25
61
+
62
+ ### Fixed
63
+
64
+ - See `0.5.18`.
65
+
66
+ ## [0.4.32] - 2025-11-25
67
+
68
+ ### Fixed
69
+
70
+ - Git method commit did not include --dry-run with add command.
71
+ - JoinSet method include? did not always search to start of delimiter.
72
+ - Config viewer did not check for a readable package registry document.
73
+ - Powershell executable did not check for alternate path location.
74
+
75
+ ## [0.5.17] - 2025-11-22
76
+
77
+ ### Fixed
78
+
79
+ - See `0.4.31`.
80
+
81
+ ## [0.4.31] - 2025-11-22
82
+
83
+ ### Changed
84
+
85
+ - Ruby command flag is given precedence to a program file.
86
+
87
+ ### Fixed
88
+
89
+ - Project change directory context did not always restore when raised.
90
+ - Ruby file method attributes did not always return nil.
91
+ - JoinSet with a delimiter did not report correct size.
92
+
3
93
  ## [0.6.5] - 2025-11-18
4
94
 
5
95
  ### Added
@@ -1434,12 +1524,17 @@
1434
1524
 
1435
1525
  - Changelog was created.
1436
1526
 
1527
+ [0.6.7]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.7
1528
+ [0.6.6]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.6
1437
1529
  [0.6.5]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.5
1438
1530
  [0.6.4]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.4
1439
1531
  [0.6.3]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.3
1440
1532
  [0.6.2]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.2
1441
1533
  [0.6.1]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.1
1442
1534
  [0.6.0]: https://github.com/anpham6/squared-ruby/releases/tag/v0.6.0
1535
+ [0.5.19]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.19
1536
+ [0.5.18]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.18
1537
+ [0.5.17]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.17
1443
1538
  [0.5.16]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.16
1444
1539
  [0.5.15]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.15
1445
1540
  [0.5.14]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.14
@@ -1457,6 +1552,9 @@
1457
1552
  [0.5.2]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.2-ruby
1458
1553
  [0.5.1]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.1-ruby
1459
1554
  [0.5.0]: https://github.com/anpham6/squared-ruby/releases/tag/v0.5.0-ruby
1555
+ [0.4.33]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.33
1556
+ [0.4.32]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.32
1557
+ [0.4.31]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.31
1460
1558
  [0.4.30]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.30
1461
1559
  [0.4.29]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.29
1462
1560
  [0.4.28]: https://github.com/anpham6/squared-ruby/releases/tag/v0.4.28
data/README.md CHANGED
@@ -24,23 +24,9 @@ The range chart indicates the latest Ruby tested against at the time of release.
24
24
  gem install squared
25
25
  ```
26
26
 
27
- ### Optional
28
-
29
- * [Repo](https://source.android.com/docs/setup/reference/repo)
30
- * https://github.com/anpham6/squared-repo
31
- * Python 3.6
32
- * Not compatible with Windows
33
-
34
- ```sh
35
- mkdir -p ~/.bin
36
- PATH="${HOME}/.bin:${PATH}"
37
- curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
38
- chmod a+rx ~/.bin/repo
39
- ```
40
-
41
27
  ## Example - Rakefile
42
28
 
43
- Projects from any accessible folder can be added relative to the parent directory (e.g. *REPO_ROOT*) or absolutely. The same Rakefile can also manage other similarly cloned `Repo` repositories remotely by setting the `REPO_ROOT` environment variable to the location. Missing projects will simply be excluded from the task runner.
29
+ Projects from any accessible folder can be added relative to the parent directory or absolutely. Missing projects will simply be excluded from the task runner.
44
30
 
45
31
  ```ruby
46
32
  require "squared"
@@ -56,14 +42,6 @@ require "squared/app" # All workspace related mod
56
42
 
57
43
  # NODE_ENV = production
58
44
 
59
- # REPO_ROOT = /workspaces |
60
- # REPO_HOME = /workspaces/squared | Dir.pwd
61
- # rake = /workspaces/squared/Rakefile | main?
62
- # OR
63
- # REPO_ROOT = /workspaces | Dir.pwd
64
- # rake = /workspaces/Rakefile |
65
- # REPO_HOME = /workspaces/squared | main: "squared"
66
-
67
45
  # pathname = /workspaces/pathname
68
46
  # optparse = /workspaces/optparse
69
47
  # log = /workspaces/logger
@@ -82,7 +60,6 @@ Workspace::Application.load_ref('lib/squared/workspace/project', gem: 'squared')
82
60
  Workspace::Application
83
61
  .new(Dir.pwd, main: "squared") # Dir.pwd? (main? is implicitly basename)
84
62
  .banner("group", "project", styles: ["yellow", "black"], border: "bold") # name | project | path | ref | group? | parent? | version?
85
- .repo("https://github.com/anpham6/squared-repo", "nightly", script: ["build:dev", "prod"], install: "#{ENV["HOME"]}/.bin", ref: :node) # Repo (optional)
86
63
  .run("rake install", ref: :ruby)
87
64
  .depend(false, group: "default")
88
65
  .clean("rake clean", group: "default")
@@ -92,7 +69,9 @@ Workspace::Application
92
69
  "CFLAGS" => "-fPIC -O1"
93
70
  })
94
71
  .add("optparse", doc: "rake rdoc", gemspec: "optparse.gemspec", group: "default") # Uses bundler/gem_tasks (without C extensions)
95
- .add("logger", copy: { from: "lib", glob: "**/*.rb", into: "~/.rvm/gems/ruby-3.4.0/gems/logger-1.6.1" }, clean: ["tmp/"]) # autodetect: true | "rvm" | "rbenv" | "asdf" | "bundler"
72
+ .add("logger", copy: { from: "lib", glob: "**/*.rb", into: "/home/user/.local/gem/ruby/3.4.0/gems/logger-1.7.0" }, clean: ["tmp/"]) do # autodetect: true | "rvm" | "rbenv" | "asdf" | "bundler"
73
+ self.gemdir = "/home/user/.local/gem/ruby/3.4.0/gems/logger-1.7.0" # Default for "into"
74
+ end
96
75
  .add("e-mc", "emc", copy: { from: "publish", scope: "@e-mc", also: [:pir, "squared-express/"] }, ref: :node) # Node
97
76
  .add("pi-r", "pir", copy: { from: "publish", scope: "@pi-r" }, clean: ["publish/**/*.js", "tmp/"]) # Trailing slash required for directories
98
77
  .add("pi-r2", "pir2", copy: { from: :npm, also: %i[squared express], files: ["LICENSE", ["README.md.ruby", "README.md"]] }) # Uses dist files from NPM package spec
@@ -733,7 +712,7 @@ GIT_AUTOSTASH_${NAME}=0 # rebase (project only)
733
712
 
734
713
  ### Docker
735
714
 
736
- * Version: [28.5](https://docs.docker.com/engine/release-notes/28)
715
+ * Version: [29.1](https://docs.docker.com/engine/release-notes/29)
737
716
 
738
717
  ```sh
739
718
  DOCKER_OPTIONS=q,no-cache # all
@@ -780,7 +759,37 @@ Workspace::Application
780
759
 
781
760
  ### Repo
782
761
 
783
- These global options also can target the application main suffix `${NAME}`. (e.g. REPO_ROOT_SQUARED)
762
+ * [Repo](https://source.android.com/docs/setup/reference/repo)
763
+ * https://github.com/anpham6/squared-repo
764
+ * Python 3.6
765
+ * Not compatible with Windows
766
+
767
+ ```sh
768
+ mkdir -p ~/.bin
769
+ PATH="${HOME}/.bin:${PATH}"
770
+ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
771
+ chmod a+rx ~/.bin/repo
772
+ ```
773
+
774
+ ```ruby
775
+ # REPO_ROOT = /workspaces |
776
+ # REPO_HOME = /workspaces/squared | Dir.pwd
777
+ # rake = /workspaces/squared/Rakefile | main?
778
+ #
779
+ # OR
780
+ #
781
+ # REPO_ROOT = /workspaces | Dir.pwd
782
+ # rake = /workspaces/Rakefile |
783
+ # REPO_HOME = /workspaces/squared | main: "squared"
784
+
785
+ Workspace::Application
786
+ .new(main: "squared")
787
+ .repo("https://github.com/anpham6/squared-repo", "nightly", script: ["build:dev", "prod"], install: "#{ENV["HOME"]}/.bin", ref: :node)
788
+ .add("squared", script: ["build:stage1", "build:stage2"])
789
+ .build
790
+ ```
791
+
792
+ These global options also can target the application main suffix `${NAME}`. (e.g. *REPO_ROOT_SQUARED*)
784
793
 
785
794
  ```sh
786
795
  REPO_ROOT # parent dir
@@ -801,6 +810,51 @@ REPO_Y # 0,1
801
810
  REPO_TIMEOUT # confirm dialog (seconds)
802
811
  ```
803
812
 
813
+ Other similarly cloned `Repo` repositories can be managed remotely by setting the `REPO_ROOT` environment variable to the location.
814
+
815
+ ### Project
816
+
817
+ Features can be enabled through ENV when calling global tasks such as through *CI/CD* automation (e.g. Repo).
818
+
819
+ #### Ruby
820
+
821
+ * Prefix: BUNDLE/GEM/RBS
822
+
823
+ | Command | Flag | ENV |
824
+ | :--------- | :-------- | :---------------------------------------------------------------- |
825
+ | depend | - | BINSTUBS=s JOBS=n |
826
+ | outdated | - | U|UPDATE=major|minor|patch ONLY_EXPLICIT DRY_RUN |
827
+ | gem | outdated | DOCUMENT=0,1 USER_INSTALL=0,1 |
828
+ | rbs | prototype | Y=0,1 |
829
+
830
+ #### Node
831
+
832
+ * Prefix: NPM/PNPM/YARN
833
+
834
+ | Command | Flag | ENV |
835
+ | :------------- | :------------- | :------------------------------------------------------- |
836
+ | depend | - | FORCE CI IGNORE_SCRIPTS |
837
+ | outdated | - | U|UPDATE=major|minor|patch DIFF DRY_RUN |
838
+ | publish | - | OTP=s TAG=s ACCESS=0,1,s DRY_RUN |
839
+ | depend package | * | PACAKGE_LOCK|LOCKFILE=0 NO_LOCKFILE=1 Y |
840
+ | npm pnpm | depend package | CPU=s OS=s LIBC=s |
841
+ | npm | package | SAVE IGNORE_SCRIPTS STRICT_PEER_DEPS |
842
+ | pnpm | depend | ALLOW_BUILD=s PUBLIC_HOIST_PATTERN=s |
843
+ | yarn | depend package | IGNORE_ENGINES=0 |
844
+
845
+ #### Python
846
+
847
+ * Prefix: PIP/POETRY
848
+
849
+ | Command | Flag | ENV |
850
+ | :--------- | :-------- | :---------------------------------------------------------------- |
851
+ | global | * | CACHE_DIR=0,s PROXY=s PYTHON=s COLOR=0 |
852
+ | depend | - | E|EDITABLE=0,s BUILD_ISOLATION=0 |
853
+ | outdated | - | U|UPDATE=major|minor|patch NOT_REQUIRED=0 L|LOCAL DRY_RUN |
854
+ | venv | exec | INTERACTIVE=0 |
855
+ | poetry | * | PROJECT=s |
856
+ | poetry | depend | NO_ROOT |
857
+
804
858
  ## LICENSE
805
859
 
806
860
  BSD 3-Clause
@@ -219,6 +219,10 @@ module Squared
219
219
  end
220
220
  end
221
221
 
222
+ def log_warn(*args, **kwargs)
223
+ log_message(Logger::WARN, *args, **kwargs)
224
+ end
225
+
222
226
  def log_console(*args, pipe: 1)
223
227
  return if args.first == false && args.size == 1
224
228
 
@@ -266,7 +270,7 @@ module Squared
266
270
  out = []
267
271
  draw = lambda do |a, b|
268
272
  ret = a + (b1 * (n + 2)) + b
269
- next ret unless border
273
+ return ret unless border
270
274
 
271
275
  sub_style ret, border
272
276
  end
@@ -83,7 +83,11 @@ module Squared
83
83
  end
84
84
  sep = unless flag.empty?
85
85
  if flag[0] == '-'
86
- flag[1] == '-' ? sep : ' '
86
+ if flag[1] == '-'
87
+ sep
88
+ else
89
+ merge ? '' : ' '
90
+ end
87
91
  elsif flag.size == 1
88
92
  pre = '-'
89
93
  merge ? '' : ' '
@@ -146,7 +150,8 @@ module Squared
146
150
  end
147
151
 
148
152
  def shell_bin(name, env: true)
149
- key = name.upcase
153
+ key = name.to_s.upcase
154
+ key = File.basename(key, '.*') if Rake::Win32.windows?
150
155
  shell_quote((env && ENV["PATH_#{key}"]) || PATH[key] || PATH[key.to_sym] || name,
151
156
  option: false, force: false, double: true)
152
157
  end
@@ -22,8 +22,8 @@ module Squared
22
22
  nil
23
23
  end
24
24
 
25
- def link(project, main = project.dependfile.basename, name = nil, **kwargs, &blk)
26
- return unless project.enabled?
25
+ def link(project, main = project.dependfile&.basename, name = nil, **kwargs, &blk)
26
+ return unless project.enabled? && main
27
27
 
28
28
  ret = new(main, name, project: project, **kwargs)
29
29
  ret.instance_eval(&blk) if block_given?
@@ -87,7 +87,7 @@ module Squared
87
87
  @required = true
88
88
  project ? [project, 'missing'] : %w[name missing]
89
89
  end
90
- warn log_message(Logger::WARN, msg, subject: self.class, hint: hint)
90
+ warn log_warn(msg, subject: self.class, hint: hint)
91
91
  end
92
92
 
93
93
  def build
@@ -159,7 +159,7 @@ module Squared
159
159
  end
160
160
 
161
161
  def also(path, type = nil, name: nil, **kwargs)
162
- return self if @mime.frozen? || !(file = basepath(path)).exist?
162
+ return self unless (file = basepath(path)).exist? && !@mime.frozen?
163
163
 
164
164
  ext = mimetype file
165
165
  type ||= ext
@@ -242,7 +242,7 @@ module Squared
242
242
  opt_style(theme[:key], /\A((?~ : ))( : (?!undefined).+)\z/m),
243
243
  opt_style(theme[:number], /\A((?~: ): )(-?[\d.]+)(\s*)\z/m, 2),
244
244
  opt_style(theme[:string], /\A((?~: ): ")(.+)("\s*)\z/m, 2),
245
- opt_style(theme[:hash], /\A((?~: ): \{)(.+)(}\s*)\z/m, 2),
245
+ opt_style(theme[:hash], /\A((?~: ): \{)(.+)(\}\s*)\z/m, 2),
246
246
  opt_style(theme[:array], /\A((?~: ): \[)(.+)(\]\s*)\z/m, 2),
247
247
  opt_style(theme[:boolean], /\A((?~: ): )(true|false)(\s*)\z/m, 2),
248
248
  opt_style(theme[:value], /\A((?~: ): (?!undefined))([^"\[{].*)\z/m, 2)
@@ -287,7 +287,7 @@ module Squared
287
287
  if stdin?
288
288
  puts out.map!(&:last).join("\n")
289
289
  else
290
- out.map! { |item| '%-*s : %s' % [pad, item[0], item[1]] }
290
+ out.map! { |a, b| '%-*s : %s' % [pad, a, b] }
291
291
  end
292
292
  end
293
293
 
@@ -316,7 +316,9 @@ module Squared
316
316
  end
317
317
 
318
318
  def warning?
319
- project ? project.workspace.warning : true
319
+ return true unless project
320
+
321
+ project.workspace.warning
320
322
  end
321
323
 
322
324
  def stdin?
@@ -341,7 +343,9 @@ module Squared
341
343
  end
342
344
 
343
345
  def basepath(*args)
344
- project ? project.basepath(*args) : Pathname.pwd.join(*args)
346
+ return Pathname.pwd.join(*args) unless project
347
+
348
+ project.basepath(*args)
345
349
  end
346
350
  end
347
351
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Squared
4
- VERSION = '0.6.5'
4
+ VERSION = '0.6.7'
5
5
  end
@@ -191,15 +191,11 @@ module Squared
191
191
  end
192
192
  series.populate(proj, **kwargs)
193
193
  end
194
-
195
194
  Application.kind_project.each { |obj| obj.populate(self, **kwargs) }
196
195
  @extensions.uniq.each { |ext| __send__(ext, **kwargs) }
197
-
198
196
  series.build(**kwargs)
199
197
  __build__(**kwargs)
200
-
201
198
  yield self if block_given?
202
-
203
199
  __chain__(**kwargs)
204
200
  @closed = true
205
201
  self
@@ -240,18 +236,16 @@ module Squared
240
236
 
241
237
  def chain(task, *action, project: nil, step: 0, with: nil, before: nil, after: nil, sync: false,
242
238
  group: @group, ref: @ref)
243
- keys = if project
244
- action.map! { |val| task_join(project.name, val) }
245
- nil
246
- elsif (target = group || ref)
247
- action.map! { |val| task_name(task_join(val, target)) }
248
- nil
249
- else
250
- action.map! { |val| task_name(val) }
251
- @project.keys unless prefix
252
- end
239
+ if project
240
+ action.map! { |val| task_join(project.name, val) }
241
+ elsif (target = group || ref)
242
+ action.map! { |val| task_name(task_join(val, target)) }
243
+ else
244
+ action.map! { |val| task_name(val) }
245
+ keys = @project.keys unless prefix
246
+ end
253
247
  ns = lambda do |val|
254
- next if (ret = as_a(val, :to_s, flat: true)).empty?
248
+ return if (ret = as_a(val, :to_s, flat: true)).empty?
255
249
 
256
250
  ret.map! do |arg|
257
251
  if arg.include?(':') || (keys && !keys.include?(arg))
@@ -365,9 +359,9 @@ module Squared
365
359
  proj = ((if !ref.is_a?(Class)
366
360
  require_project ref
367
361
  Application.find(ref, path: path)
368
- elsif ref < Project::Base
362
+ elsif ref < Application.impl_project
369
363
  ref
370
- end) || @kind[name]&.last || Project::Base).new(self, path, name, **kwargs)
364
+ end) || @kind[name]&.last || Application.impl_project).new(self, path, name, **kwargs)
371
365
  proj.__send__(:index_set, size)
372
366
  @project[name] = proj
373
367
  __get__(:project)[name] = proj unless kwargs[:private]
@@ -433,7 +427,7 @@ module Squared
433
427
  if key.start_with?(/(\\A|\^)/) || key.match?(/(\\z|\$)\z/)
434
428
  @describe[:replace] << [Regexp.new(key), val]
435
429
  else
436
- @describe[val.is_a?(Regexp) ? :pattern : :alias][key.to_s] = val
430
+ @describe[val.is_a?(Regexp) ? :pattern : :alias][key] = val
437
431
  end
438
432
  end
439
433
  self
@@ -452,7 +446,7 @@ module Squared
452
446
  if ret.empty? && (path || name)
453
447
  path &&= rootpath path
454
448
  name &&= name.to_s
455
- if (proj = find { |item| (path && item.path == path) || (name && item.name == name) })
449
+ if (proj = find { |item| item.path == path || item.name == name })
456
450
  ret << proj
457
451
  end
458
452
  end
@@ -592,9 +586,9 @@ module Squared
592
586
 
593
587
  def script_find(*args)
594
588
  args.reverse_each do |val|
595
- next unless val && (ret = val.is_a?(Symbol) ? @script[:ref!][val] : @script[:group!][val.to_sym])
596
-
597
- return ret
589
+ if val && (ret = val.is_a?(Symbol) ? @script[:ref!][val] : @script[:group!][val.to_sym])
590
+ return ret
591
+ end
598
592
  end
599
593
  @script[:ref!][:''] ||= scriptobj
600
594
  end