xcode-yamlizer 0.0.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.
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+
19
+ _TestXCodeProject/
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+ source 'http://gems.github.com/'
3
+
4
+ # Specify your gem's dependencies in xcode-yamlizer.gemspec
5
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Sergey Klimov
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,61 @@
1
+ # XcodeYamlizer
2
+
3
+ [XCode's](http://stackoverflow.com/questions/2004135/how-to-merge-conflicts-file-project-pbxproj-in-xcode-use-svn)
4
+ [formats](http://stackoverflow.com/questions/4022362/merging-xcode-project-files)
5
+ [are](https://discussions.apple.com/thread/3081125?start=0&tstart=0)
6
+ [shitty](http://stackoverflow.com/questions/10552082/finding-the-error-in-xcodes-project-pbxproj-after-merge)
7
+ They are pain to merge and are impossible to read. YAML is pretty.
8
+
9
+ Imagine a brave new world with XCode's `nib`s, model files, storyboards,
10
+ project files - all in YAML. Thats what that project do!
11
+
12
+ You can see how pretty it looks on Github in this sample repo.
13
+
14
+
15
+ ## Installation
16
+
17
+ Install XcodeYamlizer with:
18
+
19
+ $ gem install xcode-yamlizer
20
+
21
+ ## Usage
22
+
23
+ ### Git hooks
24
+
25
+ The best and recommended way is to install `pre-commit` and `post-merge` hook.
26
+ You can do that from your project's working directory:
27
+
28
+ $ xcode-yamlize install
29
+
30
+ Then, before commit, `pre-commit` hook will:
31
+
32
+ # find all obscure `.xib`s, `.xcdatamodel`s, project files, etc.
33
+ # create appropriate YAML files with the same name + `.yaml` extension
34
+ # add them to commit (if necessary)
35
+ # add all obscure files to `.gitignore` (if necessary)
36
+ # remove all obscure files from git (if necessary) (but will leave them be in file system)
37
+
38
+ After merge, `post-merge` hook will:
39
+
40
+ # copy all obscure files to the same name + `~` postfix
41
+ # overrite all obscure files from the version controlled `yaml`es.
42
+
43
+ ### Standalone
44
+
45
+ ```
46
+ $ xcode-yamlizer
47
+ options:
48
+ -input (-i) convert file (autodetects direction)
49
+ -dir (-d) convert directory (default direction - from XCode to YAML)
50
+ -to_xcode direction: from YAML to XCode format
51
+ -verbose verbose mode
52
+ -help (-h) show help
53
+ ```
54
+
55
+ ## Contributing
56
+
57
+ 1. Fork it
58
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
59
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
60
+ 4. Push to the branch (`git push origin my-new-feature`)
61
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'xcode-yamlizer/cli'
4
+
5
+
6
+ if ARGV[0] != "install"
7
+ puts "Usage: xcode-yamlize install"
8
+ exit(1)
9
+ end
10
+
11
+ if !File.exists?(".git")
12
+ puts "No .git directory found."
13
+ exit(1)
14
+ end
15
+
16
+ cli = XcodeYamlizer::Cli.new
17
+ installed_hooks = cli.install_all
18
+
19
+ puts "Installed hooks: #{installed_hooks}"
20
+ puts
@@ -0,0 +1,37 @@
1
+ # encoding: UTF-8
2
+ require 'xcode-yamlizer/version'
3
+
4
+ $KCODE = 'UTF8' unless RUBY_VERSION >= '1.9'
5
+ require 'args_parser'
6
+ require 'xcode-yamlizer'
7
+
8
+ puts XcodeYamlizer.public_instance_methods
9
+
10
+ parser = ArgsParser.parse ARGV do
11
+ arg :input, 'convert file (autodetects direction)', :alias => :i
12
+ arg :dir, 'convert directory (default direction - from XCode to YAML)', :alias => :d
13
+ arg :to_xcode, 'direction: from YAML to XCode format'
14
+ arg :verbose, 'verbose mode'
15
+ arg :help, 'show help', :alias => :h
16
+ validate :input, "invalid file" do |v|
17
+ File.exist?(v)
18
+ end
19
+ end
20
+
21
+ if parser.has_option? :help \
22
+ or (!parser.has_param?(:input) and !parser.has_param? :dir) \
23
+ or (parser.has_param?(:input) and parser.has_param?(:dir))
24
+ STDERR.puts parser.help
25
+ exit 1
26
+ end
27
+
28
+
29
+
30
+
31
+ if parser.has_param? :input
32
+ XcodeYamlizer::convert_file parser[:input]
33
+ end
34
+
35
+ if parser.has_param? :dir
36
+ XcodeYamlizer::convert_directory parser[:dir], parser.has_option?(:to_xcode)
37
+ end
@@ -0,0 +1,195 @@
1
+ # encoding: UTF-8
2
+ require 'xcode-yamlizer/version'
3
+ require 'xcode-yamlizer/dumpers'
4
+ require 'rugged'
5
+ require 'pathname'
6
+
7
+
8
+ $KCODE = 'UTF8' unless RUBY_VERSION >= '1.9'
9
+ require 'pp'
10
+
11
+
12
+ YAML_FORMATS = [".yaml", ".yml"]
13
+ PLIST_FORMATS = [".pbxproj"]
14
+ XML_FORMATS = [".xib", ".storyboard", /(.*).xcdatamodeld\/(.*).xcdatamodel\/contents/]
15
+
16
+
17
+ XCODE_FORMATS = PLIST_FORMATS + XML_FORMATS
18
+
19
+
20
+ DUMPERS = [
21
+ [YAML_FORMATS, YamlDumper],
22
+ [PLIST_FORMATS, PlistDumper],
23
+ [XML_FORMATS, XmlDumper],
24
+ ]
25
+
26
+
27
+ module Enumerable
28
+ def include_filename?(filename)
29
+ self.each do |elem|
30
+ if elem.kind_of? Regexp and filename =~ elem
31
+ return true
32
+ end
33
+ end
34
+ return self.include? File.extname(filename)
35
+ end
36
+ end
37
+
38
+ def dumper_for_filename(filename)
39
+ DUMPERS.each do |formats, dumper|
40
+ if formats.include_filename? filename
41
+ return dumper.new(filename)
42
+ end
43
+ end
44
+ return nil
45
+ end
46
+
47
+
48
+ def dump(output, object)
49
+ dumper = dumper_for_filename(output)
50
+ if dumper
51
+ dumper.dump(object)
52
+ end
53
+ end
54
+ def load(input)
55
+ dumper = dumper_for_filename(input)
56
+ if dumper
57
+ return dumper.load()
58
+ end
59
+ end
60
+
61
+
62
+
63
+ def repo_add_files(files)
64
+ repo_dir = '.'
65
+ repo = Rugged::Repository.new(repo_dir)
66
+ index = repo.index
67
+ files.each do |file|
68
+ if not index.get_entry(file)
69
+ #puts "Adding: #{file}"
70
+ index.add(file)
71
+ end
72
+ end
73
+ index.write()
74
+ end
75
+
76
+ def repo_remove_files(files)
77
+ repo_dir = '.'
78
+ repo = Rugged::Repository.new(repo_dir)
79
+ index = repo.index
80
+ files.each do |file|
81
+ if index.get_entry(file)
82
+ #puts "Removing: #{file}"
83
+ index.remove(file)
84
+ end
85
+ end
86
+ index.write()
87
+ end
88
+
89
+ def repo_gitignore_add_files(files)
90
+ begin
91
+ already_ignored = IO.foreach(".gitignore").map do |line|
92
+ line.chomp
93
+ end
94
+ rescue Errno::ENOENT
95
+ already_ignored = []
96
+ end
97
+
98
+
99
+ new_ignored = files - already_ignored
100
+
101
+ if new_ignored.count > 0
102
+ File.open(".gitignore", "a") do |f|
103
+ f.puts "# XcodeYamlizer"
104
+ new_ignored.each do |line|
105
+ f.puts line
106
+ end
107
+ f.puts "# end"
108
+ end
109
+
110
+ puts "added to .gitignore:"
111
+ puts new_ignored
112
+
113
+ end
114
+
115
+
116
+
117
+ end
118
+
119
+ def chroot_to_repo
120
+ root = File.expand_path("..",Rugged::Repository.discover(Dir.pwd))
121
+ Dir.chdir(root)
122
+ end
123
+
124
+
125
+
126
+ module XcodeYamlizer
127
+ def self.convert_directory(dir, to_xcode)
128
+ puts "Conventering directory '#{dir}'..."
129
+ files = []
130
+ formats = to_xcode ? YAML_FORMATS : XCODE_FORMATS
131
+
132
+ Dir.glob(dir+"**/*").each do |filename|
133
+ if formats.include_filename? filename
134
+ files += [filename]
135
+
136
+ end
137
+ end
138
+
139
+ puts "Found:"
140
+ puts files
141
+ new_files = files.map do |file|
142
+ convert_file file
143
+ end
144
+ puts "Finished!"
145
+ return files, new_files
146
+ end
147
+
148
+ def self.convert_file(input)
149
+ result = nil
150
+ if YAML_FORMATS.include_filename? input
151
+ output = input.chomp(File.extname(input))
152
+ elsif XCODE_FORMATS.include_filename? input
153
+ output = "#{input}.yaml"
154
+
155
+ end
156
+ result = load(input)
157
+ dump(output, result)
158
+ if result
159
+ puts "#{input} => #{output}"
160
+ return output
161
+ else
162
+ puts "Don't know what to do with '#{input}'"
163
+ end
164
+ end
165
+
166
+ def self.root
167
+ return File.expand_path('../..', __FILE__)
168
+ end
169
+
170
+ def self.make_filepaths_non_relative files
171
+ files.map do |file|
172
+ file.sub(/^\.\//,"")
173
+ end
174
+ end
175
+
176
+ def self.run_pre_commit
177
+ chroot_to_repo()
178
+ files_remove, files_add = convert_directory('./', false)
179
+ files_remove = make_filepaths_non_relative files_remove
180
+ files_add = make_filepaths_non_relative files_add
181
+ repo_add_files files_add
182
+
183
+ repo_remove_files files_remove
184
+ repo_gitignore_add_files files_remove
185
+ end
186
+
187
+ def self.run_post_merge
188
+ chroot_to_repo()
189
+ convert_directory('./', true)
190
+ end
191
+
192
+
193
+ end
194
+
195
+
@@ -0,0 +1,48 @@
1
+ require 'fileutils'
2
+ require 'xcode-yamlizer'
3
+ module XcodeYamlizer
4
+ class Cli
5
+
6
+ HOOK_PATHS = {
7
+ "pre-commit-hook" =>'.git/hooks/pre-commit',
8
+ "post-merge-hook" =>'.git/hooks/post-merge-hook',
9
+ }
10
+ def answered_yes?(answer)
11
+ answer =~ /y\n/i || answer == "\n"
12
+ end
13
+
14
+ def install_all
15
+ HOOK_PATHS.each_key do |key|
16
+ install key
17
+ end
18
+ end
19
+ def install(hook_name)
20
+ if File.exists?(HOOK_PATHS[hook_name])
21
+ ask_to_overwrite hook_name
22
+ end
23
+
24
+ install_hook hook_name
25
+ end
26
+
27
+ def ask_to_overwrite(hook_name)
28
+ puts "xcode-yamlizer: WARNING There is already a #{hook_name} installed in this git repo."
29
+ print "Would you like to overwrite it? [Yn] "
30
+ answer = $stdin.gets
31
+
32
+ if answered_yes?(answer)
33
+ FileUtils.rm(HOOK_PATHS[hook_name])
34
+ else
35
+ puts "Not overwriting existing hook: #{HOOK_PATHS[hook_name]}"
36
+ puts
37
+ exit(1)
38
+ end
39
+ end
40
+
41
+ def install_hook (hook_name)
42
+ hook = File.join(XcodeYamlizer.root, 'templates', hook_name)
43
+ FileUtils.cp(hook, HOOK_PATHS[hook_name])
44
+ FileUtils.chmod(0755, HOOK_PATHS[hook_name])
45
+ end
46
+
47
+ end
48
+ end
@@ -0,0 +1,67 @@
1
+ require 'osx/plist'
2
+ require 'cobravsmongoose'
3
+ require 'ya2yaml'
4
+ require 'json'
5
+ require 'yaml'
6
+
7
+ class Dumper
8
+ def initialize(filename)
9
+ @filename = filename
10
+ end
11
+
12
+ def dump(object)
13
+ end
14
+ def load()
15
+ end
16
+ end
17
+
18
+ class PlistDumper < Dumper
19
+ def dump(object)
20
+ OSX::PropertyList.dump_file(@filename, object, :xml1)
21
+ end
22
+ def load()
23
+ return OSX::PropertyList.load_file(@filename)
24
+ end
25
+ end
26
+
27
+ class YamlDumper < Dumper
28
+ def dump(object)
29
+ result = YAML::dump(object)
30
+ if result
31
+ File.open(@filename, 'w') do |f|
32
+ f.write(result)
33
+ #f.write(object.ya2yaml(:syck_compatible => false))
34
+ end
35
+ end
36
+ end
37
+
38
+ def _hash_clean(obj)
39
+ if obj.respond_to?(:key?) && obj.key?(nil)
40
+ obj.delete(nil)
41
+ end
42
+ if obj.respond_to?(:each)
43
+ obj.find{ |*a| _hash_clean(a.last) }
44
+ end
45
+ end
46
+ def load()
47
+ result = YAML::load_file(@filename)
48
+ _hash_clean(result)
49
+ return result
50
+ end
51
+ end
52
+
53
+ class XmlDumper < Dumper
54
+ def dump(object)
55
+ result = CobraVsMongoose.hash_to_xml(object)
56
+ if result
57
+ File.open(@filename, 'w') do |f|
58
+ f.write result
59
+ end
60
+ end
61
+ end
62
+ def load()
63
+ return CobraVsMongoose.xml_to_hash(IO.read(@filename))
64
+ end
65
+ end
66
+
67
+
@@ -0,0 +1,3 @@
1
+ module XcodeYamlizer
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if system("which rvm > /dev/null")
4
+ cmd = "rvm default do ruby -rrubygems "
5
+ elsif system("which rbenv > /dev/null")
6
+ cmd = "rbenv exec ruby -rrubygems "
7
+ else
8
+ cmd = "ruby -rrubygems "
9
+ end
10
+
11
+ if !system("#{cmd} -rxcode-yamlizer -e '' 2> /dev/null")
12
+ $stderr.puts "xcode-yamlizer: WARNING: Skipping checks because xcode-yamlizer the gem is not installed. (Did you change your Ruby version?)"
13
+ exit(0)
14
+ end
15
+
16
+ cmd << %Q{-e "require 'xcode-yamlizer'; XcodeYamlizer.run_post_merge"}
17
+
18
+ exit(system(cmd) ? 0 : 1)
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if system("which rvm > /dev/null")
4
+ cmd = "rvm default do ruby -rrubygems "
5
+ elsif system("which rbenv > /dev/null")
6
+ cmd = "rbenv exec ruby -rrubygems "
7
+ else
8
+ cmd = "ruby -rrubygems "
9
+ end
10
+
11
+ if !system("#{cmd} -rxcode-yamlizer -e '' 2> /dev/null")
12
+ $stderr.puts "xcode-yamlizer: WARNING: Skipping checks because xcode-yamlizer the gem is not installed. (Did you change your Ruby version?)"
13
+ exit(0)
14
+ end
15
+
16
+ cmd << %Q{-e "require 'xcode-yamlizer'; XcodeYamlizer.run_pre_commit"}
17
+
18
+ exit(system(cmd) ? 0 : 1)
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'xcode-yamlizer/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "xcode-yamlizer"
8
+ gem.version = XcodeYamlizer::VERSION
9
+ gem.authors = ["Sergey Klimov"]
10
+ gem.email = ["sergey.v.klimov@gmail.com"]
11
+ gem.description = IO.read("README.md")
12
+ gem.summary = %q{Set of git hooks to store YAML files instead of Xcode projects and nibs in repo}
13
+ gem.homepage = "https://github.com/darvin/xcode-yamlizer"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+ gem.add_runtime_dependency "args_parser"
20
+ gem.add_runtime_dependency 'kballard-osx-plist'
21
+ gem.add_runtime_dependency 'cobravsmongoose'
22
+ gem.add_runtime_dependency 'ya2yaml'
23
+ gem.add_runtime_dependency 'json'
24
+ gem.add_runtime_dependency 'rugged'
25
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: xcode-yamlizer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sergey Klimov
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-06 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: args_parser
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: kballard-osx-plist
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: cobravsmongoose
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: ya2yaml
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: json
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rugged
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: ! "# XcodeYamlizer\n\n[XCode's](http://stackoverflow.com/questions/2004135/how-to-merge-conflicts-file-project-pbxproj-in-xcode-use-svn)
111
+ \n[formats](http://stackoverflow.com/questions/4022362/merging-xcode-project-files)\n[are](https://discussions.apple.com/thread/3081125?start=0&tstart=0)
112
+ \n[shitty](http://stackoverflow.com/questions/10552082/finding-the-error-in-xcodes-project-pbxproj-after-merge)
113
+ \nThey are pain to merge and are impossible to read. YAML is pretty.\n\nImagine
114
+ a brave new world with XCode's `nib`s, model files, storyboards,\nproject files
115
+ - all in YAML. Thats what that project do!\n\nYou can see how pretty it looks on
116
+ Github in this sample repo.\n\n\n## Installation\n\nInstall XcodeYamlizer with:\n\n
117
+ \ $ gem install xcode-yamlizer\n\n## Usage\n\n### Git hooks\n\nThe best and recommended
118
+ way is to install `pre-commit` and `post-merge` hook.\nYou can do that from your
119
+ project's working directory:\n\n $ xcode-yamlize install\n\nThen, before commit,
120
+ `pre-commit` hook will:\n\n # find all obscure `.xib`s, `.xcdatamodel`s, project
121
+ files, etc.\n # create appropriate YAML files with the same name + `.yaml` extension\n
122
+ \ # add them to commit (if necessary)\n # add all obscure files to `.gitignore`
123
+ (if necessary)\n # remove all obscure files from git (if necessary) (but will
124
+ leave them be in file system)\n\nAfter merge, `post-merge` hook will:\n\n # copy
125
+ all obscure files to the same name + `~` postfix\n # overrite all obscure files
126
+ from the version controlled `yaml`es.\n\n### Standalone\n\n```\n$ xcode-yamlizer\noptions:\n
127
+ -input (-i) convert file (autodetects direction)\n -dir (-d) convert directory
128
+ (default direction - from XCode to YAML)\n -to_xcode direction: from YAML to
129
+ XCode format\n -verbose verbose mode\n -help (-h) show help\n```\n\n## Contributing\n\n1.
130
+ Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit
131
+ your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git
132
+ push origin my-new-feature`)\n5. Create new Pull Request\n"
133
+ email:
134
+ - sergey.v.klimov@gmail.com
135
+ executables:
136
+ - xcode-yamlize
137
+ - xcode-yamlizer
138
+ extensions: []
139
+ extra_rdoc_files: []
140
+ files:
141
+ - .gitignore
142
+ - Gemfile
143
+ - LICENSE.txt
144
+ - README.md
145
+ - Rakefile
146
+ - bin/xcode-yamlize
147
+ - bin/xcode-yamlizer
148
+ - lib/xcode-yamlizer.rb
149
+ - lib/xcode-yamlizer/cli.rb
150
+ - lib/xcode-yamlizer/dumpers.rb
151
+ - lib/xcode-yamlizer/version.rb
152
+ - templates/post-merge-hook
153
+ - templates/pre-commit-hook
154
+ - xcode-yamlizer.gemspec
155
+ homepage: https://github.com/darvin/xcode-yamlizer
156
+ licenses: []
157
+ post_install_message:
158
+ rdoc_options: []
159
+ require_paths:
160
+ - lib
161
+ required_ruby_version: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ required_rubygems_version: !ruby/object:Gem::Requirement
168
+ none: false
169
+ requirements:
170
+ - - ! '>='
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ requirements: []
174
+ rubyforge_project:
175
+ rubygems_version: 1.8.23
176
+ signing_key:
177
+ specification_version: 3
178
+ summary: Set of git hooks to store YAML files instead of Xcode projects and nibs in
179
+ repo
180
+ test_files: []