cocoapods-playgrounds 0.0.3 → 0.1.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: 0b476f2ee0d9461b0d7b75689d4d06184505c230
4
- data.tar.gz: 04365247c29e13ee170f491ff3e859c21cedc880
3
+ metadata.gz: 9e8d76cad4c9cc3283f0b08be6590081bd969892
4
+ data.tar.gz: 13d30b88df34d1013df165e0d8bd1d4ea41bd581
5
5
  SHA512:
6
- metadata.gz: 4e82ff75337f6ddc80edd0e6072d864b0ef7e8e8455a0d33d3028ccae19c93a0e6be1d657dd99102776451bb633289259b8b9548a6601371ec8d7794429f564e
7
- data.tar.gz: 1ea35dfd880f71b2c18d6bcac630b2bd68f69c56d5bd16485260077e99ced1327661d4eb3c1ac61f9304b0769543b99be946c76afc49d74f1dc883d0a39e5dbc
6
+ metadata.gz: 7ddb9369b9b4fc04b337233a2959998e34279c33ad83b710aa211c4fe2251e2373899a05c2477dfee501f3ee381a92fb2cf6ca9e29355c76e2fb8e560d6f3154
7
+ data.tar.gz: ab93d1fe834cd6e9589f85878d0d3fc44a3eca694b1f4aeb8a533d58e61c0fbd52c2fd159d0080deb438f010ddeac748d4f6b2fd20d7b18cb9a91cb37236c372
data/.gitignore CHANGED
@@ -1,4 +1,3 @@
1
1
  .DS_Store
2
2
  pkg
3
3
  .idea/
4
- Gemfile.lock
@@ -5,6 +5,7 @@ Style/Documentation:
5
5
  Exclude:
6
6
  - 'spec/**/*'
7
7
  - 'test/**/*'
8
+ - 'bin/carthage-play'
8
9
  - 'bin/playground'
9
10
  - 'lib/cocoapods-playgrounds/generate.rb'
10
11
  - 'lib/cocoapods-playgrounds/workspace.rb'
@@ -23,3 +24,6 @@ Metrics/AbcSize:
23
24
 
24
25
  Metrics/MethodLength:
25
26
  Max: 20
27
+
28
+ Metrics/ClassLength:
29
+ Max: 150
@@ -0,0 +1,10 @@
1
+ os: osx
2
+ osx_image: xcode7.2
3
+ language: objective-c
4
+ #language: ruby
5
+ rvm: 2.0.0-p598
6
+ cache: bundler
7
+ before_install: gem install bundler
8
+ script:
9
+ - bundle exec rake specs
10
+ - bundle exec rake rubocop
data/Gemfile CHANGED
@@ -9,4 +9,5 @@ group :development do
9
9
  gem 'bacon'
10
10
  gem 'mocha-on-bacon'
11
11
  gem 'prettybacon'
12
+ gem 'rubocop'
12
13
  end
@@ -0,0 +1,98 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cocoapods-playgrounds (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activesupport (4.2.5.1)
10
+ i18n (~> 0.7)
11
+ json (~> 1.7, >= 1.7.7)
12
+ minitest (~> 5.1)
13
+ thread_safe (~> 0.3, >= 0.3.4)
14
+ tzinfo (~> 1.1)
15
+ ast (2.2.0)
16
+ bacon (1.2.0)
17
+ claide (0.9.1)
18
+ cocoapods (0.39.0)
19
+ activesupport (>= 4.0.2)
20
+ claide (~> 0.9.1)
21
+ cocoapods-core (= 0.39.0)
22
+ cocoapods-downloader (~> 0.9.3)
23
+ cocoapods-plugins (~> 0.4.2)
24
+ cocoapods-search (~> 0.1.0)
25
+ cocoapods-stats (~> 0.6.2)
26
+ cocoapods-trunk (~> 0.6.4)
27
+ cocoapods-try (~> 0.5.1)
28
+ colored (~> 1.2)
29
+ escape (~> 0.0.4)
30
+ molinillo (~> 0.4.0)
31
+ nap (~> 1.0)
32
+ xcodeproj (~> 0.28.2)
33
+ cocoapods-core (0.39.0)
34
+ activesupport (>= 4.0.2)
35
+ fuzzy_match (~> 2.0.4)
36
+ nap (~> 1.0)
37
+ cocoapods-downloader (0.9.3)
38
+ cocoapods-plugins (0.4.2)
39
+ nap
40
+ cocoapods-search (0.1.0)
41
+ cocoapods-stats (0.6.2)
42
+ cocoapods-trunk (0.6.4)
43
+ nap (>= 0.8, < 2.0)
44
+ netrc (= 0.7.8)
45
+ cocoapods-try (0.5.1)
46
+ colored (1.2)
47
+ escape (0.0.4)
48
+ fuzzy_match (2.0.4)
49
+ i18n (0.7.0)
50
+ json (1.8.3)
51
+ metaclass (0.0.4)
52
+ minitest (5.8.4)
53
+ mocha (1.1.0)
54
+ metaclass (~> 0.0.1)
55
+ mocha-on-bacon (0.2.2)
56
+ mocha (>= 0.13.0)
57
+ molinillo (0.4.2)
58
+ nap (1.1.0)
59
+ netrc (0.7.8)
60
+ parser (2.3.0.5)
61
+ ast (~> 2.2)
62
+ powerpack (0.1.1)
63
+ prettybacon (0.0.2)
64
+ bacon (~> 1.2)
65
+ rainbow (2.1.0)
66
+ rake (10.5.0)
67
+ rubocop (0.37.2)
68
+ parser (>= 2.3.0.4, < 3.0)
69
+ powerpack (~> 0.1)
70
+ rainbow (>= 1.99.1, < 3.0)
71
+ ruby-progressbar (~> 1.7)
72
+ unicode-display_width (~> 0.3)
73
+ ruby-progressbar (1.7.5)
74
+ thread_safe (0.3.5)
75
+ tzinfo (1.2.2)
76
+ thread_safe (~> 0.1)
77
+ unicode-display_width (0.3.1)
78
+ xcodeproj (0.28.2)
79
+ activesupport (>= 3)
80
+ claide (~> 0.9.1)
81
+ colored (~> 1.2)
82
+
83
+ PLATFORMS
84
+ ruby
85
+
86
+ DEPENDENCIES
87
+ bacon
88
+ bundler (~> 1.3)
89
+ cocoapods
90
+ cocoapods-playgrounds!
91
+ mocha
92
+ mocha-on-bacon
93
+ prettybacon
94
+ rake
95
+ rubocop
96
+
97
+ BUNDLED WITH
98
+ 1.11.2
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # This Could Be Us But You Playing
2
2
 
3
+ [![Build Status](https://img.shields.io/travis/neonichu/ThisCouldBeUsButYouPlaying/master.svg?style=flat)](https://travis-ci.org/neonichu/ThisCouldBeUsButYouPlaying)
4
+
3
5
  ![](README_images/alamofire.png)
4
6
 
5
7
  Generates a Swift Playground for any Pod.
@@ -24,6 +26,14 @@ To generate a Playground with multiple Pods:
24
26
 
25
27
  $ pod playgrounds RxSwift,RxCocoa
26
28
 
29
+ ### Carthage
30
+
31
+ To generate a Playground for a Carthage-enabled library:
32
+
33
+ $ carthage-play Alamofire/Alamofire
34
+
35
+ Note: This currently assumes that libraries are hosted on GitHub.
36
+
27
37
  ### CLI
28
38
 
29
39
  To generate an empty Playground from the commandline:
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rubocop/rake_task'
2
3
 
3
4
  def specs(dir)
4
5
  FileList["spec/#{dir}/*_spec.rb"].shuffle.join(' ')
@@ -9,4 +10,7 @@ task :specs do
9
10
  sh "bundle exec bacon #{specs('**')}"
10
11
  end
11
12
 
13
+ desc 'Lints all the files'
14
+ RuboCop::RakeTask.new(:rubocop)
15
+
12
16
  task default: :specs
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ if $PROGRAM_NAME == __FILE__
4
+ ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__)
5
+ require 'rubygems'
6
+ require 'bundler/setup'
7
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
8
+ end
9
+
10
+ require 'claide'
11
+ require 'cocoapods-playgrounds/gem_version'
12
+ require 'cocoapods-playgrounds/workspace'
13
+
14
+ class PlainInformative < StandardError
15
+ include CLAide::InformativeError
16
+ end
17
+
18
+ class Informative < PlainInformative
19
+ def message
20
+ "[!] #{super}".ansi.red
21
+ end
22
+ end
23
+
24
+ class Command < CLAide::Command
25
+ self.command = 'carthage-play'
26
+ self.description = 'Generate a Swift Playground for Carthage-enabled libraries'
27
+ self.version = CocoapodsPlaygrounds::VERSION
28
+
29
+ self.arguments = [CLAide::Argument.new('NAME', true)]
30
+
31
+ def initialize(argv)
32
+ @name = argv.shift_argument
33
+ super
34
+ end
35
+
36
+ def validate!
37
+ help! 'A library name is required.' if @name.nil?
38
+ end
39
+
40
+ def run
41
+ generator = Pod::WorkspaceGenerator.new([@name], :carthage)
42
+ generator.generate
43
+ end
44
+ end
45
+
46
+ Command.run(ARGV)
@@ -6,10 +6,10 @@ require 'cocoapods-playgrounds/gem_version.rb'
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = 'cocoapods-playgrounds'
8
8
  spec.version = CocoapodsPlaygrounds::VERSION
9
- spec.authors = ['Boris Bügling']
9
+ spec.authors = ['Boris Bügling']
10
10
  spec.email = ['boris@icculus.org']
11
11
  spec.summary = 'Generates a Swift Playground for any Pod.'
12
- spec.homepage = 'https://github.com/EXAMPLE/cocoapods-playgrounds'
12
+ spec.homepage = 'https://github.com/neonichu/ThisCouldBeUsButYouPlaying'
13
13
  spec.license = 'MIT'
14
14
 
15
15
  spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
@@ -1,3 +1,3 @@
1
1
  module CocoapodsPlaygrounds
2
- VERSION = '0.0.3'.freeze
2
+ VERSION = '0.1.0'.freeze
3
3
  end
@@ -8,7 +8,7 @@ module Pod
8
8
 
9
9
  def initialize(platform)
10
10
  @template = self.class.dir_for_platform(platform)
11
- fail "Could not find template for #{platform}" if @template.nil?
11
+ raise "Could not find template for #{platform}" if @template.nil?
12
12
  @template += TEMPLATE_NAME
13
13
  end
14
14
 
@@ -1,18 +1,27 @@
1
+ require 'cocoapods'
2
+ require 'cocoapods-playgrounds/generate'
3
+ require 'xcodeproj'
4
+
1
5
  module Pod
2
6
  class WorkspaceGenerator
3
- def initialize(names, platform = :ios, deployment_target = '9.0')
7
+ SUPPORTED_TOOLS = [:carthage, :cocoapods].freeze
8
+
9
+ def initialize(names, tool = :cocoapods, platform = :ios, deployment_target = '9.0')
4
10
  @names = names
5
11
  @platform = platform
6
12
  @deployment_target = deployment_target
13
+
14
+ raise "Unsupported tool #{tool}" unless SUPPORTED_TOOLS.include?(tool)
15
+ @tool = tool
7
16
  end
8
17
 
9
18
  def generate
10
19
  @cwd = Pathname.getwd
11
- generate_project
20
+ `rm -fr #{target_dir}`
21
+ FileUtils.mkdir_p(target_dir)
12
22
 
13
23
  Dir.chdir(target_dir) do
14
- generate_podfile
15
- Pod::Executable.execute_command('pod', ['install', '--no-repo-update'])
24
+ setup_project
16
25
 
17
26
  generator = Pod::PlaygroundGenerator.new(@platform)
18
27
  path = generator.generate(names.first)
@@ -24,6 +33,20 @@ module Pod
24
33
 
25
34
  private
26
35
 
36
+ def setup_project
37
+ case @tool
38
+ when :carthage then
39
+ generate_cartfile
40
+ Pod::Executable.execute_command('carthage', ['update', '--platform', @platform.to_s])
41
+ generate_project
42
+ copy_carthage_frameworks
43
+ when :cocoapods then
44
+ generate_podfile
45
+ generate_project
46
+ Pod::Executable.execute_command('pod', ['install', '--no-repo-update'])
47
+ end
48
+ end
49
+
27
50
  def names
28
51
  @names.map do |name|
29
52
  File.basename(name, '.podspec')
@@ -48,7 +71,52 @@ module Pod
48
71
  end
49
72
 
50
73
  def workspace_path
51
- target_dir + "#{names.first}.xcworkspace"
74
+ extension = @tool == :cocoapods ? 'xcworkspace' : 'xcodeproj'
75
+ target_dir + "#{names.first}.#{extension}"
76
+ end
77
+
78
+ def potential_cartfile
79
+ potential_cartfile = @cwd + @names.first
80
+ File.exist?(potential_cartfile) ? File.read(potential_cartfile) : nil
81
+ end
82
+
83
+ def generate_cartfile
84
+ contents = if potential_cartfile
85
+ potential_cartfile
86
+ else
87
+ @names.map do |name|
88
+ "github \"#{name}\""
89
+ end.join("\n")
90
+ end
91
+ File.open('Cartfile', 'w') { |f| f.write(contents) }
92
+ end
93
+
94
+ def carthage_platform_dir
95
+ platform_dir = Dir.entries('Carthage/Build').find do |dir|
96
+ dir.downcase.to_sym == @platform
97
+ end
98
+ raise "Could not find frameworks for platform #{@platform}" if platform_dir.nil?
99
+
100
+ Pathname.new('Carthage/Build') + platform_dir
101
+ end
102
+
103
+ def derived_data_dir
104
+ result = Pod::Executable.execute_command('xcodebuild',
105
+ ['-configuration', 'Debug',
106
+ '-sdk', 'iphonesimulator',
107
+ '-showBuildSettings'])
108
+ built_products_dir = result.lines.find do |line|
109
+ line[/ BUILT_PRODUCTS_DIR =/]
110
+ end.split('=').last.strip
111
+ Pathname.new(built_products_dir)
112
+ end
113
+
114
+ def copy_carthage_frameworks
115
+ Dir.entries(carthage_platform_dir).each do |entry|
116
+ next unless entry.end_with?('.framework')
117
+ FileUtils.mkdir_p(derived_data_dir)
118
+ FileUtils.cp_r(carthage_platform_dir + entry, derived_data_dir)
119
+ end
52
120
  end
53
121
 
54
122
  def generate_podfile
@@ -60,10 +128,7 @@ module Pod
60
128
  end
61
129
 
62
130
  def generate_project
63
- `rm -fr #{target_dir}`
64
- FileUtils.mkdir_p(target_dir)
65
-
66
- project_path = "#{target_dir}/#{names.first}.xcodeproj"
131
+ project_path = "#{names.first}.xcodeproj"
67
132
  project = Xcodeproj::Project.new(project_path)
68
133
 
69
134
  target = project.new_target(:framework,
@@ -84,10 +149,12 @@ module Pod
84
149
  f.write("//: Please build the scheme '#{target_name}' first\n")
85
150
  f.write("import XCPlayground\n")
86
151
  f.write("XCPlaygroundPage.currentPage.needsIndefiniteExecution = true\n\n")
87
- names.each do |name|
88
- f.write("import #{name}\n")
152
+ unless potential_cartfile
153
+ names.each do |name|
154
+ f.write("import #{name}\n")
155
+ end
156
+ f.write("\n")
89
157
  end
90
- f.write("\n")
91
158
  end
92
159
  end
93
160
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-playgrounds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Boris Bügling
7
+ - Boris Bügling
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-13 00:00:00.000000000 Z
11
+ date: 2016-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,17 +42,21 @@ description:
42
42
  email:
43
43
  - boris@icculus.org
44
44
  executables:
45
+ - carthage-play
45
46
  - playground
46
47
  extensions: []
47
48
  extra_rdoc_files: []
48
49
  files:
49
50
  - .gitignore
50
51
  - .rubocop.yml
52
+ - .travis.yml
51
53
  - Gemfile
54
+ - Gemfile.lock
52
55
  - LICENSE.txt
53
56
  - README.md
54
57
  - README_images/alamofire.png
55
58
  - Rakefile
59
+ - bin/carthage-play
56
60
  - bin/playground
57
61
  - cocoapods-playgrounds.gemspec
58
62
  - lib/cocoapods-playgrounds.rb
@@ -65,7 +69,7 @@ files:
65
69
  - spec/command/playgrounds_spec.rb
66
70
  - spec/generate_spec.rb
67
71
  - spec/spec_helper.rb
68
- homepage: https://github.com/EXAMPLE/cocoapods-playgrounds
72
+ homepage: https://github.com/neonichu/ThisCouldBeUsButYouPlaying
69
73
  licenses:
70
74
  - MIT
71
75
  metadata: {}