public
Description: A popular sample Cocoa application rewritten in Nu. Original code by Aaron Hillegass, ported to Nu by Tim Burks.
Homepage: http://programming.nu/posts/2007/12/12/nupagepacker
Clone URL: git://github.com/timburks/nupagepacker.git
commit  ddc168423ac5590bfceaff3ecdf0f2f3b30bf155
tree    82219199d8035f8e99a2c737f38e5fd7b0e627d9
parent  ded56fa59dd81f87319bca9523d6e3b904e58bef
nupagepacker / Nukefile
100644 62 lines (54 sloc) 2.621 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
;; Nukefile for NuPagePacker
 
;; source files
(set @c_files (filelist "^objc/.*.c$"))
(set @m_files (filelist "^objc/.*.m$"))
(set @nu_files    (filelist "^nu/.*nu$"))
(set @frameworks '("Cocoa" "Nu" "Quartz"))
(set @icon_files (filelist "^resources/.*icns$"))
(set @resources (filelist "^resources/English\.lproj/[^/]*$"))
(@resources << "resources/diyp3h_core_1up.pdf")
(@resources << "resources/PagePacker.sdef")
 
(set @arch '("i386" "ppc"))
 
;; application description
(set @application "NuPagePacker")
(set @application_identifier "nu.programming.NuPagePacker")
(set @application_icon_file "NuPPApp.icns")
(set @application_help_folder "PagePackerHelp")
 
;; specify the entire Info.plist here:
(set @info
     (dict "CFBundleDevelopmentRegion" "English"
           "CFBundleDocumentTypes"
           (array (dict "CFBundleTypeExtensions" (array "pp")
                        "CFBundleTypeIconFile" "NuPPApp.icns"
                        "CFBundleTypeName" "DocumentType"
                        "CFBundleTypeRole" "Editor"
                        "NSDocumentClass" "MyDocument"))
           "CFBundleExecutable" "NuPagePacker"
           "CFBundleHelpBookFolder" "PagePackerHelp"
           "CFBundleHelpBookName" "PagePacker Help"
           "CFBundleIconFile" "NuPPApp"
           "CFBundleIdentifier" "nu.programming.NuPagePacker"
           "CFBundleInfoDictionaryVersion" "6.0"
           "CFBundleName" "NuPagePacker"
           "CFBundlePackageType" "APPL"
           "CFBundleSignature" "????"
           "CFBundleVersion" "1.2"
           "NSAppleScriptEnabled" "YES"
           "NSMainNibFile" "MainMenu"
           "NSPrincipalClass" "NSApplication"
           "OSAScriptingDefinition" "PagePacker.sdef"))
 
;; build tasks
(compilation-tasks)
(application-tasks)
(task "default" => "application")
 
;; this copies the Nu.framework into the application so that it can be run on systems without Nu.
(task "finalize" => "application" is
      (SH "mkdir -p '#{@application_dir}/Contents/Frameworks'")
      (SH "ditto /Library/Frameworks/Nu.framework '#{@application_dir}/Contents/Frameworks/Nu.framework'")
      (SH "install_name_tool -change 'Nu.framework/Versions/A/Nu' '@executable_path/../Frameworks/Nu.framework/Versions/A/Nu' '#{@application_dir}/Contents/MacOS/#{@application}'"))
 
;; Build a disk image for distributing the application.
(task "dmg" => "finalize" is
      (SH "rm -rf '#{@application}.dmg' dmg")
      (SH "mkdir dmg; cp -Rp '#{@application}.app' dmg")
      (SH "hdiutil create -srcdir dmg '#{@application}.dmg' -volname '#{@application}'")
      (SH "rm -rf dmg"))