redpotion 0.2.1 → 0.2.2

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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -8
  3. data/bin/potion +201 -0
  4. data/lib/project/version.rb +1 -1
  5. metadata +5 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 619b7a36d71f8990e5b33ef698039d2616d3398b
4
- data.tar.gz: 5640ff0079d43584d7baf7cc3652489787ef6c03
3
+ metadata.gz: bb03398985a0332c5dad7504fda2dc5b4dbcaa23
4
+ data.tar.gz: 610227da65e2617d7df7cca5d694cfec7b7aa8a5
5
5
  SHA512:
6
- metadata.gz: 13a5f247d347fbd3a23fd54f67b888a7ff36d62fb7d2e6af68537786ef881239655f4064a9844085032c69cbe40f9ab3b0a47b9d4b5e692426d03a70ce6db2f3
7
- data.tar.gz: 2df2a277f30b7577b73ae04790dc9717ee8661347a3975e435886609c1afef197b975fd662b12688f27e4f4518ff5f38d72efb397f4b4fd3d63e0370c654f781
6
+ metadata.gz: edd653ab74017815a1c5406ec9ad585b632efa88ff8ef99922925225cb16c1d0d0e4d1c7a9ff872547af37a36a597f1bf4c56c0f8a3b64c85d87e4ff34f27272
7
+ data.tar.gz: 5d9034267124e08c4ac445abbe0d72e7c2c738e304899eb12685a7777225558611f7538c02d35fee827d9485603920aba065b5105f45f9e683d8f70b1aac64fb
data/README.md CHANGED
@@ -2,12 +2,9 @@
2
2
 
3
3
  # RedPotion
4
4
 
5
- *Note the potion command isn't working yet. It will soon.*
6
-
7
-
8
5
  RedPotion combines [RMQ](http://rubymotionquery.com/), [ProMotion](https://github.com/clearsightstudio/ProMotion), [CDQ](https://github.com/infinitered/cdq), [AFMotion](https://github.com/clayallsopp/afmotion), and other libraries. It also adds new features to better integrate RMQ with ProMotion.
9
6
 
10
- Its goals are to choose standard libraries and promote best practices, allowing you to develop iOS apps in record time.
7
+ Its goals are to choose standard libraries and promote best practices, allowing you to developed iOS apps in record time.
11
8
 
12
9
  =========
13
10
 
@@ -25,18 +22,17 @@ You can use both RMQ Plugins and ProMotion Add-ons
25
22
 
26
23
  ![image](http://ir_wp.s3.amazonaws.com/wp-content/uploads/sites/11/2014/11/ProMotion-addon-logo.png)
27
24
 
28
- ProMotion Addon
29
25
 
30
26
  ## Quick start
31
27
 
32
28
  ```
33
- gem install redpotion
29
+ gem install red_potion
34
30
 
35
31
  potion create my_app
36
32
  bundle
37
33
  rake pod:install
38
- potion create model state
39
- potion create table_screen states
34
+ potion create model state # This doesn't work yet
35
+ potion create screen table states # This doesn't work yet
40
36
  # a few changes
41
37
  rake
42
38
  ```
data/bin/potion ADDED
@@ -0,0 +1,201 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "erb"
4
+ require "rubygems"
5
+ require 'open-uri'
6
+
7
+ $:.unshift(File.join(File.dirname(__FILE__), "/../lib/project"))
8
+ require "version"
9
+
10
+ class PotionCommandLine
11
+ HELP_TEXT = %{ potion version #{RedPotion::VERSION}
12
+
13
+ Some things you can do with the potion command:
14
+
15
+ > potion create my_new_app
16
+
17
+ > potion create model foo
18
+ > potion create controller foos
19
+ > potion create view bar
20
+ > potion create shared some_class_used_app_wide
21
+ > potion create lib some_class_used_by_multiple_apps
22
+
23
+ > potion create collection_view_controller foos
24
+ > potion create table_view_controller bars
25
+
26
+ > potion -h, --help
27
+ > potion -v, --version
28
+
29
+ > rmq_docs
30
+ > rmq_docs query
31
+ > rmq_docs "background image" }
32
+
33
+ class << self
34
+ VALID_CREATE_TYPES = [
35
+ :model, :controller,
36
+ :view,
37
+ :shared,
38
+ :lib,
39
+ :collection_view_controller,
40
+ :table_view_controller
41
+ ]
42
+
43
+ def create(template_or_app_name, name, options)
44
+ @dry_run = true if options == 'dry_run'
45
+
46
+ if name
47
+ if VALID_CREATE_TYPES.include?(template_or_app_name.to_sym)
48
+ insert_from_template(template_or_app_name, name)
49
+ else
50
+ puts "potion - Invalid command, do something like this: potion create controller my_controller\n"
51
+ end
52
+ else
53
+ #ensure_template_dir
54
+ create_app(template_or_app_name)
55
+ end
56
+ end
57
+
58
+ def create_app(app_name)
59
+ puts ' Creating app'
60
+
61
+ `motion create --template=git@github.com:infinitered/redpotion-template.git #{app_name}`
62
+
63
+ puts %{
64
+ Complete. Things you should do:
65
+ > cd #{app_name}
66
+ > bundle
67
+ > rake spec
68
+ > rake
69
+ (main)> exit
70
+
71
+ Then try these:
72
+ > rake device_name='iPhone 4s'
73
+ > rake device_name='iPhone 5s'
74
+ > rake device_name='iPhone 5s' target=7.1
75
+ > rake device_name='iPhone 6 Plus'
76
+ > rake device_name='iPad Retina'
77
+ > rake device
78
+
79
+ Or for XCode 5.1
80
+ > rake retina=3.5
81
+ > rake retina=4
82
+ > rake device_family=ipad}
83
+
84
+ end
85
+
86
+ def template_dir
87
+ "#{Dir.home}/Library/RubyMotion/template/potion-template"
88
+ end
89
+
90
+ # TODO Disabling for now, this needs to get latest template
91
+ def ensure_template_dir
92
+ return if Dir.exists?(template_dir)
93
+ `git clone git@github.com:infinitered/potion-template.git #{template_dir}`
94
+ end
95
+
96
+ def template_path(template_name)
97
+ sub_path = "templates/#{template_name}/"
98
+
99
+ # First check local directory, use that if it exists
100
+ if Dir.exist?("#{Dir.pwd}/#{sub_path}")
101
+ "#{Dir.pwd}/#{sub_path}"
102
+ else # Then check the gem
103
+ begin
104
+ spec = Gem::Specification.find_by_name("redpotion")
105
+ gem_root = spec.gem_dir
106
+ "#{gem_root}/#{sub_path}"
107
+ rescue Exception => e
108
+ puts "potion - could not find template directory\n"
109
+ nil
110
+ end
111
+ end
112
+ end
113
+
114
+ def insert_from_template(template_name, name)
115
+ puts `rmq create #{template_name} #{name}`
116
+ return
117
+
118
+ #if [:lib, :collection_view_controller, :shared, :controller].include?(template_name)
119
+ #end
120
+
121
+ puts "\n Creating #{template_name}: #{name}\n\n"
122
+
123
+ return unless (@template_path = template_path(template_name))
124
+ files = Dir["#{@template_path}**/*"].select {|f| !File.directory? f}
125
+
126
+ @name = name.gsub(/_?(controller|stylesheet)/,'')
127
+ @name_camel_case = @name.split('_').map{|word| word.capitalize}.join
128
+
129
+ files.each do |template_file_path_and_name|
130
+ @in_app_path = File.dirname(template_file_path_and_name).gsub(@template_path, '')
131
+ @ext = File.extname(template_file_path_and_name)
132
+ @file_name = File.basename(template_file_path_and_name, @ext)
133
+
134
+ @new_file_name = @file_name.gsub('name', @name)
135
+ @new_file_path_name = "#{Dir.pwd}/#{@in_app_path}/#{@new_file_name}#{@ext}"
136
+
137
+ if @dry_run
138
+ puts "\n Instance vars:"
139
+ self.instance_variables.each{|var| puts " #{var} = #{self.instance_variable_get(var)}"}
140
+ puts
141
+ end
142
+
143
+ if Dir.exist?(@in_app_path)
144
+ puts " Using existing directory: #{@in_app_path}"
145
+ else
146
+ puts " \u0394 Creating directory: #{@in_app_path}"
147
+ Dir.mkdir(@in_app_path) unless @dry_run
148
+ end
149
+
150
+ results = load_and_parse_erb(template_file_path_and_name)
151
+
152
+ if File.exists?(@new_file_path_name)
153
+ puts " X File exists, SKIPPING: #{@new_file_path_name}"
154
+ else
155
+ puts " \u0394 Creating file: #{@new_file_path_name}"
156
+ File.open(@new_file_path_name, 'w+') { |file| file.write(results) } unless @dry_run
157
+ end
158
+ end
159
+
160
+ puts "\n Done"
161
+ end
162
+
163
+ def load_and_parse_erb(template_file_name_and_path)
164
+ template_file = File.open(template_file_name_and_path, 'r').read
165
+ erb = ERB.new(template_file)
166
+ erb.result(binding)
167
+ end
168
+ end
169
+ end
170
+
171
+
172
+ # Process input, execute actions
173
+ unless ARGV.length > 0
174
+ puts "potion - Invalid command, do something like this: potion create my_new_app\n"
175
+ puts PotionCommandLine::HELP_TEXT
176
+ exit
177
+ end
178
+
179
+ action = ARGV[0]
180
+ query = ARGV[1]
181
+
182
+ case action
183
+ when 'create'
184
+ PotionCommandLine.create(ARGV[1], ARGV[2], ARGV[3])
185
+ when 'rmq_docs'
186
+ if query
187
+ query = URI::encode(query)
188
+ url = "http://rubymotionquery.com?s=#{query}&post_type=document"
189
+ `open #{url}`
190
+ else
191
+ `open http://rubymotionquery.com/documentation`
192
+ end
193
+ when '--help', '-h'
194
+ puts PotionCommandLine::HELP_TEXT
195
+ when '-v', '--version'
196
+ puts RedPotion::VERSION
197
+ else
198
+ puts 'potion - Invalid action'
199
+ puts PotionCommandLine::HELP_TEXT
200
+ end
201
+
@@ -1,3 +1,3 @@
1
1
  module RedPotion
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redpotion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - InfiniteRed
@@ -71,11 +71,13 @@ description: RedPotion - The best combination of RubyMotion tools and libraries
71
71
  email:
72
72
  - hello@infinitered.com
73
73
  - hello@clearsightstudio.com
74
- executables: []
74
+ executables:
75
+ - potion
75
76
  extensions: []
76
77
  extra_rdoc_files: []
77
78
  files:
78
79
  - README.md
80
+ - bin/potion
79
81
  - lib/project/redpotion.rb
80
82
  - lib/project/version.rb
81
83
  - lib/redpotion.rb
@@ -99,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
101
  version: '0'
100
102
  requirements: []
101
103
  rubyforge_project:
102
- rubygems_version: 2.2.2
104
+ rubygems_version: 2.4.4
103
105
  signing_key:
104
106
  specification_version: 4
105
107
  summary: RedPotion combines RMQ, ProMotion, CDQ, AFMotion, and more for the perfect