dev_scripts 0.1.3 → 0.1.5

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
- SHA256:
3
- metadata.gz: aa031ba0e29ce35de97fd224f4ada87daabdf518546b623550120c1217e1e60b
4
- data.tar.gz: b14f3d423592f05587d9e19b56685674bf96d51aadc43c9c0d5562ab13560ccd
2
+ SHA1:
3
+ metadata.gz: 49dc0985139ae92c819660701caef50acb6abf49
4
+ data.tar.gz: 46b16c970e4075f5c40ab683fa99634a2377010f
5
5
  SHA512:
6
- metadata.gz: 8385065080df3aeedfaff17740642e2d991e1201eb8f4f3c30609e79e726049137b97a89bf3abe75768a98b106ea614a52fadb5b024fa472355d74f460b4f503
7
- data.tar.gz: d8d067413a5ae99d99a1c2ad22b4f2db4814a02aa77230952c1bc8ba736b7315c831afd51d838d1125b0ecfa91ac0076d1315ccaa41c72a5ff813c2152bbfd97
6
+ metadata.gz: 3782f648e1676fdfc9211f501603a859e983b14f2f54224eaf32c544b61f9a8671043207744bc3b881827a98eee45770e7c0dd2027c8fd9142fa2bac87802086
7
+ data.tar.gz: e297bf4c889877dbc6218b29eb585bc40fa92986b75a419afbaf78f2adb29e3d114aef4c245c51d456963db3e7eaa8ed66f7a9647752d81555e7cbb5db12c96e
data/.gitignore CHANGED
@@ -6,6 +6,10 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /dev_scripts/
10
+ /lib/dev_scripts/scripts/open_controller_file.rb
11
+ /lib/dev_scripts/scripts/open_shared_context_file.rb
12
+ /lib/dev_scripts/scripts/remove_file.rb
9
13
 
10
14
  # rspec failure tracking
11
15
  .rspec_status
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "label": "open spec",
6
+ "type": "shell",
7
+ "command": "dev_scripts open_spec_file ${relativeFile}",
8
+ "problemMatcher": []
9
+ }
10
+ ]
11
+ }
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dev_scripts (0.1.1)
4
+ dev_scripts (0.1.5)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -12,6 +12,7 @@ GEM
12
12
  minitest (~> 5.1)
13
13
  tzinfo (~> 1.1)
14
14
  zeitwerk (~> 2.2)
15
+ byebug (11.0.1)
15
16
  coderay (1.1.2)
16
17
  concurrent-ruby (1.1.5)
17
18
  diff-lcs (1.3)
@@ -46,6 +47,9 @@ GEM
46
47
  pry (0.12.2)
47
48
  coderay (~> 1.1.0)
48
49
  method_source (~> 0.9.0)
50
+ pry-byebug (3.7.0)
51
+ byebug (~> 11.0)
52
+ pry (~> 0.10)
49
53
  rake (10.5.0)
50
54
  rb-fsevent (0.10.3)
51
55
  rb-inotify (0.10.0)
@@ -80,6 +84,7 @@ DEPENDENCIES
80
84
  guard
81
85
  guard-rspec
82
86
  pry
87
+ pry-byebug
83
88
  rake (~> 10.0)
84
89
  rspec (~> 3.0)
85
90
 
data/dev_scripts.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rake", "~> 10.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
26
26
  spec.add_development_dependency "pry"
27
+ spec.add_development_dependency "pry-byebug"
27
28
  spec.add_development_dependency "guard"
28
29
  spec.add_development_dependency "guard-rspec"
29
30
  spec.add_development_dependency "activesupport"
