ro_commands 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +54 -0
- data/bin/ro +32 -0
- data/bin/ro_client +6 -0
- data/bin/ro_server +8 -0
- data/config/rorc.rb +2 -0
- data/lib/bash_builder.rb +92 -0
- data/lib/bash_builder_helper.rb +34 -0
- data/lib/bash_debug.rb +55 -0
- data/lib/bash_templates/git.sh +10 -0
- data/lib/bash_templates/gitflow.sh +0 -0
- data/lib/bash_templates/misc.sh +66 -0
- data/lib/bash_templates/rails.sh +0 -0
- data/lib/bash_templates/rubymine_idea.sh +5 -0
- data/lib/bash_templates/shortcuts.sh +1 -0
- data/lib/builder_templates/completions.erb +18 -0
- data/lib/builder_templates/git_flow.erb +3 -0
- data/lib/builder_templates/rails.erb +3 -0
- data/lib/builder_templates/set_envs.erb +9 -0
- data/lib/drb/client.rb +22 -0
- data/lib/drb/server.rb +33 -0
- data/lib/git_flow_builder_helper.rb +34 -0
- data/lib/methods.rb +19 -0
- data/lib/rails_builder_helper.rb +41 -0
- data/lib/ro_commands.rb +34 -0
- data/lib/ro_commands/base.rb +95 -0
- data/lib/ro_commands/core_ext/hash.rb +5 -0
- data/lib/ro_commands/core_ext/string.rb +14 -0
- data/lib/ro_commands/core_ext/symbol.rb +0 -0
- data/lib/ro_commands/core_ext/thor.rb +71 -0
- data/lib/ro_commands/dsl/file.rb +25 -0
- data/lib/ro_commands/file_actions.rb +128 -0
- data/lib/ro_commands/generate.rb +32 -0
- data/lib/ro_commands/generators/base_generator.rb +68 -0
- data/lib/ro_commands/generators/ex.rb +56 -0
- data/lib/ro_commands/generators/lib.rb +25 -0
- data/lib/ro_commands/generators/spec_file.rb +74 -0
- data/lib/ro_commands/generators/templates/ex.erb +30 -0
- data/lib/ro_commands/generators/templates/spec.erb +2 -0
- data/lib/ro_commands/git.rb +89 -0
- data/lib/ro_commands/git_flow.rb +111 -0
- data/lib/ro_commands/helpers/all.rb +8 -0
- data/lib/ro_commands/helpers/all_files.rb +21 -0
- data/lib/ro_commands/helpers/bash.rb +33 -0
- data/lib/ro_commands/helpers/out.rb +29 -0
- data/lib/ro_commands/hook.rb +102 -0
- data/lib/ro_commands/info.rb +55 -0
- data/lib/ro_commands/misc.rb +77 -0
- data/lib/ro_commands/navigate.rb +56 -0
- data/lib/ro_commands/processes.rb +12 -0
- data/lib/ro_commands/rails.rb +210 -0
- data/lib/ro_commands/refactor.rb +78 -0
- data/lib/ro_commands/ro_helper.rb +76 -0
- data/lib/ro_commands/ro_procs.rb +106 -0
- data/lib/ro_commands/rubymine.rb +17 -0
- data/lib/ro_commands/shortcuts.rb +67 -0
- data/lib/ro_commands/try.rb +11 -0
- data/lib/ro_commands/version.rb +3 -0
- data/lib/ro_commands/zeus.rb +18 -0
- data/lib/ro_commands/zeus_templates/custom_plan.rb +18 -0
- data/lib/ro_commands/zeus_templates/zeus.json +24 -0
- data/lib/ro_helper.rb +25 -0
- data/lib/shortcuts.rb +43 -0
- data/lib/spec_element.rb +24 -0
- data/lib/spec_element/describe.rb.erb +9 -0
- data/lib/tasks/roro_commands_tasks.rake +4 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +23 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +29 -0
- data/test/dummy/config/environments/production.rb +80 -0
- data/test/dummy/config/environments/test.rb +36 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +12 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/public/404.html +58 -0
- data/test/dummy/public/422.html +58 -0
- data/test/dummy/public/500.html +57 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/roro_commands_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- metadata +235 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
#module RoCommands
|
2
|
+
# module Generator
|
3
|
+
# class BaseGenerator < Thor::Group
|
4
|
+
# include Thor::Actions
|
5
|
+
# end
|
6
|
+
# end
|
7
|
+
#end
|
8
|
+
#
|
9
|
+
Dir[File.expand_path("../generators/**", __FILE__)].each do |file|
|
10
|
+
if test(?f, file)
|
11
|
+
require file
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
module RoCommands
|
17
|
+
class Generate < Base
|
18
|
+
include Generators
|
19
|
+
|
20
|
+
desc usage('ex'), ''
|
21
|
+
def ex
|
22
|
+
Ex.create
|
23
|
+
Ex.open
|
24
|
+
end
|
25
|
+
|
26
|
+
desc usage("spec_file"), ""
|
27
|
+
def spec_file(name)
|
28
|
+
SpecFile.create(name)
|
29
|
+
SpecFile.open
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
module RoCommands
|
4
|
+
module Generators
|
5
|
+
module BaseGenerator
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def included(base)
|
9
|
+
base.extend(ClsMeths)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClsMeths
|
14
|
+
def bash(*cmds)
|
15
|
+
Kernel.system(cmds.flatten.join(" && "))
|
16
|
+
end
|
17
|
+
|
18
|
+
def file_write(path)
|
19
|
+
dir = File.dirname(path)
|
20
|
+
FileUtils.mkpath dir
|
21
|
+
puts "writing #{path}"
|
22
|
+
File.write(path, ctn)
|
23
|
+
end
|
24
|
+
|
25
|
+
def lib_path
|
26
|
+
name.split("::").map do |i|
|
27
|
+
i.downcase
|
28
|
+
end.join("/")
|
29
|
+
end
|
30
|
+
|
31
|
+
def lastest_file
|
32
|
+
Find.find(Dir.pwd, dir).select do |f|
|
33
|
+
test(?f, f)
|
34
|
+
end.sort_by do |f|
|
35
|
+
Time.at(File.ctime(f).to_f)
|
36
|
+
end.last
|
37
|
+
end
|
38
|
+
|
39
|
+
def open
|
40
|
+
bash "rubymine #{created_file}"
|
41
|
+
end
|
42
|
+
|
43
|
+
def created_file
|
44
|
+
@created_file ||= lastest_file
|
45
|
+
end
|
46
|
+
|
47
|
+
def ctn
|
48
|
+
@ctn ||= ""
|
49
|
+
end
|
50
|
+
|
51
|
+
def path
|
52
|
+
File.join(dir, file)
|
53
|
+
end
|
54
|
+
|
55
|
+
def to
|
56
|
+
puts "writing to #{path}"
|
57
|
+
end
|
58
|
+
|
59
|
+
def tt(name)
|
60
|
+
puts "creating #{path}"
|
61
|
+
ctn = File.read File.expand_path("../templates/#{dir}.erb", __FILE__)
|
62
|
+
@ctn = ERB.new(ctn).result(binding)
|
63
|
+
to
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require_relative "base_generator"
|
3
|
+
require "erb"
|
4
|
+
require "find"
|
5
|
+
module RoCommands
|
6
|
+
module Generators
|
7
|
+
class Ex
|
8
|
+
include BaseGenerator
|
9
|
+
class << self
|
10
|
+
def create
|
11
|
+
FileUtils.mkpath dir
|
12
|
+
tt dir
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def dir
|
18
|
+
@dir ||= 'ex'
|
19
|
+
end
|
20
|
+
|
21
|
+
def list
|
22
|
+
Dir[File.join(dir, '**')]
|
23
|
+
end
|
24
|
+
|
25
|
+
def oldest_file
|
26
|
+
Dir['ex/**'].sort_by do |f|
|
27
|
+
Time.at(File.atime f).to_f
|
28
|
+
end.map do |f|
|
29
|
+
File.basename f
|
30
|
+
end.first
|
31
|
+
end
|
32
|
+
|
33
|
+
def file
|
34
|
+
len = list.length
|
35
|
+
if len > 0 and len < 10
|
36
|
+
num = list.map do |file|
|
37
|
+
result = File.basename(file).match(%r{ex(\d+).*})
|
38
|
+
result ? result[1].to_i : 0
|
39
|
+
end.max
|
40
|
+
num += 1 unless num.nil?
|
41
|
+
filename = "ex#{num}.rb"
|
42
|
+
elsif len == 0
|
43
|
+
'ex.rb'
|
44
|
+
else
|
45
|
+
File.basename oldest_file
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def to
|
50
|
+
super
|
51
|
+
File.write(path, ctn)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#require 'fileutils'
|
2
|
+
#module RoCommands
|
3
|
+
# module Generator
|
4
|
+
# class Lib < BaseGenerator
|
5
|
+
#
|
6
|
+
# argument :name
|
7
|
+
#
|
8
|
+
# def create
|
9
|
+
# FileUtils.mkdir_p "lib/#{name}"
|
10
|
+
# template 'lib.erb', "lib/#{name}.rb"
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# private
|
14
|
+
# def template(src, target)
|
15
|
+
# if test(?e, File.join(Dir.pwd, 'config'))
|
16
|
+
# puts "generating #{target}"
|
17
|
+
# ctn = File.read File.expand_path("../templates/#{src}", __FILE__)
|
18
|
+
# ctn = ERB.new(ctn).result(binding)
|
19
|
+
# File.write target, ctn
|
20
|
+
# end
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# end
|
24
|
+
# end
|
25
|
+
#end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require_relative "base_generator"
|
3
|
+
require "erb"
|
4
|
+
require "find"
|
5
|
+
module RoCommands
|
6
|
+
module Generators
|
7
|
+
class SpecFile
|
8
|
+
|
9
|
+
include BaseGenerator
|
10
|
+
class << self
|
11
|
+
|
12
|
+
def create(name)
|
13
|
+
@name = name
|
14
|
+
FileUtils.mkpath dir
|
15
|
+
tt name
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def name
|
21
|
+
@name ||= ""
|
22
|
+
end
|
23
|
+
|
24
|
+
def dir
|
25
|
+
@dir ||= 'spec'
|
26
|
+
end
|
27
|
+
|
28
|
+
# get dir file
|
29
|
+
def get_df
|
30
|
+
if name
|
31
|
+
f = File.basename name
|
32
|
+
r = name.split("/")
|
33
|
+
d = (r - [f]).join("/")
|
34
|
+
end
|
35
|
+
return d, f
|
36
|
+
end
|
37
|
+
|
38
|
+
def path
|
39
|
+
d, f = get_df
|
40
|
+
#puts "d:#{d} line:#{__LINE__}"
|
41
|
+
if test(?d, 'lib')
|
42
|
+
dir_full_path = Find.find('lib').select do |file|
|
43
|
+
test(?d, file)
|
44
|
+
end.select do |dir|
|
45
|
+
basename = File.basename dir
|
46
|
+
|
47
|
+
#puts "basename:#{basename} line:#{__LINE__}"
|
48
|
+
basename.match(%r{^#{d.split("").join(".*")}})
|
49
|
+
end.first
|
50
|
+
|
51
|
+
#puts "dir_full_path:#{dir_full_path} line:#{__LINE__}"
|
52
|
+
|
53
|
+
files = Dir[File.join(dir_full_path, '**')].select do |file|
|
54
|
+
basename = File.basename file
|
55
|
+
test(?f, file) and basename.match(%r{^#{f}})
|
56
|
+
end
|
57
|
+
file = files.first.gsub(%r{\.rb}, "")
|
58
|
+
file = File.basename(file)
|
59
|
+
File.join(dir, dir_full_path, "#{file}_spec.rb")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def to
|
64
|
+
super
|
65
|
+
unless test(?f, path)
|
66
|
+
file_write(path)
|
67
|
+
end
|
68
|
+
|
69
|
+
@created_file = path
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class C
|
2
|
+
def m
|
3
|
+
puts 'm'
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
module M
|
8
|
+
class C2
|
9
|
+
def m
|
10
|
+
puts 'm'
|
11
|
+
end
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def m2
|
15
|
+
puts 'm2'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
class C3 < C2
|
22
|
+
def m3
|
23
|
+
puts 'm2'
|
24
|
+
end
|
25
|
+
|
26
|
+
class << self
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'net/ssh'
|
2
|
+
require_relative "base"
|
3
|
+
|
4
|
+
module RoCommands
|
5
|
+
class Git < Base
|
6
|
+
|
7
|
+
desc 'exe', ''
|
8
|
+
|
9
|
+
def exe(cmd, *args)
|
10
|
+
_cmd = specific(cmd)
|
11
|
+
|
12
|
+
_cmd = "git #{_cmd} #{args.join " "}"
|
13
|
+
puts _cmd
|
14
|
+
bash _cmd
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def specific(cmd)
|
20
|
+
dict = {
|
21
|
+
a: 'add',
|
22
|
+
aa: 'add .',
|
23
|
+
b: 'branch',
|
24
|
+
co: 'checkout',
|
25
|
+
c: 'commit -am',
|
26
|
+
i: 'add -i',
|
27
|
+
l: 'lo --oneline --all --color --raph --decorate',
|
28
|
+
m: 'mere',
|
29
|
+
po: 'push -u oriin develop',
|
30
|
+
pv: 'push -u vps develop',
|
31
|
+
st: 'status',
|
32
|
+
t: 'tag'
|
33
|
+
}
|
34
|
+
|
35
|
+
dict[cmd.to_sym] if dict.has_key?(cmd.to_sym)
|
36
|
+
end
|
37
|
+
#desc 'run KEYWORDS', 'e.g. run r a means git remote add'
|
38
|
+
#
|
39
|
+
#def git(shortcuts.rb, *smth)
|
40
|
+
# shortcuts.rb.shift
|
41
|
+
#
|
42
|
+
# match implicit(shortcuts.rb)
|
43
|
+
#end
|
44
|
+
#
|
45
|
+
#def update_dict
|
46
|
+
# ls = bash_lines("git")
|
47
|
+
# cmds = ls.map do |l|
|
48
|
+
# r = l.match cmd?
|
49
|
+
# if r
|
50
|
+
#
|
51
|
+
# end
|
52
|
+
# end
|
53
|
+
#end
|
54
|
+
#
|
55
|
+
#private
|
56
|
+
#
|
57
|
+
#class Cmd
|
58
|
+
# attr_accessor :sup, :cmd, :sub, :whole
|
59
|
+
#
|
60
|
+
# def initialize(sup, cmd, sub)
|
61
|
+
# @sup = sup
|
62
|
+
# @cmd = cmd
|
63
|
+
# @sub = get_child
|
64
|
+
# @whole = "#{sup.whole} #{cmd}"
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# def to_s
|
68
|
+
# @cmd
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# def help
|
72
|
+
# "#{@whole} -h"
|
73
|
+
# end
|
74
|
+
#end
|
75
|
+
#
|
76
|
+
#def cmd?
|
77
|
+
# /\s{3}(\w+)/
|
78
|
+
#end
|
79
|
+
#
|
80
|
+
#def dict
|
81
|
+
#
|
82
|
+
#end
|
83
|
+
#
|
84
|
+
#def match(implicit)
|
85
|
+
#
|
86
|
+
#end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require File.expand_path('../git', __FILE__)
|
2
|
+
module RoCommands
|
3
|
+
class GitFlow < Base
|
4
|
+
%w(feature release).each do |stage|
|
5
|
+
desc usage("get_#{stage}s"), ''
|
6
|
+
define_method("get_#{stage}s".to_sym) do |*args|
|
7
|
+
result = %x{git flow #{stage}}
|
8
|
+
result = result.split("\n").map do |i|
|
9
|
+
i.gsub(%r{\*}, "")
|
10
|
+
end
|
11
|
+
puts result
|
12
|
+
result
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
#def exe(cmd, *names)
|
18
|
+
# case cmd
|
19
|
+
# when 'fs'
|
20
|
+
# feature_start names
|
21
|
+
# else
|
22
|
+
# r = cmd.split("")
|
23
|
+
# f = flags.select do |f|
|
24
|
+
# f[0] == r[0]
|
25
|
+
# end.first
|
26
|
+
#
|
27
|
+
# a = arguments.select do |a|
|
28
|
+
# a[0] == r[1]
|
29
|
+
# end.first
|
30
|
+
#
|
31
|
+
# git_flow_cmd = "git flow #{f} #{a} #{names.join(" ")}"
|
32
|
+
# _exe(git_flow_cmd)
|
33
|
+
# end
|
34
|
+
#end
|
35
|
+
#
|
36
|
+
#private
|
37
|
+
#
|
38
|
+
#def _exe(git_flow_cmd)
|
39
|
+
# puts git_flow_cmd
|
40
|
+
# bash git_flow_cmd
|
41
|
+
#end
|
42
|
+
#
|
43
|
+
#def feature_start(features)
|
44
|
+
# features.each do |f|
|
45
|
+
# _exe "git flow feature start #{f}"
|
46
|
+
# end
|
47
|
+
# _exe "git flow feature checkout #{features.first}"
|
48
|
+
#end
|
49
|
+
#
|
50
|
+
#def flags
|
51
|
+
# @flags ||= %w(feature help hotfix init release support version)
|
52
|
+
#end
|
53
|
+
#
|
54
|
+
#def arguments
|
55
|
+
# @arguments ||= %w(finish help list publish start track checkout)
|
56
|
+
#end
|
57
|
+
#def gem_release
|
58
|
+
# Methods.change_current_version(Methods.get_version)
|
59
|
+
# bashes ''
|
60
|
+
#end
|
61
|
+
|
62
|
+
#alias_method :git, :bashes
|
63
|
+
#
|
64
|
+
#desc 'gfi', 'git flow init'
|
65
|
+
#
|
66
|
+
#def init
|
67
|
+
# #git push_to_github("git flow init at #{DateTime.now}") + ['git flow init']
|
68
|
+
#end
|
69
|
+
#
|
70
|
+
#desc 'gff feature_name', 'git flow feature'
|
71
|
+
#
|
72
|
+
#def feature(feature_name)
|
73
|
+
# git push_to_github("feature start at #{DateTime.now}")
|
74
|
+
# bash "git flow feature start #{feature_name}"
|
75
|
+
#end
|
76
|
+
#
|
77
|
+
#desc 'gfr version', 'git flow release'
|
78
|
+
#
|
79
|
+
#def release
|
80
|
+
# git push_to_github("start release at #{DateTime.now}")
|
81
|
+
# bash "git flow release start #{version}"
|
82
|
+
#end
|
83
|
+
#
|
84
|
+
#desc 'grh bug_name', 'git flow hotfix'
|
85
|
+
#
|
86
|
+
#def hotfix(bug)
|
87
|
+
# git push_to_github("start a hotfix at #{DateTime.now}")
|
88
|
+
# bash "git flow hotfix start #{bug}"
|
89
|
+
#end
|
90
|
+
#
|
91
|
+
#desc 'finish', 'finish current branch'
|
92
|
+
#
|
93
|
+
#def finish
|
94
|
+
# branch_type, branch_name = check_current_branch
|
95
|
+
# if branch_type && branch_name
|
96
|
+
# bash "git flow #{branch_type} finish #{branch_name}"
|
97
|
+
# else
|
98
|
+
# p 'Branch just has develop and master, Please firstly use "git flow xx start xx"'
|
99
|
+
# end
|
100
|
+
#end
|
101
|
+
#
|
102
|
+
#private
|
103
|
+
#def check_current_branch
|
104
|
+
# result = bash('git branch')
|
105
|
+
# result = result[/(?<=\*\s)(\/|\w)+/] if result
|
106
|
+
# result = result.split('/') if result
|
107
|
+
# return if result.nil?
|
108
|
+
# return result[0], result[1] if result.is_a?(Array)
|
109
|
+
#end
|
110
|
+
end
|
111
|
+
end
|