ro_commands 0.0.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.
Files changed (102) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +54 -0
  5. data/bin/ro +32 -0
  6. data/bin/ro_client +6 -0
  7. data/bin/ro_server +8 -0
  8. data/config/rorc.rb +2 -0
  9. data/lib/bash_builder.rb +92 -0
  10. data/lib/bash_builder_helper.rb +34 -0
  11. data/lib/bash_debug.rb +55 -0
  12. data/lib/bash_templates/git.sh +10 -0
  13. data/lib/bash_templates/gitflow.sh +0 -0
  14. data/lib/bash_templates/misc.sh +66 -0
  15. data/lib/bash_templates/rails.sh +0 -0
  16. data/lib/bash_templates/rubymine_idea.sh +5 -0
  17. data/lib/bash_templates/shortcuts.sh +1 -0
  18. data/lib/builder_templates/completions.erb +18 -0
  19. data/lib/builder_templates/git_flow.erb +3 -0
  20. data/lib/builder_templates/rails.erb +3 -0
  21. data/lib/builder_templates/set_envs.erb +9 -0
  22. data/lib/drb/client.rb +22 -0
  23. data/lib/drb/server.rb +33 -0
  24. data/lib/git_flow_builder_helper.rb +34 -0
  25. data/lib/methods.rb +19 -0
  26. data/lib/rails_builder_helper.rb +41 -0
  27. data/lib/ro_commands.rb +34 -0
  28. data/lib/ro_commands/base.rb +95 -0
  29. data/lib/ro_commands/core_ext/hash.rb +5 -0
  30. data/lib/ro_commands/core_ext/string.rb +14 -0
  31. data/lib/ro_commands/core_ext/symbol.rb +0 -0
  32. data/lib/ro_commands/core_ext/thor.rb +71 -0
  33. data/lib/ro_commands/dsl/file.rb +25 -0
  34. data/lib/ro_commands/file_actions.rb +128 -0
  35. data/lib/ro_commands/generate.rb +32 -0
  36. data/lib/ro_commands/generators/base_generator.rb +68 -0
  37. data/lib/ro_commands/generators/ex.rb +56 -0
  38. data/lib/ro_commands/generators/lib.rb +25 -0
  39. data/lib/ro_commands/generators/spec_file.rb +74 -0
  40. data/lib/ro_commands/generators/templates/ex.erb +30 -0
  41. data/lib/ro_commands/generators/templates/spec.erb +2 -0
  42. data/lib/ro_commands/git.rb +89 -0
  43. data/lib/ro_commands/git_flow.rb +111 -0
  44. data/lib/ro_commands/helpers/all.rb +8 -0
  45. data/lib/ro_commands/helpers/all_files.rb +21 -0
  46. data/lib/ro_commands/helpers/bash.rb +33 -0
  47. data/lib/ro_commands/helpers/out.rb +29 -0
  48. data/lib/ro_commands/hook.rb +102 -0
  49. data/lib/ro_commands/info.rb +55 -0
  50. data/lib/ro_commands/misc.rb +77 -0
  51. data/lib/ro_commands/navigate.rb +56 -0
  52. data/lib/ro_commands/processes.rb +12 -0
  53. data/lib/ro_commands/rails.rb +210 -0
  54. data/lib/ro_commands/refactor.rb +78 -0
  55. data/lib/ro_commands/ro_helper.rb +76 -0
  56. data/lib/ro_commands/ro_procs.rb +106 -0
  57. data/lib/ro_commands/rubymine.rb +17 -0
  58. data/lib/ro_commands/shortcuts.rb +67 -0
  59. data/lib/ro_commands/try.rb +11 -0
  60. data/lib/ro_commands/version.rb +3 -0
  61. data/lib/ro_commands/zeus.rb +18 -0
  62. data/lib/ro_commands/zeus_templates/custom_plan.rb +18 -0
  63. data/lib/ro_commands/zeus_templates/zeus.json +24 -0
  64. data/lib/ro_helper.rb +25 -0
  65. data/lib/shortcuts.rb +43 -0
  66. data/lib/spec_element.rb +24 -0
  67. data/lib/spec_element/describe.rb.erb +9 -0
  68. data/lib/tasks/roro_commands_tasks.rake +4 -0
  69. data/test/dummy/README.rdoc +28 -0
  70. data/test/dummy/Rakefile +6 -0
  71. data/test/dummy/app/assets/javascripts/application.js +13 -0
  72. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  73. data/test/dummy/app/controllers/application_controller.rb +5 -0
  74. data/test/dummy/app/helpers/application_helper.rb +2 -0
  75. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  76. data/test/dummy/bin/bundle +3 -0
  77. data/test/dummy/bin/rails +4 -0
  78. data/test/dummy/bin/rake +4 -0
  79. data/test/dummy/config.ru +4 -0
  80. data/test/dummy/config/application.rb +23 -0
  81. data/test/dummy/config/boot.rb +5 -0
  82. data/test/dummy/config/database.yml +25 -0
  83. data/test/dummy/config/environment.rb +5 -0
  84. data/test/dummy/config/environments/development.rb +29 -0
  85. data/test/dummy/config/environments/production.rb +80 -0
  86. data/test/dummy/config/environments/test.rb +36 -0
  87. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  88. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  89. data/test/dummy/config/initializers/inflections.rb +16 -0
  90. data/test/dummy/config/initializers/mime_types.rb +5 -0
  91. data/test/dummy/config/initializers/secret_token.rb +12 -0
  92. data/test/dummy/config/initializers/session_store.rb +3 -0
  93. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  94. data/test/dummy/config/locales/en.yml +23 -0
  95. data/test/dummy/config/routes.rb +56 -0
  96. data/test/dummy/public/404.html +58 -0
  97. data/test/dummy/public/422.html +58 -0
  98. data/test/dummy/public/500.html +57 -0
  99. data/test/dummy/public/favicon.ico +0 -0
  100. data/test/roro_commands_test.rb +7 -0
  101. data/test/test_helper.rb +15 -0
  102. metadata +235 -0
