ree 1.0.5 → 1.0.6

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: e642b0a99e6592bbe30497720a4e2406de6bea0896a4f50c1bbe8bf87158e91b
4
- data.tar.gz: 6281548c7fc086a0b5dfe356bb4ac960ff538b64671d606f777561181e0b3c5a
3
+ metadata.gz: a0d23b7d6e73fd42fb81e6a2f80cae29c8ae8b7b7bace7531734bbff0aaacc4b
4
+ data.tar.gz: 71c9516f775b0e430e3b7ae180f44b8ffcaddfeed2b76f5d9e66cddf2d7b9361
5
5
  SHA512:
6
- metadata.gz: 83ed80a885c16888afb567e0675a76284642ce93ccd043a3c3c9bc2ad68bc46de12bf7b4e67417c86c4ed62ee56b163bafcf6544eaceb25316ac087df754ff53
7
- data.tar.gz: 394ce668e45e92cff42347d6a09d51871b6117a91f5e37dd0d7545c26d0a38d03f48af7e9cc8fb02d7117d443d669f51b23ea999a4d4a6a28b7b59d103986e00
6
+ metadata.gz: 348a11eec63932f9b4bbcd536438da8ffaeb05a19c5cfc0c71df9d6655d14394b9034ba2d3892e83e29e1529a101e838932f31b76bc09b5682ce230e7eacabe7
7
+ data.tar.gz: 9c73938e83e5873bc7886a7854b533136873802758fc403c76da7a45e7dd046d8905b2ba612c60034a15b8a8bfae5f65ef9a946b9098248ba401f4a26cb37691
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ree (1.0.5)
4
+ ree (1.0.6)
5
5
  commander (~> 4.6.0)
6
6
 
7
7
  GEM
@@ -9,9 +9,17 @@ GEM
9
9
  specs:
10
10
  commander (4.6.0)
11
11
  highline (~> 2.0.0)
12
+ debug (1.6.2)
13
+ irb (>= 1.3.6)
14
+ reline (>= 0.3.1)
12
15
  diff-lcs (1.5.0)
13
16
  highline (2.0.3)
17
+ io-console (0.5.11)
18
+ irb (1.4.2)
19
+ reline (>= 0.3.0)
14
20
  rake (13.0.6)
21
+ reline (0.3.1)
22
+ io-console (~> 0.5)
15
23
  rspec (3.11.0)
16
24
  rspec-core (~> 3.11.0)
17
25
  rspec-expectations (~> 3.11.0)
@@ -33,6 +41,7 @@ PLATFORMS
33
41
  x86_64-linux
34
42
 
35
43
  DEPENDENCIES
44
+ debug
36
45
  rake (~> 13.0)
37
46
  ree!
38
47
  rspec (~> 3.0)
data/exe/ree CHANGED
@@ -117,7 +117,7 @@ class ReeCliRunner
117
117
  c.syntax = 'ree gen.package_json PACKAGE_NAME'
118
118
  c.description = 'generates Package.schema.json for specific package'
119
119
  c.summary = '> ' + c.description
120
- c.example 'ree gen.packages_json PACKAGE_NAME', ''
120
+ c.example 'ree gen.package_json PACKAGE_NAME', ''
121
121
  c.option '--skip_objects', String, 'Skip generation of object schemas'
122
122
  c.option '--silence', String, 'Silence all logs'
123
123
  c.option '--project_path [ROOT_PROJECT_DIR]', String, 'Root project dir path'
@@ -140,6 +140,58 @@ class ReeCliRunner
140
140
  end
141
141
  end
142
142
 
143
+ command :"gen.schema_json" do |c|
144
+ c.syntax = 'ree gen.schema_json PACKAGE_NAME OBJECT_PATH'
145
+ c.description = 'generates Schema.json for specified object in specified package'
146
+ c.summary = '> ' + c.description
147
+ c.example 'ree gen.schema_json accounts commands/create_account_cmd.rb', ''
148
+ c.option '--silence', String, 'Silence all logs'
149
+ c.option '--project_path [ROOT_PROJECT_DIR]', String, 'Root project dir path'
150
+ c.action do |args, options|
151
+ package_name = args[0]&.to_sym
152
+ object_path = args[1]
153
+ options_hash = options.__hash__
154
+
155
+ if options_hash[:project_path]
156
+ options_hash[:project_path] = File.expand_path(options_hash[:project_path])
157
+ end
158
+
159
+ default_options = {
160
+ package_name: package_name,
161
+ object_path: object_path,
162
+ project_path: options_hash[:project_path] || File.expand_path(Dir.pwd),
163
+ silence: options_hash.has_key?(:silence)
164
+ }
165
+
166
+ Ree::CLI::GenerateObjectSchema.run(**default_options)
167
+ end
168
+ end
169
+
170
+ command :"delete.schema_json" do |c|
171
+ c.syntax = 'ree delete.schema_json OBJECT_PATH'
172
+ c.description = 'removes Schema.json for specified object '
173
+ c.summary = '> ' + c.description
174
+ c.example 'ree delete.schema_json commands/create_account_cmd.rb', ''
175
+ c.option '--silence', String, 'Silence all logs'
176
+ c.option '--project_path [ROOT_PROJECT_DIR]', String, 'Root project dir path'
177
+ c.action do |args, options|
178
+ object_path = args[0]
179
+ options_hash = options.__hash__
180
+
181
+ if options_hash[:project_path]
182
+ options_hash[:project_path] = File.expand_path(options_hash[:project_path])
183
+ end
184
+
185
+ default_options = {
186
+ object_path: object_path,
187
+ project_path: options_hash[:project_path] || File.expand_path(Dir.pwd),
188
+ silence: options_hash.has_key?(:silence)
189
+ }
190
+
191
+ Ree::CLI::DeleteObjectSchema.run(**default_options)
192
+ end
193
+ end
194
+
143
195
  command :"gen.template" do |c|
144
196
  c.syntax = "ree gen.template TEMPLATE_NAME [options]"
145
197
  c.description = "generates template from ROOT/.ree/templates folder with specified variables"
@@ -0,0 +1,33 @@
1
+ require 'fileutils'
2
+
3
+ module Ree
4
+ module CLI
5
+ class DeleteObjectSchema
6
+ class << self
7
+ def run(object_path:, project_path:, silence: false)
8
+ ENV['REE_SKIP_ENV_VARS_CHECK'] = 'true'
9
+
10
+ path = Ree.locate_packages_schema(project_path)
11
+ dir = Pathname.new(path).dirname.to_s
12
+
13
+ Ree.init(dir)
14
+
15
+ object_name = object_path.split('/')[-1].split('.').first.to_sym
16
+
17
+ puts("Deleting old #{object_name}.schema.json") if !silence
18
+
19
+ schema_path = Ree::PathHelper.object_schema_rpath(object_path)
20
+ abs_schema_path = File.join(dir, schema_path)
21
+
22
+ if File.exists?(abs_schema_path)
23
+ FileUtils.rm(abs_schema_path)
24
+
25
+ puts(" #{schema_path}: is deleted") if !silence
26
+ end
27
+
28
+ puts("done") if !silence
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,50 @@
1
+ require 'fileutils'
2
+
3
+ module Ree
4
+ module CLI
5
+ class GenerateObjectSchema
6
+ class << self
7
+ def run(package_name:, object_path:, project_path:, silence: false)
8
+ ENV['REE_SKIP_ENV_VARS_CHECK'] = 'true'
9
+
10
+ path = Ree.locate_packages_schema(project_path)
11
+ dir = Pathname.new(path).dirname.to_s
12
+
13
+ Ree.init(dir)
14
+
15
+ package_name = package_name.to_sym
16
+ object_name = object_path.split('/')[-1].split('.').first.to_sym
17
+
18
+ puts("Generating #{object_name}.schema.json in #{package_name} package") if !silence
19
+
20
+ facade = Ree.container.packages_facade
21
+ Ree.load_package(package_name)
22
+
23
+ package = facade.get_package(package_name)
24
+
25
+ if facade.has_object?(package_name, object_name)
26
+ object = facade.load_package_object(package_name, object_name)
27
+ Ree.write_object_schema(package.name, object.name)
28
+
29
+ obj_path = Ree::PathHelper.abs_object_schema_path(object)
30
+ else
31
+ file_path = File.join(dir, object_path)
32
+
33
+ if File.exists?(file_path)
34
+ facade.load_file(file_path, package_name)
35
+ facade.dump_package_schema(package_name)
36
+ Ree.write_object_schema(package_name, object_name)
37
+ else
38
+ raise Ree::Error.new("package file not found: #{file_path}")
39
+ end
40
+ end
41
+
42
+
43
+ puts(" #{object.name}: #{obj_path}") if !silence
44
+
45
+ puts("done") if !silence
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -23,11 +23,12 @@ module Ree
23
23
 
24
24
  package_name = package_name.to_sym
25
25
 
26
- Ree.container.packages_facade.load_packages_schema
27
- package = Ree.load_package(package_name)
28
- Ree.container.packages_facade.write_package_schema(package_name)
26
+ facade = Ree.container.packages_facade
27
+ facade.load_packages_schema
28
+ Ree.load_package(package_name)
29
+ facade.write_package_schema(package_name)
29
30
 
30
- package = Ree.container.packages_facade.get_package(package_name)
31
+ package = facade.get_package(package_name)
31
32
  schema_path = Ree::PathHelper.abs_package_schema_path(package)
32
33
 
33
34
  if include_objects
data/lib/ree/cli.rb CHANGED
@@ -5,6 +5,8 @@ module Ree
5
5
  autoload :Init, 'ree/cli/init'
6
6
  autoload :GeneratePackagesSchema, 'ree/cli/generate_packages_schema'
7
7
  autoload :GeneratePackageSchema, 'ree/cli/generate_package_schema'
8
+ autoload :GenerateObjectSchema, 'ree/cli/generate_object_schema'
9
+ autoload :DeleteObjectSchema, 'ree/cli/delete_object_schema'
8
10
  autoload :GeneratePackage, 'ree/cli/generate_package'
9
11
  autoload :GenerateTemplate, 'ree/cli/generate_template'
10
12
  autoload :SpecRunner, 'ree/cli/spec_runner'
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ree::Contracts
4
+ module ArgContracts
5
+ class RespondTo
6
+ extend Ree::Contracts::ArgContracts::Squarable
7
+
8
+ def initialize(*method_names)
9
+ @method_names = method_names
10
+ end
11
+
12
+ def valid?(value)
13
+ get_unrespond_list(value).empty?
14
+ end
15
+
16
+ def to_s
17
+ "RespondTo#{method_names.inspect}"
18
+ end
19
+
20
+ def message(value, name, lvl = 1)
21
+ unrespond_list = get_unrespond_list(value)
22
+ "expected to respond to #{unrespond_list.inspect}}"
23
+ end
24
+
25
+ private
26
+ def get_unrespond_list(obj)
27
+ @method_names.reject do |method|
28
+ obj.respond_to?(method)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -16,6 +16,7 @@ module Ree::Contracts
16
16
  autoload :Optblock, 'ree/contracts/arg_contracts/optblock'
17
17
  autoload :Or, 'ree/contracts/arg_contracts/or'
18
18
  autoload :RangeOf, 'ree/contracts/arg_contracts/range_of'
19
+ autoload :RespondTo, 'ree/contracts/arg_contracts/respond_to'
19
20
  autoload :SetOf, 'ree/contracts/arg_contracts/set_of'
20
21
  autoload :Splat, 'ree/contracts/arg_contracts/splat'
21
22
  autoload :SplatOf, 'ree/contracts/arg_contracts/splat_of'
@@ -60,6 +60,36 @@ class Ree::PackagesFacade
60
60
  object
61
61
  end
62
62
 
63
+ def has_object?(package_name, object_name)
64
+ package = get_loaded_package(package_name)
65
+ object = package.get_object(object_name)
66
+
67
+ !object.nil?
68
+ end
69
+
70
+ # @param [Symbol] package_name
71
+ # @return nil
72
+ def dump_package_schema(package_name)
73
+ Ree.logger.debug("dump_package_schema(:#{package_name})")
74
+
75
+ read_package_schema_json(package_name)
76
+ package = get_package(package_name)
77
+
78
+ if package.dir
79
+ schema_path = Ree::PathHelper.abs_package_schema_path(package)
80
+
81
+ if !File.exists?(schema_path)
82
+ raise Ree::Error.new("File does not exist: #{schema_path}", :invalid_path)
83
+ end
84
+
85
+ schema = Ree::PackageSchemaBuilder.new.call(package)
86
+ json = JSON.pretty_generate(schema)
87
+ File.write(schema_path, json, mode: 'w')
88
+
89
+ json
90
+ end
91
+ end
92
+
63
93
  # @param [Symbol] package_name
64
94
  # @return nil
65
95
  def write_package_schema(package_name)
data/lib/ree/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ree
4
- VERSION = "1.0.5"
4
+ VERSION = "1.0.6"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-13 00:00:00.000000000 Z
11
+ date: 2022-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 4.6.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: debug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Ree makes your ruby life happier
28
42
  email:
29
43
  - ruslan.gatiyatov@gmail.com
@@ -49,6 +63,8 @@ files:
49
63
  - lib/ree/args.rb
50
64
  - lib/ree/bean_dsl.rb
51
65
  - lib/ree/cli.rb
66
+ - lib/ree/cli/delete_object_schema.rb
67
+ - lib/ree/cli/generate_object_schema.rb
52
68
  - lib/ree/cli/generate_package.rb
53
69
  - lib/ree/cli/generate_package_schema.rb
54
70
  - lib/ree/cli/generate_packages_schema.rb
@@ -72,6 +88,7 @@ files:
72
88
  - lib/ree/contracts/arg_contracts/optblock.rb
73
89
  - lib/ree/contracts/arg_contracts/or.rb
74
90
  - lib/ree/contracts/arg_contracts/range_of.rb
91
+ - lib/ree/contracts/arg_contracts/respond_to.rb
75
92
  - lib/ree/contracts/arg_contracts/set_of.rb
76
93
  - lib/ree/contracts/arg_contracts/splat.rb
77
94
  - lib/ree/contracts/arg_contracts/splat_of.rb