crowdin-cli 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 216c458d88118610633862f77abaa6eb06caa368
4
- data.tar.gz: d4c1f9fbf06c86af5acc63236e7497123cdc3af8
3
+ metadata.gz: 7d02585361bf7674f7181d11121b4f59cb8dda75
4
+ data.tar.gz: bbd79e95600a053c960fcec11faa656acf5331b7
5
5
  SHA512:
6
- metadata.gz: 0e2aa85065201e87d38570523773133e69b8d68e9b36ef8e68dc98e4ca3408bb9ba4f06c79748deb6bb0ea065ca3f34da85a394dc08993d1d60ace63df06303f
7
- data.tar.gz: 4ffea4b73f41a8ec0a1d8294eebb5d84284e8ba20fffb414645e9635a2cdfa3ed957c521c84acc4aeb85327debcc863f643151cbd3ea6debcbda6d6f6efef2b7
6
+ metadata.gz: 23740c03b14c40a649ff0566f51d1edb1c87d51877e3fe3b6b91f7b1abe55c19742ca05fb48551c4248fa6c30b0283f0a40e159352905c51241cd9ed772b6792
7
+ data.tar.gz: b1c8d3312553463b9098db3f7624c51387b34753d0320b57c14baa640238ddfab72a1fe0d1ba73b807ecce64f37ad60ca62019b3803ced4a8af83fa355c726ef
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
2
3
 
3
4
  require 'pp'
4
5
  require 'find'
@@ -602,6 +603,118 @@ EOS
602
603
 
603
604
  end
604
605
 
