flak 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/.gitignore +1 -0
  2. data/.yardoc/checksums +28 -0
  3. data/.yardoc/objects/root.dat +0 -0
  4. data/.yardoc/proxy_types +0 -0
  5. data/.yardopts +1 -0
  6. data/Architecture.md +152 -0
  7. data/Documenting.md +2 -0
  8. data/MayaModules.md +2 -0
  9. data/README.md +173 -0
  10. data/flak.gemspec +6 -3
  11. data/lib/core_ext/hash.rb +82 -0
  12. data/lib/core_ext/string.rb +41 -0
  13. data/lib/flak.rb +20 -12
  14. data/lib/flak/rake/errors.rb +28 -0
  15. data/lib/flak/rake/file_actions.rb +70 -0
  16. data/lib/flak/rake/os.rb +18 -0
  17. data/lib/flak/rake/target.rb +47 -69
  18. data/lib/flak/rake/templates/cpp.rb +211 -0
  19. data/lib/flak/rake/templates/delight.rb +168 -0
  20. data/lib/flak/rake/templates/doc.rb +106 -0
  21. data/lib/flak/rake/templates/environment.rb +189 -0
  22. data/lib/flak/rake/templates/gl.rb +20 -0
  23. data/lib/flak/rake/templates/mac.rb +29 -0
  24. data/lib/flak/rake/templates/max.rb +22 -0
  25. data/lib/flak/rake/templates/maya.rb +172 -0
  26. data/lib/flak/rake/templates/maya_app.rb +97 -0
  27. data/lib/flak/rake/templates/maya_plugin.rb +93 -0
  28. data/lib/flak/rake/templates/merge_engine.rb +45 -0
  29. data/lib/flak/rake/templates/nuke.rb +60 -0
  30. data/lib/flak/rake/templates/release.rb +101 -0
  31. data/lib/flak/rake/templates/shell.rb +54 -0
  32. data/lib/flak/thor/cli.rb +5 -0
  33. data/lib/flak/thor/generate.rb +88 -144
  34. data/lib/flak/thor/target_file.rb +36 -17
  35. data/lib/flak/thor/templates/INSTALL.tt +3 -3
  36. data/lib/flak/thor/templates/Rakefile.tt +4 -2
  37. data/lib/flak/thor/templates/{cpp.tt → config/cpp.yml.tt} +6 -8
  38. data/lib/flak/thor/templates/{delight.tt → config/delight.yml.tt} +1 -1
  39. data/lib/flak/thor/templates/{doc.tt → config/doc.yml.tt} +0 -0
  40. data/lib/flak/thor/templates/{env.tt → config/environment.yml.tt} +6 -7
  41. data/lib/flak/thor/templates/{gl.tt → config/gl.yml.tt} +0 -0
  42. data/lib/flak/thor/templates/{mac.tt → config/mac.yml.tt} +0 -0
  43. data/lib/flak/thor/templates/{max.tt → config/max.yml.tt} +0 -0
  44. data/lib/flak/thor/templates/{maya.tt → config/maya.yml.tt} +9 -1
  45. data/lib/flak/thor/templates/{maya_app.tt → config/maya_app.yml.tt} +0 -2
  46. data/lib/flak/thor/templates/{maya_plugin.tt → config/maya_plugin.yml.tt} +0 -2
  47. data/lib/flak/thor/templates/config/nuke.yml.tt +3 -0
  48. data/lib/flak/thor/templates/config/release.yml.tt +3 -0
  49. data/lib/flak/thor/templates/config/shell.yml.tt +1 -0
  50. data/lib/flak/thor/templates/doc/content/install_guide.txt.tt +71 -25
  51. data/lib/flak/thor/templates/maya_plugin_cpp.tt +37 -0
  52. data/lib/flak/thor/templates/name_cpp.tt +6 -0
  53. data/lib/flak/thor/templates/name_h.tt +34 -0
  54. data/lib/flak/thor/templates/product.sh.tt +2 -2
  55. data/lib/flak/thor/wizard.rb +28 -15
  56. data/lib/flak/version.rb +1 -1
  57. data/target.jpg +0 -0
  58. metadata +127 -94
  59. data/README.textile +0 -59
  60. data/lib/flak/rake/base.rb +0 -316
  61. data/lib/flak/rake/cpp.rb +0 -139
  62. data/lib/flak/rake/delight.rb +0 -121
  63. data/lib/flak/rake/doc.rb +0 -69
  64. data/lib/flak/rake/gl.rb +0 -10
  65. data/lib/flak/rake/mac.rb +0 -23
  66. data/lib/flak/rake/max.rb +0 -29
  67. data/lib/flak/rake/maya.rb +0 -142
  68. data/lib/flak/rake/maya_app.rb +0 -45
  69. data/lib/flak/rake/maya_plugin.rb +0 -47
  70. data/lib/flak/rake/mod.rb +0 -46
  71. data/lib/flak/rake/nuke.rb +0 -29
  72. data/lib/flak/thor/templates/mod.tt +0 -0
  73. data/lib/flak/thor/templates/nuke.tt +0 -2
