ro_commands 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+