606
+ desc I18n.t('app.commands.download.desc')
607
+ #arg_name 'Describe arguments to download here'
608
+ command :download do |c|
609
+
610
+ c.desc I18n.t('app.commands.download.flags.language.desc')
611
+ c.long_desc I18n.t('app.commands.download.flags.language.long_desc')
612
+ c.arg_name 'language_code'
613
+ c.flag [:l, :language], :default_value => 'all'
614
+
615
+ c.action do |global_options ,options, args|
616
+ language = options[:language]
617
+
618
+ supported_languages = @crowdin.supported_languages
619
+
620
+ project_info = @crowdin.project_info
621
+
622
+ if language == 'all'
623
+ project_languages = project_info['languages'].collect{ |h| h['code'] }
624
+
625
+ if @jipt_language
626
+ if supported_languages.find { |lang| lang['crowdin_code'] == @jipt_language }
627
+ project_languages << @jipt_language # crowdin_language_code
628
+ else
629
+ exit_now!("invalid jipt language `#{@jipt_language}`")
630
+ end
631
+ end
632
+ else
633
+ if project_languages.include?(language)
634
+ project_languages = [] << language
635
+ else
636
+ exit_now!("language '#{language}' doesn't exist in a project")
637
+ end
638
+ end
639
+
640
+ # use export API method before to download the most recent translations
641
+ @crowdin.export_translations
642
+
643
+ source_language = project_info['details']['source_language']['code']
644
+ source_language = supported_languages.find { |lang| lang['crowdin_code'] == source_language }
645
+
646
+ translation_languages = supported_languages.select { |lang| project_languages.include?(lang['crowdin_code']) }
647
+
648
+ # keys is all possible files in .ZIP archive
649
+ # values is resulted local files
650
+ downloadable_files_hash = {}
651
+
652
+ @config['files'].each do |file|
653
+ languages_mapping = file['languages_mapping'] # Hash or NilClass
654
+
655
+ ignores = file['ignore'] || []
656
+
657
+ # CSV files only (default: false)
658
+ multilingual_spreadsheet = file['multilingual_spreadsheet'] || false
659
+
660
+ if multilingual_spreadsheet
661
+ file_translation_languages = [] << source_language
662
+ else
663
+ file_translation_languages = translation_languages
664
+ end
665
+
666
+ if File.exists?(File.join(@base_path, file['source']))
667
+ dest = file['source'].sub("#{@base_path}", '')
668
+
669
+ file_translation_languages.each do |lang|
670
+ zipped_file = export_pattern_to_path(dest, file['translation'], lang)
671
+ zipped_file.sub!(/^\//, '')
672
+ local_file = export_pattern_to_path(dest, file['translation'], lang, languages_mapping)
673
+ downloadable_files_hash[zipped_file] = local_file
674
+ end
675
+
676
+ else
677
+ Find.find(@base_path) do |source_path|
678
+ dest = source_path.sub(@base_path, '') # relative path in Crowdin
679
+
680
+ if File.directory?(source_path)
681
+ if ignores.any? { |pattern| File.fnmatch?(pattern, dest, File::FNM_PATHNAME) }
682
+ Find.prune # Don't look any further into this directory
683
+ else
684
+ next
685
+ end
686
+ elsif File.fnmatch?(file['source'], dest, File::FNM_PATHNAME)
687
+ next if ignores.any? { |pattern| File.fnmatch?(pattern, dest, File::FNM_PATHNAME) }
688
+
689
+ export_pattern = construct_export_pattern(dest, file['source'], file['translation'])
690
+
691
+ file_translation_languages.each do |lang|
692
+ zipped_file = export_pattern_to_path(dest, export_pattern, lang)
693
+ zipped_file.sub!(/^\//, '')
694
+ local_file = export_pattern_to_path(dest, export_pattern, lang, languages_mapping)
695
+ downloadable_files_hash[zipped_file] = local_file
696
+ end
697
+
698
+ end
699
+ end # Find
700
+ end # if
701
+ end # @config['files']
702
+
703
+ ##
704
+ tempfile = Tempfile.new(language)
705
+ zipfile_name = tempfile.path
706
+ begin
707
+ @crowdin.download_translation(language, output: zipfile_name)
708
+
709
+ unzip_file_with_translations(zipfile_name, @base_path, downloadable_files_hash)
710
+ ensure
711
+ tempfile.close
712
+ tempfile.unlink # delete the tempfile
713
+ end
714
+
715
+ end # action
716
+ end # download
717
+
605
718
  desc I18n.t('app.commands.list.desc')
606
719
  long_desc I18n.t('app.commands.list.long_desc')
607
720
  command :list do |ls_cmd|
@@ -759,118 +872,6 @@ command :list do |ls_cmd|
759
872
  #ls_cmd.default_command :project
760
873
  end # list
761
874
 
762
- desc I18n.t('app.commands.download.desc')
763
- #arg_name 'Describe arguments to download here'
764
- command :download do |c|
765
-
766
- c.desc I18n.t('app.commands.download.flags.language.desc')
767
- c.long_desc I18n.t('app.commands.download.flags.language.long_desc')
768
- c.arg_name 'language_code'
769
- c.flag [:l, :language], :default_value => 'all'
770
-
771
- c.action do |global_options ,options, args|
772
- language = options[:language]
773
-
774
- supported_languages = @crowdin.supported_languages
775
-
776
- project_info = @crowdin.project_info
777
-
778
- if language == 'all'
779
- project_languages = project_info['languages'].collect{ |h| h['code'] }
780
-
781
- if @jipt_language
782
- if supported_languages.find { |lang| lang['crowdin_code'] == @jipt_language }
783
- project_languages << @jipt_language # crowdin_language_code
784
- else
785
- exit_now!("invalid jipt language `#{@jipt_language}`")
786
- end
787
- end
788
- else
789
- if project_languages.include?(language)
790
- project_languages = [] << language
791
- else
792
- exit_now!("language '#{language}' doesn't exist in a project")
793
- end
794
- end
795
-
796
- # use export API method before to download the most recent translations
797
- @crowdin.export_translations
798
-
799
- source_language = project_info['details']['source_language']['code']
800
- source_language = supported_languages.find { |lang| lang['crowdin_code'] == source_language }
801
-
802
- translation_languages = supported_languages.select { |lang| project_languages.include?(lang['crowdin_code']) }
803
-
804
- # keys is all possible files in .ZIP archive
805
- # values is resulted local files
806
- downloadable_files_hash = {}
807
-
808
- @config['files'].each do |file|
809
- languages_mapping = file['languages_mapping'] # Hash or NilClass
810
-
811
- ignores = file['ignore'] || []
812
-
813
- # CSV files only (default: false)
814
- multilingual_spreadsheet = file['multilingual_spreadsheet'] || false
815
-
816
- if multilingual_spreadsheet
817
- file_translation_languages = [] << source_language
818
- else
819
- file_translation_languages = translation_languages
820
- end
821
-
822
- if File.exists?(File.join(@base_path, file['source']))
823
- dest = file['source'].sub("#{@base_path}", '')
824
-
825
- file_translation_languages.each do |lang|
826
- zipped_file = export_pattern_to_path(dest, file['translation'], lang)
827
- zipped_file.sub!(/^\//, '')
828
- local_file = export_pattern_to_path(dest, file['translation'], lang, languages_mapping)
829
- downloadable_files_hash[zipped_file] = local_file
830
- end
831
-
832
- else
833
- Find.find(@base_path) do |source_path|
834
- dest = source_path.sub(@base_path, '') # relative path in Crowdin
835
-
836
- if File.directory?(source_path)
837
- if ignores.any? { |pattern| File.fnmatch?(pattern, dest, File::FNM_PATHNAME) }
838
- Find.prune # Don't look any further into this directory
839
- else
840
- next
841
- end
842
- elsif File.fnmatch?(file['source'], dest, File::FNM_PATHNAME)
843
- next if ignores.any? { |pattern| File.fnmatch?(pattern, dest, File::FNM_PATHNAME) }
844
-
845
- export_pattern = construct_export_pattern(dest, file['source'], file['translation'])
846
-
847
- file_translation_languages.each do |lang|
848
- zipped_file = export_pattern_to_path(dest, export_pattern, lang)
849
- zipped_file.sub!(/^\//, '')
850
- local_file = export_pattern_to_path(dest, export_pattern, lang, languages_mapping)
851
- downloadable_files_hash[zipped_file] = local_file
852
- end
853
-
854
- end
855
- end # Find
856
- end # if
857
- end # @config['files']
858
-
859
- ##
860
- tempfile = Tempfile.new(language)
861
- zipfile_name = tempfile.path
862
- begin
863
- @crowdin.download_translation(language, output: zipfile_name)
864
-
865
- unzip_file_with_translations(zipfile_name, @base_path, downloadable_files_hash)
866
- ensure
867
- tempfile.close
868
- tempfile.unlink # delete the tempfile
869
- end
870
-
871
- end # action
872
- end # download
873
-
874
875
  pre do |globals ,command, options, args|
875
876
  # Pre logic here
876
877
  # Return true to proceed; false to abourt and not call the
@@ -1,5 +1,5 @@
1
1
  module Crowdin
2
2
  module CLI
3
- VERSION = '0.3.0'
3
+ VERSION = '0.3.1'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdin-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Crowdin
@@ -14,42 +14,42 @@ dependencies:
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rdoc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aruba
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency