skippy 0.5.1.a → 0.5.2.a

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b5027ab23b2e38af2c0ac8fb2cc2f791e5719d25b5f2e3ea05ab90974a326f4
4
- data.tar.gz: f4497bbd058f6478fbeb675921204f4ed635351a3fd2b3d01f5500ab1c872aee
3
+ metadata.gz: 423e62ba2d2d86ded8b930c691abb77aaa60edc5e8b09d87503a07ccecaba82e
4
+ data.tar.gz: 4d6b05eeef6270d4318207a94139d8d23ce24c60cc84bba24b2456413ed3ba49
5
5
  SHA512:
6
- metadata.gz: 06f649ddef3a1cd1a8b21ed1a7ba9e1f518e03d491b5539bb1d0d0785a5016ec190a8b23f012928cd657beca2b11bfb114ceaa3b7e35bd414bbd9064140b4296
7
- data.tar.gz: 3e50720776f25fc0a97ae4ca022cb039caf9d2d28acc81cd5b81edafd3d8d9b3119b0ef06c0d32530e96e874743479053f2ec1b8fe0704180d953d63ea30e954
6
+ metadata.gz: 548ceecce83de44a42adbd25e37e5393ff17982dd7fe4b2992545627d4234ec5613a06c3a9a0536fb25d2c648f6947cb14044f1831772b99b65cccfb58686ab0
7
+ data.tar.gz: ef603bdd88ca617da508651cd7700c376e86629f47d6808718dab0b8f6067d55eb645f698f1adfa6fab907375f0abdca3007f4d7059f7a401ab4bd07d61bc265
@@ -0,0 +1,48 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ main, master, dev/github-actions ]
6
+ paths-ignore:
7
+ - '**.md'
8
+ pull_request:
9
+ paths-ignore:
10
+ - '**.md'
11
+ workflow_dispatch:
12
+
13
+ permissions:
14
+ contents: read # to fetch code (actions/checkout)
15
+
16
+ jobs:
17
+ tests:
18
+ name: >-
19
+ OS ${{ matrix.os }}, Ruby ${{ matrix.ruby }}
20
+ env:
21
+ CI: true
22
+
23
+ runs-on: ${{ matrix.os }}
24
+ if: |
25
+ !( contains(github.event.pull_request.title, '[ci skip]')
26
+ || contains(github.event.pull_request.title, '[skip ci]'))
27
+ strategy:
28
+ fail-fast: false
29
+ matrix:
30
+ os: [ macos-12, windows-2022 ]
31
+ ruby: [ 2.5, 2.7, 3.1 ]
32
+
33
+ steps:
34
+ - name: Checkout source
35
+ uses: actions/checkout@v3
36
+ with:
37
+ submodules: recursive
38
+
39
+ - name: Setup Ruby
40
+ uses: ruby/setup-ruby-pkgs@v1
41
+ with:
42
+ ruby-version: ${{ matrix.ruby }}
43
+ bundler-cache: true
44
+ timeout-minutes: 10
45
+
46
+ - name: Run tests
47
+ timeout-minutes: 10
48
+ run: bundle exec rake test
data/.rubocop.yml CHANGED
@@ -5,14 +5,207 @@ require:
5
5
  - rubocop-rake
6
6
 
7
7
  AllCops:
8
+ DisplayCopNames: true
9
+ DisplayStyleGuide: true
10
+ ExtraDetails: true
11
+ TargetRubyVersion: 2.5
8
12
  Exclude:
9
13
  - 'bin/**/*'
10
14
  - 'exe/**/*'
11
15
  - 'fixtures/**/*'
12
16
  - 'tmp/**/*'
13
17
  - 'vendor/**/*'
14
- DisplayCopNames: true
15
18
 
