Revision: 3181
http://skim-app.svn.sourceforge.net/skim-app/?rev=3181&view=rev
Author: hofman
Date: 2007-11-08 13:32:40 -0800 (Thu, 08 Nov 2007)
Log Message:
-----------
Use an included script instead of a bunch of tasks to create a disk image for
archiving. This script could also be used externally by users.
Modified Paths:
--------------
trunk/SKDocument.m
trunk/Skim.xcodeproj/project.pbxproj
Added Paths:
-----------
trunk/archivedmg.sh
Modified: trunk/SKDocument.m
===================================================================
--- trunk/SKDocument.m 2007-11-08 15:58:41 UTC (rev 3180)
+++ trunk/SKDocument.m 2007-11-08 21:32:40 UTC (rev 3181)
@@ -875,62 +875,16 @@
NSAutoreleasePool *pool = [NSAutoreleasePool new];
- NSString *tmpDir = SKUniqueDirectoryCreating(NSTemporaryDirectory(),
YES);
- BOOL success = tmpDir != nil;
-
NSString *sourcePath = [[[info objectForKey:@"sourcePath"] copy]
autorelease];
NSString *targetPath = [[[info objectForKey:@"targetPath"] copy]
autorelease];
- NSString *name = [[targetPath lastPathComponent]
stringByDeletingPathExtension];
- NSString *tmpImagePath1 = [[tmpDir
stringByAppendingPathComponent:name]
stringByAppendingPathExtension:@"sparseimage"];
- NSString *tmpImagePath2 = [[tmpDir
stringByAppendingPathComponent:name] stringByAppendingPathExtension:@"dmg"];
- NSString *tmpMountPath = SKUniqueDirectoryCreating(@"/tmp", NO); // we
don't use tmpDir because the mountpath has a maximum length of 90
- BOOL didAttach = NO;
+ NSString *scriptPath = [[[NSBundle mainBundle] sharedSupportPath]
stringByAppendingPathComponent:@"archivedmg.sh"];
+ NSTask *task = [NSTask launchedTaskWithLaunchPath:scriptPath
arguments:[NSArray arrayWithObjects:sourcePath, targetPath, nil]];
+ if ([task isRunning])
+ [task waitUntilExit];
+ if ([task isRunning])
+ [task terminate];
-
- @try {
- if (success) {
- success = [NSTask runTaskWithLaunchPath:@"/usr/bin/hdiutil"
- arguments:[NSArray
arrayWithObjects:@"create", @"-type", @"SPARSE", @"-fs", @"HFS+", @"-volname",
name, tmpImagePath1, nil]
- currentDirectoryPath:tmpDir];
- }
-
- // asr (used by "hdiutil create") has a bug in Tiger: it loses the
EAs, so we need to copy another version with the EAs
-
- if (success) {
- success = [NSTask runTaskWithLaunchPath:@"/usr/bin/hdiutil"
- arguments:[NSArray
arrayWithObjects:@"attach", @"-nobrowse", @"-mountpoint", tmpMountPath,
tmpImagePath1, nil]
- currentDirectoryPath:tmpDir];
- didAttach = success;
- }
-
- if (success) {
- success = noErr == FSPathCopyObjectSync((const char
*)[sourcePath fileSystemRepresentation], (const char *)[tmpMountPath
fileSystemRepresentation], (CFStringRef)[sourcePath lastPathComponent], NULL,
kFSFileOperationOverwrite);
- }
-
- if (didAttach) {
- success = [NSTask runTaskWithLaunchPath:@"/usr/bin/hdiutil"
- arguments:[NSArray
arrayWithObjects:@"detach", tmpMountPath, nil]
- currentDirectoryPath:tmpDir] && success;
- }
-
- if (success) {
- success = [NSTask runTaskWithLaunchPath:@"/usr/bin/hdiutil"
- arguments:[NSArray
arrayWithObjects:@"convert", @"-format", @"UDZO", @"-o", tmpImagePath2,
tmpImagePath1, nil]
- currentDirectoryPath:tmpDir];
- }
-
- if (success) {
- success = noErr == FSPathCopyObjectSync((const char
*)[tmpImagePath2 fileSystemRepresentation], (const char *)[[targetPath
stringByDeletingLastPathComponent] fileSystemRepresentation],
(CFStringRef)[targetPath lastPathComponent], NULL, kFSFileOperationOverwrite);
- }
-
- FSPathDeleteContainer((const UInt8 *)[tmpDir
fileSystemRepresentation]);
-
- }
- @catch(id exception) {
- NSLog(@"caught exception %@ while archiving %@ to %@", exception,
sourcePath, targetPath);
- }
-
[[self progressController] performSelectorOnMainThread:@selector(hide)
withObject:nil waitUntilDone:NO];
[pool release];
Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj 2007-11-08 15:58:41 UTC (rev
3180)
+++ trunk/Skim.xcodeproj/project.pbxproj 2007-11-08 21:32:40 UTC (rev
3181)
@@ -66,6 +66,7 @@
CE20AC9C0C9EF2F9007C72F9 /* notesTemplate.rtfd in Resources */
= {isa = PBXBuildFile; fileRef = CE20AC990C9EF2F9007C72F9 /* notesTemplate.rtfd
*/; };
CE20B1600C9EFC29007C72F9 /* notesTemplate.rtfd in CopyFiles */
= {isa = PBXBuildFile; fileRef = CE20AC990C9EF2F9007C72F9 /* notesTemplate.rtfd
*/; };
CE20B1950C9F23CC007C72F9 /* NSView_SKExtensions.m in Sources */
= {isa = PBXBuildFile; fileRef = CE20B1930C9F23CC007C72F9 /*
NSView_SKExtensions.m */; };
+ CE2A11670CE3B51600A0499B /* archivedmg.sh in Resources */ =
{isa = PBXBuildFile; fileRef = CE2A11660CE3B51600A0499B /* archivedmg.sh */; };
CE2BD83E0BD4132B00A5F4DB /* Sparkle.framework in Frameworks */
= {isa = PBXBuildFile; fileRef = CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework
*/; };
CE2BD8450BD4135600A5F4DB /* Sparkle.framework in CopyFiles */ =
{isa = PBXBuildFile; fileRef = CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework
*/; };
CE2DE4920B85D48F00D0DA12 /* SKThumbnail.m in Sources */ = {isa
= PBXBuildFile; fileRef = CE2DE4910B85D48F00D0DA12 /* SKThumbnail.m */; };
@@ -402,6 +403,7 @@
CE20AC990C9EF2F9007C72F9 /* notesTemplate.rtfd */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.rtfd; path = notesTemplate.rtfd;
sourceTree = "<group>"; };
CE20B1920C9F23CC007C72F9 /* NSView_SKExtensions.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
NSView_SKExtensions.h; sourceTree = "<group>"; };
CE20B1930C9F23CC007C72F9 /* NSView_SKExtensions.m */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path
= NSView_SKExtensions.m; sourceTree = "<group>"; };
+ CE2A11660CE3B51600A0499B /* archivedmg.sh */ = {isa =
PBXFileReference; fileEncoding = 30; lastKnownFileType = text.script.sh; path =
archivedmg.sh; sourceTree = "<group>"; };
CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj */ = {isa =
PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name =
Sparkle.xcodeproj; path = vendorsrc/andymatuschak/Sparkle/Sparkle.xcodeproj;
sourceTree = "<group>"; };
CE2BD82A0BD4132B00A5F4DB /* Sparkle.framework */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.framework; path =
Sparkle.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CE2DE4900B85D48F00D0DA12 /* SKThumbnail.h */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path =
SKThumbnail.h; sourceTree = "<group>"; };
@@ -1214,6 +1216,7 @@
isa = PBXGroup;
children = (
CE1E2F120BDB86A10011D9DD /* displayline */,
+ CE2A11660CE3B51600A0499B /* archivedmg.sh */,
CE48BBB40C08AD7000A166C6 /* notesTemplate.txt
*/,
CE48BBB50C08AD7000A166C6 /* notesTemplate.rtf
*/,
CE20AC990C9EF2F9007C72F9 /* notesTemplate.rtfd
*/,
@@ -1435,6 +1438,7 @@
CEAE39350CA4429A00849B0F /* BookmarkSheet.nib
in Resources */,
CE7B85FD0CCF4AA800793F46 /* SmallMenu.tiff in
Resources */,
CE6C96A90CD924C70022D69F /* NotesPanel.nib in
Resources */,
+ CE2A11670CE3B51600A0499B /* archivedmg.sh in
Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Added: trunk/archivedmg.sh
===================================================================
--- trunk/archivedmg.sh (rev 0)
+++ trunk/archivedmg.sh 2007-11-08 21:32:40 UTC (rev 3181)
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+# archivedmg (Skim)
+#
+# Usage: archivedmg SOURCE TARGET
+
+source="$1"
+target="$2"
+[ "${source:0:1}" == "/" ] || source="${PWD}/${source}"
+[ "${target:0:1}" == "/" ] || target="${PWD}/${target}"
+name="${target##*/}"
+name="${name%.*}"
+tmpdir=`/usr/bin/mktemp -d /tmp/net.sourceforge.skim-app.XXXX`
+
+cd "$tmpdir"
+/usr/bin/hdiutil create -type SPARSE -fs "HFS+" -volname "$name"
"${name}.sparseimage" && \
+/usr/bin/hdiutil attach -nobrowse -mountpoint "$name" "${name}.sparseimage" &&
\
+/bin/cp -R "$source" "$name"
+/usr/bin/hdiutil detach "$name"
+/usr/bin/hdiutil convert -format UDZO -o "${name}.dmg" "${name}.sparseimage"
&& \
+/bin/cp "${name}.dmg" "$target"
+/bin/rm -rf "$tmpdir"
Property changes on: trunk/archivedmg.sh
___________________________________________________________________
Name: svn:executable
+ *
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit