ree 1.0.5 → 1.0.7

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: e642b0a99e6592bbe30497720a4e2406de6bea0896a4f50c1bbe8bf87158e91b
4
- data.tar.gz: 6281548c7fc086a0b5dfe356bb4ac960ff538b64671d606f777561181e0b3c5a
3
+ metadata.gz: c32f060df0bf1a9a76c62bdd35b60b272ec149324aaf19c7a0b4f5f63c1d3c82
4
+ data.tar.gz: 89ac6e401839330e4f54cb3ec15cc2df8d863c15a1ef817d2bac6c373d939932
5
5
  SHA512:
6
- metadata.gz: 83ed80a885c16888afb567e0675a76284642ce93ccd043a3c3c9bc2ad68bc46de12bf7b4e67417c86c4ed62ee56b163bafcf6544eaceb25316ac087df754ff53
7
- data.tar.gz: 394ce668e45e92cff42347d6a09d51871b6117a91f5e37dd0d7545c26d0a38d03f48af7e9cc8fb02d7117d443d669f51b23ea999a4d4a6a28b7b59d103986e00
6
+ metadata.gz: b2a03832d8f24ea278089396e14629f2cdfb40c2b9728cdddff2a5ebec8843edbb3acf03fc591941e9a5f46db844cf42055336786602d08900777ac5138c1e76
7
+ data.tar.gz: 595b8a13b3816096ab458ca3bcefcbca4185841391e5d82a627b53a7cea0cb14fd0f61a45a00600dbb5d83778b3d2c7cd674dbdcf342ff719c1294fa61af97fb
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.7)
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,53 @@
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
+
37
+ if facade.has_object?(package_name, object_name)
38
+ Ree.write_object_schema(package_name, object_name)
39
+ end
40
+ else
41
+ raise Ree::Error.new("package file not found: #{file_path}")
42
+ end
43
+ end
44
+
45
+
46
+ puts(" #{object.name}: #{obj_path}") if !silence
47
+
48
+ puts("done") if !silence
49
+ end
50
+ end
51
+ end
52
+ end
53
+ 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.7"
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.7
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