19
+ ################################################################################
20
+ # Enabling new cops:
21
+
22
+ Gemspec/DeprecatedAttributeAssignment: # new in 1.30
23
+ Enabled: true
24
+ Gemspec/RequireMFA: # new in 1.23
25
+ Enabled: true
26
+ Layout/LineContinuationLeadingSpace: # new in 1.31
27
+ Enabled: true
28
+ Layout/LineContinuationSpacing: # new in 1.31
29
+ Enabled: true
30
+ Lint/ConstantOverwrittenInRescue: # new in 1.31
31
+ Enabled: true
32
+ Lint/DuplicateMagicComment: # new in 1.37
33
+ Enabled: true
34
+ Lint/NonAtomicFileOperation: # new in 1.31
35
+ Enabled: true
36
+ Lint/RefinementImportMethods: # new in 1.27
37
+ Enabled: true
38
+ Lint/RequireRangeParentheses: # new in 1.32
39
+ Enabled: true
40
+ Lint/UselessRuby2Keywords: # new in 1.23
41
+ Enabled: true
42
+ Naming/BlockForwarding: # new in 1.24
43
+ Enabled: true
44
+ Security/CompoundHash: # new in 1.28
45
+ Enabled: true
46
+ Style/ArrayIntersect: # new in 1.40
47
+ Enabled: true
48
+ Style/EmptyHeredoc: # new in 1.32
49
+ Enabled: true
50
+ Style/EnvHome: # new in 1.29
51
+ Enabled: true
52
+ Style/FetchEnvVar: # new in 1.28
53
+ Enabled: true
54
+ Style/FileRead: # new in 1.24
55
+ Enabled: true
56
+ Style/FileWrite: # new in 1.24
57
+ Enabled: true
58
+ Style/MagicCommentFormat: # new in 1.35
59
+ Enabled: true
60
+ Style/MapCompactWithConditionalBlock: # new in 1.30
61
+ Enabled: true
62
+ Style/MapToHash: # new in 1.24
63
+ Enabled: true
64
+ Style/NestedFileDirname: # new in 1.26
65
+ Enabled: true
66
+ Style/ObjectThen: # new in 1.28
67
+ Enabled: true
68
+ Style/OpenStructUse: # new in 1.23
69
+ Enabled: true
70
+ Style/OperatorMethodCall: # new in 1.37
71
+ Enabled: true
72
+ Style/RedundantConstantBase: # new in 1.40
73
+ Enabled: true
74
+ Style/RedundantEach: # new in 1.38
75
+ Enabled: true
76
+ Style/RedundantInitialize: # new in 1.27
77
+ Enabled: true
78
+ Style/RedundantStringEscape: # new in 1.37
79
+ Enabled: true
80
+
81
+ Layout/LineEndStringConcatenationIndentation: # new in 1.18
82
+ Enabled: true
83
+ Layout/SpaceBeforeBrackets: # new in 1.7
84
+ Enabled: true
85
+ Lint/AmbiguousAssignment: # new in 1.7
86
+ Enabled: true
87
+ Lint/AmbiguousOperatorPrecedence: # new in 1.21
88
+ Enabled: true
89
+ Lint/AmbiguousRange: # new in 1.19
90
+ Enabled: true
91
+ Lint/DeprecatedConstants: # new in 1.8
92
+ Enabled: true
93
+ Lint/DuplicateBranch: # new in 1.3
94
+ Enabled: true
95
+ Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
96
+ Enabled: true
97
+ Lint/EmptyBlock: # new in 1.1
98
+ Enabled: true
99
+ Lint/EmptyClass: # new in 1.3
100
+ Enabled: true
101
+ Lint/EmptyInPattern: # new in 1.16
102
+ Enabled: true
103
+ Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
104
+ Enabled: true
105
+ Lint/LambdaWithoutLiteralBlock: # new in 1.8
106
+ Enabled: true
107
+ Lint/NoReturnInBeginEndBlocks: # new in 1.2
108
+ Enabled: true
109
+ Lint/NumberedParameterAssignment: # new in 1.9
110
+ Enabled: true
111
+ Lint/OrAssignmentToConstant: # new in 1.9
112
+ Enabled: true
113
+ Lint/RedundantDirGlobSort: # new in 1.8
114
+ Enabled: true
115
+ Lint/RequireRelativeSelfPath: # new in 1.22
116
+ Enabled: true
117
+ Lint/SymbolConversion: # new in 1.9
118
+ Enabled: true
119
+ Lint/ToEnumArguments: # new in 1.1
120
+ Enabled: true
121
+ Lint/TripleQuotes: # new in 1.9
122
+ Enabled: true
123
+ Lint/UnexpectedBlockArity: # new in 1.5
124
+ Enabled: true
125
+ Lint/UnmodifiedReduceAccumulator: # new in 1.1
126
+ Enabled: true
127
+ Security/IoMethods: # new in 1.22
128
+ Enabled: true
129
+ Style/ArgumentsForwarding: # new in 1.1
130
+ Enabled: true
131
+ Style/CollectionCompact: # new in 1.2
132
+ Enabled: true
133
+ Style/DocumentDynamicEvalDefinition: # new in 1.1
134
+ Enabled: true
135
+ Style/EndlessMethod: # new in 1.8
136
+ Enabled: true
137
+ Style/HashConversion: # new in 1.10
138
+ Enabled: true
139
+ Style/HashExcept: # new in 1.7
140
+ Enabled: true
141
+ Style/IfWithBooleanLiteralBranches: # new in 1.9
142
+ Enabled: true
143
+ Style/InPatternThen: # new in 1.16
144
+ Enabled: true
145
+ Style/MultilineInPatternThen: # new in 1.16
146
+ Enabled: true
147
+ Style/NegatedIfElseCondition: # new in 1.2
148
+ Enabled: true
149
+ Style/NilLambda: # new in 1.3
150
+ Enabled: true
151
+ Style/NumberedParameters: # new in 1.22
152
+ Enabled: true
153
+ Style/NumberedParametersLimit: # new in 1.22
154
+ Enabled: true
155
+ Style/QuotedSymbols: # new in 1.16
156
+ Enabled: true
157
+ Style/RedundantArgument: # new in 1.4
158
+ Enabled: true
159
+ Style/RedundantSelfAssignmentBranch: # new in 1.19
160
+ Enabled: true
161
+ Style/SelectByRegexp: # new in 1.22
162
+ Enabled: true
163
+ Style/StringChars: # new in 1.12
164
+ Enabled: true
165
+ Style/SwapValues: # new in 1.1
166
+ Enabled: true
167
+
168
+ Minitest/AssertionInLifecycleHook: # new in 0.10
169
+ Enabled: true
170
+ Minitest/AssertKindOf: # new in 0.10
171
+ Enabled: true
172
+ Minitest/AssertOutput: # new in 0.10
173
+ Enabled: true
174
+ Minitest/AssertPathExists: # new in 0.10
175
+ Enabled: true
176
+ Minitest/AssertSilent: # new in 0.10
177
+ Enabled: true
178
+ Minitest/LiteralAsActualArgument: # new in 0.10
179
+ Enabled: true
180
+ Minitest/RefuteInDelta: # new in 0.10
181
+ Enabled: true
182
+ Minitest/RefuteKindOf: # new in 0.10
183
+ Enabled: true
184
+ Minitest/RefutePathExists: # new in 0.10
185
+ Enabled: true
186
+ Minitest/TestMethodName: # new in 0.10
187
+ Enabled: true
188
+ Minitest/UnreachableAssertion: # new in 0.14
189
+ Enabled: true
190
+ Minitest/UnspecifiedException: # new in 0.10
191
+ Enabled: true
192
+ Minitest/AssertPredicate: # new in 0.18
193
+ Enabled: true
194
+ Minitest/AssertRaisesCompoundBody: # new in 0.21
195
+ Enabled: true
196
+ Minitest/AssertRaisesWithRegexpArgument: # new in 0.22
197
+ Enabled: true
198
+ Minitest/DuplicateTestRun: # new in 0.19
199
+ Enabled: true
200
+ Minitest/RefutePredicate: # new in 0.18
201
+ Enabled: true
202
+ Minitest/SkipEnsure: # new in 0.20
203
+ Enabled: true
204
+ Minitest/SkipWithoutReason: # new in 0.24
205
+ Enabled: true
206
+
207
+ ################################################################################
208
+ # Overrides:
16
209
 
