Class: GreedyTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/atcoder_greedy/lib/greedy_template.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeGreedyTemplate

Returns a new instance of GreedyTemplate.



5
6
7
8
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 5

def initialize
  @dir = AtcoderGreedy::get_config_path + '/templates'
  Dir.mkdir(@dir) unless Dir.exists?(@dir)
end

Class Method Details

.get_template_path(file_name) ⇒ Object



80
81
82
83
84
85
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 80

def self.get_template_path(file_name)
  type = File.extname(file_name).delete('.')
  type_dir = AtcoderGreedy::get_config_path + '/templates' + '/' + type
  file = type_dir + '/' + File.basename(file_name)
  File.exists?(file) ? file : nil
end

Instance Method Details

#add(file_path) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 10

def add(file_path)
  # save template to language directory
  file = File.open(file_path)
  file_name = File.basename(file_path)
  type_dir = @dir + '/' + File.extname(file_path).delete('.')
  Dir.mkdir(type_dir) unless Dir.exists?(type_dir)
  if File.exists?(type_dir + '/' + file_name)
    print "Template [#{file_name}] is already exists. Do you update?[y/N]:"
    s = $stdin.gets.chomp
    if s == 'y' || s == 'yes'
      FileUtils.cp(file, type_dir)
      puts 'Template file is updated.'
      puts "if you want to use this file as a default, please run 'atcoder_greedy template -s #{file_name}'"
    end
  else
    FileUtils.cp(file, type_dir)
    puts 'Template file is added.'
    puts "if you want to use this file as a default, please run 'atcoder_greedy template -s #{file_name}'"
  end
end

#delete(file_name) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 60

def delete(file_name)
  type = File.extname(file_name).delete('.')
  type_dir = @dir + '/' + type
  file = type_dir + '/' + File.basename(file_name)
  if File.exists?(file)
    print "Do you delete [#{file_name}]?[y/N]:"
    s = $stdin.gets.chomp
    if s == 'y' || s == 'yes'
      if File.basename(file_name) == get_default(type)
        AtcoderGreedy.configure(default_template: {"#{type}": ''})
      end
      FileUtils.remove_file(file)
      puts 'Template file is deleted.'
    end
  else
    puts "File [#{file_name}] doesn't exists. confirm input name."
    self.list
  end
end

#listObject



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 31

def list
  puts "Show Template file lists. [d] is this language default. ---------------------"
  Dir::glob(@dir + '/*').each do |l|
    puts "#{File.basename(l)}:"
    Dir::glob("#{l}/*").each do |f|
      default = get_default(File.basename(l))
      if default != nil && File.basename(f) == default
        print '  [d] '
      else
        print '    - '
      end
      puts "#{File.basename(f)}"
    end
  end
end

#set_default(file_name) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/atcoder_greedy/lib/greedy_template.rb', line 47

def set_default(file_name)
  type = File.extname(file_name).delete('.')
  type_dir = @dir + '/' + type
  file = type_dir + '/' + File.basename(file_name)
  if File.exists?(file)
    AtcoderGreedy.configure(default_template: {"#{type}": file})
    puts 'Set new default template.'
  else
    puts "File [#{file_name}] doesn't exists. confirm input name."
    self.list
  end
end