@@ -0,0 +1,111 @@
1
+ module DevScripts
2
+ class Script
3
+ class ScriptNotRegistered < StandardError
4
+ def initialize(script_name)
5
+ super "#{script_name} not registered"
6
+ end
7
+ end
8
+
9
+ class << self
10
+ def scripts
11
+ @scripts ||= []
12
+ end
13
+
14
+ def clear_scripts
15
+ @scripts = []
16
+ end
17
+
18
+ def define_script(script_name, &block)
19
+ scripts << new(script_name: script_name, &block)
20
+ end
21
+
22
+ def execute(args)
23
+ script_name, *rest = args
24
+
25
+ script_to_execute = scripts.find { |script| script.name == script_name.to_sym }
26
+
27
+ if script_to_execute
28
+ begin
29
+ script_to_execute.run(rest)
30
+ ensure
31
+ scripts[scripts.index(script_to_execute)] = script_to_execute.duplicate
32
+ end
33
+ else
34
+ raise ScriptNotRegistered.new(script_name)
35
+ end
36
+ end
37
+ end
38
+
39
+ attr_reader :name
40
+
41
+ def initialize(script_name:, &block)
42
+ @name = script_name
43
+ @block = block
44
+ @base = block.binding.receiver
45
+ @run_args = []
46
+ end
47
+
48
+ def run(args)
49
+ @run_args = args
50
+
51
+ instance_eval(&block)
52
+ end
53
+
54
+ def duplicate
55
+ self.class.new(script_name: name, &block)
56
+ end
57
+
58
+ private
59
+
60
+ attr_reader :block, :base, :run_args, :arg_names_to_args, :before_block
61
+
62
+ def let(name, &block)
63
+ define_singleton_method(name) do
64
+ found_value = instance_variable_get("@#{name}")
65
+ return found_value unless found_value.nil?
66
+
67
+ instance_variable_set("@#{name}", instance_eval(&block))
68
+ end
69
+ end
70
+
71
+ def before(&block)
72
+ @before_block = block
73
+ end
74
+
75
+ def execute(&block)
76
+ instance_eval(&before_block) if before_block
77
+
78
+ instance_eval(&block)
79
+ end
80
+
81
+ def args(*arg_names)
82
+ arg_names.each_with_index do |arg_name, index|
83
+ define_singleton_method(arg_name) do
84
+ found_value = instance_variable_get("@#{arg_name}")
85
+
86
+ return found_value unless found_value.nil?
87
+
88
+ instance_variable_set("@#{arg_name}", run_args[index])
89
+ end
90
+ end
91
+ end
92
+
93
+ def create_file_in_editor(file_path_to_open, &file_content_block)
94
+ File.open(file_path_to_open, 'w') do |file|
95
+ file.write(instance_eval(&file_content_block))
96
+ end
97
+ rescue Errno::ENOENT
98
+ Dir.mkdir file_path_to_open.split('/')[0..-2].join('/')
99
+
100
+ retry
101
+ end
102
+
103
+ def open_file_in_editor(file_path_to_open)
104
+ system "code -r #{file_path_to_open}"
105
+ end
106
+
107
+ def print_message(message)
108
+ puts message
109
+ end
110
+ end
111
+ end
@@ -1,3 +1,10 @@
1
+ require 'dev_scripts/script'
2
+
3
+ class AlreadyInASpecFileError < StandardError
4
+ end
5
+
6
+ ALREADY_IN_SPEC_FILE_MESSAGE = 'Already in Spec File'
7
+
1
8
  DevScripts::Script.define_script :open_spec_file do
2
9
  args :file_path
3
10
 
@@ -5,6 +12,10 @@ DevScripts::Script.define_script :open_spec_file do
5
12
  !found_file_path.nil?
6
13
  end
7
14
 
15
+ def already_in_a_spec_file?
16
+ !(file_path =~ /_spec.rb\Z/).nil?
17
+ end
18
+
8
19
  let(:file_path_without_extension) do
9
20
  file_path.gsub('.rb', '')
10
21
  end
@@ -33,24 +44,27 @@ DevScripts::Script.define_script :open_spec_file do
33
44
  .join('::')
34
45
  end
35
46
 
36
- before do
47
+ execute do
48
+ begin
49
+ raise AlreadyInASpecFileError if already_in_a_spec_file?
50
+
37
51
  if file_exists?
38
- puts 'file already exists, opening file'
52
+ print_message 'file already exists, opening file'
39
53
  else
40
- puts 'file does not exist, writing a new file'
41
- end
42
- end
54
+ print_message 'file does not exist, writing a new file'
43
55
 
44
- execute do
45
- if !file_exists?
46
56
  create_file_in_editor spec_file_path do
47
57
  <<-RUBY
48
- Rspec.describe #{constant_name} do
58
+ RSpec.describe #{constant_name} do
49
59
  end
50
60
  RUBY
51
61
  end
52
62
  end
53
63
 
54
64
  open_file_in_editor spec_file_path
65
+
66
+ rescue AlreadyInASpecFileError
67
+ print_message 'Already in Spec File'
68
+ end
55
69
  end
56
70
  end
@@ -93,12 +93,12 @@ DevScripts::Script.define_script :rubocop_metrics_method_length do
93
93
  def run
94
94
  all_lines.insert(
95
95
  method_reader.first_line,
96
- "#{method_reader.indentation}# rubcop:disable Metrics/MethodLength\n"
96
+ "#{method_reader.indentation}# rubocop:disable Metrics/MethodLength\n"
97
97
  )
98
98
 
99
99
  all_lines.insert(
100
100
  method_reader.last_line + 2,
101
- "#{method_reader.indentation}# rubcop:enable Metrics/MethodLength\n"
101
+ "#{method_reader.indentation}# rubocop:enable Metrics/MethodLength\n"
102
102
  )
