skippy 0.5.1.a → 0.5.2.a

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: 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