iarrogant 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: 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: