polyglot_cli 0.1.2 → 0.1.3

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: 1471f76c19416f17a16dcd6a5d04fe2ce4c2047d
4
- data.tar.gz: 5281b395f0dca136b8de0351448127c5fcb633ff
3
+ metadata.gz: 141a3da0e4867789a6aa6170057bfad33d7bad09
4
+ data.tar.gz: 270b6f237b47c64add31b924c0db5d0a73e363d8
5
5
  SHA512:
6
- metadata.gz: f571558a0d97f003db71b9d08708fdcf73b48bf0911352b5e4bf86554a14cd5a9f99b5fefe6635fd1cfd73700b8cdc05ec6bb023ebd5dbd379636bf8686849cd
7
- data.tar.gz: 6025b508ec34d427554505b43e39c74974ed5375da2ec4287744b04002f7909e73ee628d07be50ca9f9220f076345413995bd52c462e880ed80a8177727d80ea
6
+ metadata.gz: 3fa4d6f205c3ffd0531e6ab327a5fd05ea22da480ff91f3ee3e6e271d9ae6cc8100f0680a486de14e11ec220fb90d770bea3ff587e97e10c5a54879ba4ddc6a6
7
+ data.tar.gz: 51dfe3730446c59f57a2139f39f6bdb6db6242153d55e914d648fd83ff17ace64c17d168ddba1b49fd1babf74fbc7b566e8197e7c0795c19271c7312f9dd5245
data/exe/polyglot CHANGED
@@ -19,11 +19,12 @@ command :login do |c|
19
19
  end
20
20
 
21
21
  command :init do |c|
22
- c.syntax = 'polyglot init'
22
+ c.syntax = 'polyglot init [options]'
23
23
  c.description = 'Sets up a Polyglot project you need for your current project.'
24
- c.action do
24
+ c.option '--query STRING', String, 'Only shows projects that matches string'
25
+ c.action do |_args, options|
25
26
  PolyglotCli::ErrorHandler.rescuable do
26
- PolyglotCli::Command::Setup.init
27
+ PolyglotCli::Command::Setup.init(options)
27
28
  end
28
29
  end
29
30
  end
@@ -69,7 +69,7 @@ module PolyglotCli
69
69
  new_value = local.delete(translation.translation_key.name)
70
70
  return if new_value == translation.value
71
71
 
72
- prompt.ok("Updating translation #{translation.id}...")
72
+ prompt.ok("Updating translation for key: #{translation.translation_key.name}...")
73
73
  translation.update(value: new_value)
74
74
  end
75
75
 
@@ -1,25 +1,62 @@
1
+ require 'commander/blank'
2
+ require 'commander/command'
3
+
1
4
  module PolyglotCli
2
5
  module Command
3
6
  class Setup
4
7
  include Helper::Terminal
5
8
  include Helper::General
6
9
 
7
- def self.init
8
- new.call
10
+ def self.init(options)
11
+ new(options).call
12
+ end
13
+
14
+ def initialize(options = Commander::Command::Options.new)
15
+ @options = options
9
16
  end
10
17
 
11
18
  def call
12
- PolyglotCli::IO::Config.write(
13
- project_id: project_id_prompt,
19
+ @config = {
20
+ project_id: project_id_prompt(filtered_projects),
14
21
  locale_path: locale_path_prompt
15
- )
22
+ }
23
+ PolyglotCli::IO::Config.write(@config.merge(locale_mapping: locale_mapping))
16
24
  success
25
+ rescue TTY::Prompt::ConfigurationError
26
+ prompt.error('Could not find any projects. Please try a new search.')
17
27
  end
18
28
 
19
29
  private
20
30
 
21
- def project_id_prompt
22
- prompt.enum_select('Choose a project: ', projects)
31
+ def locale_mapping
32
+ return if mapping_prompt
33
+
34
+ locale_map.each_with_object({}) do |map, hash|
35
+ key = if map[1].size > 1
36
+ locale_prompt(map[0], map[1])
37
+ else
38
+ map[1].first
39
+ end
40
+ hash[key] = map[0]
41
+ end
42
+ end
43
+
44
+ def locale_map
45
+ languages.each_with_object(Hash.new([])) do |l, hash|
46
+ hash[l.locale[0..1]] += [l.locale]
47
+ end
48
+ end
49
+
50
+ def mapping_prompt
51
+ prompt.yes?('Would you like to include locales?')
52
+ end
53
+
54
+ def locale_prompt(language, locales)
55
+ prompt.select("Choose a locale for #{language}: ", locales)
56
+ end
57
+
58
+ def project_id_prompt(projects)
59
+ prompt.select('Choose a project: ', projects)
23
60
  end
24
61
 
25
62
  def locale_path_prompt
@@ -32,6 +69,14 @@ module PolyglotCli
32
69
  hash[r.name] = r.id
33
70
  end
34
71
  end
72
+
73
+ def filtered_projects
74
+ projects.select { |key, _id| key[/^(.*?(#{option_query})[^$]*)$/i] }
75
+ end
76
+
77
+ def option_query
78
+ @option_query ||= @options.__hash__.fetch(:query, '')
79
+ end
35
80
  end
36
81
  end
37
82
  end
@@ -23,10 +23,24 @@ module PolyglotCli
23
23
  Time.parse(project.updated_at).utc > Time.parse(config[:project_updated_at]).utc
24
24
  end
25
25
 
26
- def languages(locale)
26
+ def languages(locale = nil)
27
27
  prompt.say('Getting languages...')
28
- results = PolyglotCli::Resource::Language.token(token).depaginate(project_id: project_id)
29
- results.select! { |l| l.locale == locale } unless locale.nil?
28
+ select_languages(
29
+ locale,
30
+ PolyglotCli::Resource::Language.token(token).depaginate(project_id: project_id)
31
+ )
32
+ end
33
+
34
+ def select_languages(locale, results)
35
+ results.select! { |l| l.locale == locale } if locale.present?
36
+
37
+ if config[:locale_mapping].present?
38
+ results.select! do |l|
39
+ l.locale = config[:locale_mapping][l.locale]
40
+ l.locale.present?
41
+ end
42
+ end
43
+
30
44
  results
31
45
  end
32
46
 
@@ -8,7 +8,7 @@ module PolyglotCli
8
8
  end
9
9
 
10
10
  def prompt
11
- @prompt ||= TTY::Prompt.new
11
+ @prompt ||= TTY::Prompt.new(interrupt: :exit)
12
12
  end
13
13
  end
14
14
  end
@@ -6,7 +6,7 @@ module PolyglotCli
6
6
  class << self
7
7
  def write(locale_path, data)
8
8
  prompt.say("Writing translations to #{path(locale_path, data.keys[0])}")
9
- File.open(path(locale_path, data.keys[0]), 'w') { |f| YAML.dump(data, f) }
9
+ File.open(path(locale_path, data.keys[0]), 'w') { |f| f.write(data.to_yaml(line_width: -1)) }
10
10
  end
11
11
 
12
12
  def read(locale_path, locale)
@@ -1,3 +1,3 @@
1
1
  module PolyglotCli
2
- VERSION = '0.1.2'.freeze
2
+ VERSION = '0.1.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polyglot_cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Grgurevic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-11 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler