iarrogant 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c71ad8f513d63e7da0448a316b77ba6ccc484313
4
+ data.tar.gz: f2a84e6453b33488374471336269626a5d7d4884
5
+ SHA512:
6
+ metadata.gz: 09510d0ee9ea7a008b3868a9dc59ddcfd4318746c87e3327343254d691984f89e6e35d3c89a4e00b1be5114000dfc9cbb825eaa5f31bff81a71aac69bb855ae6
7
+ data.tar.gz: cdb96446a593d756fddd7fe37dde181b5ffa0830594706ff81b88d2cff4c49729562fc9f22b0d4fece8b35ba219989f8a86d6dde29b9e37addd9c0b50db570a1
data/.gitignore ADDED
@@ -0,0 +1,34 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/tmp/
9
+ /test/version_tmp/
10
+ /tmp/
11
+
12
+ ## Specific to RubyMotion:
13
+ .dat*
14
+ .repl_history
15
+ build/
16
+
17
+ ## Documentation cache and generated files:
18
+ /.yardoc/
19
+ /_yardoc/
20
+ /doc/
21
+ /rdoc/
22
+
23
+ ## Environment normalisation:
24
+ /.bundle/
25
+ /lib/bundler/man/
26
+
27
+ # for a library or gem, you might want to ignore these files since the code is
28
+ # intended to run in multiple environments; otherwise, check them in:
29
+ # Gemfile.lock
30
+ # .ruby-version
31
+ # .ruby-gemset
32
+
33
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
34
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ nguage: ruby
2
+ rvm:
3
+ - 2.1.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in iarrogant.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015 Seo Townsend
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,105 @@
1
+ ![iArrogant: Convert .entitlements into codesignable entitlements](https://raw.githubusercontent.com/sotownsend/iarrogant/master/banner.png)
2
+
3
+ [![Build Status](https://travis-ci.org/sotownsend/iarrogant.svg)](https://travis-ci.org/sotownsend/iarrogant)
4
+ [![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/sotownsend/iarrogant/blob/master/LICENSE)
5
+
6
+ # What is this?
7
+
8
+ iArrogant is a command line tool that converts a XML style plist .entitlements file into the proper XML style plist .xcent used by codesign; purpose built for our testing CI system @[Fittr](http://www.fittr.com).
9
+
10
+ Before you run your entitlements through iarrogant, it may look like this
11
+
12
+ ```
13
+ <?xml version="1.0" encoding="UTF-8"?>
14
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
15
+ <plist version="1.0">
16
+ <dict>
17
+ <key>com.apple.developer.healthkit</key>
18
+ <true/>
19
+ </dict>
20
+ </plist>
21
+ ```
22
+
23
+ After running through iarrogant
24
+ ```
25
+ <?xml version="1.0" encoding="UTF-8"?>
26
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
27
+ <plist version="1.0">
28
+ <dict>
29
+ <key>application-identifier</key>
30
+ <string>ZMEAK3CXPR.com.myapp</string>
31
+ <key>aps-environment</key>
32
+ <string>production</string>
33
+ <key>com.apple.developer.healthkit</key>
34
+ <true/>
35
+ <key>com.apple.developer.team-identifier</key>
36
+ <string>ZMEAK3CXPR</string>
37
+ <key>get-task-allow</key>
38
+ <false/>
39
+ </dict>
40
+ </plist>
41
+ ```
42
+
43
+ ## Requirements
44
+
45
+ - iOS 7.0+ / Mac OS X 10.9+ (Untested)
46
+ - Xcode 6.1
47
+
48
+ ## Communication
49
+
50
+ - If you **found a bug**, open an issue.
51
+ - If you **have a feature request**, open an issue.
52
+ - If you **want to contribute**, submit a pull request.
53
+
54
+ ## Installation
55
+
56
+ Run `gem install iarrogant`
57
+
58
+ ---
59
+
60
+ ## Usage
61
+
62
+
63
+ ```
64
+ #entitlement_file_path - The user created .entitlements file, usually has a few items put in automatically by capabilities in XCode
65
+ #team_identifier - The typically 10 capitalized alpha-numeric team identifier, e.g. LOETE2NOBU
66
+ #bundle_id - Your apps bundle id given in Xcode e.g. (com.awesome_app)
67
+ #aps_environment - Usually set to 'production'
68
+ #output_xcent_file - The output file location to save the generated entities
69
+ (sh)>iarrogant <entitlement file path> <team identifier> <bundle id> <aps environment> <output_xcent_file>
70
+ ```
71
+
72
+ ### Convert an entitlement file
73
+ ```
74
+ (sh)>iarrogant MyApp.entitlements ABCDEFG com.my_app production MyApp.xcent
75
+ ```
76
+
77
+ Now you can sucessfully codesign
78
+
79
+ ```
80
+ #Codesign your .app
81
+ (sh)>codesign --force --sign <SIGNING_IDENTITY (e.g. dev certificate SHA1)> --entitlements MyApp.xcent MyApp.app
82
+
83
+ #View the embedded signed entitlements
84
+ (sh)>codesign -d --entitlements - MyApp.app
85
+ ```
86
+
87
+ ## FAQ
88
+
89
+ ### When should I use iarrogant?
90
+
91
+ When you're putting a build server togeather for CI and need to alter the provisioning profile with an adhoc distribution. Codesign will require a copy of the original xcent entitlements which is a modified version of the entitlements file. iarrogant will produce the correct xcent file for codesign
92
+
93
+ ### What's Fittr?
94
+
95
+ Fittr is a SaaS company that focuses on providing personalized workouts and health information to individuals and corporations through phenomenal interfaces and algorithmic data-collection and processing.
96
+
97
+ * * *
98
+
99
+ ### Creator
100
+
101
+ - [Seo Townsend](http://github.com/sotownsend) ([@seotownsend](https://twitter.com/seotownsend))
102
+
103
+ ## License
104
+
105
+ iarrogant is released under the MIT license. See LICENSE for details.
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rspec/core/rake_task'
2
+ require "bundler/gem_tasks"
3
+
4
+ # Default directory to look in is `/specs`
5
+ # Run with `rake spec`
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task :default => :spec
data/banner.png ADDED
Binary file
data/bin/iarrogant ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'iarrogant'
4
+
5
+ require 'thor'
6
+
7
+ class IarrogantCLI < Thor
8
+ desc "convert <entitlement_file> <team_identifier> <bundle_id> <aps_environment> <output_file>", "Convert from a .Entitlements file into a codesign friendly .xcent"
9
+ def convert ent_file, team_identifier, bundle_id, aps_environment, output_file
10
+ #Returns a string
11
+ res = Iarrogant.convert_ent_to_xcent(entitlement_path: ent_file, team_identifier: team_identifier, bundle_id: bundle_id, aps_environment: aps_environment)
12
+ File.write(output_file, res)
13
+ end
14
+ end
15
+
16
+ IarrogantCLI.start(ARGV)
data/iarrogant.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'iarrogant/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "iarrogant"
8
+ spec.version = Iarrogant::VERSION
9
+ spec.authors = ["seo"]
10
+ spec.email = ["seotownsend@icloud.com"]
11
+ spec.summary = %q{A command line tool that converts a XML style plist .entitlements file into the proper XML style plist .xcent}
12
+ spec.description = %q{iArrogant is a command line tool that converts a XML style plist .entitlements file into the proper XML style plist .xcent used by codesign; purpose built for our testing CI system @Fittr.}
13
+ spec.homepage = "https://github.com/sotownsend/iarrogant"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.6"
22
+ spec.add_development_dependency "rake", "~> 0"
23
+ spec.add_development_dependency "rspec", "~> 0"
24
+ spec.add_runtime_dependency "plist thor", "~> 0"
25
+ spec.executables << 'iarrogant'
26
+ end
@@ -0,0 +1,3 @@
1
+ module Iarrogant
2
+ VERSION = "0.0.1"
3
+ end
data/lib/iarrogant.rb ADDED
@@ -0,0 +1,19 @@
1
+ require "iarrogant/version"
2
+ require 'plist'
3
+
4
+ module Iarrogant
5
+ #Convert from normal .Entitlement file to a proper .xcent, returns a string
6
+ def self.convert_ent_to_xcent(entitlement_path:, team_identifier:, bundle_id:, aps_environment:)
7
+ #Decodes into a Hash
8
+ r = Plist::parse_xml(entitlement_path)
9
+ raise "Could not locate entitlement at path #{entitlement_path.inspect}" unless r
10
+
11
+ #Set team-identifier
12
+ r['com.apple.developer.team-identifier'] = team_identifier
13
+ r['aps-environment'] = aps_environment
14
+ r['application-identifier'] = "#{team_identifier}.#{bundle_id}"
15
+ r['get-task-allow'] = false
16
+
17
+ r.to_plist
18
+ end
19
+ end
data/spec/cli_spec.rb ADDED
@@ -0,0 +1,58 @@
1
+ require './lib/iarrogant.rb'
2
+ require 'tempfile'
3
+ require 'securerandom'
4
+
5
+ def ensure_tmp
6
+ tmp_spec_path = './spec/tmp'
7
+ Dir.mkdir(tmp_spec_path) unless File.exists?(tmp_spec_path)
8
+ end
9
+
10
+ RSpec.describe "CLI" do
11
+ it "Writes correctly to an absolutely pathed file" do
12
+ #Get a temporary file, delete it, but save the path
13
+ temp = Tempfile.new "iarrogant-cli"
14
+ path = temp.path
15
+ temp.close
16
+ temp.unlink
17
+
18
+ `ruby -Ilib ./bin/iarrogant convert ./spec/resources/Test.entitlements WLKDY3CXPR com.fittr production #{path}`
19
+
20
+ (File.exist? path).should eq(true)
21
+ end
22
+
23
+ it "Writes correctly to an relativly pathed file" do
24
+ ensure_tmp
25
+
26
+ #Create a randomw file
27
+ path = "./spec/tmp/#{SecureRandom.hex}"
28
+
29
+ `ruby -Ilib ./bin/iarrogant convert ./spec/resources/Test.entitlements WLKDY3CXPR com.fittr production #{path}`
30
+
31
+ (File.exist? path).should eq(true)
32
+ end
33
+
34
+ it "Creates a file with somethnig in it" do
35
+ ensure_tmp
36
+
37
+ #Create a randomw file
38
+ path = "./spec/tmp/#{SecureRandom.hex}"
39
+
40
+ `ruby -Ilib ./bin/iarrogant convert ./spec/resources/Test.entitlements WLKDY3CXPR com.fittr production #{path}`
41
+
42
+ (File.read(path).length.should be > 0)
43
+ end
44
+
45
+ it "Creates a file that starts with <?xml" do
46
+ ensure_tmp
47
+
48
+ #Create a randomw file
49
+ path = "./spec/tmp/#{SecureRandom.hex}"
50
+
51
+ `ruby -Ilib ./bin/iarrogant convert ./spec/resources/Test.entitlements WLKDY3CXPR com.fittr production #{path}`
52
+
53
+ #Starts with <?xml
54
+ str = File.read(path)
55
+ pos = str =~ /\<\?xml/
56
+ pos.should eq(0)
57
+ end
58
+ end
@@ -0,0 +1,96 @@
1
+ #require 'spec_helper'
2
+ require './lib/iarrogant.rb'
3
+ require 'tempfile'
4
+ require 'securerandom'
5
+
6
+ RSpec.describe "convert_ent_to_xcent" do
7
+ it "Dosen't throw a name exception" do
8
+ begin
9
+ Iarrogant.convert_ent_to_xcent entitlement_path:"path", team_identifier:"identifier", bundle_id:"bundle_id", aps_environment:"aps_environment"
10
+ rescue => e
11
+ e.class.should_not eq(NameError)
12
+ end
13
+ end
14
+
15
+ it "Returns a string with a real entitlements file path" do
16
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:"identifier", bundle_id:"bundle_id", aps_environment:"aps_environment"
17
+ res.class.should eq(String)
18
+ end
19
+
20
+ it "Returns a plistable string with a real entitlement file path" do
21
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:"identifier", bundle_id:"bundle_id", aps_environment:"aps_environment"
22
+
23
+ f = Tempfile.new('iarrogant')
24
+ f.write(res)
25
+ f.close
26
+ k = Plist::parse_xml(f.path)
27
+ k.class.should eq(Hash)
28
+ end
29
+
30
+ it "Returns a plistable string that contains the correct team identifier" do
31
+ team_identifier = "#{SecureRandom.hex}"
32
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:team_identifier, bundle_id:"bundle_id", aps_environment:"aps_environment"
33
+
34
+ f = Tempfile.new('iarrogant')
35
+ f.write(res)
36
+ f.close
37
+ k = Plist::parse_xml(f.path)
38
+ k["com.apple.developer.team-identifier"].should eq(team_identifier)
39
+ end
40
+
41
+ it "Returns a plistable string that contains the correct aps environment" do
42
+ team_identifier = "#{SecureRandom.hex}"
43
+ aps_environment = 'production'
44
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:team_identifier, bundle_id:"bundle_id", aps_environment:aps_environment
45
+
46
+ f = Tempfile.new('iarrogant')
47
+ f.write(res)
48
+ f.close
49
+ k = Plist::parse_xml(f.path)
50
+ k["aps-environment"].should eq(aps_environment)
51
+ end
52
+
53
+ it "Returns a plistable string that contains the correct application identifier" do
54
+ team_identifier = "#{SecureRandom.hex}"
55
+ aps_environment = 'production'
56
+ bundle_id = "com.#{SecureRandom.hex}"
57
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:team_identifier, bundle_id:bundle_id, aps_environment:aps_environment
58
+
59
+ f = Tempfile.new('iarrogant')
60
+ f.write(res)
61
+ f.close
62
+ k = Plist::parse_xml(f.path)
63
+ k["application-identifier"].should eq("#{team_identifier}.#{bundle_id}")
64
+ end
65
+
66
+ it "Returns a plistable string that contains a false get-task-allow" do
67
+ team_identifier = "#{SecureRandom.hex}"
68
+ aps_environment = 'production'
69
+ bundle_id = "com.#{SecureRandom.hex}"
70
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:team_identifier, bundle_id:bundle_id, aps_environment:aps_environment
71
+
72
+ f = Tempfile.new('iarrogant')
73
+ f.write(res)
74
+ f.close
75
+ k = Plist::parse_xml(f.path)
76
+ k["get-task-allow"].should eq(false)
77
+ end
78
+
79
+ it "Returns a plist that is semantically equivalent to Test.xcent when given Test.entitlements with ABCEFG team, com.example as identifier, and 'production' for aps_environment" do
80
+ team_identifier = "ABCDEFG"
81
+ aps_environment = 'production'
82
+ bundle_id = "com.example"
83
+ res = Iarrogant.convert_ent_to_xcent entitlement_path:"./spec/resources/Test.entitlements", team_identifier:team_identifier, bundle_id:bundle_id, aps_environment:aps_environment
84
+
85
+ f = Tempfile.new('iarrogant')
86
+ f.write(res)
87
+ f.close
88
+ a = Plist::parse_xml(f.path)
89
+
90
+ b = Plist::parse_xml('./spec/resources/Test.xcent')
91
+
92
+ for k, v in a
93
+ b[k].should eq(a[k])
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>com.apple.developer.healthkit</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- This is a copy of an actual XCode generate xcent -->
3
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
4
+ <plist version="1.0">
5
+ <dict>
6
+ <key>application-identifier</key>
7
+ <string>ABCDEFG.com.example</string>
8
+ <key>aps-environment</key>
9
+ <string>production</string>
10
+ <key>com.apple.developer.healthkit</key>
11
+ <true/>
12
+ <key>com.apple.developer.team-identifier</key>
13
+ <string>ABCDEFG</string>
14
+ <key>get-task-allow</key>
15
+ <false/>
16
+ </dict>
17
+ </plist>
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: iarrogant
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - seo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
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: plist thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: iArrogant is a command line tool that converts a XML style plist .entitlements
70
+ file into the proper XML style plist .xcent used by codesign; purpose built for
71
+ our testing CI system @Fittr.
72
+ email:
73
+ - seotownsend@icloud.com
74
+ executables:
75
+ - iarrogant
76
+ extensions: []
77
+ extra_rdoc_files: []
78
+ files:
79
+ - ".gitignore"
80
+ - ".travis.yml"
81
+ - Gemfile
82
+ - LICENSE
83
+ - README.md
84
+ - Rakefile
85
+ - banner.png
86
+ - bin/iarrogant
87
+ - iarrogant.gemspec
88
+ - lib/iarrogant.rb
89
+ - lib/iarrogant/version.rb
90
+ - spec/cli_spec.rb
91
+ - spec/entitlement_spec.rb
92
+ - spec/resources/Test.entitlements
93
+ - spec/resources/Test.xcent
94
+ homepage: https://github.com/sotownsend/iarrogant
95
+ licenses:
96
+ - MIT
97
+ metadata: {}
98
+ post_install_message:
99
+ rdoc_options: []
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ required_rubygems_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ requirements: []
113
+ rubyforge_project:
114
+ rubygems_version: 2.4.1
115
+ signing_key:
116
+ specification_version: 4
117
+ summary: A command line tool that converts a XML style plist .entitlements file into
118
+ the proper XML style plist .xcent
119
+ test_files:
120
+ - spec/cli_spec.rb
121
+ - spec/entitlement_spec.rb
122
+ - spec/resources/Test.entitlements
123
+ - spec/resources/Test.xcent
124
+ has_rdoc: