tapioca 0.2.0 → 0.2.1

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: 2940efd480d72f9450f46e91e6be68bb7f7a8fe84f22d090f7919a1b119a144e
4
- data.tar.gz: c1820c41b279cd4691b610da32ec539e909578e4ea7c65314769ee128a72bf76
3
+ metadata.gz: babdc8b0494d05cbc73176f61d385b0517f418975b16bb11f63fb05f72ac163b
4
+ data.tar.gz: f0a45346b9e40a180fc3e2fc097a6a9f6a926404338d19c7af5473b7d13ef6fb
5
5
  SHA512:
6
- metadata.gz: 956798852b6962e0029ddcddb70e56595acb45f94d4d8d26b57635c90d175ed63fe77a3c5e223cadf9cc0ae780ceecb449163804771267db55f289c5e421e468
7
- data.tar.gz: 663e38a25d3d0a6093c369fae234bc7daa49d17e618605db23328df4a2820d57245c040bcdb05b535c9abece857ce0e2ce6f6eb5710fb30f1c94643ad122e471
6
+ metadata.gz: 02b8eff72f55bcaace66b791450b9c22899fa25c79db169690a7a1e886de97375c9acd6129136e7e838ea90ba2afe2a029e488fb6e43a531e100768ee88317ce
7
+ data.tar.gz: d06040c411b74d96fc3256753c06531a6c6662facde2212de4856633baeacd9aa6830509dbf9cee055f3ee736b93e55849c12485dec622d6a3a751127cc8d56f
data/README.md CHANGED
@@ -21,6 +21,7 @@ $ bundle exec tapioca
21
21
  Commands:
22
22
  tapioca generate [gem...] # generate RBIs from gems
23
23
  tapioca help [COMMAND] # Describe available commands or one specific command
24
+ tapioca init # initializes folder structure
24
25
  tapioca sync # sync RBIs to Gemfile
25
26
 
26
27
  Options:
@@ -34,6 +35,12 @@ Options:
34
35
 
35
36
  ## Usage
36
37
 
38
+ ### Initialize folder structure
39
+
40
+ Command: `tapioca init`
41
+
42
+ This will create the `sorbet/config` and `sorbet/tapioca/require.rb` files for you, if they don't exist. If any of the files already exist, they will not be changed.
43
+
37
44
  ### Generate for gems
38
45
 
39
46
  Command: `tapioca generate [gems...]`
@@ -56,8 +63,8 @@ This will sync the RBIs with the gems in the Gemfile and will add, update, and r
56
63
 
57
64
  ## Contributing
58
65
 
59
- Bug reports and pull requests are welcome on GitHub at https://github.com/Shopify/tapioca. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
66
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Shopify/tapioca. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](https://github.com/Shopify/tapioca/blob/master/CODE_OF_CONDUCT.md) code of conduct.
60
67
 
61
68
  ## License
62
69
 
63
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
70
+ The gem is available as open source under the terms of the [MIT License](https://github.com/Shopify/tapioca/blob/master/LICENSE.txt).
@@ -5,12 +5,15 @@ require 'thor'
5
5
 
6
6
  module Tapioca
7
7
  class Cli < Thor
8
+ include(Thor::Actions)
9
+
8
10
  class_option :prerequire,
9
11
  aliases: ["--pre", "-b"],
10
12
  banner: "file",
11
13
  desc: "A file to be required before Bundler.require is called"
12
14
  class_option :postrequire,
13
15
  aliases: ["--post", "-a"],
16
+ default: Generator::DEFAULT_POSTREQUIRE,
14
17
  banner: "file",
15
18
  desc: "A file to be required after Bundler.require is called"
16
19
  class_option :outdir,
@@ -29,6 +32,24 @@ module Tapioca
29
32
  banner: "gem:level",
30
33
  desc: "Overrides for typed sigils for generated gem RBIs"
31
34
 
35
+ desc "init", "initializes folder structure"
36
+ def init
37
+ create_file(Generator::SORBET_CONFIG, skip: true) do
38
+ <<~CONTENT
39
+ --dir
40
+ .
41
+ CONTENT
42
+ end
43
+ create_file(Generator::DEFAULT_POSTREQUIRE, skip: true) do
44
+ <<~CONTENT
45
+ # frozen_string_literal: true
46
+ # typed: false
47
+
48
+ # Add your extra requires here
49
+ CONTENT
50
+ end
51
+ end
52
+
32
53
  desc "generate [gem...]", "generate RBIs from gems"
33
54
  def generate(*gems)
34
55
  Tapioca.silence_warnings do
@@ -454,8 +454,8 @@ module Tapioca
454
454
 
455
455
  sig { params(constant: Module, strict: T::Boolean).returns(T::Boolean) }
456
456
  def defined_in_gem?(constant, strict: true)
457
- files = get_file_candidates(constant)
458
- files = Tapioca::ConstantLocator.files_for(constant) if files.empty?
457
+ files = Set.new(get_file_candidates(constant))
458
+ .merge(Tapioca::ConstantLocator.files_for(constant))
459
459
 
460
460
  return !strict if files.empty?
461
461
 
@@ -79,7 +79,10 @@ module Tapioca
79
79
 
80
80
  next if kind.nil? || name.nil?
81
81
 
82
- next unless %w[CLASS STATIC_FIELD].include?(kind)
82
+ # TODO: CLASS is removed since v0.4.4730 of Sorbet
83
+ # but keeping here for backward compatibility. Remove
84
+ # once the minimum version is moved past that.
85
+ next unless %w[CLASS CLASS_OR_MODULE STATIC_FIELD].include?(kind)
83
86
  next if name =~ /[<>()$]/
84
87
  next if name =~ /^[0-9]+$/
85
88
  next if name == "T::Helpers"
@@ -8,6 +8,8 @@ module Tapioca
8
8
  class Generator < ::Thor::Shell::Color
9
9
  extend(T::Sig)
10
10
 
11
+ SORBET_CONFIG = "sorbet/config"
12
+ DEFAULT_POSTREQUIRE = "sorbet/tapioca/require.rb"
11
13
  DEFAULT_OUTDIR = "sorbet/rbi/gems"
12
14
  DEFAULT_OVERRIDES = T.let({
13
15
  # ActiveSupport overrides some core methods with different signatures
@@ -38,7 +40,7 @@ module Tapioca
38
40
  def initialize(outdir: nil, prerequire: nil, postrequire: nil, command: nil, typed_overrides: nil)
39
41
  @outdir = T.let(Pathname.new(outdir || DEFAULT_OUTDIR), Pathname)
40
42
  @prerequire = T.let(prerequire, T.nilable(String))
41
- @postrequire = T.let(postrequire, T.nilable(String))
43
+ @postrequire = T.let(postrequire || DEFAULT_POSTREQUIRE, T.nilable(String))
42
44
  @command = T.let(command || default_command, String)
43
45
  @typed_overrides = T.let(typed_overrides || {}, T::Hash[String, String])
44
46
  @bundle = T.let(nil, T.nilable(Gemfile))
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Tapioca
5
- VERSION = "0.2.0"
5
+ VERSION = "0.2.1"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2019-08-15 00:00:00.000000000 Z
14
+ date: 2019-09-18 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: pry
@@ -169,7 +169,7 @@ dependencies:
169
169
  version: '2.1'
170
170
  description:
171
171
  email:
172
- - rails@shopify.com
172
+ - ruby@shopify.com
173
173
  executables:
174
174
  - tapioca
175
175
  extensions: []