appjam 0.1.5 → 0.1.6
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.
- data/README.rdoc +13 -0
- data/lib/appjam.rb +1 -1
- data/lib/appjam/generators/actions.rb +15 -3
- data/lib/appjam/generators/cli.rb +2 -1
- data/lib/appjam/generators/jam.rb +9 -9
- data/lib/appjam/generators/model.rb +1 -1
- data/lib/appjam/generators/project.rb +4 -4
- data/lib/appjam/generators/submodule.rb +89 -0
- data/lib/appjam/generators/submodule/gitignore.tt +2 -0
- data/lib/appjam/generators/submodule/gitmodules.tt +3 -0
- data/lib/appjam/tasks/plugin.rb +13 -4
- data/lib/appjam/version.rb +1 -1
- metadata +7 -4
data/README.rdoc
CHANGED
@@ -44,6 +44,19 @@ Add "Classes/user/" folder to the "Classes/apps" Group
|
|
44
44
|
|
45
45
|
Xcode build and run
|
46
46
|
|
47
|
+
==== Usage 3: add three20 submodule (## this require git installed)
|
48
|
+
|
49
|
+
$ cd todo
|
50
|
+
|
51
|
+
$ appjam submodule three20
|
52
|
+
|
53
|
+
$ open Todo.xcodeproj
|
54
|
+
|
55
|
+
Add "three20/src/Three20/Three20.xcodeproj" folder to the "Other Sources" Group
|
56
|
+
Add "three20/src/Three20.bundle" folder to the "Other Sources" Group
|
57
|
+
|
58
|
+
Xcode build and run
|
59
|
+
|
47
60
|
== Contributing to appjam
|
48
61
|
|
49
62
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
data/lib/appjam.rb
CHANGED
@@ -57,5 +57,5 @@ end # Appjam
|
|
57
57
|
##
|
58
58
|
# We add our generators to Appjam::Genererator
|
59
59
|
#
|
60
|
-
Appjam::Generators.load_paths << Dir[File.dirname(__FILE__) + '/appjam/generators/{project,model}.rb']
|
60
|
+
Appjam::Generators.load_paths << Dir[File.dirname(__FILE__) + '/appjam/generators/{project,model,submodule}.rb']
|
61
61
|
|
@@ -113,17 +113,17 @@ module Appjam
|
|
113
113
|
result.blank? ? default : result
|
114
114
|
end
|
115
115
|
|
116
|
-
# Raise SystemExit if the app is
|
116
|
+
# Raise SystemExit if the app is iexistent
|
117
117
|
def check_app_existence(app)
|
118
118
|
unless File.exist?(destination_root(app))
|
119
119
|
say
|
120
120
|
say "================================================================="
|
121
|
-
say "We didn't found #{app.underscore.
|
121
|
+
say "We didn't found #{app.underscore.camelize}! "
|
122
122
|
say "================================================================="
|
123
123
|
say
|
124
124
|
# raise SystemExit
|
125
125
|
end
|
126
|
-
end
|
126
|
+
end
|
127
127
|
|
128
128
|
# Ensure that project name is valid, else raise an NameError
|
129
129
|
def valid_constant?(name)
|
@@ -133,6 +133,18 @@ module Appjam
|
|
133
133
|
raise ::NameError, "Project name #{name} cannot start with non-word character"
|
134
134
|
end
|
135
135
|
end
|
136
|
+
|
137
|
+
## Detect command and dump it's path
|
138
|
+
def which cmd
|
139
|
+
exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
|
140
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
|
141
|
+
exts.each { |ext|
|
142
|
+
exe = "#{path}/#{cmd}#{ext}"
|
143
|
+
return exe if File.executable? exe
|
144
|
+
}
|
145
|
+
end
|
146
|
+
return nil
|
147
|
+
end
|
136
148
|
|
137
149
|
module ClassMethods
|
138
150
|
# Defines a class option to allow a component to be chosen and add to component type list
|
@@ -46,7 +46,8 @@ module Appjam
|
|
46
46
|
puts
|
47
47
|
puts colorize("APPJAM OPTIONS", { :foreground => :blue})
|
48
48
|
opt = [{ :category => "objective c (iphone)", :command => "appjam project todo", :description => "generate iphone project skeleton"},
|
49
|
-
{ :category => "objective c (iphone)", :command => "appjam model user", :description => "generate iphone project data model"}
|
49
|
+
{ :category => "objective c (iphone)", :command => "appjam model user", :description => "generate iphone project data model"},
|
50
|
+
{ :category => "objective c (iphone)", :command => "appjam submodule three20", :description => "fetch three20 subproject from github.com"}]
|
50
51
|
View.render(opt, RENDER_OPTIONS)
|
51
52
|
puts
|
52
53
|
end
|
@@ -37,7 +37,7 @@ module Appjam
|
|
37
37
|
File.exist?('Classes')
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
40
|
+
def create_jam
|
41
41
|
valid_constant?(options["#{self.to_s.downcase.intern}"] || name)
|
42
42
|
@jam_name = (options["#{self.to_s.downcase.intern}"] || name).gsub(/\W/, "_").downcase
|
43
43
|
@developer = "#{`whoami`.strip}"
|
@@ -48,14 +48,14 @@ module Appjam
|
|
48
48
|
|
49
49
|
#empty_directory "#{@jam_name}"
|
50
50
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
=================================================================
|
55
|
-
Your #{@jam_name} has been generated.
|
56
|
-
=================================================================
|
57
|
-
|
58
|
-
TEXT
|
51
|
+
# View.render(options)
|
52
|
+
# say (<<-TEXT).gsub(/ {10}/,'')
|
53
|
+
#
|
54
|
+
# =================================================================
|
55
|
+
# Your #{@jam_name} has been generated.
|
56
|
+
# =================================================================
|
57
|
+
#
|
58
|
+
# TEXT
|
59
59
|
end
|
60
60
|
|
61
61
|
class << self
|
@@ -21,7 +21,7 @@ module Appjam
|
|
21
21
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
22
22
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
23
23
|
|
24
|
-
def
|
24
|
+
def create_model
|
25
25
|
if in_app_root?
|
26
26
|
valid_constant?(options[:model] || name)
|
27
27
|
@model_name = (options[:app] || name).gsub(/\W/, "_").downcase
|
@@ -21,7 +21,7 @@ module Appjam
|
|
21
21
|
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
22
22
|
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
23
23
|
|
24
|
-
def
|
24
|
+
def create_project
|
25
25
|
valid_constant?(options[:project] || name)
|
26
26
|
@project_name = (options[:app] || name).gsub(/\W/, "_").downcase
|
27
27
|
@class_name = (options[:app] || name).gsub(/\W/, "_").capitalize
|
@@ -32,15 +32,15 @@ module Appjam
|
|
32
32
|
self.behavior = :revoke if options[:destroy]
|
33
33
|
|
34
34
|
eval(File.read(__FILE__) =~ /^__END__\n/ && $' || '')
|
35
|
-
|
36
|
-
say (<<-TEXT).gsub(/ {10}/,'')
|
37
35
|
|
36
|
+
say (<<-TEXT).gsub(/ {10}/,'')
|
37
|
+
|
38
38
|
=================================================================
|
39
39
|
Your #{@project_name} application has been generated.
|
40
40
|
Open #{@project_name.capitalize}.xcodeproj
|
41
41
|
Build and Run
|
42
42
|
=================================================================
|
43
|
-
|
43
|
+
|
44
44
|
TEXT
|
45
45
|
end
|
46
46
|
end # Project
|
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/jam'
|
2
|
+
|
3
|
+
module Appjam
|
4
|
+
module Generators
|
5
|
+
class Submodule < Jam
|
6
|
+
|
7
|
+
# Add this generator to our appjam
|
8
|
+
Appjam::Generators.add_generator(:submodule, self)
|
9
|
+
|
10
|
+
# Define the source submodule root
|
11
|
+
def self.source_root; File.expand_path(File.dirname(__FILE__)); end
|
12
|
+
def self.banner; "appjam submodule [name]"; end
|
13
|
+
|
14
|
+
# Include related modules
|
15
|
+
include Thor::Actions
|
16
|
+
include Appjam::Generators::Actions
|
17
|
+
|
18
|
+
desc "Description:\n\n\tappjam will generates an new PureMvc Model for iphone"
|
19
|
+
|
20
|
+
argument :name, :desc => "The name of your puremvc submodule"
|
21
|
+
|
22
|
+
class_option :root, :desc => "The root destination", :aliases => '-r', :default => ".", :type => :string
|
23
|
+
class_option :destroy, :aliases => '-d', :default => false, :type => :boolean
|
24
|
+
|
25
|
+
def in_app_root?
|
26
|
+
File.exist?('Classes')
|
27
|
+
end
|
28
|
+
|
29
|
+
def create_app
|
30
|
+
if which('git') != nil
|
31
|
+
if in_app_root?
|
32
|
+
valid_constant?(options[:submodule] || name)
|
33
|
+
@submodule_name = (options[:app] || name).gsub(/W/, "_").downcase
|
34
|
+
@xcode_project_name = File.basename(Dir.glob('*.xcodeproj')[0],'.xcodeproj').downcase
|
35
|
+
@class_name = (options[:app] || name).gsub(/W/, "_").capitalize
|
36
|
+
@developer = "eiffel"
|
37
|
+
@created_on = Date.today.to_s
|
38
|
+
self.destination_root = options[:root]
|
39
|
+
|
40
|
+
if @submodule_name == 'three20'
|
41
|
+
|
42
|
+
eval(File.read(__FILE__) =~ /^__END__\n/ && $' || '')
|
43
|
+
|
44
|
+
say (<<-TEXT).gsub(/ {10}/,'')
|
45
|
+
|
46
|
+
=================================================================
|
47
|
+
Three20 submodule has been imported
|
48
|
+
|
49
|
+
Open #{@xcode_project_name.capitalize}.xcodeproj
|
50
|
+
Add "three20/src/Three20/Three20.xcodeproj" folder to the "Other Sources" Group
|
51
|
+
Add "three20/src/Three20.bundle" folder to the "Other Sources" Group
|
52
|
+
Build and Run
|
53
|
+
=================================================================
|
54
|
+
TEXT
|
55
|
+
else
|
56
|
+
say "="*70
|
57
|
+
say "Only support three20 submodule now!"
|
58
|
+
say "="*70
|
59
|
+
end
|
60
|
+
else
|
61
|
+
puts
|
62
|
+
puts '-'*70
|
63
|
+
puts "You are not in an iphone project folder"
|
64
|
+
puts '-'*70
|
65
|
+
puts
|
66
|
+
end
|
67
|
+
else
|
68
|
+
say "="*70
|
69
|
+
say "Git was not installed!! check http://git-scm.com/ for installation."
|
70
|
+
say "="*70
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end # Submodule
|
75
|
+
end # Generators
|
76
|
+
end # Appjam
|
77
|
+
|
78
|
+
__END__
|
79
|
+
unless File.exist?("./.git")
|
80
|
+
system "git init"
|
81
|
+
template "submodule/gitignore.tt", "./.gitignore"
|
82
|
+
system "git add ."
|
83
|
+
system "git commit -m 'init commit'"
|
84
|
+
end
|
85
|
+
system "rm -rf three20"
|
86
|
+
system "git submodule add git://github.com/facebook/three20.git three20"
|
87
|
+
system "git add ."
|
88
|
+
system "git commit -m 'import three20 submodule'"
|
89
|
+
|
data/lib/appjam/tasks/plugin.rb
CHANGED
@@ -28,7 +28,14 @@ module Appjam
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def create_app
|
31
|
-
|
31
|
+
valid_constant?(options[:template] || name)
|
32
|
+
@project_name = (options[:app] || name).gsub(/\W/, "_").downcase
|
33
|
+
@class_name = (options[:app] || name).gsub(/\W/, "_").capitalize
|
34
|
+
@developer = "#{`whoami`.strip}"
|
35
|
+
@created_on = Date.today.to_s
|
36
|
+
self.destination_root = options[:root]
|
37
|
+
|
38
|
+
eval(File.read(__FILE__) =~ /^__END__\n/ && $' || '')
|
32
39
|
|
33
40
|
say (<<-TEXT).gsub(/ {10}/,'')
|
34
41
|
|
@@ -38,10 +45,14 @@ Your template has been generated.
|
|
38
45
|
|
39
46
|
TEXT
|
40
47
|
end
|
41
|
-
|
48
|
+
|
42
49
|
end # Template
|
43
50
|
end # Generators
|
44
51
|
end # Appjam
|
52
|
+
|
53
|
+
__END__
|
54
|
+
# put your template command here
|
55
|
+
|
45
56
|
BLOCK
|
46
57
|
|
47
58
|
namespace :appjam do
|
@@ -57,8 +68,6 @@ namespace :appjam do
|
|
57
68
|
File.open(plugin_name, 'w') {|f| f.write(TEMPLATE) }
|
58
69
|
end
|
59
70
|
|
60
|
-
|
61
|
-
|
62
71
|
end # plugin
|
63
72
|
end # appjam
|
64
73
|
|
data/lib/appjam/version.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appjam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 6
|
10
|
+
version: 0.1.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Eiffel Q
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-05-
|
18
|
+
date: 2011-05-17 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
type: :runtime
|
@@ -453,6 +453,9 @@ files:
|
|
453
453
|
- lib/appjam/generators/project/utils/UIDevice.m
|
454
454
|
- lib/appjam/generators/project/utils/URLEncodeString.h
|
455
455
|
- lib/appjam/generators/project/utils/URLEncodeString.m
|
456
|
+
- lib/appjam/generators/submodule.rb
|
457
|
+
- lib/appjam/generators/submodule/gitignore.tt
|
458
|
+
- lib/appjam/generators/submodule/gitmodules.tt
|
456
459
|
- lib/appjam/tasks.rb
|
457
460
|
- lib/appjam/tasks/plugin.rb
|
458
461
|
- lib/appjam/version.rb
|