103
103
 
104
104
  File.open(file_path, 'w') { |file| file.write(all_lines.join('')) }
@@ -1,3 +1,3 @@
1
1
  module DevScripts
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.5"
3
3
  end
data/lib/dev_scripts.rb CHANGED
@@ -2,98 +2,15 @@ require "dev_scripts/version"
2
2
 
3
3
  module DevScripts
4
4
  class Error < StandardError; end
5
- class Script
6
- class Scripts < Array
7
- def add(script_name:, &block)
8
- self << Script.new(script_name: script_name, &block)
9
- end
10
- end
11
-
12
- class << self
13
- def scripts
14
- @scripts ||= Scripts.new
15
- end
16
-
17
- def define_script(script_name, &block)
18
- scripts.add(script_name: script_name, &block)
19
- end
20
-
21
- def execute(args)
22
- script_name, *rest = args
23
-
24
- script_to_execute = scripts.find { |script| script.name == script_name.to_sym }
25
-
26
- script_to_execute.run(rest) if script_to_execute
27
- end
28
- end
29
-
30
- attr_reader :name
31
-
32
- def initialize(script_name:, &block)
33
- @name = script_name
34
- @block = block
35
- @base = block.binding.receiver
36
- @run_args = []
37
- end
38
-
39
- def run(args)
40
- @run_args = args
41
-
42
- instance_eval(&block)
43
- end
44
-
45
- private
46
-
47
- attr_reader :block, :base, :run_args, :arg_names_to_args, :before_block
48
-
49
- def let(name, &block)
50
- define_singleton_method(name) do
51
- found_value = instance_variable_get("@#{name}")
52
- return found_value unless found_value.nil?
53
-
54
- instance_variable_set("@#{name}", instance_eval(&block))
55
- end
56
- end
57
-
58
- def before(&block)
59
- @before_block = block
60
- end
61
-
62
- def execute(&block)
63
- instance_eval(&before_block) if before_block
64
-
65
- instance_eval(&block)
66
- end
67
-
68
- def args(*arg_names)
69
- arg_names.each_with_index do |arg_name, index|
70
- define_singleton_method(arg_name) do
71
- found_value = instance_variable_get("@#{arg_name}")
72
-
73
- return found_value unless found_value.nil?
74
-
75
- instance_variable_set("@#{arg_name}", run_args[index])
76
- end
77
- end
78
- end
79
-
80
- def create_file_in_editor(file_path_to_open, &file_content_block)
81
- File.open(file_path_to_open, 'w') do |file|
82
- file.write(instance_eval(&file_content_block))
83
- end
84
- rescue Errno::ENOENT
85
- Dir.mkdir file_path_to_open.split('/')[0..-2].join('/')
86
-
87
- retry
88
- end
89
-
90
- def open_file_in_editor(file_path_to_open)
91
- system "code -r #{file_path_to_open}"
92
- end
93
- end
94
5
  end
95
6
 
96
7
  require 'dev_scripts/scripts/open_spec_file'
97
8
  require 'dev_scripts/scripts/rubocop_metrics_method_length'
98
9
 
10
+ if File.exist? './dev_scripts'
11
+ Dir['./dev_scripts/**/*.rb'].each do |file|
12
+ require file
13
+ end
14
+ end
15
+
99
16
  DevScripts::Script.execute(ARGV)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev_scripts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Quinones
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-30 00:00:00.000000000 Z
11
+ date: 2019-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: guard
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +133,7 @@ files:
119
133
  - ".gitignore"
120
134
  - ".rspec"
121
135
  - ".travis.yml"
136
+ - ".vscode/tasks.json"
122
137
  - Gemfile
123
138
  - Gemfile.lock
124
139
  - Guardfile
@@ -129,6 +144,7 @@ files:
129
144
  - dev_scripts.gemspec
130
145
  - exe/dev_scripts
131
146
  - lib/dev_scripts.rb
147
+ - lib/dev_scripts/script.rb
132
148
  - lib/dev_scripts/scripts/open_spec_file.rb
133
149
  - lib/dev_scripts/scripts/rubocop_metrics_method_length.rb
134
150
  - lib/dev_scripts/version.rb
@@ -150,7 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
166
  - !ruby/object:Gem::Version
151
167
  version: '0'
152
168
  requirements: []
153
- rubygems_version: 3.0.3
169
+ rubyforge_project:
170
+ rubygems_version: 2.5.2.3
154
171
  signing_key:
155
172
  specification_version: 4
156
173
  summary: Register and run scripts for ruby and rails development