@@ -0,0 +1,8 @@
1
+ require_relative "all_files"
2
+ require "ro_commands/base"
3
+
4
+ RoCommands::file_map.each do |file, _|
5
+ require file.to_s
6
+ end
7
+
8
+
@@ -0,0 +1,21 @@
1
+ require "ro_commands/core_ext/string"
2
+
3
+ module RoCommands
4
+ class << self
5
+ def file_map
6
+ @meth_map.flatten! if @meth_map.respond_to?(:flatten!)
7
+ @meth_map.uniq! if @meth_map.respond_to?(:uniq!)
8
+ @meth_map ||= {}
9
+ end
10
+ end
11
+
12
+ files = Dir[File.join($lib, "ro_commands/**")].select do |f|
13
+ test(?f, f)
14
+ end.delete_if do |f|
15
+ f = File.basename(f)
16
+ f.match(%r{all|version|ro_helper|hook|out})
17
+ end
18
+ files.each_with_index do |file, i|
19
+ file_map[file.to_sym] = 8000 + i
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+ require_relative "out"
2
+ module Bash
3
+ def _bash(cmd)
4
+ cmd = handle_path(cmd)
5
+ result = `#{cmd}`
6
+ Out.out result
7
+ end
8
+
9
+ def handle_path(cmd)
10
+ r = cmd[/\/(\w|\/)*/]
11
+ if r
12
+ cmd.gsub! r, "\'#{r}\'"
13
+ else
14
+ cmd
15
+ end
16
+ end
17
+
18
+ def bash(*cmds)
19
+ unless cmds.empty?
20
+ _bash(cmds.flatten.join(" && "))
21
+ end
22
+ end
23
+
24
+ def bash_per(*cmds)
25
+ cmds.each do |c|
26
+ bash c
27
+ end
28
+ end
29
+
30
+ def bash_lines(cmd)
31
+ bash(cmd).split("\n")
32
+ end
33
+ end
@@ -0,0 +1,29 @@
1
+ class Out
2
+ class << self
3
+ def out(msg)
4
+ m = msg
5
+ puts m
6
+ msgs << m
7
+ end
8
+
9
+ def reset
10
+ @msgs = []
11
+ end
12
+
13
+ def msgs
14
+ @msgs.flatten! if @msgs.respond_to?(:flatten!)
15
+ @msgs = [] if @msgs and @msgs.length > 999
16
+ @msgs ||= []
17
+ end
18
+
19
+ #class Msg
20
+ # def initialize(msg)
21
+ # @msg = msg
22
+ # end
23
+ #
24
+ # def to_s
25
+ # @msg
26
+ # end
27
+ #end
28
+ end
29
+ end
@@ -0,0 +1,102 @@
1
+ require "method_source"
2
+ module RoCommands
3
+ module Hook
4
+ class << self
5
+ def method_added(meth)
6
+ meths << meth
7
+ super
8
+ end
9
+
10
+ def meths
11
+ @meths ||= []
12
+ end
13
+ end
14
+
15
+ def included?(base)
16
+ base.extend(ClassMethods)
17
+ end
18
+
19
+ module ClassMethods
20
+ def target
21
+ File.expand_path("../ro_commands", __FILE__)
22
+ end
23
+
24
+ def get_meth_blk(method)
25
+ r = self.method(method).source.split("\n")
26
+ meth_blk = Proc.new do
27
+ meth_ctn = (r - [r[0], r[-1]]).join("\n")
28
+ eval meth_ctn
29
+ end
30
+ end
31
+
32
+ def ctn
33
+ @ctn ||= ""
34
+ end
35
+
36
+ def after_each
37
+ content << ctn
38
+ end
39
+
40
+ def content
41
+ @content ||= []
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+
48
+ #class BashBuilder
49
+ # extend BashBuilderHelper::ClassMethods
50
+ #
51
+ # class << self
52
+ # def is_helper?(meth)
53
+ # BashBuilderHelper.meths.include?(meth)
54
+ # end
55
+ #
56
+ # def defined_meths
57
+ # @defined_meths ||= []
58
+ # end
59
+ #
60
+ # def singleton_method_added(method)
61
+ # unless method.to_s.match "singleton_method_added" or defined_meths.include?(method)
62
+ # defined_meths << method
63
+ # defined_meths.uniq!
64
+ # if self.respond_to?(:get_meth_blk)
65
+ # meth_blk = get_meth_blk(method)
66
+ # unless is_helper?(method)
67
+ # define_singleton_method method do |*args|
68
+ # meth_blk.call
69
+ # after_each
70
+ # end
71
+ # end
72
+ # end
73
+ # end
74
+ # end
75
+ #
76
+ # def set(shortcut, full, desc)
77
+ # ctn = <<-CONTENT
78
+ # CONTENT
79
+ # end
80
+ #
81
+ # def build
82
+ # dir = File.expand_path("../bash_templates", __FILE__)
83
+ # Dir[File.join(dir, '**')].each do |file|
84
+ # template(file)
85
+ # end
86
+ # write_into_bash_file
87
+ # end
88
+ #
89
+ # def template(name)
90
+ # path = File.expand_path("../bash_templates/#{name}", __FILE__)
91
+ # ctn = ERB.new(File.read(path)).result(binding)
92
+ # end
93
+ #
94
+ # def build_paths
95
+ # template("paths")
96
+ # end
97
+ #
98
+ # def write_into_bash_file
99
+ # File.write(target(), content)
100
+ # end
101
+ # end
102
+ #end
@@ -0,0 +1,55 @@
1
+ require_relative "dsl/file"
2
+ module RoCommands
3
+ class Info < Base
4
+ include DSL::File
5
+
6
+ class RoFile
7
+ def initialize(path, size)
8
+ @path = path
9
+ @size = size
10
+ end
11
+
12
+ def path
13
+ @path ||= nil
14
+ end
15
+
16
+ def size
17
+ @size ||= nil
18
+ end
19
+
20
+ def to_s
21
+ "size:#{size}, path:#{path}"
22
+ end
23
+ end
24
+
25
+ desc 'file_size', ''
26
+
27
+ def file_size(path, recursive=false)
28
+ if recursive
29
+ find(path).each do |f|
30
+ files << RoFile.new(f, size(f))
31
+ end
32
+ puts files.sort_by(&:size)
33
+ else
34
+ Dir[File.join(path, "**")].each do |f|
35
+ if dir?(f)
36
+ s = find(f).inject(0) { |total_size, file_size| total_size += size(f) }
37
+ rf = RoFile.new(f, s)
38
+ else
39
+ rf = RoFile.new(f, size(f))
40
+ end
41
+ files << rf
42
+ end
43
+
44
+ puts files.sort_by(&:size)
45
+ end
46
+ end
47
+
48
+
49
+ private
50
+
51
+ def files
52
+ @files ||= []
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,77 @@
1
+ require "find"
2
+ require "fileutils"
3
+ module RoCommands
4
+ class Misc < Base
5
+
6
+ desc 'rt', 'root find'
7
+
8
+ def root_find(keyword)
9
+ bash "find / -iname '*#{keyword}*'"
10
+ end
11
+
12
+ desc 'rc', 'railscasts find'
13
+
14
+ def railscasts_find(keyword)
15
+
16
+ bash "find /media/zxr/New-Volume/TDDOWNLOAD/railscasts/ -iname '*#{keyword}*'"
17
+ end
18
+
19
+ desc 'move_zip_to', 'move zip to another dir'
20
+
21
+ def move_zip_to(target_dir, keyword=".*", src='.')
22
+ filter = %r{#{keyword}}
23
+ Find.find(src) do |file|
24
+ if is_zip?(file) or is_rar?(file) and file.match filter
25
+ FileUtils.mv file, target_dir
26
+ end
27
+
28
+ unzip_r(target_dir)
29
+ end
30
+ end
31
+
32
+ desc 'unzip_r', 'unzip all file twice'
33
+
34
+ def unzip_r(dir=".")
35
+ Dir.chdir dir
36
+ Find.find(Dir.pwd) do |file|
37
+ if test(?f, file)
38
+ try_zip(file)
39
+ end
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def old_dir
46
+ @old_dir ||= ''
47
+ end
48
+
49
+ def try_zip(file)
50
+ if is_zip?(file)
51
+ create_uncompressed_dir(file) do
52
+ bash "unzip -n #{file} -d #{dir}"
53
+ end
54
+
55
+ elsif is_rar?(file)
56
+ create_uncompressed_dir(file) do |dir|
57
+ bash "unrar x -o- #{file} #{dir}"
58
+ end
59
+ end
60
+ end
61
+
62
+ def is_rar?(file)
63
+ bash("unrar l #{file}")
64
+ end
65
+
66
+ def is_zip?(file)
67
+ bash("unzip -l #{file}")
68
+ end
69
+
70
+ def create_uncompressed_dir(zip_file)
71
+ dir = "#{File.basename zip_file}_inner"
72
+ FileUtils.mkpath dir
73
+ yield dir
74
+ end
75
+ end
76
+ end
77
+
@@ -0,0 +1,56 @@
1
+ require "ro_commands/helpers/out"
2
+ module RoCommands
3
+ class Navigate < Base
4
+
5
+ desc "get_dir", ""
6
+
7
+ def get_dir(name)
8
+ Find.find(File.join(ENV['HOME'], 'Dropbox')) do |f|
9
+ if test(?d, f)
10
+ if File.basename(f).match /^#{name}/
11
+ puts f
12
+ return
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+
19
+ desc 'get_project', 'get project path according name'
20
+
21
+ def get_project(name, lan='ruby')
22
+
23
+ if lan == 'ruby'
24
+ projects = Dir[File.join ENV['PROJECTS'], '**']
25
+ elsif lan == 'java'
26
+ projects = Dir[File.join ENV['JAVA'], '**']
27
+ end
28
+
29
+ projects.each do |path|
30
+ dir = File.basename path
31
+ if dir == name
32
+ Out.reset
33
+ Out.out(path)
34
+ return
35
+ end
36
+ end
37
+
38
+ r = /^#{name.split('').join(".*")}.*/i
39
+ projects.each do |path|
40
+ dir = File.basename path
41
+ if dir[r]
42
+ Out.reset
43
+ Out.out(path)
44
+ return
45
+ end
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def handle_drb_out
52
+ #Out.out "result:#{result} file:#{File.basename __FILE__} line:#{__LINE__}"
53
+ Out.msgs.grep(%r{/\w+}).first
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,12 @@
1
+ module RoCommands
2
+ class Processes < Base
3
+ desc 'kill KEYWORD', 'kill process with keyword'
4
+ def kill(keyword)
5
+ `ps aux | grep #{keyword}`.split("\n").each do |process|
6
+ puts process
7
+ pid = process.scan(/\d+/).first
8
+ bash "kill #{pid}"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,210 @@
1
+ require_relative "base"
2
+ require_relative "git"
3
+ require_relative "ro_helper"
4
+
5
+ module RoCommands
6
+ class Rails < Base
7
+
8
+ class << self
9
+ def method_added(method)
10
+ super
11
+ unless method.match(%r{})
12
+ meths << method
13
+ end
14
+ meths.uniq!
15
+ end
16
+
17
+ def meths
18
+ @meths ||= []
19
+ end
20
+
21
+ def generators_map
22
+ @generators_map ||= {
23
+ scaffold: 's',
24
+ migration: 'm',
25
+ model: 'mo',
26
+ controller: 'c',
27
+ assets: 'a',
28
+ task: 't'
29
+ }
30
+ end
31
+
32
+ def set_shortcut_method(item)
33
+ class_eval do
34
+ #shortcut_item = generators_map[item.to_sym]
35
+ #desc usage(shortcut_item), describe('generate', item, shortcut_item)
36
+ #
37
+ #define_method shortcut_item.to_sym do |*args|
38
+ # send item.to_sym, *args
39
+ #end
40
+
41
+ #shortcut_item_d = "#{shortcut_item}_d"
42
+ #item_d = "#{item}_d"
43
+ #
44
+ #desc usage(shortcut_item_d), describe('destroy', item, shortcut_item_d)
45
+ #define_method shortcut_item_d.to_sym do |*args|
46
+ # send item_d.to_sym, *args
47
+ #end
48
+ end
49
+ end
50
+
51
+
52
+ def items
53
+ @items ||= %w(migration scaffold model)
54
+ end
55
+
56
+ def items2
57
+ @items2 ||= %w(controller task assets)
58
+ end
59
+ end
60
+
61
+
62
+ items.each do |i|
63
+ self.class_eval do
64
+
65
+ desc usage(i), describe('generate', i, generators_map[i.to_sym])
66
+ define_method i do |*args|
67
+ item_g(i, args)
68
+ end
69
+
70
+ #desc usage("#{i}_d"), describe('destroy', i, generators_map[i.to_sym])
71
+ #define_method "#{i}_d" do |name|
72
+ # item_d(i, name)
73
+ #end
74
+ set_shortcut_method i
75
+ end
76
+ end
77
+
78
+
79
+ #items2.each do |i|
80
+ #
81
+ # self.class_eval do
82
+ # desc usage(i), describe("generate", i, generators_map[i.to_sym])
83
+ # define_method i do |*args|
84
+ # item_g(i, args)
85
+ # end
86
+ #
87
+ # i_d = "#{i}_d"
88
+ # desc usage(i_d), describe("destroy", i, generators_map[i.to_sym])
89
+ # define_method i_d do |name|
90
+ # item_d(i, name)
91
+ # end
92
+ #
93
+ # set_shortcut_method i
94
+ # end
95
+ #end
96
+ desc usage("scaffolds"), ""
97
+
98
+ def scaffolds
99
+ get_controllers
100
+ end
101
+
102
+ desc usage("get_migrations"), ''
103
+
104
+ def get_migrations
105
+ Find.find('db/migrate').select do |f|
106
+ f.match(%r{rb$})
107
+ end.map do |f|
108
+ File.basename(f).gsub(%r(^\d+_), "")
109
+ end
110
+ end
111
+
112
+ desc usage("get_models"), ''
113
+
114
+ def get_models
115
+ get_rails_files('models')
116
+ end
117
+
118
+ desc usage("get_assets"), ''
119
+
120
+ def get_assets
121
+ get_files('assets') do |f|
122
+ f.match(%r{(js|coffee|scss|css)$})
123
+ end
124
+ end
125
+
126
+ desc usage("get_controllers"), ''
127
+
128
+ def get_controllers
129
+ get_rails_files('controllers')
130
+ end
131
+
132
+
133
+ private
134
+
135
+ def scaffold_g_for_spec(*args)
136
+ item_g "scaffold_for_spec", args
137
+ end
138
+
139
+ def scaffold_d_for_spec(name)
140
+ item_d "scaffold_for_spec", name
141
+ end
142
+
143
+ def item_d(item, name)
144
+ bash "zeus d #{item} #{name}"
145
+ end
146
+
147
+ def item_g(item, args)
148
+ cmd = args_parse(args.flatten, sql_type_dict)
149
+ bash "zeus g #{item} #{cmd}"
150
+ cmd
151
+ end
152
+
153
+ def args_parse(args, dict)
154
+ name = args.shift
155
+ options = get_options args.flatten
156
+ options = convert options, dict
157
+
158
+ cmd = name
159
+ options.each do |attr, type|
160
+ cmd = "#{cmd} #{attr}:#{type}"
161
+ end
162
+ cmd
163
+ end
164
+
165
+ def convert(options, dict)
166
+ parse_options(options, dict)
167
+ end
168
+
169
+ def sql_type_dict
170
+ {
171
+ i: "integer",
172
+ f: "float",
173
+ d: "double",
174
+ s: "string",
175
+ t: "text",
176
+ time: "time"
177
+ }
178
+ end
179
+
180
+ def app
181
+ @app.uniq! if @app.respond_to?(:uniq!)
182
+ @app ||= File.join(Dir.pwd, 'app')
183
+ end
184
+
185
+ def get_rails_files(dir)
186
+ get_files(dir) do |f|
187
+ f.match(%r{rb$})
188
+ end
189
+ end
190
+
191
+ def get_files(dir, &blk)
192
+ d = File.join(app, dir)
193
+ if test(?d, d)
194
+ files = Find.find(d).select &blk
195
+ files = files.map do |f|
196
+ File.basename(f).gsub(%r{\.(\w|\.)+$}, "")
197
+ end
198
+ puts files
199
+ files
200
+ end
201
+ end
202
+
203
+ def db
204
+ @db.uniq! if @db.respond_to?(:uniq!)
205
+ @db ||= File.join(Dir.pwd, 'db')
206
+ end
207
+
208
+ end
209
+ end
210
+