Class: KRL_CMD::Generate

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

Class Method Summary collapse

Class Method Details

.appObject



85
86
87
88
89
90
# File 'lib/generate.rb', line 85

def self.app
  return @@app if defined?@@app
  require LIB_DIR + 'common'
  @@app = KRL_COMMON::get_app 
  return @@app
end

.gen_bookmarklet(args, env = "prod") ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/generate.rb', line 44

def self.gen_bookmarklet(args, env="prod")
  puts "Generating Bookmarklet (#{env})"
  bm = ""
  opts = {}
  opts[:env] = env
  opts[:runtime] = args.to_s unless args.to_s.empty?

  endpoint = app.endpoint(:bookmarklet, opts)
  
  if endpoint["errors"].empty?
    bm = endpoint["data"]
  else
    raise "Invalid bookmark generated. \n#{endpoint.errors.join("\n")}"
  end
  
  bm_file = File.join(get_endpoint_dir(env), env + "_bookmarklet.html")
  File.open(bm_file, 'w') do |f|
    f.print("<textarea rows='5' cols='100'>#{bm}</textarea><br><br>")
    link = env == "prod" ? app.name : env + "_" + app.name
    f.print("<a href=\"#{bm.gsub('"', '&quot;')}\">#{link}</a>")
  end
  puts "BOOKMARKLET:"
  puts bm
  puts
  puts "Saved bookmarklet to #{bm_file}."
  Launchy::Browser.run('file://' + bm_file)
end

.gen_extension(type, args, env = 'prod') ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/generate.rb', line 28

def self.gen_extension(type, args, env='prod')
  puts "Generating Extension (#{type.to_s}) #{args.join(', ')}"
  # ext = app.extension(type, args[0] || "", args[1] || "", args[2] || "" )
  # write_file(ext, "prod")   
 
  opts = {}
  opts[:extname] = args[0] if args[0]
  opts[:extauthor] = args[1] if args[1]
  opts[:extdesc] = args[2] if args[2]
  opts[:env] = env
  opts[:format] = 'url'

  ext = app.endpoint(type, opts)
  write_file(ext, env)      
end

.gen_infocard(args, env = "prod") ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/generate.rb', line 72

def self.gen_infocard(args, env="prod")
  raise "You must specify a name for the card" if args.empty?
  puts "Generating Infocard (#{env})"
  opts = {}
  opts[:extname] = args[0] if args[0]
  opts[:datasets] = args[1] if args[1]
  opts[:env] = env
  opts[:format] = 'url'

  icard = app.endpoint(:info_card, opts)
  write_file(icard, env)
end

.get_endpoint_dir(env) ⇒ Object



92
93
94
95
96
97
# File 'lib/generate.rb', line 92

def self.get_endpoint_dir(env)
  dir_name = env == "prod" ? "/endpoints" : "/test"
  endpoint_dir = Dir.pwd + dir_name
  FileUtils.mkdir(endpoint_dir) unless File.directory?(endpoint_dir)
  return endpoint_dir
end

.go(args) ⇒ Object



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

def self.go(args)
  raise "Please specify an endpoint to generate" if args.to_s.empty?   
  type = args.shift
  endpoints = {
    "firefox" => lambda {gen_extension(type, args)},
    "chrome" => lambda {gen_extension(type, args)},
    "ie" => lambda {gen_extension(type, args)},
    "bookmarklet" => lambda {gen_bookmarklet(args)},
    "infocard" => lambda {gen_infocard(args)}
  }
  if endpoints[type]
    endpoints[type].call
  else
    raise "Unknown endpoint specified (#{type})"
  end
  
end

.write_file(ext, env) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/generate.rb', line 99

def self.write_file(ext, env)
  if ext["errors"].empty?
    endpoint_dir = get_endpoint_dir(env)
    ext_file_name = File.join(endpoint_dir, ext["file_name"])
    url = URI.parse(ext["data"])

    # Download the file
    puts "Downloading endpoint from #{ext["data"]} to #{ext_file_name}"
    Net::HTTP.start(url.host, url.port) { |http|
      resp = http.get url.path
      open(ext_file_name, "wb") do |file|
        file.write(resp.body)
      end
    }
    puts "Endpoint was created: #{ext_file_name}"
  else
    raise ext["errors"].join("\n")
  end
end