Class: Sapos::Print::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/sapos/print/cli.rb

Instance Method Summary collapse

Instance Method Details



76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/sapos/print/cli.rb', line 76

def print
  info
  config = Sapos::Print.config
  printer_name = options[:printer_name]
  if printer_name.present?
    if config.printers.any? && config.printers.include?(printer_name)
      config.printer = printer_name
    end
  end
  puts "Printing to: #{config.printer}"
  printer = Printer.new(config)
  printer.print(document: "This is a test\nprint page\nwithno special commands", document_number: "test", print_control: true)
end

#setupObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/sapos/print/cli.rb', line 8

def setup
  info 
  config = {}
  
  url = ask("URL de Configuración: ")
  if url.eql?('manual')
    data = {}
    data["channel"] = ask("Canal:")
    data["key"] = ask("Llave de la Cola:")
  else
    response = RestClient.get(url)
    data = JSON.parse(response)
  end
  
  config_file = "#{Sapos::Print.app_directory}/config.yml"
  user_id = nil
  if File.exist?(config_file)
    template = ERB.new(File.read(config_file))
    result = YAML.load(template.result(binding))
    user_id = result[:user_id]
  end
  
  user_id = SecureRandom.uuid if user_id.nil?

  config[:q] = data["channel"]
  config[:key] = data["key"]
  config[:printer] = ask("Nombre de la impresora default: ")
  config[:adapter] = ask("Adaptador: ", limited_to: ["console", "cups", "windows"])
  config[:interface] = ask("Interface", limited_to: ["text", "escp"])
  config[:user_id] = user_id
  config[:duplicate_control] = ask("¿Control Duplicados por MSGID?", limited_to: ["si", "no"])
  config[:printers] = [config[:printer]]
  config[:interfaces] = [config[:interface]]
  
  while yes?("¿Tiene impresoras adicionales?")
    name = ask("Nombre de la impresora adicional: ")
    interface = ask("Interfaz de la impresora adicional: ", limited_to: ["text", "escp"])
    config[:printers] << name
    config[:interfaces] << interface
  end
  if yes?("¿Esta seguro que desea guardar la configuración?")
    Sapos::Print::Configuration.write(config)
    ap config
    say "La configuración ha sido guardada!"
  end        
end

#startObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/sapos/print/cli.rb', line 57

def start
  info
  config = Sapos::Print.config
  puts ["Q=#{config.q.to_s}", "Printer=#{config.printer.to_s}", "Adapter=#{config.adapter.to_s}", "Interface=#{config.interface}", "DC=#{config.duplicate_control?}"].join(";")
  
  print_dir = File.join(Sapos::Print.app_directory, 'print')
  if File.exists?(print_dir)
    Dir.glob("#{print_dir}/*.print").each do |x|
      FileUtils.rm_rf(x) if File.ctime(x) < Time.now - 3600
    end
  end
  config.verbose = options[:verbose]
  Sapos::Print::QReader.printer_config = config
  Sapos::Print::QReader.verbose = options[:verbose]
  Sapos::Print::QReader.run!
end

#test_qObject



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/sapos/print/cli.rb', line 118

def test_q
  config = Sapos::Print.config
  puts ["Q=#{config.q.to_s}", "Printer=#{config.printer.to_s}", "Adapter=#{config.adapter.to_s}", "Interface=#{config.interface}", "DC=#{config.duplicate_control?}"].join(";")
  
  Sapos::Print::QReader.printer_config = config
  reader = QReader.new
  puts reader.printer
  
  message = {:document => "doc", :printer => "Daniel"}
  ap reader.printers
  
  Sapos::Print.config.printers.each do |p|
    printer = reader.printers[p]
    puts "Printing to: #{printer.config.printer}"
    message[:document] = "Docu. #{p}"
    printer.print(message)
  end
    
end

#windows_test_printObject



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/sapos/print/cli.rb', line 91

def windows_test_print
  info
  
  filename = "test.print"
  
  dir = File.join(Dir.home,".sapos-print")
  FileUtils.mkdir_p dir unless File.exists?(dir)
  dir
  
  print_dir = File.join(dir, 'print')
  
  FileUtils.mkdir_p print_dir unless File.exists?(print_dir)
  filename = File.join(print_dir, filename)
  
  puts "Test file Path: #{filename}"
  File.open(filename, 'w'){|f| f.write("Test\nTest\nTest")}
  puts "Execute COPY Command"
  command = "COPY "+"'"+filename.gsub("/","\\")+"'"+'"\\\\%COMPUTERNAME%\\'+"TM"
  
  if !system(command)
    puts "ERROR"
  else
    puts "OK"
  end
end