squared 0.3.12 → 0.3.14

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.
@@ -86,7 +86,7 @@ module Squared
86
86
  PATH.freeze
87
87
  ARG.freeze
88
88
  VAR.each_value(&:freeze)
89
- VAR[:theme].each_value(&:freeze)
89
+ VAR[:theme].each_value { |val| val.freeze.each_value(&:freeze) }
90
90
  VAR.freeze
91
91
  end
92
92
 
@@ -127,11 +127,11 @@ module Squared
127
127
  def apply_style(data, key, args, empty: true)
128
128
  return if data.is_a?(::Symbol) && (data = __get__(:theme)[data]).nil?
129
129
 
130
- set = ->(k, v) { data[k] = check_style(v, empty: empty) }
130
+ set = ->(k, v) { data[k.to_sym] = check_style(v, empty: empty) }
131
131
  if key.is_a?(::Hash)
132
132
  key.each { |k, v| set.(k, v || args) }
133
133
  else
134
- set.(key.to_sym, args)
134
+ set.(key, args)
135
135
  end
136
136
  end
137
137
 
@@ -24,7 +24,7 @@ module Squared
24
24
  else
25
25
  return Kernel.send(name, *args, **kwargs)
26
26
  end
27
- return ret if ret || !e
27
+ return ret unless e && !ret && name == :system
28
28
 
29
29
  raise $?.to_s
30
30
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Squared
4
- VERSION = '0.3.12'
4
+ VERSION = '0.3.14'
5
5
  end
@@ -628,9 +628,14 @@ module Squared
628
628
  private
629
629
 
630
630
  def __build__(default: nil, **)
631
- return unless default && task_defined?(out = task_name(default))
632
-
633
- task Rake.application.default_task_name => out
631
+ unless task_defined?('squared:version')
632
+ task 'squared:version' do
633
+ puts Squared::VERSION
634
+ end
635
+ end
636
+ if default && task_defined?(out = task_name(default))
637
+ task Rake.application.default_task_name => out
638
+ end
634
639
  end
635
640
 
636
641
  def puts(*args)
@@ -664,20 +669,19 @@ module Squared
664
669
  end
665
670
 
666
671
  def data_get(*args, group: nil, ref: nil, target: nil)
667
- if group
668
- target[:group][group.to_sym]
669
- elsif ref.is_a?(Array)
670
- ref = ref.each
671
- end
672
- if ref.instance_of?(Enumerator)
673
- ref.each do |key|
674
- next unless (ret = target[:ref][key])
672
+ if group && (ret = target[:group][group.to_sym])
673
+ ret
674
+ elsif ref
675
+ if ref.is_a?(Enumerable)
676
+ ref.each do |key|
677
+ next unless (ret = target[:ref][key])
675
678
 
676
- return ret if args.empty? || args.any? { |val| ret.key?(val) }
679
+ return ret if args.empty? || args.any? { |val| ret.key?(val) }
680
+ end
681
+ nil
682
+ else
683
+ target[:ref][ref]
677
684
  end
678
- nil
679
- elsif ref
680
- target[:ref][ref]
681
685
  end
682
686
  end
683
687
 
@@ -15,7 +15,7 @@ module Squared
15
15
  include Rake::DSL
16
16
 
17
17
  VAR_SET = %i[parent global envname dependfile theme run script env pass].freeze
18
- SEM_VER = /\b(\d+)(?:(\.)(\d+))?(?:(\.)(\d+)(\S+)?)?\b/.freeze
18
+ SEM_VER = /\b(\d+)(?:(\.)(\d+))?(?:(\.)(\d+))?[-.]?(\S+)?\b/.freeze
19
19
  private_constant :VAR_SET, :SEM_VER
20
20
 
21
21
  class << self
@@ -255,7 +255,7 @@ module Squared
255
255
  flags.each do |flag|
256
256
  case action
257
257
  when 'graph'
258
- next unless graph?
258
+ break unless graph?
259
259
 
260
260
  format_desc action, flag, '(-)project*'
261
261
  task flag do |_, args|
@@ -814,7 +814,7 @@ module Squared
814
814
  done
815
815
  end
816
816
 
817
- def graph_collect(target, start = [], data: {}, pass: [])
817
+ def graph_collect(target, start = [], data: {}, pass: [], root: [])
818
818
  deps = []
819
819
  (start.empty? ? target.instance_variable_get(:@graph) : start)&.each do |val|
820
820
  next if pass.include?(val)
@@ -826,18 +826,21 @@ module Squared
826
826
  else
827
827
  items = workspace.find(group: val, ref: val.to_sym)
828
828
  end
829
-
830
829
  items.each do |proj|
831
- next if pass.include?(proj.name)
830
+ next if pass.include?(name = proj.name)
832
831
 
833
- graph_collect(proj, data: data, pass: pass) if proj.graph? && !data.key?(proj.name)
834
- next if (objs = data.fetch(proj.name, [])).include?(target)
832
+ if proj.graph? && !data.key?(name) && !root.include?(name)
833
+ graph_collect(proj, data: data, pass: pass, root: root + [name, target.name])
834
+ end
835
+ next if (objs = data.fetch(name, [])).include?(target)
835
836
 
836
837
  deps << proj
837
- deps += objs
838
+ deps.concat(objs)
838
839
  end
839
840
  end
840
- data[target.name] = deps.uniq.reject { |proj| proj == target }
841
+ deps.uniq!
842
+ deps.delete(target)
843
+ data[target.name] = deps
841
844
  data
842
845
  end
843
846
 
