zendesk_apps_tools 1.34.1 → 1.35.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39aa7270d1892b10893cb27ff6313382e876b458
4
- data.tar.gz: 3abcbd9f82e5ae62fc15fd053cf7f1c60443a292
3
+ metadata.gz: 355d252b2c3f34d0695fc2a8439e086a539811e6
4
+ data.tar.gz: 623e2dbf1511e5b089a1e20d0a5529a241fefe12
5
5
  SHA512:
6
- metadata.gz: 47a59c5af9c696bb1c012f98193f2043523686ede9be2fbc6d0b1f010f5d9134a0698db9c0741698b652c1ebb3f41e83ae4de19ca41757245f71016ba00a80bc
7
- data.tar.gz: e372aba7aec3209ea0443e080e3805d1763f3533fc3d2e1964d677d3ae5e33ec4e1e2d81003c12e93c6523410cfdebec7191cb6ebe6e358acbb29759c719be53
6
+ metadata.gz: 2adc3c34e6c0d4386e56de0f660299c21fc06276a931ac4d2e97635eba73196f830ecea59ebc968dda72d660e54ad5eb8227fd71f6212738a2ad51f73819942f
7
+ data.tar.gz: 9513cd773c3bfc56fba269e2442d61795cb3a26675a569676fe3284e6d34483b5a5621db54afb20918cbdccc2286effe87683e1cf5263a1d6cd6b74befe7316e
data/bin/zat CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  lib_dir = File.expand_path('../../lib', __FILE__)
3
- $LOAD_PATH << lib_dir unless $LOAD_PATH.include?(lib_dir)
3
+ $LOAD_PATH.shift lib_dir unless $LOAD_PATH.include?(lib_dir)
4
+ ENV['THOR_SHELL'] = 'Color'
4
5
  require 'zendesk_apps_tools'
5
6
  ZendeskAppsTools::Command.start
data/features/new.feature CHANGED
@@ -115,3 +115,4 @@ Feature: create a template for a new zendesk app
115
115
  "frameworkVersion": "2.0"
116
116
  }
117
117
  """
118
+ And I reset the working directory
@@ -1,5 +1,5 @@
1
1
  require 'fileutils'
2
- require 'zip/zip'
2
+ require 'zip'
3
3
  require 'English'
4
4
 
5
5
  When /^I move to the app directory$/ do
@@ -57,11 +57,11 @@ When /^I run the command "(.*?)" to (validate|package|clean) the app$/ do |cmd,
57
57
  end
58
58
 
59
59
  Then /^the app file "(.*?)" is created with:$/ do |file, content|
60
- File.read(file).chomp.gsub(' ', '').should == content.gsub(' ', '')
60
+ expect(File.read(file).chomp.gsub(' ', '')).to eq content.gsub(' ', '')
61
61
  end
62
62
 
63
63
  Then /^the app file "(.*?)" is created$/ do |filename|
64
- File.exist?(filename).should be_truthy
64
+ expect(File.exist?(filename)).to be_truthy
65
65
  end
66
66
 
67
67
  Then /^the fixture "(.*?)" is used for "(.*?)"$/ do |fixture, app_file|
@@ -97,7 +97,7 @@ Then /^"(.*?)" should be a symlink$/ do |path|
97
97
  end
98
98
 
99
99
  Then /^the zip file in "(.*?)" should not contain any symlinks$/ do |path|
100
- Zip::ZipFile.foreach Dir[path + '/app-*.zip'][0] do |p|
100
+ Zip::File.foreach Dir[path + '/app-*.zip'][0] do |p|
101
101
  p.symlink?.should be_falsy
102
102
  end
103
103
  end
@@ -12,6 +12,8 @@ module ZendeskAppsTools
12
12
  end
13
13
 
14
14
  def get_connection(encoding = :url_encoded)
15
+ require 'net/http'
16
+ require 'faraday'
15
17
  prepare_api_auth
16
18
  Faraday.new full_url do |f|
17
19
  f.request encoding
@@ -1,6 +1,4 @@
1
1
  require 'thor'
2
- require 'json'
3
-
4
2
  require 'zendesk_apps_tools/manifest_handler'
5
3
 
6
4
  module ZendeskAppsTools
@@ -1,24 +1,21 @@
1
1
  require 'thor'
2
- require 'zip/zip'
3
2
  require 'pathname'
4
- require 'net/http'
5
3
  require 'json'
6
- require 'faraday'
7
- require 'io/console'
8
- require 'zendesk_apps_support'
9
4
 
5
+ require 'zendesk_apps_tools/version'
10
6
  require 'zendesk_apps_tools/command_helpers'
11
7
 
12
8
  module ZendeskAppsTools
13
9
  class Command < Thor
14
10
  include Thor::Actions
15
- include ZendeskAppsSupport
16
11
  include ZendeskAppsTools::CommandHelpers
17
12
 
18
13
  SHARED_OPTIONS = {
19
14
  ['path', '-p'] => './',
20
15
  clean: false
21
- }
16
+ }.freeze
17
+
18
+ map %w(-v) => :version
22
19
 
23
20
  source_root File.expand_path(File.join(File.dirname(__FILE__), '../..'))
24
21
 
@@ -51,8 +48,7 @@ module ZendeskAppsTools
51
48
  @iframe_location = if options[:'iframe-only']
52
49
  iframe_uri_text = 'Enter your iFrame URI or leave it blank to use'\
53
50
  " a default local template page:\n"
54
- value = get_value_from_stdin(iframe_uri_text, allow_empty: true)
55
- value == '' ? 'assets/iframe.html' : value
51
+ get_value_from_stdin(iframe_uri_text, allow_empty: true, default: 'assets/iframe.html')
56
52
  else
57
53
  '_legacy'
58
54
  end
@@ -69,7 +65,15 @@ module ZendeskAppsTools
69
65
  method_options SHARED_OPTIONS
70
66
  def validate
71
67
  setup_path(options[:path])
72
- errors = app_package.validate(marketplace: false)
68
+ begin
69
+ errors = app_package.validate(marketplace: false)
70
+ rescue ExecJS::RuntimeError
71
+ error = "There was an error trying to validate this app.\n"
72
+ if ExecJS.runtime.name == 'JScript'
73
+ error += 'To validate on Windows, please install node from https://nodejs.org/'
74
+ end
75
+ say_error_and_exit error
76
+ end
73
77
  valid = errors.none?
74
78
 
75
79
  if valid
@@ -124,24 +128,24 @@ module ZendeskAppsTools
124
128
  method_option :app_id, default: DEFAULT_APP_ID, required: false
125
129
  def server
126
130
  setup_path(options[:path])
127
- manifest = app_package.manifest_json
131
+ manifest = app_package.manifest
128
132
 
129
- settings_helper = ZendeskAppsTools::Settings.new
133
+ require 'zendesk_apps_tools/settings'
134
+ settings_helper = ZendeskAppsTools::Settings.new(self)
130
135
 
131
- settings = settings_helper.get_settings_from_file options[:config], manifest['parameters']
136
+ settings = settings_helper.get_settings_from_file options[:config], manifest.original_parameters
132
137
 
133
138
  unless settings
134
- settings = settings_helper.get_settings_from_user_input self, manifest['parameters']
139
+ settings = settings_helper.get_settings_from_user_input manifest.original_parameters
135
140
  end
136
141
 
137
142
  require 'zendesk_apps_tools/server'
138
143
  ZendeskAppsTools::Server.tap do |server|
144
+ server.set :settings_helper, settings_helper
139
145
  server.set :port, options[:port]
140
146
  server.set :root, options[:path]
141
147
  server.set :public_folder, File.join(options[:path], 'assets')
142
148
  server.set :parameters, settings
143
- server.set :manifest, manifest['parameters']
144
- server.set :config, options[:config]
145
149
  server.set :app_id, options[:app_id]
146
150
  server.run!
147
151
  end
@@ -158,7 +162,7 @@ module ZendeskAppsTools
158
162
  app_name = JSON.parse(File.read(File.join options[:path], 'manifest.json'))['name']
159
163
  end
160
164
  app_name ||= get_value_from_stdin('Enter app name:')
161
- deploy_app(:post, '/api/v2/apps.json', name: app_name)
165
+ deploy_app(:post, '/api/v2/apps.json', name: app_name)
162
166
  end
163
167
 
164
168
  desc 'update', 'Update app on the server'
@@ -175,6 +179,11 @@ module ZendeskAppsTools
175
179
  deploy_app(:put, "/api/v2/apps/#{app_id}.json", {})
176
180
  end
177
181
 
182
+ desc "version, -v", "Print the version"
183
+ def version
184
+ say ZendeskAppsTools::VERSION
185
+ end
186
+
178
187
  protected
179
188
 
180
189
  def setup_path(path)
@@ -4,7 +4,6 @@ require 'zendesk_apps_tools/api_connection'
4
4
  require 'zendesk_apps_tools/deploy'
5
5
  require 'zendesk_apps_tools/directory'
6
6
  require 'zendesk_apps_tools/package_helper'
7
- require 'zendesk_apps_tools/settings'
8
7
  require 'zendesk_apps_tools/translate'
9
8
  require 'zendesk_apps_tools/bump'
10
9
 
@@ -1,14 +1,12 @@
1
- require 'faraday'
2
-
3
1
  module ZendeskAppsTools
4
2
  module Common
5
- def api_request(url, request = Faraday.new)
6
- request.get(url)
3
+ def say_error_and_exit(msg)
4
+ say_error msg
5
+ exit 1
7
6
  end
8
7
 
9
- def say_error_and_exit(msg)
8
+ def say_error(msg)
10
9
  say msg, :red
11
- exit 1
12
10
  end
13
11
 
14
12
  def get_value_from_stdin(prompt, opts = {})
@@ -18,12 +16,14 @@ module ZendeskAppsTools
18
16
  allow_empty: false
19
17
  }.merge(opts)
20
18
 
21
- while input = ask(prompt)
22
- return '' if input.empty? && options[:allow_empty]
23
- if input =~ options[:valid_regex]
19
+ thor_options = { default: options[:default] }
20
+
21
+ while input = ask(prompt, thor_options)
22
+ return '' if options[:allow_empty] && input.empty?
23
+ if input.to_s =~ options[:valid_regex]
24
24
  break
25
25
  else
26
- say(options[:error_msg], :red)
26
+ say_error options[:error_msg]
27
27
  end
28
28
  end
29
29
 
@@ -31,10 +31,8 @@ module ZendeskAppsTools
31
31
  end
32
32
 
33
33
  def get_password_from_stdin(prompt)
34
- print "#{prompt} "
35
- password = STDIN.noecho(&:gets).chomp
36
- puts
37
- password
34
+ ask(prompt, echo: false)
35
+ say ''
38
36
  end
39
37
  end
40
38
  end
@@ -2,7 +2,6 @@ module ZendeskAppsTools
2
2
  module Deploy
3
3
  def deploy_app(connection_method, url, body)
4
4
  body[:upload_id] = upload(options[:path]).to_s
5
-
6
5
  connection = get_connection
7
6
 
8
7
  response = connection.send(connection_method) do |req|
@@ -45,7 +44,9 @@ module ZendeskAppsTools
45
44
 
46
45
  all_apps = connection.get('/api/v2/apps.json').body
47
46
 
48
- app_id = JSON.parse(all_apps)['apps'].find { |app| app['name'] == name }['id']
47
+ app_json = JSON.parse(all_apps)['apps'].find { |app| app['name'] == name }
48
+ say_error_and_exit('The app was not found. Please verify your credentials, subdomain, and app name are correct.') unless app_json
49
+ app_id = app_json['id']
49
50
 
50
51
  save_cache 'app_id' => app_id
51
52
  app_id
@@ -11,14 +11,13 @@ module ZendeskAppsTools
11
11
  end
12
12
 
13
13
  def prompt_new_app_dir
14
- prompt = "Enter a directory name to save the new app (will create the dir if it does not exist, default to current dir):\n"
15
- opts = { valid_regex: /^(\w|\/|\\)*$/, allow_empty: true }
14
+ prompt = "Enter a directory name to save the new app (will create the dir if it does not exist):\n"
15
+ opts = { valid_regex: /^(.|\w|\/|\\)*$/, default: './' }
16
16
  while @app_dir = get_value_from_stdin(prompt, opts)
17
- @app_dir = './' and break if @app_dir.empty?
18
17
  if !File.exist?(@app_dir)
19
18
  break
20
19
  elsif !File.directory?(@app_dir)
21
- puts 'Invalid dir, try again:'
20
+ say_error 'Invalid dir, try again:'
22
21
  else
23
22
  break
24
23
  end
@@ -25,6 +25,7 @@ module ZendeskAppsTools
25
25
  end
26
26
 
27
27
  def load_manifest
28
+ require 'json'
28
29
  manifest_json = File.read(manifest_json_path)
29
30
  @manifest = JSON.load(manifest_json)
30
31
  rescue => e
@@ -1,15 +1,14 @@
1
1
  module ZendeskAppsTools
2
- require 'zendesk_apps_support'
3
2
 
4
3
  module PackageHelper
5
- include ZendeskAppsSupport
6
-
7
4
  def app_package
8
- @app_package ||= Package.new(app_dir.to_s)
5
+ require 'zendesk_apps_support'
6
+ @app_package ||= ZendeskAppsSupport::Package.new(app_dir.to_s)
9
7
  end
10
8
 
11
9
  def zip(archive_path)
12
- Zip::ZipFile.open(archive_path, 'w') do |zipfile|
10
+ require 'zip'
11
+ Zip::File.open(archive_path, 'w') do |zipfile|
13
12
  app_package.files.each do |file|
14
13
  relative_path = file.relative_path
15
14
  path = relative_path
@@ -5,38 +5,31 @@ require 'zendesk_apps_support/package'
5
5
  module ZendeskAppsTools
6
6
  class Server < Sinatra::Base
7
7
  set :protection, :except => :frame_options
8
- last_mtime = Time.new(0)
9
8
  ZENDESK_DOMAINS_REGEX = /^http(?:s)?:\/\/[a-z0-9-]+\.(?:zendesk|zopim|zd-(?:dev|master|staging))\.com$/
10
9
 
11
10
  get '/app.js' do
12
11
  access_control_allow_origin
13
12
  content_type 'text/javascript'
14
13
 
15
- if File.exist? settings.config
16
- curr_mtime = File.stat(settings.config).mtime
17
- if curr_mtime > last_mtime
18
- settings_helper = ZendeskAppsTools::Settings.new
19
- settings.parameters = settings_helper.get_settings_from_file(settings.config, settings.manifest)
20
- last_mtime = curr_mtime
21
- end
22
- end
14
+ new_settings = settings.settings_helper.refresh!
15
+ settings.parameters = new_settings if new_settings
23
16
 
24
17
  package = ZendeskAppsSupport::Package.new(settings.root, false)
25
- app_name = package.manifest_json['name'] || 'Local App'
18
+ app_name = ENV.fetch('ZAT_APP_NAME', 'Local App')
26
19
  installation = ZendeskAppsSupport::Installation.new(
27
20
  id: settings.app_id,
28
21
  app_id: settings.app_id,
29
22
  app_name: app_name,
30
23
  enabled: true,
31
24
  requirements: package.requirements_json,
32
- settings: settings.parameters.merge({title: app_name}),
25
+ settings: settings.parameters.merge(title: app_name),
33
26
  updated_at: Time.now.iso8601,
34
27
  created_at: Time.now.iso8601
35
28
  )
36
29
 
37
30
  app_js = package.compile_js(
38
31
  app_id: settings.app_id,
39
- app_name: package.manifest_json['name'] || 'Local App',
32
+ app_name: app_name,
40
33
  assets_dir: "http://localhost:#{settings.port}/",
41
34
  locale: params['locale']
42
35
  )
@@ -1,19 +1,21 @@
1
1
  require 'zendesk_apps_tools/common'
2
- require 'yaml'
3
2
 
4
3
  module ZendeskAppsTools
5
4
  class Settings
6
- def get_settings_from_user_input(user_input, parameters)
5
+ def initialize(cli)
6
+ @cli = cli
7
+ end
8
+
9
+ def get_settings_from_user_input(parameters)
7
10
  return {} if parameters.nil?
8
11
 
9
12
  parameters.inject({}) do |settings, param|
10
13
  if param['default']
11
- input = user_input.get_value_from_stdin("Enter a value for parameter '#{param['name']}' or press 'Return' to use the default value '#{param['default']}':\n", allow_empty: true)
12
- input = param['default'] if input.empty?
14
+ input = @cli.get_value_from_stdin("Enter a value for parameter '#{param['name']}':\n", default: param['default'])
13
15
  elsif param['required']
14
- input = user_input.get_value_from_stdin("Enter a value for required parameter '#{param['name']}':\n")
16
+ input = @cli.get_value_from_stdin("Enter a value for required parameter '#{param['name']}':\n")
15
17
  else
16
- input = user_input.get_value_from_stdin("Enter a value for optional parameter '#{param['name']}' or press 'Return' to skip:\n", allow_empty: true)
18
+ input = @cli.get_value_from_stdin("Enter a value for optional parameter '#{param['name']}' or press 'Return' to skip:\n", allow_empty: true)
17
19
  end
18
20
 
19
21
  if param['type'] == 'checkbox'
@@ -25,39 +27,36 @@ module ZendeskAppsTools
25
27
  end
26
28
  end
27
29
 
30
+ def refresh!
31
+ if File.exist? @filepath
32
+ curr_mtime = File.stat(@filepath).mtime
33
+ if curr_mtime > @last_mtime
34
+ @last_mtime = curr_mtime
35
+ get_settings_from_file(@filepath, @parameters)
36
+ end
37
+ end
38
+ end
39
+
28
40
  def get_settings_from_file(filepath, parameters)
41
+ @filepath ||= filepath
42
+ @parameters ||= parameters
43
+
29
44
  return {} if parameters.nil?
30
45
  return nil unless File.exist? filepath
31
46
 
32
47
  begin
33
- settings_file = File.read(filepath)
34
-
35
- if filepath =~ /\.json$/ || settings_file =~ /\A\s*{/
36
- settings_data = JSON.load(settings_file)
37
- else
38
- settings_data = YAML.load(settings_file)
39
- end
40
-
41
- settings_data.each do |index, setting|
42
- if setting.is_a?(Hash) || setting.is_a?(Array)
43
- settings_data[index] = JSON.dump(setting)
44
- end
45
- end
48
+ settings_file = read_settings(filepath)
49
+ settings_data = parse_settings(filepath, settings_file)
46
50
  rescue => err
47
- puts "Failed to load #{filepath}"
48
- puts err.message
51
+ @cli.say_error "Failed to load #{filepath}\n#{err.message}"
49
52
  return nil
50
53
  end
51
54
 
52
- parameters.inject({}) do |settings, param|
53
- input = settings_data[param['name']]
54
-
55
- if !input && param['default']
56
- input = param['default']
57
- end
55
+ parameters.each_with_object({}) do |param, settings|
56
+ input = settings_data[param['name']] || param['default']
58
57
 
59
58
  if !input && param['required']
60
- puts "'#{param['name']}' is required but not specified in the config file.\n"
59
+ @cli.say_error "'#{param['name']}' is required but not specified in the config file.\n"
61
60
  return nil
62
61
  end
63
62
 
@@ -72,6 +71,27 @@ module ZendeskAppsTools
72
71
 
73
72
  private
74
73
 
74
+ def read_settings(filepath)
75
+ @last_mtime = File.stat(filepath).mtime
76
+ File.read(filepath)
77
+ end
78
+
79
+ def parse_settings(filepath, contents)
80
+ settings_data =
81
+ if filepath =~ /\.json$/ || contents =~ /\A\s*{/
82
+ JSON.load(contents)
83
+ else
84
+ require 'yaml'
85
+ YAML.load(contents)
86
+ end
87
+ settings_data.each do |index, setting|
88
+ if setting.is_a?(Hash) || setting.is_a?(Array)
89
+ settings_data[index] = JSON.dump(setting)
90
+ end
91
+ end
92
+ settings_data
93
+ end
94
+
75
95
  def convert_to_boolean_for_checkbox(input)
76
96
  unless [TrueClass, FalseClass].include?(input.class)
77
97
  return (input =~ /^(true|t|yes|y|1)$/i) ? true : false
@@ -2,15 +2,12 @@ require 'thor'
2
2
  require 'json'
3
3
  require 'zendesk_apps_tools/common'
4
4
  require 'zendesk_apps_tools/locale_identifier'
5
- require 'zendesk_apps_support'
6
- require 'yaml'
7
5
 
8
6
  module ZendeskAppsTools
9
7
  class Translate < Thor
10
8
  include Thor::Shell
11
9
  include Thor::Actions
12
10
  include ZendeskAppsTools::Common
13
- include ZendeskAppsSupport::BuildTranslation
14
11
 
15
12
  LOCALE_ENDPOINT = 'https://support.zendesk.com/api/v2/locales/agent.json'
16
13
 
@@ -37,6 +34,7 @@ module ZendeskAppsTools
37
34
  desc 'to_json', 'Convert Zendesk translation yml to I18n formatted json'
38
35
  method_option :path, default: './', required: false
39
36
  def to_json
37
+ require 'yaml'
40
38
  setup_path(options[:path]) if options[:path]
41
39
  en_yml = YAML.load_file("#{destination_root}/translations/en.yml")
42
40
  package = /^txt.apps.([^\.]+)/.match(en_yml['parts'][0]['translation']['key'])[1]
@@ -56,6 +54,8 @@ module ZendeskAppsTools
56
54
  key_prefix = "txt.apps.#{app_package}."
57
55
 
58
56
  say('Fetching translations...')
57
+ require 'net/http'
58
+ require 'faraday'
59
59
  locale_response = Faraday.get(LOCALE_ENDPOINT)
60
60
 
61
61
  if locale_response.status == 200
@@ -132,8 +132,8 @@ module ZendeskAppsTools
132
132
  end
133
133
 
134
134
  def write_yml(en_json, app_name, package_name)
135
- titles = to_flattened_namespaced_hash(en_json, I18N_TITLE_KEY)
136
- values = to_flattened_namespaced_hash(en_json, I18N_VALUE_KEY)
135
+ titles = to_flattened_namespaced_hash(en_json, :title)
136
+ values = to_flattened_namespaced_hash(en_json, :value)
137
137
  @translations = titles.each { |k, v| titles[k] = { 'title' => v, 'value' => escape_special_characters(values[k]) } }
138
138
  @app_name = app_name
139
139
  @package_name = package_name
@@ -144,6 +144,19 @@ module ZendeskAppsTools
144
144
  v.gsub('"', '\"')
145
145
  end
146
146
 
147
+ def to_flattened_namespaced_hash(hash, target_key)
148
+ require 'zendesk_apps_support/build_translation'
149
+ @includer_class ||= Class.new { include ZendeskAppsSupport::BuildTranslation }
150
+ target_key_constant = case target_key
151
+ when :title
152
+ @includer_class::I18N_TITLE_KEY
153
+ when :value
154
+ @includer_class::I18N_VALUE_KEY
155
+ end
156
+ (@includer ||= @includer_class.new)
157
+ .to_flattened_namespaced_hash(hash, target_key_constant)
158
+ end
159
+
147
160
  def array_to_nested_hash(array)
148
161
  array.inject({}) do |result, item|
149
162
  keys = item['key'].split('.')
@@ -157,8 +170,8 @@ module ZendeskAppsTools
157
170
  end
158
171
 
159
172
  def build_pseudotranslation(translations_hash, package_name)
160
- titles = to_flattened_namespaced_hash(translations_hash, I18N_TITLE_KEY)
161
- values = to_flattened_namespaced_hash(translations_hash, I18N_VALUE_KEY)
173
+ titles = to_flattened_namespaced_hash(translations_hash, :title)
174
+ values = to_flattened_namespaced_hash(translations_hash, :value)
162
175
  translations = titles.each { |k, v| titles[k] = { 'title' => v, 'value' => "[日本#{values[k]}éñđ]" } }
163
176
  translations['app.package'] = package_name # don't pseudo translate the package name
164
177
  nest_translations_hash(translations, '')
@@ -0,0 +1,3 @@
1
+ module ZendeskAppsTools
2
+ VERSION = "1.35.0"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_apps_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.34.1
4
+ version: 1.35.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James A. Rosen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-07-11 00:00:00.000000000 Z
14
+ date: 2016-09-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: thor
@@ -19,28 +19,28 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 0.18.1
22
+ version: 0.19.1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 0.18.1
29
+ version: 0.19.1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rubyzip
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - "~>"
35
35
  - !ruby/object:Gem::Version
36
- version: 0.9.1
36
+ version: 1.2.0
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
- version: 0.9.1
43
+ version: 1.2.0
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: sinatra
46
46
  requirement: !ruby/object:Gem::Requirement
@@ -75,14 +75,14 @@ dependencies:
75
75
  requirements:
76
76
  - - "~>"
77
77
  - !ruby/object:Gem::Version
78
- version: '1.32'
78
+ version: 3.1.0
79
79
  type: :runtime
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - "~>"
84
84
  - !ruby/object:Gem::Version
85
- version: '1.32'
85
+ version: 3.1.0
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: sinatra-cross_origin
88
88
  requirement: !ruby/object:Gem::Requirement
@@ -167,6 +167,20 @@ dependencies:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
+ - !ruby/object:Gem::Dependency
171
+ name: byebug
172
+ requirement: !ruby/object:Gem::Requirement
173
+ requirements:
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: '0'
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
170
184
  description: Tools to help you develop Zendesk Apps.
171
185
  email:
172
186
  - dev@zendesk.com
@@ -219,6 +233,7 @@ files:
219
233
  - lib/zendesk_apps_tools/server.rb
220
234
  - lib/zendesk_apps_tools/settings.rb
221
235
  - lib/zendesk_apps_tools/translate.rb
236
+ - lib/zendesk_apps_tools/version.rb
222
237
  - templates/translation.erb.tt
223
238
  homepage: http://github.com/zendesk/zendesk_apps_tools
224
239
  licenses:
@@ -240,7 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
255
  version: 1.3.6
241
256
  requirements: []
242
257
  rubyforge_project:
243
- rubygems_version: 2.4.5.1
258
+ rubygems_version: 2.6.4
244
259
  signing_key:
245
260
  specification_version: 4
246
261
  summary: Tools to help you develop Zendesk Apps.
@@ -252,4 +267,3 @@ test_files:
252
267
  - features/step_definitions/app_steps.rb
253
268
  - features/support/env.rb
254
269
  - features/validate.feature
255
- has_rdoc: