rucola 0.0.1

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 (107) hide show
  1. data/ChangeLog +628 -0
  2. data/History.txt +4 -0
  3. data/License.txt +20 -0
  4. data/Manifest.txt +106 -0
  5. data/README.txt +126 -0
  6. data/Rakefile +32 -0
  7. data/TODO +28 -0
  8. data/app_generators/rucola/USAGE +6 -0
  9. data/app_generators/rucola/rucola_generator.rb +112 -0
  10. data/app_generators/rucola/templates/Rakefile.erb +12 -0
  11. data/app_generators/rucola/templates/Rakefile.erb.old +156 -0
  12. data/app_generators/rucola/templates/app/controllers/application_controller.rb +22 -0
  13. data/app_generators/rucola/templates/config/Info.plist.erb +28 -0
  14. data/app_generators/rucola/templates/config/boot.rb +2 -0
  15. data/app_generators/rucola/templates/config/environment.rb +11 -0
  16. data/app_generators/rucola/templates/config/environments/debug.rb +3 -0
  17. data/app_generators/rucola/templates/config/environments/release.rb +3 -0
  18. data/app_generators/rucola/templates/config/environments/test.rb +3 -0
  19. data/app_generators/rucola/templates/config/ib_external_class_defs.yml +13 -0
  20. data/app_generators/rucola/templates/misc/English.lproj/InfoPlist.strings.erb +3 -0
  21. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/classes.nib +40 -0
  22. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/info.nib +18 -0
  23. data/app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/keyedobjects.nib +0 -0
  24. data/app_generators/rucola/templates/misc/main.m.erb +15 -0
  25. data/app_generators/rucola/templates/misc/rb_main.rb.erb +13 -0
  26. data/app_generators/rucola/templates/project.pbxproj.erb +299 -0
  27. data/app_generators/rucola/templates/script/plugin +84 -0
  28. data/app_generators/rucola/templates/test/controllers/test_application_controller.rb +10 -0
  29. data/app_generators/rucola/templates/test/test_helper.rb +10 -0
  30. data/bin/rucola +12 -0
  31. data/config/hoe.rb +71 -0
  32. data/config/requirements.rb +17 -0
  33. data/lib/rucola.rb +3 -0
  34. data/lib/rucola/info_plist.rb +37 -0
  35. data/lib/rucola/initializer.rb +313 -0
  36. data/lib/rucola/nib.rb +99 -0
  37. data/lib/rucola/rucola_support.rb +9 -0
  38. data/lib/rucola/rucola_support/controllers.rb +2 -0
  39. data/lib/rucola/rucola_support/controllers/rc_controller.rb +7 -0
  40. data/lib/rucola/rucola_support/controllers/rc_window_controller.rb +12 -0
  41. data/lib/rucola/rucola_support/core_ext.rb +2 -0
  42. data/lib/rucola/rucola_support/core_ext/objc.rb +4 -0
  43. data/lib/rucola/rucola_support/core_ext/objc/nsobject.rb +22 -0
  44. data/lib/rucola/rucola_support/core_ext/ruby.rb +4 -0
  45. data/lib/rucola/rucola_support/core_ext/ruby/string.rb +21 -0
  46. data/lib/rucola/rucola_support/initialize_hooks.rb +21 -0
  47. data/lib/rucola/rucola_support/models.rb +1 -0
  48. data/lib/rucola/rucola_support/models/rc_document.rb +10 -0
  49. data/lib/rucola/rucola_support/notifications.rb +1 -0
  50. data/lib/rucola/rucola_support/notifications/notifications.rb +146 -0
  51. data/lib/rucola/rucola_support/rc_app.rb +101 -0
  52. data/lib/rucola/tasks/freeze.rake +44 -0
  53. data/lib/rucola/tasks/interface_builder.rake +80 -0
  54. data/lib/rucola/tasks/main.rake +29 -0
  55. data/lib/rucola/tasks/xcode.rake +43 -0
  56. data/lib/rucola/test_helper.rb +57 -0
  57. data/lib/rucola/version.rb +9 -0
  58. data/lib/rucola/xcode.rb +148 -0
  59. data/log/debug.log +0 -0
  60. data/rucola_generators/controller/USAGE +5 -0
  61. data/rucola_generators/controller/controller_generator.rb +84 -0
  62. data/rucola_generators/controller/templates/controller_template.rb.erb +5 -0
  63. data/rucola_generators/controller/templates/test_controller_template.rb.erb +10 -0
  64. data/rucola_generators/document_model/USAGE +5 -0
  65. data/rucola_generators/document_model/document_model_generator.rb +67 -0
  66. data/rucola_generators/document_model/templates/document_model_template.rb.erb +27 -0
  67. data/rucola_generators/document_model/templates/test_document_model_template.rb.erb +10 -0
  68. data/rucola_generators/window_controller/USAGE +6 -0
  69. data/rucola_generators/window_controller/templates/Window.nib/classes.nib.erb +35 -0
  70. data/rucola_generators/window_controller/templates/Window.nib/info.nib +16 -0
  71. data/rucola_generators/window_controller/templates/Window.nib/keyedobjects.nib +0 -0
  72. data/rucola_generators/window_controller/templates/test_window_controller_template.rb.erb +10 -0
  73. data/rucola_generators/window_controller/templates/window_controller_template.rb.erb +19 -0
  74. data/rucola_generators/window_controller/window_controller_generator.rb +74 -0
  75. data/script/destroy +14 -0
  76. data/script/generate +14 -0
  77. data/script/txt2html +74 -0
  78. data/setup.rb +1585 -0
  79. data/tasks/deployment.rake +27 -0
  80. data/tasks/environment.rake +7 -0
  81. data/tasks/website.rake +17 -0
  82. data/test/fixtures/Info.plist +28 -0
  83. data/test/fixtures/MainMenu.nib/classes.nib +32 -0
  84. data/test/fixtures/MainMenu.nib/info.nib +18 -0
  85. data/test/fixtures/MainMenu.nib/keyedobjects.nib +0 -0
  86. data/test/test_controller_generator.rb +75 -0
  87. data/test/test_core_ext.rb +15 -0
  88. data/test/test_document_model_generator.rb +64 -0
  89. data/test/test_generator_helper.rb +20 -0
  90. data/test/test_helper.rb +13 -0
  91. data/test/test_info_plist.rb +31 -0
  92. data/test/test_nib.rb +73 -0
  93. data/test/test_notifications.rb +75 -0
  94. data/test/test_objc_core_ext.rb +37 -0
  95. data/test/test_rc_app.rb +63 -0
  96. data/test/test_rc_document.rb +18 -0
  97. data/test/test_rc_window_controller.rb +13 -0
  98. data/test/test_rucola.rb +11 -0
  99. data/test/test_rucola_generator.rb +87 -0
  100. data/test/test_window_controller_generator.rb +50 -0
  101. data/test/test_xcode.rb +128 -0
  102. data/website/index.html +199 -0
  103. data/website/index.txt +126 -0
  104. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  105. data/website/stylesheets/screen.css +138 -0
  106. data/website/template.rhtml +48 -0
  107. metadata +189 -0
