Class: Jgit::Project

Inherits:
Thor
  • Object
show all
Defined in:
lib/jgit.rb

Constant Summary collapse

PROMPT_TASK =
"key in project name:"

Instance Method Summary collapse

Instance Method Details

#add(path = nil, name = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/jgit.rb', line 18

def add(path = nil, name = nil)

  group = get_group
  path = prompt("key in project path:(empty for current dir)", Dir.pwd) if path.nil?
  path = File.expand_path(path)
  jexit "no such dir" unless File.directory?(path)

  name = prompt("key in project name:(empty for current dir)", File.basename(Dir.getwd)) if name.nil?
  data = list(false, group)
  data[name] = path

  save_data(project_path(group), data.to_json)

end

#chgrp(name = nil) ⇒ Object



173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/jgit.rb', line 173

def chgrp(name = nil)

  group = Group.new
  name = group.select_group(name)
  data = group.list(false)

  name = "" if name == "default"

  if name.empty? || data.include?(name)
    puts "switch to #{name} group"
    save_data(CURRENT_GROUP, name)
  else
    jexit "no such group"
  end
end

#commitObject



103
104
105
# File 'lib/jgit.rb', line 103

def commit
  exe "git add -A && git commit"
end

#diffObject



135
136
137
# File 'lib/jgit.rb', line 135

def diff
  exe "git diff ."
end

#exe(command) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# File 'lib/jgit.rb', line 153

def exe(command)

  list = list(false, get_group)

  jexit "no project, use 'jgit add' to add project first" if list.empty?

  list.each do |name, path|
    if !options[:project].nil? && options[:project] != name
      next
    end
    puts ""
    puts " - Task:#{bold(name)}"
    Dir.chdir(path)
    system command
  end
end

#fetchObject



119
120
121
# File 'lib/jgit.rb', line 119

def fetch
  exe "git fetch"
end

#list(show = true, group = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/jgit.rb', line 37

def list(show = true, group = nil)

  group = get_group(group)
  data = load_obj(project_path(group), Hash)
  if show
    data.each do |key, val|
      puts "#{key}: #{val}"
    end
  end
  data

end

#pullObject



127
128
129
# File 'lib/jgit.rb', line 127

def pull
  exe "git pull"
end

#pushObject



143
144
145
# File 'lib/jgit.rb', line 143

def push
  exe "git push"
end

#remove(name = nil) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/jgit.rb', line 54

def remove(name = nil)

  group = get_group
  if name.nil?
    data = list(true, group)
    name = prompt(PROMPT_TASK)
  else
    data = list(false, group)
  end

  if data.delete(name).nil?
    jexit "no such project"
  else
    save_data(project_path(group), data.to_json)
  end

end

#rename(name = nil, new_name = nil) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/jgit.rb', line 76

def rename(name = nil, new_name = nil)

  group = get_group
  if name.nil?
    data = list(true, group)
    name = prompt(PROMPT_TASK)
  else
    data = list(false, group)
  end

  new_name = prompt("key in new project name:", File.basename(Dir.getwd)) if new_name.nil?
  jexit "new_name exist" if data.include?(new_name)

  result = data.delete(name)

  if result.nil?
    jexit "no such project"
  else
    data[new_name] = result
    save_data(project_path(group), data.to_json)
  end
end

#statusObject



111
112
113
# File 'lib/jgit.rb', line 111

def status
  exe "git status"
end

#versionObject



193
194
195
196
# File 'lib/jgit.rb', line 193

def version
  puts "jgit #{Jgit::VERSION} -- jgit is a git management tool in Ruby"
  puts "visit https://github.com/Jintin/jgit for more information"
end