flak 0.0.4 → 0.0.5

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 (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
-