cocoapods-keys 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 18be4c87abf2316d890e3cf029d415c0698c9f3e
4
- data.tar.gz: 9f00ae2e7edfda4d6241d2902796fa14fbd18be0
3
+ metadata.gz: e7c5d62383ab9ac2287735144c277f3099d90f36
4
+ data.tar.gz: dab1b6a1541c32ba40e8c6ad38663a2b34feff4d
5
5
  SHA512:
6
- metadata.gz: b2e54f948ebe951f8258552859840c46be4894ddc84884b09d9931aac5da9ebc68d3adfe604c997da9a4fd325650c18f3fe29cde7b8a41400de4c53f2ab07837
7
- data.tar.gz: ca51a2f69df3d96ef32acbf8899d81a2467686edc344b4141ee53942749693a96dfa9e0b561cd8019d7a8afd83b3400d22afd618607f127dcf0db6a408c148a6
6
+ metadata.gz: 87d539ff6b1552ea3961339bd953454b5c44667355d984859c60f15a5f05df58eed5b54df7d6eff2086bfa13423ba86fa4b958174c45a5aa7c23b8d0d09763b3
7
+ data.tar.gz: 2774d1839f1726299ed43b92dc5317ec7ff31735cb9e2c53ea049d4ef4d0768d300c078ef8bc8c4fc7d5fce025af7c2e78e2f7d740ebc0de24c48cfe571d21cd
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .DS_Store
2
2
  pkg
3
3
  .idea/
4
+ spec/fixtures/dump-key
data/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ ## Master
2
+
3
+ ## 1.2.0
4
+
5
+ * Support for correctly scoping Keys to a target [orta]
6
+ * Support CocoaPods 0.37+ via CocoaPods development Pods [orta]
7
+
8
+ ## 1.1.0
9
+
10
+ * Don't integrate in a project unless keys is declared in the `plugin` [orta]
11
+
12
+ ## 1.0.2
13
+
14
+ * Support both :key and "key" in user settings [alloy]
15
+ * Use ERB templates for the .m & .h [lyricsboy]
16
+ * Frameworks support [ashfurrow]
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cocoapods-keys.gemspec
4
4
  gemspec
5
+
6
+ gem 'cocoapods'
data/Gemfile.lock CHANGED
@@ -1,17 +1,59 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cocoapods-keys (1.1.0)
4
+ cocoapods-keys (1.2.0)
5
5
  osx_keychain
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- RubyInline (3.12.3)
10
+ RubyInline (3.12.4)
11
11
  ZenTest (~> 4.3)
12
12
  ZenTest (4.11.0)
13
+ activesupport (4.2.1)
14
+ i18n (~> 0.7)
15
+ json (~> 1.7, >= 1.7.7)
16
+ minitest (~> 5.1)
17
+ thread_safe (~> 0.3, >= 0.3.4)
18
+ tzinfo (~> 1.1)
19
+ claide (0.8.1)
20
+ cocoapods (0.36.3)
21
+ activesupport (>= 3.2.15)
22
+ claide (~> 0.8.1)
23
+ cocoapods-core (= 0.36.3)
24
+ cocoapods-downloader (~> 0.9.0)
25
+ cocoapods-plugins (~> 0.4.1)
26
+ cocoapods-trunk (~> 0.6.0)
27
+ cocoapods-try (~> 0.4.3)
28
+ colored (~> 1.2)
29
+ escape (~> 0.0.4)
30
+ molinillo (~> 0.2.1)
31
+ nap (~> 0.8)
32
+ open4 (~> 1.3)
33
+ xcodeproj (~> 0.23.1)
34
+ cocoapods-core (0.36.3)
35
+ activesupport (>= 3.2.15)
36
+ fuzzy_match (~> 2.0.4)
37
+ nap (~> 0.8.0)
38
+ cocoapods-downloader (0.9.0)
39
+ cocoapods-plugins (0.4.2)
40
+ nap
41
+ cocoapods-trunk (0.6.0)
42
+ nap (>= 0.8)
43
+ netrc (= 0.7.8)
44
+ cocoapods-try (0.4.3)
45
+ colored (1.2)
13
46
  diff-lcs (1.2.5)