@@ -0,0 +1,4 @@
1
+ == 0.0.1 2007-10-18
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2007 Eloy Duran and Justin Palmer
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,106 @@
1
+ ChangeLog
2
+ History.txt
3
+ License.txt
4
+ Manifest.txt
5
+ README.txt
6
+ Rakefile
7
+ TODO
8
+ app_generators/rucola/USAGE
9
+ app_generators/rucola/rucola_generator.rb
10
+ app_generators/rucola/templates/Rakefile.erb
11
+ app_generators/rucola/templates/Rakefile.erb.old
12
+ app_generators/rucola/templates/app/controllers/application_controller.rb
13
+ app_generators/rucola/templates/config/Info.plist.erb
14
+ app_generators/rucola/templates/config/boot.rb
15
+ app_generators/rucola/templates/config/environment.rb
16
+ app_generators/rucola/templates/config/environments/debug.rb
17
+ app_generators/rucola/templates/config/environments/release.rb
18
+ app_generators/rucola/templates/config/environments/test.rb
19
+ app_generators/rucola/templates/config/ib_external_class_defs.yml
20
+ app_generators/rucola/templates/misc/English.lproj/InfoPlist.strings.erb
21
+ app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/classes.nib
22
+ app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/info.nib
23
+ app_generators/rucola/templates/misc/English.lproj/MainMenu.nib/keyedobjects.nib
24
+ app_generators/rucola/templates/misc/main.m.erb
25
+ app_generators/rucola/templates/misc/rb_main.rb.erb
26
+ app_generators/rucola/templates/project.pbxproj.erb
27
+ app_generators/rucola/templates/script/plugin
28
+ app_generators/rucola/templates/test/controllers/test_application_controller.rb
29
+ app_generators/rucola/templates/test/test_helper.rb
30
+ bin/rucola
31
+ config/hoe.rb
32
+ config/requirements.rb
33
+ lib/rucola.rb
34
+ lib/rucola/info_plist.rb
35
+ lib/rucola/initializer.rb
36
+ lib/rucola/nib.rb
37
+ lib/rucola/rucola_support.rb
38
+ lib/rucola/rucola_support/controllers.rb
39
+ lib/rucola/rucola_support/controllers/rc_controller.rb
40
+ lib/rucola/rucola_support/controllers/rc_window_controller.rb
41
+ lib/rucola/rucola_support/core_ext.rb
42
+ lib/rucola/rucola_support/core_ext/objc.rb
43
+ lib/rucola/rucola_support/core_ext/objc/nsobject.rb
44
+ lib/rucola/rucola_support/core_ext/ruby.rb
45
+ lib/rucola/rucola_support/core_ext/ruby/string.rb
46
+ lib/rucola/rucola_support/initialize_hooks.rb
47
+ lib/rucola/rucola_support/models.rb
48
+ lib/rucola/rucola_support/models/rc_document.rb
49
+ lib/rucola/rucola_support/notifications.rb
50
+ lib/rucola/rucola_support/notifications/notifications.rb
51
+ lib/rucola/rucola_support/rc_app.rb
52
+ lib/rucola/tasks/freeze.rake
53
+ lib/rucola/tasks/interface_builder.rake
54
+ lib/rucola/tasks/main.rake
55
+ lib/rucola/tasks/xcode.rake
56
+ lib/rucola/test_helper.rb
57
+ lib/rucola/version.rb
58
+ lib/rucola/xcode.rb
59
+ log/debug.log
60
+ rucola_generators/controller/USAGE
61
+ rucola_generators/controller/controller_generator.rb
62
+ rucola_generators/controller/templates/controller_template.rb.erb
63
+ rucola_generators/controller/templates/test_controller_template.rb.erb
64
+ rucola_generators/document_model/USAGE
65
+ rucola_generators/document_model/document_model_generator.rb
66
+ rucola_generators/document_model/templates/document_model_template.rb.erb
67
+ rucola_generators/document_model/templates/test_document_model_template.rb.erb
68
+ rucola_generators/window_controller/USAGE
69
+ rucola_generators/window_controller/templates/Window.nib/classes.nib.erb
70
+ rucola_generators/window_controller/templates/Window.nib/info.nib
71
+ rucola_generators/window_controller/templates/Window.nib/keyedobjects.nib
72
+ rucola_generators/window_controller/templates/test_window_controller_template.rb.erb
73
+ rucola_generators/window_controller/templates/window_controller_template.rb.erb
74
+ rucola_generators/window_controller/window_controller_generator.rb
75
+ script/destroy
76
+ script/generate
77
+ script/txt2html
78
+ setup.rb
79
+ tasks/deployment.rake
80
+ tasks/environment.rake
81
+ tasks/website.rake
82
+ test/fixtures/Info.plist
83
+ test/fixtures/MainMenu.nib/classes.nib
84
+ test/fixtures/MainMenu.nib/info.nib
85
+ test/fixtures/MainMenu.nib/keyedobjects.nib
86
+ test/test_controller_generator.rb
87
+ test/test_core_ext.rb
88
+ test/test_document_model_generator.rb
89
+ test/test_generator_helper.rb
90
+ test/test_helper.rb
91
+ test/test_info_plist.rb
92
+ test/test_nib.rb
93
+ test/test_notifications.rb
94
+ test/test_objc_core_ext.rb
95
+ test/test_rc_app.rb
96
+ test/test_rc_document.rb
97
+ test/test_rc_window_controller.rb
98
+ test/test_rucola.rb
99
+ test/test_rucola_generator.rb
100
+ test/test_window_controller_generator.rb
101
+ test/test_xcode.rb
102
+ website/index.html
103
+ website/index.txt
104
+ website/javascripts/rounded_corners_lite.inc.js
105
+ website/stylesheets/screen.css
106
+ website/template.rhtml
@@ -0,0 +1,126 @@
1
+ ## Rucola: Framework for writing Cocoa applications in Ruby
2
+
3
+ SUPER DUPER PRE ALPHA VERSION (expect things to break kinda alpha...)
4
+
5
+ Rucola is a light weight framework that helps you write RubyCocoa apps.
6
+ It allows you to build, test, and deploy applications using rake commands,
7
+ eliminating the need to use XCode, however you can use XCode if you wish.
8
+
9
+ Rucola provides a set of generators to help you generate controllers, window controllers,
10
+ and document-based applications. It also provides APIs for simplifying some of Objective-C's
11
+ ways of doing things.
12
+
13
+ ### Generating an application skeleton
14
+
15
+ rucola MyApp -a "Your Name"
16
+
17
+ Running this command will give you a complete, working application with a single window already
18
+ bound to your application controller.
19
+
20
+
21
+ ### Using Notifications
22
+
23
+ //Rucola
24
+ class Foo < Rucola::RCController
25
+ notify :some_method, :when => :something_happens
26
+
27
+ def some_method(notification)
28
+ puts "w00t!"
29
+ end
30
+ end
31
+
32
+ //Objective C (Excluding header file)
33
+ @implementation Foo
34
+ -(id)init {
35
+ if(self = [super init]) {
36
+ NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
37
+ [center addObserver:self selector:(some_method:) name:@"SomethingHappensNotification" object:nil];
38
+ }
39
+ return self;
40
+ }
41
+
42
+ -(void)some_method:(NSNotification *) notification {
43
+ NSLog("w00t!");
44
+ }
45
+ @end
46
+
47
+ ### Alternative Way Of Using Notifications
48
+
49
+ //Rucola
50
+ class Foo < Rucola::RCController
51
+ notify_on :something_happens do |notification|
52
+ puts "w0t0!"
53
+ end
54
+ end
55
+
56
+ ### Working with Interface Builder
57
+
58
+ A Cocoa application contains `outlets`. Outlets allow you to bind variable names to objects.
59
+ An object can be a user interface element or an instance of a class.
60
+
61
+ class ApplicationController < Rucola::RCController
62
+ ib_outlet :main_window
63
+
64
+ def awakeFromNib
65
+ # All the application delegate methods will be called on this object.
66
+ OSX::NSApp.delegate = self
67
+
68
+ puts "ApplicationController awoke."
69
+ puts "Edit: app/controllers/application_controller.rb"
70
+ puts "\nIt's window is: #{@main_window.inspect}"
71
+ end
72
+
73
+ # NSApplication delegate methods
74
+ def applicationDidFinishLaunching(notification)
75
+ puts "\nApplication finished launching."
76
+ end
77
+
78
+ def applicationWillTerminate(notification)
79
+ puts "\nApplication will terminate."
80
+ end
81
+ end
82
+
83
+ The `@main_window` variable now points to the user interface window. You can invoke any methods of NSWindow.
84
+
85
+ There is also a `rake ib:update` that will update your nib files with the outlets you specify in your code.
86
+ For example, if we wanted to add a button to the application controller above, we could add `ib_outlet :my_button`.
87
+ After you've added this, you can run `rake ib:update` and your outlet will be available in interface builder that
88
+ you can now hook up to your UI button.
89
+
90
+ ### Configuring your application
91
+ If you plan on using additional objective-c frameworks (WebKit, etc.) or ruby gems, you'll need to add these
92
+ in your environment.rb file.
93
+
94
+ config.objc_frameworks = %w(WebKit IOKit)
95
+ config.use_active_record = true
96
+
97
+ ### Building your application
98
+
99
+ To build your application, Rucola provides a simple rake command. (You can also build your application in XCode)
100
+
101
+ rake xcode:build
102
+
103
+ This will compile and run your application. At the moment we don't bundle Ruby or the gems that you are using
104
+ in your application, we have plans to support this in order to make it really easy to distribute your application.
105
+
106
+ ### Extras
107
+
108
+ Browse the svn repo online at: http://rucola.rubyforge.org/svn/
109
+
110
+ The latest version can be checked out with:
111
+
112
+ $ svn co svn://rubyforge.org/var/svn/rucola/trunk rucola
113
+
114
+ A simpe sample app called Gembo can be found at:
115
+
116
+ $ svn co svn://rubyforge.org/var/svn/rucola/extras/examples/Gembo
117
+
118
+ There's a basic TextMate bundle which contains only 4 commands which are the equivalent of the "go to file" commands in the rails bundle. With these going from a controller to it's test/model/view file is only a shortcut away. To get it:
119
+
120
+ $ cd ~/Library/Application\ Support/TextMate/Bundles/
121
+ $ svn co svn://rubyforge.org/var/svn/rucola/extras/Rucola.tmbundle
122
+
123
+ There's a crash reporter plugin available, which you can install with script/plugin:
124
+
125
+ $ cd MyApp
126
+ $ script/plugin install SACrashReporter
@@ -0,0 +1,32 @@
1
+ require 'config/requirements'
2
+ require 'config/hoe' # setup Hoe + all gem configuration
3
+ require 'rake/testtask'
4
+
5
+ Rake::TaskManager.class_eval do
6
+ def remove_task(task_name)
7
+ @tasks.delete(task_name.to_s)
8
+ end
9
+ end
10
+
11
+ def remove_task(task_name)
12
+ Rake.application.remove_task(task_name)
13
+ end
14
+
15
+ Dir['tasks/**/*.rake'].each { |rake| load rake }
16
+
17
+ remove_task :test
18
+
19
+ Rake::TestTask.new do |t|
20
+ t.test_files = FileList['test/test_*.rb']
21
+ t.options = '-rr'
22
+ end
23
+
24
+ # desc 'First uninstalls the currently installed Rucola gem and then installs the new one.'
25
+ # task :install_gem_test do
26
+ # if `rake check_manifest`.split("\n").length == 1
27
+ # sh 'gem uninstall rucola'
28
+ # Rake::Task['install_gem_no_doc'].invoke
29
+ # else
30
+ # puts "You first might need to update the manifest!"
31
+ # end
32
+ # end
data/TODO ADDED
@@ -0,0 +1,28 @@
1
+ * Did some restructuring of the dir layout with regards to controllers and initialize_hooks (rev 42).
2
+ Should probably look if the require structure is still ok... Justin knows about this.
3
+
4
+ * Create tests for initializer.rb.
5
+
6
+ * Make sure autotest works with the application generated directory structure.
7
+
8
+ * Create templates for testing in either TestUnit, TestSpec or rSpec.
9
+ I don't use rSpec anymore atm, so I (Eloy) will first focus on TestUnit & TestSpec.
10
+ Actually I will just move it to test/spec.
11
+
12
+ * Create README & simple website and release first version!
13
+
14
+ * No need to continuously rebuild your application when just changing a few lines of Ruby.
15
+ Still does xcodebuild for the build task, so add a check if the xcode project was updated,
16
+ if not then simply run the existing build.
17
+
18
+ * Allow transparent packaging. Developers need only worry about creating their application
19
+ and basic configuration not the innards of packaging and releasing.
20
+
21
+ config.objc_frameworks << ['Webkit', 'Quartz']
22
+ config.active_record = true
23
+ config.include_dirs << %w(models controllers lib)
24
+
25
+ * When in debug mode and using ActiveRecord, allow database to reside in your working
26
+ directory for easy access instead of buried in your users Application Support path.
27
+
28
+ * Load database config from config/database.yml
@@ -0,0 +1,6 @@
1
+ Description:
2
+ Running this command will give you a complete, working application with a single window already
3
+ bound to your application controller.
4
+
5
+ Usage:
6
+ rucola MyApp -a "Your Name"
@@ -0,0 +1,112 @@
1
+ class RubiGen::Commands::Create
2
+ def symlink(relative_source, relative_destination)
3
+ return logger.identical(relative_destination) if File.exists?(destination_path(relative_destination))
4
+ # We don't want the symlink to point to a full path,
5
+ # so change to the destination_root and create the symlink.
6
+ Dir.chdir(destination_root) { File.symlink relative_source, relative_destination }
7
+ end
8
+ end
9
+
10
+ class RucolaGenerator < RubiGen::Base
11
+
12
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
13
+ Config::CONFIG['ruby_install_name'])
14
+
15
+ default_options :author => 'YOUR NAME'
16
+
17
+ attr_reader :name, :project, :author
18
+
19
+ def initialize(runtime_args, runtime_options = {})
20
+ super
21
+ usage if args.empty?
22
+ @destination_root = File.expand_path(args.shift)
23
+ @name = base_name
24
+ @project = name
25
+ extract_options
26
+ end
27
+
28
+ def manifest
29
+ record do |m|
30
+ # Ensure appropriate folder(s) exists
31
+ m.directory ''
32
+ BASEDIRS.each { |path| m.directory path }
33
+
34
+ m.directory 'misc/English.lproj/MainMenu.nib' # TODO - allow alternate default languages
35
+
36
+ # Create stubs
37
+ m.template "Rakefile.erb", "Rakefile"
38
+
39
+ m.file "app/controllers/application_controller.rb", "app/controllers/application_controller.rb"
40
+ m.file_copy_each %w[boot.rb environment.rb ib_external_class_defs.yml], "config"
41
+ m.template "config/Info.plist.erb", "config/Info.plist"
42
+ m.symlink "config/Info.plist", "Info.plist"
43
+
44
+ m.file_copy_each %w[debug.rb release.rb test.rb], "config/environments"
45
+
46
+ #m.template_copy_each %w[main.m.erb rb_main.rb.erb], "misc"
47
+ m.template "misc/main.m.erb", "misc/main.m"
48
+ m.template "misc/rb_main.rb.erb", "misc/rb_main.rb"
49
+
50
+ # TODO - allow alternate default languages
51
+ m.template "misc/English.lproj/InfoPlist.strings.erb", "misc/English.lproj/InfoPlist.strings"
52
+ m.file_copy_each %w[classes.nib info.nib keyedobjects.nib], "misc/English.lproj/MainMenu.nib"
53
+
54
+ # xocde project
55
+ m.directory "#{@project}.xcodeproj"
56
+ m.template "project.pbxproj.erb", "#{@project}.xcodeproj/project.pbxproj"
57
+
58
+ # test
59
+ m.file "test/test_helper.rb", "test/test_helper.rb"
60
+ m.file "test/controllers/test_application_controller.rb", "test/controllers/test_application_controller.rb"
61
+
62
+ plugin = 'script/plugin'
63
+ logger.create plugin
64
+ FileUtils.mkdir_p File.dirname(destination_path(plugin))
65
+ FileUtils.copy(source_path(plugin), destination_path(plugin))
66
+ File.chmod(0755, destination_path(plugin))
67
+
68
+ m.dependency "install_rubigen_scripts", [destination_root, "rucola"],
69
+ :shebang => options[:shebang], :collision => :force
70
+ end
71
+ end
72
+
73
+ protected
74
+ def banner
75
+ <<-EOS
76
+ Creates a ...
77
+
78
+ USAGE: #{spec.name} name"
79
+ EOS
80
+ end
81
+
82
+ def add_options!(opts)
83
+ opts.separator ''
84
+ opts.separator 'Options:'
85
+ # For each option below, place the default
86
+ # at the top of the file next to "default_options"
87
+ opts.on("-a", "--author=\"Your Name\"", String,
88
+ "Places your name within some copyright headers.",
89
+ "Default: YOUR NAME") { |options[:author]| }
90
+ opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
91
+ end
92
+
93
+ def extract_options
94
+ # for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
95
+ # Templates can access these value via the attr_reader-generated methods, but not the
96
+ # raw instance variable value.
97
+ @author = options[:author]
98
+ end
99
+
100
+ # Installation skeleton. Intermediate directories are automatically
101
+ # created so don't sweat their absence here.
102
+ BASEDIRS = %w(
103
+ app/controllers
104
+ app/models
105
+ app/views
106
+ config/environments
107
+ script
108
+ test/controllers
109
+ test/models
110
+ vendor
111
+ )
112
+ end
@@ -0,0 +1,12 @@
1
+ # Application configuration
2
+ APPNAME = "<%= name %>"
3
+ TARGET = "#{APPNAME}.app"
4
+ #APPVERSION = "rev#{`svn info`[/Revision: (\d+)/, 1]}"
5
+ APPVERSION = Time.now.strftime("%Y-%m-%d")
6
+ PUBLISH = 'yourname@yourhost:path'
7
+
8
+ # Load Rucola tasks
9
+ SOURCE_ROOT = File.dirname(__FILE__)
10
+ require 'rubygems'
11
+ require 'rucola/rucola_support'
12
+ load 'rucola/tasks/main.rake'