seagull 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dec044af9abfb2bf1b35d3633f422c59621d825a
4
+ data.tar.gz: 181d0e91c8bbc4fb04e988fd94919db2944753b3
5
+ SHA512:
6
+ metadata.gz: 6357bb17d446592aedfb925a28691eefcfa63295f5cb4031afce9b66345427ade30578b155567a958a05f309ef4667f81b4cc1bcfed1a136f62dadfeb555b157
7
+ data.tar.gz: 632292d5442f91a05eab8f66b9c687f70da3175497c24200cf7d29438f1b387e3c9aee74a62d2077dacd6d5f3b8170fa56dc031eb05df87fb0116f18d56ae82a
data/.gitignore ADDED
@@ -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
+ /.seagull
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in seagull.gemspec
4
+ gemspec
5
+
6
+ gem 'pry'
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Mikko Kokkonen
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.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Seagull
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'seagull'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install seagull
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/VERSION.yml ADDED
@@ -0,0 +1,5 @@
1
+ ---
2
+ :major: 2
3
+ :minor: B
4
+ :build: 1
5
+ :update: a
data/bin/seagull ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
4
+
5
+ # Do we have seagull inside bundler?
6
+ if File.exists?("Gemfile") and File.read("Gemfile") =~ /#{File.basename($0)}/
7
+ # Restart tool from bundle if facing load error
8
+ require 'bundler'
9
+ begin
10
+ Bundler.require(:default)
11
+ rescue LoadError
12
+ exec "bundle", "exec", File.basename($0), *ARGV
13
+ end
14
+ end
15
+
16
+ require 'seagull/cli'
17
+ Seagull::CLI.start
@@ -0,0 +1,30 @@
1
+ require 'thor'
2
+ # require 'seagull/config'
3
+
4
+ module Seagull
5
+ class CLI < Thor
6
+ def initialize(*args)
7
+ super
8
+
9
+ # @config = Seagull::Config.instance
10
+ end
11
+
12
+ desc "debug", "Opens debug console"
13
+ def debug
14
+ require 'pry'
15
+
16
+ binding.pry
17
+ end
18
+ end
19
+ end
20
+
21
+ #
22
+ require 'seagull/tasks/config'
23
+ require 'seagull/tasks/version'
24
+
25
+ module Seagull
26
+ class CLI
27
+ register(Seagull::Tasks::Config, 'config', 'config <command>', 'Manage and display configuration settings')
28
+ register(Seagull::Tasks::Version, 'version', 'version <command>', 'Version release tasks')
29
+ end
30
+ end
@@ -0,0 +1,41 @@
1
+ require 'singleton'
2
+ require 'hashie/mash'
3
+ require 'yaml'
4
+
5
+ module Seagull
6
+ class Config
7
+ include Singleton
8
+
9
+ def initialize
10
+ @config = Hashie::Mash.new({
11
+ config: {file: '.seagull'},
12
+ version: {file: 'VERSION.yml', format: :apple}
13
+ })
14
+
15
+ load
16
+ end
17
+
18
+ def load
19
+ if File.exists?(@config.config.file)
20
+ @config.deep_merge!(YAML.load_file(@config.config.file))
21
+ end
22
+ end
23
+
24
+ def save
25
+ File.open(@config.config.file, 'w') {|io| io.puts self.to_yaml }
26
+ end
27
+
28
+ def to_yaml
29
+ @config.to_hash.to_yaml
30
+ end
31
+
32
+ # Proxy
33
+ def method_missing(m, *args, &blk)
34
+ @config.send(m, *args, &blk)
35
+ end
36
+
37
+ def respond_to?(m)
38
+ @config.respond_to?(m)
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,57 @@
1
+ module Seagull
2
+ module Tasks
3
+ class Config < Thor
4
+ def initialize(*args)
5
+ super
6
+
7
+ @config = Seagull::Config.instance
8
+ end
9
+
10
+ desc "print [KEY]", "Prints current config, with optionally filtering using key"
11
+ def print(key = nil)
12
+ cfgs = _build_config_array(@config.to_hash)
13
+
14
+ cfgs.select!{|cfg| cfg.first[/#{key}/] } if key
15
+
16
+ print_table(cfgs)
17
+ end
18
+
19
+ desc "set KEY VALUE", 'Sets given key (as path) to given value'
20
+ def set(key, value)
21
+ _value = case value
22
+ when 'true' then true
23
+ when 'yes' then true
24
+ when 'false' then false
25
+ when 'no' then false
26
+ when /^[0-9]+$/ then value.to_i
27
+ when /^:[a-zA-Z]+$/ then value[1..-1].to_sym
28
+ else value
29
+ end
30
+
31
+ keypath = key.split('/')
32
+ cfg = Hash[keypath.pop, _value]
33
+ while k = keypath.pop
34
+ cfg = Hash[k, cfg]
35
+ end
36
+ @config.deep_merge!(cfg)
37
+
38
+ @config.save
39
+ say_status "config", "#{key} set to #{_value}", :green
40
+ end
41
+
42
+ private
43
+ def _build_config_array(cfg, prefix = '')
44
+ cfgs = []
45
+
46
+ cfg.each do |key, value|
47
+ if value.kind_of?(Hash)
48
+ cfgs += _build_config_array(value, "#{prefix}/#{key}")
49
+ else
50
+ cfgs << ["#{prefix}/#{key}", value]
51
+ end
52
+ end
53
+ cfgs
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,79 @@
1
+ require 'seagull/version'
2
+
3
+ module Seagull
4
+ module Tasks
5
+ class Version < Thor
6
+ VERSION = Seagull::Version.instance
7
+ CONFIG = Seagull::Config.instance
8
+
9
+ desc "print", "Prints current version (#{VERSION.to_s})"
10
+ def print
11
+ say_status "current", "Version %s (%s)" % [VERSION.marketing, VERSION.bundle], :blue
12
+ end
13
+
14
+ desc "list", "List all versions and majors"
15
+ def list
16
+ if CONFIG.version.format != :apple
17
+ say_status "UNKNOWN", "Used version format not using version <-> major coding"
18
+ exit
19
+ end
20
+
21
+ if !CONFIG.versions?
22
+ say_status "UNKNOWN", "Versions and majors have not been defined"
23
+ exit
24
+ end
25
+
26
+ table = [['Version', 'Major Version']]
27
+ table += CONFIG.versions.collect{|k,v| ["%6s.%-3s" % v.split('.'), k.to_i]}.sort
28
+
29
+ print_table table
30
+ end
31
+
32
+ desc "bumplist", "List all possible bump versions"
33
+ def bumplist
34
+ peeks = [:release, :patch, :update, :build]
35
+ versions = [['Type', 'Version']]
36
+ versions += peeks.collect{|t| [t.to_s, VERSION.peek(t)]}
37
+
38
+ print_table versions
39
+ end
40
+
41
+ desc "release [MAJOR] [VERSION]", "Releases new version (#{VERSION.peek(:release)})"
42
+ def release(major = nil, version = nil)
43
+ VERSION.release(major, version)
44
+
45
+ say_status "RELEASE", "Version #{VERSION.to_s} has been released", :green
46
+ rescue => e
47
+ say_status "FAILED", e.message, :red
48
+ end
49
+
50
+ desc "name [VERSION_NAME]", "Name current major release (#{VERSION.major})"
51
+ def name(ver_name)
52
+ CONFIG.versions![VERSION.major] = ver_name; CONFIG.save
53
+ say_status "version", "Version #{VERSION.major} named as #{ver_name}"
54
+ end
55
+
56
+ desc "patch", "Release new patch version (#{VERSION.peek(:patch)})"
57
+ def patch
58
+ VERSION.patch
59
+ say_status "PATCH", "Version increased #{VERSION.to_s}"
60
+ end
61
+
62
+ desc "update", "Release new update (#{VERSION.peek(:update)})"
63
+ def update
64
+ VERSION.update
65
+ say_status "update", "Version update to #{VERSION.to_s}"
66
+ end
67
+
68
+ desc "build [BUILDNUMBER]", "Increases build number (#{VERSION.peek(:build)}), optionally set to given number"
69
+ def build(buildnumber = nil)
70
+ if buildnumber
71
+ VERSION.set(build: buildnumber)
72
+ else
73
+ VERSION.build
74
+ end
75
+ say_status "version", "Increased build number to #{VERSION.to_s}"
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,170 @@
1
+ require 'singleton'
2
+ require 'seagull/config'
3
+ require 'versionomy'
4
+ require 'seagull/versionomy/format_definitions/apple'
5
+
6
+ module Seagull
7
+ class Version
8
+ include Singleton
9
+
10
+ def initialize
11
+ @config = Seagull::Config.instance
12
+
13
+ @version = if File.exists?(@config.version.file)
14
+ Versionomy.create(YAML.load_file(@config.version.file), @config.version.format)
15
+ else
16
+ Versionomy.create({}, @config.version.format)
17
+ end
18
+ end
19
+
20
+ def peek(what)
21
+ peek = case what
22
+ when :release
23
+ bump(:major)
24
+ when :patch
25
+ bump(:minor)
26
+ when :update
27
+ bump(:update)
28
+ when :build
29
+ bump(:build)
30
+ else
31
+ @version
32
+ end
33
+
34
+ peek.unparse
35
+ end
36
+
37
+ # Output marketing version
38
+ def marketing
39
+ case @config.version.format
40
+ when :apple
41
+ major, minor = if @config.versions![@version.major]
42
+ @config.versions[@version.major].split('.')
43
+ else
44
+ [@version.major, @version.minor]
45
+ end
46
+ tiny = @version.convert(:standard).tiny
47
+
48
+ Versionomy.create(major: major, minor: minor, tiny: tiny).unparse(:required_fields => :tiny)
49
+ else
50
+ @version.convert(:standard).unparse(:required_fields => [:major, :minor, :tiny])
51
+ end
52
+ end
53
+
54
+ def bundle
55
+ case @config.version.format
56
+ when :apple
57
+ @version.unparse
58
+ else
59
+ @version.convert(:standard).tiny2
60
+ end
61
+ end
62
+
63
+ def bundle_numeric
64
+ case @config.version.format
65
+ when :apple
66
+ @version.build
67
+ else
68
+ @version.convert(:standard).tiny2
69
+ end
70
+ end
71
+
72
+ def save
73
+ if File.extname(@config.version.file) == '.yml'
74
+ yaml = if File.exists?(@config.version.file)
75
+ YAML.load_file(@config.version.file)
76
+ else
77
+ {}
78
+ end
79
+
80
+ yaml.merge!(@version.values_hash)
81
+
82
+ # Some shortcuts
83
+ yaml.merge!({
84
+ marketing: self.marketing,
85
+ bundle: self.bundle,
86
+ bundle_numeric: self.bundle_numeric,
87
+ short: self.marketing,
88
+ string: self.marketing,
89
+ })
90
+
91
+ File.open(@config.version.file, 'w') {|io| io.puts yaml.to_yaml }
92
+
93
+ else
94
+ File.open(@config.version.file, 'w') {|io| io.puts @version.unparse }
95
+ end
96
+
97
+ # Commit
98
+ system "git commit #{@config.version.file} -m 'Bumped version to #{self.bundle}'"
99
+ end
100
+
101
+ # Accessors
102
+ def build
103
+ bump!(:build); self
104
+ end
105
+
106
+ def update
107
+ bump!(:update); self
108
+ end
109
+
110
+ def patch
111
+ bump!(:minor); self
112
+ end
113
+
114
+ def release(major = nil, version = nil)
115
+ old_major = @version.major
116
+ old_version = @config.versions![old_major.to_s]
117
+
118
+ bump!(:major)
119
+
120
+ major ||= @version.major
121
+ version ||= Versionomy.parse(@config.versions![old_major.to_s] || "0.#{major}").bump(:minor).unparse
122
+
123
+ if @config.versions![major] or @config.versions!.invert[version]
124
+ raise "Version #{version} or major #{major} already exists"
125
+ end
126
+
127
+ @config.versions![major] = version; @config.save
128
+
129
+ # Commit
130
+ system "git tag 'v#{self.marketing}' -m 'Released version #{self.marketing}'"
131
+
132
+ self
133
+ end
134
+
135
+ def bump(field)
136
+ _tr = {
137
+ :apple => {},
138
+ :standard => {
139
+ :update => :tiny, :build => :tiny2
140
+ }
141
+ }
142
+
143
+ _field = _tr[@config.version.format][field] || field
144
+
145
+ if @config.version.format == :apple and field == :update and @version.update.empty?
146
+ @version.change(update: 'a')
147
+ else
148
+ @version.bump(field)
149
+ end
150
+ end
151
+
152
+ def bump!(field)
153
+ @version = bump(field); save; self
154
+ end
155
+
156
+ def to_s(format = @config.version.format)
157
+ @version.convert(format).unparse
158
+ end
159
+
160
+ # Proxy
161
+ def method_missing(m, *args, &blk)
162
+ @version.send(m, *args, &blk)
163
+ end
164
+
165
+ def respond_to?(m)
166
+ @version.respond_to?(m)
167
+ end
168
+
169
+ end
170
+ end
@@ -0,0 +1,91 @@
1
+ require 'versionomy'
2
+
3
+ module Versionomy
4
+ module Format
5
+ def self.apple
6
+ get('apple')
7
+ end
8
+
9
+ module Apple
10
+ module ExtraMethods
11
+
12
+ end
13
+
14
+ def self.create
15
+ schema_ = Schema.create do
16
+ field(:major, :type => :integer, :default_value => 1) do
17
+ field(:minor, :type => :string, :default_value => 'A') do
18
+ field(:build, :type => :integer, :default_value => 1) do
19
+ field(:update, :type => :string)
20
+ end
21
+ end
22
+ end
23
+
24
+ add_module(Format::Apple::ExtraMethods)
25
+ end
26
+
27
+ Format::Delimiter.new(schema_) do
28
+ field(:major) do
29
+ recognize_number(:delimiter_regexp => '', :default_delimiter => '')
30
+ end
31
+
32
+ field(:minor) do
33
+ recognize_regexp('[A-Z]',:delimiter_regexp => '', :default_delimiter => '')
34
+ end
35
+
36
+ field(:build) do
37
+ recognize_number(:delimiter_regexp => '', :default_delimiter => '')
38
+ end
39
+
40
+ field(:update) do
41
+ recognize_regexp('[a-z]', :delimiter_regexp => '', :default_delimiter => '', :default_value_optional => true)
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ register('apple', Format::Apple.create, true)
48
+ end
49
+
50
+ module Conversion
51
+ module Apple
52
+ def self.create_standard_to_apple
53
+ Conversion::Parsing.new do
54
+ to_modify_original_value do |original_, convert_params_|
55
+ apple_version = {
56
+ major: original_.major,
57
+ minor: ('A'..'Z').to_a[original_.minor],
58
+ build: original_.tiny2,
59
+ update: (original_.tiny > 0 ? ('a'..'z').to_a[original_.tiny - 1] : nil),
60
+ }
61
+ Versionomy.create(apple_version, :apple)
62
+ end
63
+ end
64
+ end
65
+
66
+ def self.create_apple_to_standard
67
+ Conversion::Parsing.new do
68
+ to_modify_original_value do |original_, convert_params_|
69
+ if convert_params_[:versions]
70
+ major, minor = convert_params_[:versions][original_.major].split(".").map(&:to_i)
71
+ tiny = ('A'..'Z').to_a.index(original_.minor)
72
+ tiny2 = original_.build
73
+ patchlevel = !original_.update.empty? ? (('a'..'z').to_a.index(original_.update) + 1) : nil
74
+ else
75
+ major = original_.major
76
+ minor = ('A'..'Z').to_a.index(original_.minor)
77
+ tiny = !original_.update.empty? ? (('a'..'z').to_a.index(original_.update) + 1) : nil
78
+ tiny2 = original_.build
79
+ patchlevel = nil
80
+ end
81
+
82
+ Versionomy.create({major: major, minor: minor, tiny: tiny, tiny2: tiny2, patchlevel: patchlevel})
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ register(:standard, :apple, Conversion::Apple.create_standard_to_apple, true)
89
+ register(:apple, :standard, Conversion::Apple.create_apple_to_standard, true)
90
+ end
91
+ end
data/lib/seagull.rb ADDED
@@ -0,0 +1,4 @@
1
+ require "seagull/version"
2
+
3
+ module Seagull
4
+ end
data/seagull.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "seagull"
7
+ spec.version = "0.0.1"
8
+ spec.authors = ["Mikko Kokkonen"]
9
+ spec.email = ["mikko@owlforestry.com"]
10
+ spec.description = %q{Seagull makes managing XCode projects easy as flying is for seagulls}
11
+ spec.summary = %q{Manage Xcode projects with total control}
12
+ spec.homepage = ""
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files`.split($/)
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
+ spec.require_paths = ["lib"]
19
+
20
+ spec.add_dependency "versionomy", "~> 0.4"
21
+ spec.add_dependency "thor", "~> 0.18"
22
+ spec.add_dependency "hashie"
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake", "~> 10.1"
25
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: seagull
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Mikko Kokkonen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: versionomy
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '0.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '0.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.18'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.18'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hashie
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '10.1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '10.1'
83
+ description: Seagull makes managing XCode projects easy as flying is for seagulls
84
+ email:
85
+ - mikko@owlforestry.com
86
+ executables:
87
+ - seagull
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - .gitignore
92
+ - Gemfile
93
+ - LICENSE.txt
94
+ - README.md
95
+ - Rakefile
96
+ - VERSION.yml
97
+ - bin/seagull
98
+ - lib/seagull.rb
99
+ - lib/seagull/cli.rb
100
+ - lib/seagull/config.rb
101
+ - lib/seagull/tasks/config.rb
102
+ - lib/seagull/tasks/version.rb
103
+ - lib/seagull/version.rb
104
+ - lib/seagull/versionomy/format_definitions/apple.rb
105
+ - seagull.gemspec
106
+ homepage: ''
107
+ licenses:
108
+ - MIT
109
+ metadata: {}
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - '>='
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ requirements: []
125
+ rubyforge_project:
126
+ rubygems_version: 2.0.3
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: Manage Xcode projects with total control
130
+ test_files: []