17
210
  Layout/ArgumentAlignment:
18
211
  EnforcedStyle: with_fixed_indentation
@@ -122,6 +315,9 @@ Style/IfUnlessModifier:
122
315
  Style/ModuleFunction:
123
316
  Enabled: false
124
317
 
318
+ Style/MultilineIfModifier:
319
+ Enabled: false
320
+
125
321
  # Excluding some files that copies the Thor implementation.
126
322
  # TODO: Investigate if Thor changed their implementation.
127
323
  Style/OptionalBooleanParameter:
@@ -152,124 +348,9 @@ Minitest/AssertInDelta:
152
348
  Minitest/AssertWithExpectedArgument:
153
349
  Enabled: false
154
350
 
351
+ Minitest/EmptyLineBeforeAssertionMethods:
352
+ Enabled: false
353
+
155
354
  # No such thing as too many assertions.
156
355
  Minitest/MultipleAssertions:
157
356
  Enabled: false
158
-
159
-
160
- ################################################################################
161
- # Enabling new cops:
162
-
163
- Gemspec/DateAssignment: # new in 1.10
164
- Enabled: true
165
- Layout/LineEndStringConcatenationIndentation: # new in 1.18
166
- Enabled: true
167
- Layout/SpaceBeforeBrackets: # new in 1.7
168
- Enabled: true
169
- Lint/AmbiguousAssignment: # new in 1.7
170
- Enabled: true
171
- Lint/AmbiguousOperatorPrecedence: # new in 1.21
172
- Enabled: true
173
- Lint/AmbiguousRange: # new in 1.19
174
- Enabled: true
175
- Lint/DeprecatedConstants: # new in 1.8
176
- Enabled: true
177
- Lint/DuplicateBranch: # new in 1.3
178
- Enabled: true
179
- Lint/DuplicateRegexpCharacterClassElement: # new in 1.1
180
- Enabled: true
181
- Lint/EmptyBlock: # new in 1.1
182
- Enabled: true
183
- Lint/EmptyClass: # new in 1.3
184
- Enabled: true
185
- Lint/EmptyInPattern: # new in 1.16
186
- Enabled: true
187
- Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
188
- Enabled: true
189
- Lint/LambdaWithoutLiteralBlock: # new in 1.8
190
- Enabled: true
191
- Lint/NoReturnInBeginEndBlocks: # new in 1.2
192
- Enabled: true
193
- Lint/NumberedParameterAssignment: # new in 1.9
194
- Enabled: true
195
- Lint/OrAssignmentToConstant: # new in 1.9
196
- Enabled: true
197
- Lint/RedundantDirGlobSort: # new in 1.8
198
- Enabled: true
199
- Lint/RequireRelativeSelfPath: # new in 1.22
200
- Enabled: true
201
- Lint/SymbolConversion: # new in 1.9
202
- Enabled: true
203
- Lint/ToEnumArguments: # new in 1.1
204
- Enabled: true
205
- Lint/TripleQuotes: # new in 1.9
206
- Enabled: true
207
- Lint/UnexpectedBlockArity: # new in 1.5
208
- Enabled: true
209
- Lint/UnmodifiedReduceAccumulator: # new in 1.1
210
- Enabled: true
211
- Security/IoMethods: # new in 1.22
212
- Enabled: true
213
- Style/ArgumentsForwarding: # new in 1.1
214
- Enabled: true
215
- Style/CollectionCompact: # new in 1.2
216
- Enabled: true
217
- Style/DocumentDynamicEvalDefinition: # new in 1.1
218
- Enabled: true
219
- Style/EndlessMethod: # new in 1.8
220
- Enabled: true
221
- Style/HashConversion: # new in 1.10
222
- Enabled: true
223
- Style/HashExcept: # new in 1.7
224
- Enabled: true
225
- Style/IfWithBooleanLiteralBranches: # new in 1.9
226
- Enabled: true
227
- Style/InPatternThen: # new in 1.16
228
- Enabled: true
229
- Style/MultilineInPatternThen: # new in 1.16
230
- Enabled: true
231
- Style/NegatedIfElseCondition: # new in 1.2
232
- Enabled: true
233
- Style/NilLambda: # new in 1.3
234
- Enabled: true
235
- Style/NumberedParameters: # new in 1.22
236
- Enabled: true
237
- Style/NumberedParametersLimit: # new in 1.22
238
- Enabled: true
239
- Style/QuotedSymbols: # new in 1.16
240
- Enabled: true
241
- Style/RedundantArgument: # new in 1.4
242
- Enabled: true
243
- Style/RedundantSelfAssignmentBranch: # new in 1.19
244
- Enabled: true
245
- Style/SelectByRegexp: # new in 1.22
246
- Enabled: true
247
- Style/StringChars: # new in 1.12
248
- Enabled: true
249
- Style/SwapValues: # new in 1.1
250
- Enabled: true
251
-
252
- Minitest/AssertionInLifecycleHook: # new in 0.10
253
- Enabled: true
254
- Minitest/AssertKindOf: # new in 0.10
255
- Enabled: true
256
- Minitest/AssertOutput: # new in 0.10
257
- Enabled: true
258
- Minitest/AssertPathExists: # new in 0.10
259
- Enabled: true
260
- Minitest/AssertSilent: # new in 0.10
261
- Enabled: true
262
- Minitest/LiteralAsActualArgument: # new in 0.10
263
- Enabled: true
264
- Minitest/RefuteInDelta: # new in 0.10
265
- Enabled: true
266
- Minitest/RefuteKindOf: # new in 0.10
267
- Enabled: true
268
- Minitest/RefutePathExists: # new in 0.10
269
- Enabled: true
270
- Minitest/TestMethodName: # new in 0.10
271
- Enabled: true
272
- Minitest/UnreachableAssertion: # new in 0.14
273
- Enabled: true
274
- Minitest/UnspecifiedException: # new in 0.10
275
- Enabled: true
data/Gemfile CHANGED
@@ -5,11 +5,40 @@ source 'https://rubygems.org'
5
5
  # Specify your gem's dependencies in skippy.gemspec
6
6
  gemspec
7
7
 
8
+ # Even if Bundler is told to install only one of these groups, it appear to
9
+ # process the gem requirements of all groups. This would cause Bundler to fail
10
+ # on CI builds where the Ruby version was older than what some of the gems in
11
+ # the skipped groups required. To work around that the groups are conditionally
12
+ # evaluated such that in CI environment only the minimal set of gems are
13
+ # processed by Bundler.
14
+ IS_CI_ENVIRONMENT = ENV.key?('CI')
15
+
8
16
  group :development do
9
- gem 'pry'
17
+ gem 'debase', '~> 0.2' # VSCode debugging
18
+ gem 'pry' # TODO: What was this used for?
19
+ gem 'ruby-debug-ide', '~> 0.7' # VSCode debugging
20
+ gem 'solargraph' # VSCode IDE support
21
+ end unless IS_CI_ENVIRONMENT
22
+
23
+ group :test do
24
+ gem 'minitest', '~> 5.15.0' # Regression in 5.16.0 causing failure on Ruby 2.7
25
+ gem 'minitest-reporters', '~> 1.5'
26
+ gem 'rake', '~> 13.0'
27
+ gem 'webmock', '~> 3.1'
28
+ end
29
+
30
+ group :integration_test do
31
+ gem 'aruba', '~> 2.0'
32
+ end unless IS_CI_ENVIRONMENT
33
+
34
+ # group :documentation do
35
+ # gem 'commonmarker', '~> 0.23'
36
+ # gem 'yard', '~> 0.9'
37
+ # end unless IS_CI_ENVIRONMENT
38
+
39
+ group :analysis do
10
40
  gem 'rubocop', '~> 1.0', require: false