14
- osx_keychain (1.0.0)
47
+ escape (0.0.4)
48
+ fuzzy_match (2.0.4)
49
+ i18n (0.7.0)
50
+ json (1.8.2)
51
+ minitest (5.5.1)
52
+ molinillo (0.2.3)
53
+ nap (0.8.0)
54
+ netrc (0.7.8)
55
+ open4 (1.3.4)
56
+ osx_keychain (1.0.1)
15
57
  RubyInline (~> 3)
16
58
  rake (10.3.2)
17
59
  rspec (3.2.0)
@@ -27,12 +69,19 @@ GEM
27
69
  diff-lcs (>= 1.2.0, < 2.0)
28
70
  rspec-support (~> 3.2.0)
29
71
  rspec-support (3.2.2)
72
+ thread_safe (0.3.5)
73
+ tzinfo (1.2.2)
74
+ thread_safe (~> 0.1)
75
+ xcodeproj (0.23.1)
76
+ activesupport (>= 3)
77
+ colored (~> 1.2)
30
78
 
31
79
  PLATFORMS
32
80
  ruby
33
81
 
34
82
  DEPENDENCIES
35
83
  bundler (~> 1.3)
84
+ cocoapods
36
85
  cocoapods-keys!
37
86
  rake
38
87
  rspec
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ ![Build Status](https://travis-ci.org/orta/cocoapods-keys.svg)
2
+
1
3
  A key value store for enviroment and application keys.
2
4
 
3
5
  Its good security practice to keep production keys out of developer hands. CocoaPods-keys makes it easy to have per-user config settings stored securely in the developer's keychain, and not in the application source. It is a plugin that once installed will run on every `pod install` or `pod update`.
data/Rakefile CHANGED
@@ -1,6 +1,14 @@
1
1
  require 'bundler/gem_tasks'
2
- require "rspec/core/rake_task"
3
2
 
4
- RSpec::Core::RakeTask.new(:spec)
3
+ dump_keys_tool = 'spec/fixtures/dump-key'
4
+ dump_keys_source_file = "#{dump_keys_tool}.m"
5
+ file dump_keys_tool => dump_keys_source_file do
6
+ sh "xcrun clang -framework Foundation #{dump_keys_source_file} -o #{dump_keys_tool}"
7
+ end
8
+
9
+ desc "Run tests"
10
+ task :spec => dump_keys_tool do
11
+ sh "bundle exec rspec spec/*_spec.rb"
12
+ end
5
13
 
6
14
  task :default => :spec
@@ -1,3 +1,3 @@
1
1
  module CocoaPodsKeys
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -3,48 +3,48 @@ require "yaml"
3
3
  require "pathname"
4
4
 
5
5
  module CocoaPodsKeys
6
- class KeyringLiberator
6
+ class KeyringLiberator
7
7
 
8
- # Gets given a gives back a Keyring for the project
9
- # by basically parsing it out of ~/.cocoapods/keys/"pathMD5".yml
8
+ # Gets given a gives back a Keyring for the project
9
+ # by basically parsing it out of ~/.cocoapods/keys/"pathMD5".yml
10
10
 
11
- def self.keys_dir
12
- Pathname.new("~/.cocoapods/keys/").expand_path.to_s
13
- end
11
+ def self.keys_dir
12
+ Pathname.new("~/.cocoapods/keys/").expand_path.to_s
13
+ end
14
14
 
15
- def self.yaml_path_for_path(path)
16
- sha = Digest::MD5.hexdigest(path)
17
- File.join(keys_dir, sha + '.yml')
18
- end
15
+ def self.yaml_path_for_path(path)
16
+ sha = Digest::MD5.hexdigest(path)
17
+ File.join(keys_dir, sha + '.yml')
18
+ end
19
19
 
20
- def self.get_keyring(path)
21
- get_keyring_at_path(yaml_path_for_path(path))
22
- end
23
-
24
- def self.get_keyring_named(name)
25
- self.get_all_keyrings.find { |k| k.name == name }
26
- end
20
+ def self.get_keyring(path)
21
+ get_keyring_at_path(yaml_path_for_path(path))
22
+ end
23
+
24
+ def self.get_keyring_named(name)
25
+ self.get_all_keyrings.find { |k| k.name == name }
26
+ end
27
27
 
28
- def self.save_keyring(keyring)
29
- `mkdir -p #{keys_dir}`
28
+ def self.save_keyring(keyring)
29
+ `mkdir -p #{keys_dir}`
30
30
 
31
- File.open(yaml_path_for_path(keyring.path), 'w') {|f| f.write(YAML::dump(keyring.to_hash)) }
32
- end
31
+ File.open(yaml_path_for_path(keyring.path), 'w') {|f| f.write(YAML::dump(keyring.to_hash)) }
32
+ end
33
33
 
34
- def self.get_all_keyrings()
35
- return [] unless Dir.exist? keys_dir
36
- rings = []
37
- Dir.glob(keys_dir + "/*.yml").each do |path|
38
- rings << get_keyring_at_path(path)
39
- end
40
- rings
34
+ def self.get_all_keyrings
35
+ return [] unless Dir.exist? keys_dir
36
+ rings = []
37
+ Dir.glob(keys_dir + "/*.yml").each do |path|
38
+ rings << get_keyring_at_path(path)
41
39
  end
40
+ rings
41
+ end
42
42
 
43
- :private
44
-
45
- def self.get_keyring_at_path(path)
46
- Keyring.from_hash(YAML.load(File.read(path))) if File.exist?(path)
47
- end
43
+ private
48
44
 
45
+ def self.get_keyring_at_path(path)
46
+ Keyring.from_hash(YAML.load(File.read(path))) if File.exist?(path)
49
47
  end
48
+
49
+ end
50
50
  end
data/lib/plugin.rb CHANGED
@@ -2,23 +2,48 @@ require 'cocoapods-core'
2
2
 
3
3
  module CocoaPodsKeys
4
4
  class << self
5
- def podspec_for_current_project(spec_contents)
5
+
6
+ def setup
7
+ require 'preinstaller'
8
+
9
+ PreInstaller.new(user_options).setup
10
+
11
+ # move our podspec in to the Pods
12
+ `mkdir Pods/CocoaPodsKeys` unless Dir.exists? "Pods/CocoaPodsKeys"
13
+ podspec_path = File.join(__dir__, "../templates", "Keys.podspec.json")
14
+ `cp "#{podspec_path}" Pods/CocoaPodsKeys`
15
+
16
+ # Get all the keys
6
17
  local_user_options = user_options || {}
7
18
  project = local_user_options.fetch("project") { CocoaPodsKeys::NameWhisperer.get_project_name }
8
19
  keyring = KeyringLiberator.get_keyring_named(project) || KeyringLiberator.get_keyring(Dir.getwd)
9
20
  raise Pod::Informative, "Could not load keyring" unless keyring
21
+
22
+ # Create the h & m files in the same folder as the podspec
10
23
  key_master = KeyMaster.new(keyring)
24
+ interface_file = File.join("Pods/CocoaPodsKeys", key_master.name + '.h')
25
+ implementation_file = File.join("Pods/CocoaPodsKeys", key_master.name + '.m')
26
+
27
+ File.write(interface_file, key_master.interface)
28
+ File.write(implementation_file, key_master.implementation)
29
+
30
+ # Add our template podspec
31
+ if user_options["target"]
32
+ # Support correct scoping for a target
33
+ target = podfile.root_target_definitions.map(&:children).flatten.find do |target|
34
+ target.label == "Pods-" + user_options["target"].to_s
35
+ end
36
+
37
+ if target
38
+ target.store_pod 'Keys', :path => 'Pods/CocoaPodsKeys/'
39
+ else
40
+ puts "Could not find a target named '#{user_options["target"]}' in your Podfile. Stopping Keys.".red
41
+ end
11
42
 
12
- spec_contents.gsub!(/%%SOURCE_FILES%%/, "#{key_master.name}.{h,m}")
13
- spec_contents.gsub!(/%%PROJECT_NAME%%/, project)
14
- end
15
-
16
- def setup
17
- require 'preinstaller'
18
-
19
- PreInstaller.new(user_options).setup
20
- # Add our template podspec (needs to be remote, not local).
21
- podfile.pod 'Keys', :git => 'https://github.com/ashfurrow/empty-podspec.git'
43
+ else
44
+ # otherwise let it go in global
45
+ podfile.pod 'Keys', :path => 'Pods/CocoaPodsKeys/'
46
+ end
22
47
  end
23
48
 
24
49
  private
@@ -45,41 +70,11 @@ module Pod
45
70
 
46
71
  def install!
47
72
  CocoaPodsKeys.setup if validates_for_keys
48
-
49
73
  install_before_cocoapods_keys!
50
74
  end
51
75
 
52
76
  def validates_for_keys
53
77
  Pod::Config.instance.podfile.plugins["cocoapods-keys"] != nil
54
78
  end
55
-
56
- class Analyzer
57
- class SandboxAnalyzer
58
- alias_method :pod_state_before_cocoapods_keys, :pod_state
59
-
60
- def pod_state(pod)
61
- if pod == 'Keys'
62
- # return :added if we were, otherwise assume the Keys have :changed since last install, following my mother's "Better Safe than Sorry" principle.
63
- return :added if pod_added?(pod)
64
- :changed
65
- else
66
- pod_state_before_cocoapods_keys(pod)
67
- end
68
- end
69
- end
70
- end
71
- end
72
-
73
- class Specification
74
- class << self
75
- alias_method :from_string_before_cocoapods_keys, :from_string
76
-
77
- def from_string(spec_contents, path, subspec_name = nil)
78
- if path.basename.to_s =~ /\AKeys.podspec(?:.json)\Z/
79
- CocoaPodsKeys.podspec_for_current_project(spec_contents)
80
- end
81
- from_string_before_cocoapods_keys(spec_contents, path, subspec_name)
82
- end
83
- end
84
79
  end
85
80
  end
@@ -6,7 +6,6 @@ module Pod
6
6
  require 'pod/command/keys/set'
7
7
  require 'pod/command/keys/get'
8
8
  require 'pod/command/keys/rm'
9
- require 'pod/command/keys/generate'
10
9
 
11
10
  self.summary = "A key value store for environment settings in Cocoa Apps."
12
11
 
@@ -38,8 +38,8 @@ module Pod
38
38
 
39
39
  if keyring.keys.include? @key_name
40
40
  data = keyring.keychain_data
41
- $stderr.puts data[@key_name]
42
- else
41
+ puts data[@key_name]
42
+ else
43
43
  $stderr.puts "Could not find value"
44
44
  end
45
45
  end
@@ -6,6 +6,8 @@ module Pod
6
6
  class Keys
7
7
 
8
8
  class Set < Keys
9
+ include Config::Mixin
10
+
9
11
  self.summary = "A set values for keys."
10
12
 
11
13
  self.description = <<-DESC
@@ -43,7 +45,7 @@ module Pod
43
45
 
44
46
  keyring.save @key_name, @key_value
45
47
 
46
- puts "Saved #{@key_name} to #{keyring.name}."
48
+ puts "Saved #{@key_name} to #{keyring.name}." unless config.silent?
47
49
  end
48
50
 
49
51
  def current_keyring
@@ -1,7 +1,7 @@
1
1
  //
2
2
  // Generated by CocoaPods-Keys
3
3
  // on 11/03/2015
4
- // For more information see https://github.com/cocoapods/cocoapods-keys
4
+ // For more information see https://github.com/orta/cocoapods-keys
5
5
  //
6
6
 
7
7
  #import <Foundation/NSString.h>
@@ -1,7 +1,7 @@
1
1
  //
2
2
  // Generated by CocoaPods-Keys
3
3
  // on 11/03/2015
4
- // For more information see https://github.com/cocoapods/cocoapods-keys
4
+ // For more information see https://github.com/orta/cocoapods-keys
5
5
  //
6
6
 
7
7
  #import <objc/runtime.h>
@@ -0,0 +1,8 @@
1
+ plugin 'cocoapods-keys', {
2
+ :project => 'TestProject',
3
+ :target => 'TestTarget',
4
+ :keys => [
5
+ 'KeyWithData',
6
+ 'KeyWithoutData',
7
+ ]
8
+ }
@@ -0,0 +1,45 @@
1
+ // Dumps a key from a fixture bundle created like so:
2
+ //
3
+ // $ xcrun clang -framework Foundation -bundle ArtsyKeys.m -o ArtsyKeys.bundle
4
+
5
+ #import <Foundation/Foundation.h>
6
+ #include <dlfcn.h>
7
+ #include <stdio.h>
8
+
9
+ int main(int argc, char **argv) {
10
+ if (argc != 3) {
11
+ fprintf(stderr, "Usage: dump-key path/to/fixture.bundle [KEY]\n");
12
+ return 1;
13
+ }
14
+
15
+ char *fixturePath = argv[1];
16
+ char *keyName = argv[2];
17
+
18
+ if (dlopen(fixturePath, RTLD_NOW) == NULL) {
19
+ fprintf(stderr, "[!] Unable to load bundle at path `%s`: %s\n", fixturePath, strerror(errno));
20
+ return 2;
21
+ }
22
+
23
+ NSString *fixtureClassName = [[[NSString stringWithUTF8String:fixturePath] lastPathComponent] stringByDeletingPathExtension];
24
+ Class fixtureClass = NSClassFromString(fixtureClassName);
25
+ if (fixtureClass == nil) {
26
+ fprintf(stderr, "[!] Unable to load fixture class `%s` from bundle at `%s`\n", [fixtureClassName UTF8String], fixturePath);
27
+ return 3;
28
+ }
29
+
30
+ SEL keySelector = sel_registerName(keyName);
31
+ if (![fixtureClass instancesRespondToSelector:keySelector]) {
32
+ fprintf(stderr, "[!] Unable to find key `%s` in fixture class `%s` from bundle at `%s`\n", keyName, [fixtureClassName UTF8String], fixturePath);
33
+ return 4;
34
+ }
35
+
36
+ NSString *key = [[fixtureClass new] performSelector:keySelector];
37
+ // TODO Or is a `nil` entry fine?
38
+ if (key == nil) {
39
+ fprintf(stderr, "[!] Got `nil` for key `%s` in fixture class `%s` from bundle at `%s`\n", keyName, [fixtureClassName UTF8String], fixturePath);
40
+ return 5;
41
+ }
42
+
43
+ printf("%s\n", [key UTF8String]);
44
+ return 0;
45
+ }
@@ -0,0 +1,72 @@
1
+ require 'spec_helper'
2
+ require 'tmpdir'
3
+ require 'fileutils'
4
+
5
+ describe 'CocoaPodsKeys functional tests' do
6
+ before :all do
7
+ @tmpdir = Dir.mktmpdir
8
+ Dir.chdir(@tmpdir) do
9
+ FileUtils.mkdir('TestProject.xcodeproj')
10
+ File.open('Podfile', 'w') do |podfile|
11
+ podfile.puts <<-PODFILE
12
+ platform :ios, '7'
13
+ plugin 'cocoapods-keys', {
14
+ :project => 'TestProject',
15
+ :keys => [
16
+ 'KeyWithData',
17
+ 'AnotherKeyWithData',
18
+ # This is not included!
19
+ # 'UnusedKey'
20
+ ]
21
+ }
22
+ PODFILE
23
+ end
24
+
25
+ system("pod keys set KeyWithData such-data --silent")
26
+ system("pod keys set AnotherKeyWithData other-data --silent")
27
+ system("pod keys set UnusedKey - --silent")
28
+ system("pod install --silent --no-repo-update --no-integrate")
29
+ end
30
+ end
31
+
32
+ it "does not directly encode the keys into the implementation file" do
33
+ source = File.read(File.join(@tmpdir, 'Pods/CocoaPodsKeys/TestProjectKeys.m'))
34
+ expect(source).to_not include('such-data')
35
+ expect(source).to_not include('other-data')
36
+ end
37
+
38
+ it "is able to retrieve the correct keys from the command-line" do
39
+ Dir.chdir(@tmpdir) do
40
+ expect(`pod keys get KeyWithData`.strip).to eq('such-data')
41
+ expect(`pod keys get AnotherKeyWithData`.strip).to eq('other-data')
42
+ end
43
+ end
44
+
45
+ describe "with a built keys implementation" do
46
+ before :all do
47
+ name = 'TestProjectKeys'
48
+ dir = File.join(@tmpdir, 'Pods/CocoaPodsKeys')
49
+ Dir.chdir(dir) do
50
+ system("xcrun clang -framework Foundation -bundle #{name}.m -o #{name}.bundle")
51
+ end
52
+ @bundle = File.join(dir, "#{name}.bundle")
53
+ end
54
+
55
+ it "produces an implementation that is able to return the correct keys" do
56
+ expect(fetch_key('keyWithData')).to eq('such-data')
57
+ expect(fetch_key('anotherKeyWithData')).to eq('other-data')
58
+ end
59
+
60
+ xit "does not include keys that were not specified in the Podfile" do
61
+ expect(lambda { fetch_key('unusedKey') }).to raise_error
62
+ end
63
+
64
+ private
65
+
66
+ def fetch_key(key)
67
+ result = `'#{fixture('dump-key')}' '#{@bundle}' #{key}`.strip
68
+ raise 'Failed to fetch key from bundle' unless $?.success?
69
+ result
70
+ end
71
+ end
72
+ end
@@ -4,11 +4,11 @@ require 'tmpdir'
4
4
 
5
5
  describe CocoaPodsKeys::KeyMaster do
6
6
  let(:empty_keys_interface) {
7
- IO.read(File.join(__dir__, "fixtures", "Keys_empty.h"))
7
+ File.read(fixture("Keys_empty.h"))
8
8
  }
9
9
 
10
10
  let(:empty_keys_implementation) {
11
- IO.read(File.join(__dir__, "fixtures", "Keys_empty.m"))
11
+ File.read(fixture("Keys_empty.m"))
12
12
  }
13
13
 
14
14
  it "should work with an empty keyring" do
@@ -39,6 +39,8 @@ describe CocoaPodsKeys::KeyMaster do
39
39
  expect(keymaster.generate_implementation).to include('"\\""')
40
40
  end
41
41
 
42
+ private
43
+
42
44
  def validate_syntax(keymaster)
43
45
  # write out the interface and the implementation to temp files
44
46
  Dir.mktmpdir do |dir|
data/spec/spec_helper.rb CHANGED
@@ -5,6 +5,10 @@ def clang_available
5
5
  system("which -s clang")
6
6
  end
7
7
 
8
+ def fixture(name)
9
+ File.join(__dir__, "fixtures", name)
10
+ end
11
+
8
12
  RSpec.configure do |c|
9
13
  # exclude tests requiring clang when it's unavailable
10
14
  c.filter_run_excluding requires_clang: true unless clang_available
data/templates/Keys.h.erb CHANGED
@@ -1,7 +1,7 @@
1
1
  //
2
2
  // Generated by CocoaPods-Keys
3
3
  // on <%= @time.strftime("%d/%m/%Y") %>
4
- // For more information see https://github.com/cocoapods/cocoapods-keys
4
+ // For more information see https://github.com/orta/cocoapods-keys
5
5
  //
6
6
 
7
7
  #import <Foundation/NSString.h>
data/templates/Keys.m.erb CHANGED
@@ -1,7 +1,7 @@
1
1
  //
2
2
  // Generated by CocoaPods-Keys
3
3
  // on <%= @time.strftime("%d/%m/%Y") %>
4
- // For more information see https://github.com/cocoapods/cocoapods-keys
4
+ // For more information see https://github.com/orta/cocoapods-keys
5
5
  //
6
6
 
7
7
  #import <objc/runtime.h>
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "Keys",
3
+ "version": "1.0.0",
4
+ "summary": "Injected podspec used by CocoaPods-Keys plugin.",
5
+ "description": "This is intended to be used as an injected podspec template \n used by the [CocoaPods-Keys plugin](https://github.com/orta/cocoapods-keys).\n\n It should *not* be referenced outside of that context. \n",
6
+ "homepage": "https://github.com/orta/cocoapods-keys",
7
+ "license": {
8
+ "type": "MIT",
9
+ "text": "MIT LICENSE Found in the repo"
10
+ },
11
+ "authors": {
12
+ "Orta Therox": "orta.therox@gmail.com",
13
+ "Samuel Giddins": "segiddins@segiddins.me",
14
+ "Ash Furrow": "ash@ashfurrow.com"
15
+ },
16
+ "source": {
17
+ "git": "https://github.com/orta/cocoapods-keys.git",
18
+ "tag": "23"
19
+ },
20
+ "source_files": "*",
21
+ "frameworks": "Foundation",
22
+ "requires_arc": true
23
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-keys
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-07 00:00:00.000000000 Z
12
+ date: 2015-05-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: osx_keychain
@@ -77,6 +77,7 @@ extra_rdoc_files: []
77
77
  files:
78
78
  - ".gitignore"
79
79
  - ".travis.yml"
80
+ - CHANGELOG.md
80
81
  - Gemfile
81
82
  - Gemfile.lock
82
83
  - LICENSE.txt
@@ -91,7 +92,6 @@ files:
91
92
  - lib/name_whisperer.rb
92
93
  - lib/plugin.rb
93
94
  - lib/pod/command/keys.rb
94
- - lib/pod/command/keys/generate.rb
95
95
  - lib/pod/command/keys/get.rb
96
96
  - lib/pod/command/keys/list.rb
97
97
  - lib/pod/command/keys/rm.rb
@@ -99,12 +99,16 @@ files:
99
99
  - lib/preinstaller.rb
100
100
  - spec/fixtures/Keys_empty.h
101
101
  - spec/fixtures/Keys_empty.m
102
+ - spec/fixtures/Podfile
103
+ - spec/fixtures/dump-key.m
104
+ - spec/functional_spec.rb
102
105
  - spec/key_master_spec.rb
103
106
  - spec/keyring_liberator_spec.rb
104
107
  - spec/plugin_spec.rb
105
108
  - spec/spec_helper.rb
106
109
  - templates/Keys.h.erb
107
110
  - templates/Keys.m.erb
111
+ - templates/Keys.podspec.json
108
112
  homepage: https://github.com/cocoapods/cocoapods-keys
109
113
  licenses:
110
114
  - MIT
@@ -134,6 +138,9 @@ summary: CocoaPods Keys will store sensitive data in your Mac's keychain. Then o
134
138
  test_files:
135
139
  - spec/fixtures/Keys_empty.h
136
140
  - spec/fixtures/Keys_empty.m
141
+ - spec/fixtures/Podfile
142
+ - spec/fixtures/dump-key.m
143
+ - spec/functional_spec.rb
137
144
  - spec/key_master_spec.rb
138
145
  - spec/keyring_liberator_spec.rb
139
146
  - spec/plugin_spec.rb
@@ -1,43 +0,0 @@
1
- require 'keyring_liberator'
2
- require 'key_master'
3
-
4
- module Pod
5
- class Command
6
- class Keys
7
- class Generate < Keys
8
- include CocoaPodsKeys
9
-
10
- self.summary = "Generates the .h and .m files representing the keys."
11
-
12
- self.description = <<-DESC
13
- Generates the Objective-C class containing obfuscated keys for the project
14
- in the current working directory (if it exists). The .h and .m files are
15
- generated in the current working directory.
16
- DESC
17
-
18
- def initialize(argv)
19
- @project_name = argv.shift_argument
20
- super
21
- end
22
-
23
- def run
24
- key_master = KeyMaster.new(@keyring)
25
-
26
- interface_file = key_master.name + '.h'
27
- implementation_file = key_master.name + '.m'
28
-
29
- File.write(interface_file, key_master.interface)
30
- File.write(implementation_file, key_master.implementation)
31
- end
32
-
33
- def validate!
34
- super
35
- verify_podfile_exists!
36
-
37
- @keyring = KeyringLiberator.get_keyring_named(@project_name) || KeyringLiberator.get_keyring(Dir.getwd)
38
- help! "No keys associated with this directory or project name." unless @keyring
39
- end
40
- end
41
- end
42
- end
43
- end