data/lib/flak/rake/cpp.rb DELETED
@@ -1,139 +0,0 @@
1
-
2
-
3
- module Flak
4
-
5
- # module methods in this module set up defaults when doing c++ builds
6
- # some instance methods are provided - they will be inherited by target objects
7
-
8
- module Cpp
9
-
10
-
11
- def self.resolve_settings( existing_settings )
12
-
13
- f = existing_settings[:root] + '/config/cpp.yml'
14
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
15
-
16
- #override the build dir
17
- h[:build_dir] = File.join("build", existing_settings[:product_revision] , existing_settings[:os], existing_settings[:configuration])
18
-
19
- h
20
- end
21
-
22
- # path to target build: e.g. /hq/dev/jtools/build/2009.3/darwin/debug/jAnimal.bundle
23
-
24
- # generate path to object build from source: e.g. /hq/dev/jtools/build/2009.3/darwin/debug/animal/sensor.o"
25
- def object_file(source)
26
- File.join(@settings[:build_dir], source.gsub("/src/","/").ext( @settings[:object_extension] ))
27
- end
28
-
29
- # collect all object files for this target
30
- def object_files
31
- @settings[:source_files].collect { |s| object_file(s) }
32
- end
33
-
34
- def c_compile_cmd(source)
35
- compiler = "\"#{@settings[:compiler]}\""
36
- object = "#{@settings[:object_flag]}\"#{object_file(source)}\""
37
- source = "\"#{source}\""
38
- inc_path = (@settings[:source_files].collect {|f| f.pathmap('%d')}.uniq | ( @settings[:include_paths] || [] )).collect { |el| "#{@settings[:include_flag]}\"#{el.to_s}\"" }.join(" ")
39
- includes = ( @settings[:includes] || [] ).collect { |el| "-include \"#{el.to_s}\"" }.join(" ")
40
- compiler_options = (@settings[:compiler_options] || [] ).collect { |el| el.to_s }.join(" ")
41
- "#{compiler} #{compiler_options} #{source} #{object} #{inc_path} #{includes}"
42
- end
43
-
44
-
45
- def c_link_cmd
46
- #puts "c_link_cmd" + ("*" * 10)
47
- # puts @settings[:linker_options]
48
-
49
- linker = "\"#{@settings[:linker]}\""
50
- objects = object_files.collect { |el| "\"#{el.to_s}\"" }
51
- # libstr = ((@settings[:libs] || []).collect { |el| "-l#{el.to_s}" } | (@settings[:static_libs] || []).collect { |el| "#{@settings[:static_prefix_flag]} -l#{el.to_s}" }).join(" ")
52
- libstr = (@settings[:libs] || []).collect { |el| "#{@settings[:lib_flag]}#{el.to_s}#{@settings[:lib_ext]}" }.join(" ")
53
- libpathstr = (@settings[:lib_paths] || []).collect { |el| "#{@settings[:libpath_flag]}\"#{el.to_s}\"" }.join(" ")
54
- linkflagstr = ( @settings[:linker_options] || [] ).collect { |el| el.to_s }.join(" ")
55
- dso_flagstr = (@settings[:dso_options] || [] ).collect { |el| el.to_s }.join(" ")
56
- fwrk = (@settings[:frameworks] || [] ).collect { |el| "#{@settings[:framework_flag]} #{el.to_s}" }.join(" ")
57
- "#{linker} #{dso_flagstr} #{linkflagstr} #{libpathstr} #{libstr} #{fwrk} #{@settings[:outputfile_flag]}\"#{filename}\" #{objects}"
58
- end
59
-
60
- def c_clean_cmd
61
- objects = object_files.collect { |el| "\"#{el.to_s}\"" }
62
- "rm -f \"#{filename}\" #{objects}"
63
- end
64
-
65
-
66
- def target_release_path
67
- File.join( @settings[:versioned_os_release_path], @settings[:target_release_prefix], self.filename.pathmap('%f'))
68
- end
69
-
70
- def cpp_instance_tasks
71
- files = @settings[:source_files]
72
- unless files.nil?
73
-
74
- # file tasks to compile objects from sources
75
- ######################################################
76
- files.each do |f|
77
- object = object_file(f)
78
- file object => f do |t|
79
- Flak::Base.make_dir_for(object)
80
-
81
- sh c_compile_cmd(f)
82
- end
83
- header = f.ext('h')
84
- file object => header if File.exists?(header)
85
- end
86
- ######################################################
87
-
88
- # file tasks to link targets
89
- ######################################################
90
- objects = object_files
91
- file self.filename => objects do
92
- Flak::Base.make_dir_for(self.filename)
93
- sh c_link_cmd
94
- end
95
-
96
- namespace @settings[:name].to_sym do
97
- desc "build the #{@settings[:name].to_sym} binary"
98
- task :build => self.filename # add named target
99
- end
100
- task :build => "#{@settings[:name].to_sym}:build"
101
- ######################################################
102
-
103
- # tasks to clean the build
104
- ######################################################
105
- namespace @settings[:name].to_sym do
106
- desc "clean the #{@settings[:name].to_sym} build files"
107
- task :clean do
108
- sh c_clean_cmd
109
- end
110
- end
111
- task :clean => "#{@settings[:name].to_sym}:clean"
112
- ######################################################
113
-
114
- # plugins and executables release tasks
115
- ######################################################
116
- released_binary = self.target_release_path
117
- file released_binary => self.filename do
118
- Flak::Base.make_dir_for(released_binary)
119
- rm_r released_binary if File.exists?(released_binary)
120
- cp self.filename, released_binary
121
- File.chmod 0755, released_binary
122
- end
123
-
124
- namespace @settings[:name].to_sym do
125
- task :release => released_binary
126
- end
127
- task :release => "#{@settings[:name].to_sym}:release"
128
- ######################################################
129
-
130
- end
131
- end
132
-
133
-
134
-
135
- end
136
- end
137
-
138
-
139
-
@@ -1,121 +0,0 @@
1
-
2
- module Flak
3
-
4
- module Delight
5
-
6
- # to resolve settings for a template, we have access to the full hash of existing settings
7
- # so that we may use, for example, some existing paths to build new paths for this object.
8
- # in the first place, we call flatten_settings with the configuration and os, which
9
- # definitely already exist.
10
- def self.resolve_settings( existing_settings )
11
-
12
- f = existing_settings[:root] + '/config/delight.yml'
13
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
14
-
15
- versioned_location = File.join("#{h[:delight_location]}-#{h[:delight_version]}")
16
-
17
- h[:lib_paths] = [ File.join(versioned_location, "lib" ) ]
18
- h[:include_paths] = [ File.join(versioned_location, "include") ]
19
- h[:shader_compiler] = File.join(versioned_location, "bin","shaderdl")
20
- h[:shader_build_dir] = existing_settings[:build_dir]
21
- h[:libs] = ["3delight"]
22
- h[:shader_include_paths] = [File.join(versioned_location, "maya","rsl") ]
23
-
24
- h
25
- end
26
-
27
- # all shader build files
28
- def shader_files()
29
- @settings[:sl_files].collect { |f| shader_file(f) }
30
- end
31
-
32
-
33
- # path to shader build: e.g. /hq/dev/jtools/build/2009.3/darwin/debug/goosebump.sdl
34
- def shader_file(source)
35
- File.join(@settings[:shader_build_dir], source.gsub("/src/","/").ext('sdl'))
36
- end
37
-
38
- def shader_release_path(file)
39
- File.join(@settings[:versioned_os_release_path] , @settings[:shader_release_prefix], file.pathmap('%f'))
40
- end
41
-
42
- def delight_shader_compile_cmd(dest,src)
43
- include_path_string = (@settings[:sl_files].collect {|f| f.pathmap('%d')}.uniq | ( @settings[:shader_include_paths] || [] )).collect { |el| "-I#{el.to_s}" }.join(" ")
44
- shader_type_string = "-DSHADER_TYPE_#{src.pathmap('%d').pathmap('%f')}"
45
- "#{@settings[:shader_compiler]} #{shader_type_string} #{include_path_string} -d #{dest} #{src}"
46
- end
47
-
48
-
49
- def delight_clean_cmd
50
- "rm -f #{shader_files}"
51
- end
52
-
53
-
54
- def delight_instance_tasks
55
- # delight shader build and release tasks
56
- ######################################################
57
- files = @settings[:sl_files]
58
- unless files.nil?
59
-
60
- files.each do |f|
61
-
62
-
63
-
64
- # file tasks to build shader from sources
65
- ######################################################
66
- target_shader = shader_file(f)
67
- file target_shader => f do |t|
68
- dest = Flak::Base.make_dir_for(target_shader)
69
- sh delight_shader_compile_cmd(dest,f)
70
- end
71
-
72
- namespace @settings[:name].to_sym do
73
- desc "build the #{@settings[:name].to_sym} delight shaader"
74
- task :build => target_shader
75
- end
76
- task :build => "#{@settings[:name].to_sym}:build"
77
- ######################################################
78
-
79
-
80
-
81
- # file tasks to release shaders
82
- ######################################################
83
- released_shader = shader_release_path(target_shader)
84
- file released_shader => target_shader do
85
- Flak::Base.make_dir_for(released_shader)
86
- cp target_shader, released_shader
87
- end
88
-
89
- namespace @settings[:name].to_sym do
90
- task :release => released_shader
91
- end
92
- task :release => "#{@settings[:name].to_sym}:release"
93
- ######################################################
94
-
95
-
96
- end
97
-
98
-
99
- # task to clean the build files
100
- ######################################################
101
- namespace @settings[:name].to_sym do
102
- desc "clean the #{@settings[:name].to_sym} build files"
103
- task :clean do
104
- sh delight_clean_cmd
105
- end
106
- end
107
- task :clean => "#{@settings[:name].to_sym}:clean"
108
- ######################################################
109
-
110
-
111
-
112
-
113
-
114
-
115
- end
116
- end
117
-
118
-
119
- end
120
- end
121
-
data/lib/flak/rake/doc.rb DELETED
@@ -1,69 +0,0 @@
1
-
2
-
3
- module Flak
4
-
5
- module Doc
6
-
7
- def self.resolve_settings( existing_settings )
8
-
9
- f = existing_settings[:root] + '/config/doc.yml'
10
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
11
-
12
- h
13
- end
14
-
15
-
16
- def default_hash(item)
17
- {
18
- :title => "#{@settings[:product_name].capitalize} #{item[:type]}",
19
- :description=> "#{@settings[:product_name].capitalize} #{@settings[:product_revision]} #{item[:type]}",
20
- :author=> @settings[:author_name],
21
- :email=> @settings[:author_email],
22
- :created_at => Time.now.strftime("%d %B %Y")
23
- }
24
- end
25
-
26
-
27
- def plug_metadata(site)
28
-
29
- site.items.each do |item|
30
- unless item.binary?
31
- item[:type] = "Index" if item.identifier == "/"
32
- item[:type] = "Release Notes" if item.identifier == "/release_notes/"
33
- item.attributes= default_hash(item).merge(item.attributes)
34
- end
35
- end
36
- end
37
-
38
-
39
- def doc_instance_tasks
40
-
41
-
42
-
43
-
44
- desc "Release documentation"
45
- task :doc do
46
- docroot = File.join(@settings[:root],'doc')
47
- Dir.chdir(docroot) do |d|
48
- site = Nanoc::Site.new(YAML.load_file('config.yaml'))
49
- site.config[:output_dir] = @settings[:doc_release_root]
50
- plug_metadata(site)
51
- puts "Compiling site..."
52
- site.compile
53
- puts "Done... ;)"
54
- end
55
- end
56
-
57
- namespace :doc do
58
- desc "Build and tar up documentation to tar.gz."
59
- task :tar => :doc do
60
- Dir.chdir( @settings[:target_release_path] ) do |d|
61
- sh "tar cfz #{@settings[:product_name]}-#{@settings[:product_revision]}-doc.tar.gz #{@settings[:product_name]}/#{@settings[:product_revision]}-doc"
62
- end
63
- end
64
- end
65
- end
66
-
67
- end
68
- end
69
-
data/lib/flak/rake/gl.rb DELETED
@@ -1,10 +0,0 @@
1
-
2
-
3
- module Flak
4
- module Gl
5
- def self.resolve_settings( existing_settings )
6
- f = existing_settings[:root] + '/config/gl.yml'
7
- Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
8
- end
9
- end
10
- end
data/lib/flak/rake/mac.rb DELETED
@@ -1,23 +0,0 @@
1
-
2
-
3
-
4
- module Flak
5
-
6
- module Mac
7
-
8
-
9
- def self.resolve_settings( existing_settings )
10
-
11
- f = existing_settings[:root] + '/config/mac.yml'
12
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
13
-
14
- h
15
- end
16
-
17
- def mac_app_release_path(file)
18
- File.join(@settings[:versioned_os_release_path], 'bin', "#{file.pathmap('%f').pathmap('%X')}-#{@settings[:product_revision]}#{file.pathmap('%x')}")
19
- end
20
-
21
- end
22
- end
23
-
data/lib/flak/rake/max.rb DELETED
@@ -1,29 +0,0 @@
1
-
2
-
3
-
4
- module Flak
5
-
6
- module Max
7
-
8
- def self.resolve_settings( existing_settings )
9
-
10
- f = existing_settings[:root] + '/config/max.yml'
11
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
12
-
13
- case existing_settings[:os]
14
- when /linux_64/
15
- h[:nuke_location] = ""
16
- when /darwin/
17
- h[:nuke_location] = ""
18
- when /win_64/
19
- h[:nuke_location] = ""
20
- end
21
- h
22
- end
23
-
24
- def max_script_release_path(file)
25
- File.join(@settings[:versioned_os_release_path], 'max', 'scripts', file.pathmap('%f'))
26
- end
27
- end
28
- end
29
-
@@ -1,142 +0,0 @@
1
-
2
-
3
-
4
- module Flak
5
-
6
- module Maya
7
-
8
-
9
- def self.resolve_settings( existing_settings )
10
-
11
- f = existing_settings[:root] + '/config/maya.yml'
12
- h =Flak::Base.flatten_settings(f,existing_settings[:configuration], existing_settings[:os] )
13
-
14
- maya_string =''
15
- case existing_settings[:os]
16
- when /linux_64/
17
- maya_string = "maya#{h[:maya_version]}-x64"
18
- when /darwin/
19
- maya_string = "maya#{h[:maya_version]}"
20
- when /win_64/
21
- maya_string = "Maya#{h[:maya_version]}"
22
- end
23
-
24
- h[:maya_location] = File.join(h[:autodesk_location],maya_string)
25
- h[:maya_release_path] = File.join(existing_settings[:versioned_os_release_path],'maya' )
26
- h
27
- end
28
-
29
-
30
- def maya_script_release_path(file)
31
- File.join(@settings[:maya_release_path] , 'scripts', file.pathmap('%f'))
32
- end
33
-
34
- def maya_icon_release_path(file)
35
- File.join(@settings[:maya_release_path] ,'icons', file.pathmap('%f'))
36
- end
37
-
38
- def maya_scripted_plugin_release_path(file)
39
- File.join(@settings[:maya_release_path] , 'plug-ins' , file.pathmap('%f'))
40
- end
41
-
42
- def maya_precompiled_plugin_release_path(file)
43
- File.join(@settings[:maya_release_path] , 'plug-ins' , file.pathmap('%f'))
44
- end
45
-
46
-
47
-
48
- # if a command exists to do the conversion - make a file task for each of icon and out_icon
49
- # that is - one for the hypershade and one for the outliner
50
- def maya_instance_tasks
51
- namespace @settings[:name].to_sym do
52
-
53
-
54
- if ( @settings.has_key?(:dg_convert_cmd ) && @settings.has_key?(:outliner_convert_cmd ) )
55
- files = @settings[:maya_node_icon_files]
56
- unless files.nil?
57
-
58
- # file tasks to convert icons for outliner and hypershade
59
- ######################################################
60
- files.each do |f|
61
-
62
- icon_release = File.join(@settings[:maya_release_path] , 'icons', f.pathmap('%f').ext('xpm'))
63
- out_icon_release = File.join(@settings[:maya_release_path] , 'icons', "out_#{f.pathmap('%f').ext('xpm')}" )
64
-
65
- icon = File.join("build", @settings[:product_revision] , 'icons', f.pathmap('%f').ext('xpm'))
66
- out_icon = File.join("build", @settings[:product_revision], 'icons', "out_#{f.pathmap('%f').ext('xpm')}" )
67
-
68
-
69
- file icon => f do |t|
70
- Flak::Base.make_dir_for(icon)
71
- cmd = "#{@settings[:dg_convert_cmd]} #{f} #{icon}"
72
- sh cmd
73
- end
74
-
75
- # dry this up
76
- file out_icon => f do |t|
77
- Flak::Base.make_dir_for(out_icon)
78
- cmd = "#{@settings[:outliner_convert_cmd]} #{f} #{out_icon}"
79
- sh cmd
80
- end
81
-
82
- file icon_release => icon do |t|
83
- Flak::Base.make_dir_for(icon_release)
84
- cp icon, icon_release
85
- end
86
-
87
- file out_icon_release => out_icon do |t|
88
- Flak::Base.make_dir_for(out_icon_release)
89
- cp out_icon, out_icon_release
90
- end
91
-
92
- task :release =>[ icon_release , out_icon_release]
93
- end
94
- ######################################################
95
- end
96
- end
97
-
98
-
99
-
100
- if ( @settings.has_key?(:maya_convert_cmd ) )
101
- files = @settings[:maya_icon_files]
102
- unless files.nil?
103
-
104
- # file tasks to convert icons for outliner and hypershade
105
- ######################################################
106
- files.each do |f|
107
-
108
- icon_release = File.join(@settings[:maya_release_path] , 'icons', f.pathmap('%f').ext('xpm'))
109
-
110
- icon = File.join("build", @settings[:product_revision] , 'icons', f.pathmap('%f').ext('xpm'))
111
-
112
-
113
- file icon => f do |t|
114
- Flak::Base.make_dir_for(icon)
115
- cmd = "#{@settings[:maya_convert_cmd]} #{f} #{icon}"
116
- sh cmd
117
- end
118
-
119
-
120
- file icon_release => icon do |t|
121
- Flak::Base.make_dir_for(icon_release)
122
- cp icon, icon_release
123
- end
124
-
125
-
126
- task :release =>[ icon_release ]
127
- end
128
- ######################################################
129
- end
130
- end
131
-
132
-
133
- end
134
- end
135
- ################################################################################
136
-
137
-
138
-
139
-
140
- end
141
- end
142
-