11
41
  gem 'rubocop-minitest', '~> 0.15', require: false
12
42
  gem 'rubocop-performance', '~> 1.0', require: false
13
43
  gem 'rubocop-rake', '~> 0.6', require: false
14
- gem 'webmock', '~> 3.1'
15
- end
44
+ end unless IS_CI_ENVIRONMENT
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2016 Thomas Thomassen
3
+ Copyright (c) 2016-2022 Thomas Thomassen
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Skippy
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/skippy.svg)](https://badge.fury.io/rb/skippy) [![Build status](https://ci.appveyor.com/api/projects/status/qu5nk3t7g5oaymyx/branch/master?svg=true)](https://ci.appveyor.com/project/thomthom/skippy/branch/master)
3
+ [![Gem Version](https://badge.fury.io/rb/skippy.svg)](https://badge.fury.io/rb/skippy) ![Build status](https://github.com/thomthom/skippy/actions/workflows/tests.yaml/badge.svg?branch=master)
4
4
 
5
5
  Skippy is a Command Line Interface which aims to automate common developer tasks for SketchUp Ruby extension development.
6
6
 
data/Rakefile CHANGED
@@ -3,13 +3,14 @@
3
3
  require 'bundler/gem_tasks'
4
4
  require 'rake/testtask'
5
5
 
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << 'test'
8
- t.libs << 'lib'
9
- t.test_files = FileList['test/**/*_test.rb']
6
+ Rake::TestTask.new(:test) do |task|
7
+ task.libs << 'test'
8
+ # task.libs << "test/helpers"
9
+ task.libs << 'lib'
10
+ task.test_files = FileList['test/**/*_test.rb']
10
11
  # Turning off because Rake 11 >= turns warning on by default.
11
12
  # TODO: Clean up the warnings coming from this project and enable.
12
- t.warning = false
13
+ task.warning = false
13
14
  end
14
15
 
15
16
  task default: :test
@@ -85,7 +85,7 @@ class Skippy::GitLibraryInstaller < Skippy::LibraryInstaller
85
85
  target = path.join(source.lib_path)
86
86
  library = Skippy::Library.new(target)
87
87
  unless library.version.casecmp(tag.name).zero?
88
- warning "skippy.json version (#{library.version}) differ from "\
88
+ warning "skippy.json version (#{library.version}) differ from " \
89
89
  "tagged version (#{tag.name})"
90
90
  end
91
91
  nil
@@ -7,6 +7,7 @@ require 'uri'
7
7
 
8
8
  require 'skippy/error'
9
9
  require 'skippy/library'
10
+ require 'skippy/os'
10
11
 
11
12
  class Skippy::LibrarySource
12
13
 
@@ -93,6 +94,8 @@ class Skippy::LibrarySource
93
94
 
94
95
  # @param [String] source
95
96
  def resolve(source)
97
+ os = Skippy::OS.new
98
+ source = os.normalize_path(source)
96
99
  if git_source?(source)
97
100
  resolve_from_git_uri(source)
98
101
  elsif lib_name?(source)
@@ -13,6 +13,7 @@ require 'skippy/error'
13
13
  require 'skippy/lib_source'
14
14
  require 'skippy/library'
15
15
  require 'skippy/project'
16
+ require 'skippy/sorted_set'
16
17
 
17
18
  module Skippy
18
19
 
@@ -107,7 +108,7 @@ class Skippy::LibraryManager
107
108
  raise Skippy::Project::ProjectNotSavedError unless project.exist?
108
109
 
109
110
  library = lib.is_a?(Skippy::Library) ? lib : find_library(lib)
110
- raise Skippy::LibraryNotFound, 'Library not found' if library.nil?
111
+ raise Skippy::LibraryNotFound, "Library not found: #{lib}" if library.nil?
111
112
 
112
113
  # Uninstall modules first - using the module manager.
113
114
  vendor_path = project.modules.vendor_path
@@ -151,6 +152,8 @@ class Skippy::LibraryManager
151
152
  rescue Skippy::Library::LibraryNotFoundError => error
152
153
  # TODO: Revisit how to handle this.
153
154
  warn "Unable to load library: #{error.message}"
155
+ warn "Project: #{project.path}"
156
+ warn lib_config.inspect
154
157
  nil
155
158
  end
156
159
  }.compact
@@ -8,6 +8,7 @@ require 'set'
8
8
  require 'skippy/helpers/file'
9
9
  require 'skippy/lib_module'
10
10
  require 'skippy/project'
11
+ require 'skippy/sorted_set'
11
12
 
12
13
  class Skippy::ModuleManager
13
14
 
@@ -28,8 +28,14 @@ class Skippy::OSCommon
28
28
  # @param [String] path
29
29
  # @return [Integer, nil]
30
30
  def sketchup_version_from_path(path)
31
- match = File.basename(path).match(/[0-9.]+/)
31
+ match = File.basename(normalize_path(path)).match(/[0-9.]+/)
32
32
  match ? match[0].to_i : nil
33
33
  end
34
34
 
35
+ # @param [String] path
36
+ # @return [String]
37
+ def normalize_path(path)
38
+ path.tr('\\', '/')
39
+ end
40
+
35
41
  end
data/lib/skippy/os/win.rb CHANGED
@@ -11,7 +11,7 @@ class Skippy::OSWin < Skippy::OSCommon
11
11
  SYSTEM_32BIT = ENV['ProgramFiles(x86)'].nil? && ENV['ProgramW6432'].nil?
12
12
  SYSTEM_64BIT = !SYSTEM_32BIT
13
13
 
14
- PROGRAM_FILES_64BIT = File.expand_path(ENV['ProgramW6432'])
14
+ PROGRAM_FILES_64BIT = File.expand_path(ENV.fetch('ProgramW6432'))
15
15
 
16
16
  # @param [String] executable_path
17
17
  def launch_app(executable_path, *args)
@@ -49,10 +49,10 @@ class Skippy::OSWin < Skippy::OSCommon
49
49
  def program_files_paths
50
50
  paths = []
51
51
  if SYSTEM_64BIT
52
- paths << File.expand_path(ENV['ProgramFiles(x86)'])
53
- paths << File.expand_path(ENV['ProgramW6432'])
52
+ paths << File.expand_path(ENV.fetch('ProgramFiles(x86)'))
53
+ paths << File.expand_path(ENV.fetch('ProgramW6432'))
54
54
  else
55
- paths << File.expand_path(ENV['ProgramFiles'])
55
+ paths << File.expand_path(ENV.fetch('ProgramFiles'))
56
56
  end
57
57
  paths
58
58
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ if RUBY_VERSION.to_i > 2
4
+ require 'sorted_set'
5
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Skippy
4
4
 
5
- VERSION = '0.5.1.a'
5
+ VERSION = '0.5.2.a'
6
6
 
7
7
  end
data/skippy.gemspec CHANGED
@@ -26,10 +26,6 @@ Gem::Specification.new do |spec|
26
26
 
27
27
  spec.add_dependency 'git', '~> 1.3'
28
28
  spec.add_dependency 'naturally', '~> 2.1'
29
+ spec.add_dependency 'sorted_set', '~> 1.0'
29
30
  spec.add_dependency 'thor', '>= 0.19', '< 2.0'
30
-
31
- spec.add_development_dependency 'bundler', '>= 1.15.0', '< 3.0'
32
- spec.add_development_dependency 'rake', '~> 12.3.3'
33
- spec.add_development_dependency 'minitest', '~> 5.0'
34
- spec.add_development_dependency 'aruba', '~> 1.0'
35
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skippy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1.a
4
+ version: 0.5.2.a
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Thomassen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-09 00:00:00.000000000 Z
11
+ date: 2022-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: git
@@ -39,87 +39,39 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.1'
41
41
  - !ruby/object:Gem::Dependency
42
- name: thor
42
+ name: sorted_set
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0.19'
48
- - - "<"
45
+ - - "~>"
49
46
  - !ruby/object:Gem::Version
50
- version: '2.0'
47
+ version: '1.0'
51
48
  type: :runtime
52
49
  prerelease: false
53
50
  version_requirements: !ruby/object:Gem::Requirement
54
51
  requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: '0.19'
58
- - - "<"
52
+ - - "~>"
59
53
  - !ruby/object:Gem::Version
60
- version: '2.0'
54
+ version: '1.0'
61
55
  - !ruby/object:Gem::Dependency
62
- name: bundler
56
+ name: thor
63
57
  requirement: !ruby/object:Gem::Requirement
64
58
  requirements:
65
59
  - - ">="
66
60
  - !ruby/object:Gem::Version
67
- version: 1.15.0
61
+ version: '0.19'
68
62
  - - "<"
69
63
  - !ruby/object:Gem::Version
70
- version: '3.0'
71
- type: :development
64
+ version: '2.0'
65
+ type: :runtime
72
66
  prerelease: false
73
67
  version_requirements: !ruby/object:Gem::Requirement
74
68
  requirements:
75
69
  - - ">="
76
70
  - !ruby/object:Gem::Version
77
- version: 1.15.0
71
+ version: '0.19'
78
72
  - - "<"
79
73
  - !ruby/object:Gem::Version
80
- version: '3.0'
81
- - !ruby/object:Gem::Dependency
82
- name: rake
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: 12.3.3
88
- type: :development
89
- prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- requirements:
92
- - - "~>"
93
- - !ruby/object:Gem::Version
94
- version: 12.3.3
95
- - !ruby/object:Gem::Dependency
96
- name: minitest
97
- requirement: !ruby/object:Gem::Requirement
98
- requirements:
99
- - - "~>"
100
- - !ruby/object:Gem::Version
101
- version: '5.0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: '5.0'
109
- - !ruby/object:Gem::Dependency
110
- name: aruba
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: '1.0'
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: '1.0'
74
+ version: '2.0'
123
75
  description: Automate common tasks for SketchUp extension development, including managing
124
76
  library dependencies.
125
77
  email:
@@ -129,8 +81,8 @@ executables:
129
81
  extensions: []
130
82
  extra_rdoc_files: []
131
83
  files:
132
- - ".appveyor.yml"
133
84
  - ".editorconfig"
85
+ - ".github/workflows/tests.yaml"
134
86
  - ".gitignore"
135
87
  - ".gitmodules"
136
88
  - ".idea/.rakeTasks"
@@ -234,13 +186,14 @@ files:
234
186
  - lib/skippy/os/win.rb
235
187
  - lib/skippy/project.rb
236
188
  - lib/skippy/sketchup/app.rb
189
+ - lib/skippy/sorted_set.rb
237
190
  - lib/skippy/version.rb
238
191
  - skippy.gemspec
239
192
  homepage: https://github.com/thomthom/skippy
240
193
  licenses:
241
194
  - MIT
242
195
  metadata: {}
243
- post_install_message:
196
+ post_install_message:
244
197
  rdoc_options: []
245
198
  require_paths:
246
199
  - lib
@@ -255,8 +208,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
208
  - !ruby/object:Gem::Version
256
209
  version: 1.3.1
257
210
  requirements: []
258
- rubygems_version: 3.0.3
259
- signing_key:
211
+ rubygems_version: 3.1.6
212
+ signing_key:
260
213
  specification_version: 4
261
214
  summary: CLI development tool for SketchUp extensions.
262
215
  test_files: []
data/.appveyor.yml DELETED
@@ -1,35 +0,0 @@
1
- version: "{build}-{branch}"
2
-
3
- branches:
4
- only:
5
- - master
6
- - dev-appveyor
7
-
8
- cache:
9
- - vendor/bundle
10
-
11
- environment:
12
- matrix:
13
- - RUBY_VERSION: 25
14
- - RUBY_VERSION: 26
15
-
16
- install:
17
- - set PATH=C:\Ruby%RUBY_VERSION%\bin;%PATH%
18
- # - gem update --no-document --system 2.7.8
19
- # - gem install bundler --no-document --version="<3.0.0"
20
- #
21
- # https://github.com/ruby/psych/issues/519
22
- - gem uninstall psych # Workaround bug. (https://stackoverflow.com/a/69088551)
23
- - bundle config --local path vendor/bundle
24
- - bundle install
25
- - git submodule update --init --recursive
26
-
27
- build: off
28
-
29
- before_test:
30
- - ruby -v
31
- - gem -v
32
- - bundle -v
33
-
34
- test_script:
35
- - bundle exec rake