@@ -1270,6 +1273,29 @@ module Squared
1270
1273
  fill ? semver(ret) : ret
1271
1274
  end
1272
1275
 
1276
+ def semcmp(val, other)
1277
+ return 0 if val == other
1278
+
1279
+ a, b = [val, other].map! { |ver| ver.scan(SEM_VER) }
1280
+ return -1 if b.empty?
1281
+ return 1 if a.empty?
1282
+
1283
+ a, b = [a.first, b.first].map! do |c|
1284
+ begin
1285
+ d = Integer(c[5]).to_s
1286
+ rescue StandardError
1287
+ d = c[5] ? '-1' : '0'
1288
+ end
1289
+ [c[0], c[2], c[4] || '0', d]
1290
+ end
1291
+ a.each_with_index do |c, index|
1292
+ next if c == (d = b[index])
1293
+
1294
+ return c.to_i < d.to_i ? 1 : -1
1295
+ end
1296
+ 0
1297
+ end
1298
+
1273
1299
  def indexitem(val)
1274
1300
  [$1.to_i, $2 && $2[1..-1]] if val =~ /\A#{Regexp.escape(indexchar)}(\d+)(:.+)?\z/
1275
1301
  end
@@ -638,15 +638,18 @@ module Squared
638
638
  when :major
639
639
  if seg[0] != '0' || seg[2].nil?
640
640
  seg[0] = seg[0].succ
641
+ seg[2] = '0'
641
642
  else
642
643
  seg[2] = seg[2].succ
643
644
  end
645
+ seg[4] = '0'
644
646
  when :minor
645
647
  if seg[0] == '0'
646
648
  seg[4] &&= seg[4].succ
647
649
  else
648
650
  seg[2] = seg[2].succ
649
651
  end
652
+ seg[4] = '0'
650
653
  when :patch
651
654
  seg[4] &&= seg[4].succ
652
655
  end
@@ -834,7 +837,7 @@ module Squared
834
837
  else
835
838
  if key
836
839
  @pm[key]
837
- elsif (ret = @pm[:_]) && !(version && ret[(ret.index('@') + 1)..-1] < version)
840
+ elsif (ret = @pm[:_]) && !(version && semcmp(ret[(ret.index('@') + 1)..-1], version) == 1)
838
841
  ret
839
842
  end
840
843
  end
@@ -481,7 +481,7 @@ module Squared
481
481
  when :exec
482
482
  raise_error('gem', flag, hint: 'no command given') if out.empty?
483
483
  cmd << basic_option('gem', project) unless session_arg?('g', 'gem')
484
- cmd << '--' << out.join(' ')
484
+ cmd << out.join(' ')
485
485
  else
486
486
  if out.empty? && cmd.none? { |val| val =~ /^--system(?:=|$)/ }
487
487
  raise_error('gem', flag, hint: 'no gemname given')
data/squared.gemspec CHANGED
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "lib/squared/version"
3
+ version = File.read(File.join(__dir__, "lib/squared/version.rb"))[/\bVERSION = '(.+)'$/, 1]
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "squared"
7
- spec.version = Squared::VERSION
7
+ spec.version = version
8
8
  spec.authors = ["An Pham"]
9
9
  spec.email = ["anpham6@gmail.com"]
10
10
 
11
11
  spec.summary = %q{Rake task generator for managing multi-language workspaces.}
12
12
  spec.description = %q{Rake task generator for managing multi-language workspaces.}
13
- spec.homepage = "https://github.com/anpham6/squared"
13
+ spec.homepage = "https://github.com/anpham6/squared-ruby"
14
14
  spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
15
15
  spec.licenses = ["BSD-3-Clause"]
16
16
 
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.metadata["documentation_uri"] = "https://squared.readthedocs.io"
20
20
 
21
21
  spec.files = Dir["lib/**/*"] +
22
- %w[CHANGELOG.md LICENSE README.md README.ruby.md squared.gemspec]
22
+ %w[CHANGELOG.md LICENSE README.md squared.gemspec]
23
23
  spec.bindir = "exe"
24
24
  spec.executables = []
25
25
  spec.require_paths = ["lib"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: squared
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - An Pham
@@ -75,7 +75,6 @@ files:
75
75
  - CHANGELOG.md
76
76
  - LICENSE
77
77
  - README.md
78
- - README.ruby.md
79
78
  - lib/squared.rb
80
79
  - lib/squared/app.rb
81
80
  - lib/squared/common.rb
@@ -99,12 +98,12 @@ files:
99
98
  - lib/squared/workspace/repo.rb
100
99
  - lib/squared/workspace/series.rb
101
100
  - squared.gemspec
102
- homepage: https://github.com/anpham6/squared
101
+ homepage: https://github.com/anpham6/squared-ruby
103
102
  licenses:
104
103
  - BSD-3-Clause
105
104
  metadata:
106
- homepage_uri: https://github.com/anpham6/squared
107
- source_code_uri: https://github.com/anpham6/squared
105
+ homepage_uri: https://github.com/anpham6/squared-ruby
106
+ source_code_uri: https://github.com/anpham6/squared-ruby
108
107
  documentation_uri: https://squared.readthedocs.io
109
108
  rdoc_options: []
110
109
  require_paths:
@@ -120,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
119
  - !ruby/object:Gem::Version
121
120
  version: '0'
122
121
  requirements: []
123
- rubygems_version: 3.6.7
122
+ rubygems_version: 3.6.9
124
123
  specification_version: 4
125
124
  summary: Rake task generator for managing multi-language workspaces.
126
125
  test_files: []