Hello,
This patch handles the temporary file created by --edit-description in
the same way that long comment temporary files are handled. If the
send fails, the temporary file will be left behind, otherwise it will
be deleted.
The next step would be to have options to send similar to record's
--logfile and --delete-logfile so we can easily load up the saved file
when doing another send. It might be best to rename these commands to
--file and --delete-file so we can use the same commands in both. Any
opinions on this?
I did a little work on this but I want to make the coder cleaner. I'm
sending this now becuase it has been sitting on my harddrive for a few
days and I don't know when I'll finish up the other patches.
Wed Jan 11 22:31:28 EST 2006 Zachary P. Landau <[EMAIL PROTECTED]>
* Save email description file if a send fails
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
New patches:
[Save email description file if a send fails
Zachary P. Landau <[EMAIL PROTECTED]>**20060112033128]
<
> {
hunk ./Send.lhs 20
\begin{code}
module Send ( send ) where
import System ( exitWith, ExitCode( ExitSuccess ) )
+import System.Directory ( removeFile )
import Monad ( when, unless, liftM )
hunk ./Send.lhs 22
- -import Maybe ( catMaybes )
+import Maybe ( catMaybes, isJust )
import DarcsCommands ( DarcsCommand(..) )
import DarcsArguments ( DarcsFlag( EditDescription, Target,
hunk ./Send.lhs 48
import RepoPrefs ( defaultrepo, set_defaultrepo, get_preflist )
import External ( signString, sendEmailDoc, fetchFilePS, Cachable(..) )
import FastPackedString ( unpackPS, mmapFilePS )
- -import Lock ( writeDocBinFile, readDocBinFile )
+import Lock ( writeDocBinFile, readDocBinFile, world_readable_temp )
import SelectChanges ( with_selected_changes )
import Depends ( get_common_and_uncommon )
import PatchBundle ( make_bundle, scan_context )
hunk ./Send.lhs 56
import Email ( make_email )
import Printer ( Doc, vsep, vcat, text, ($$), putDocLn, putDoc )
import FileName ( patch_filename )
+import IO
#include "impossible.h"
\end{code}
\begin{code}
hunk ./Send.lhs 171
let thesubject = case get_subject opts of
Nothing -> auto_subject to_be_sent
Just subj -> subj
- - mailcontents <- get_description opts to_be_sent
- - sendEmailDoc from (lt thetargets) (thesubject) (get_cc opts)
+ (mailcontents, mailfile) <- get_description opts to_be_sent
+ (sendEmailDoc from (lt thetargets) (thesubject) (get_cc opts)
(get_sendmail_cmd opts) mailcontents
bundle $ make_email their_name mailcontents
bundle (patch_filename $ patch_desc $
hunk ./Send.lhs 176
- - head to_be_sent)
+ head to_be_sent))
+ `catch` \e -> let
+ msg = "Email body left in " in do
+ when (isJust mailfile) $
+ putStrLn $ msg ++ (fromJust mailfile) ++ "."
+ fail $ ioeGetErrorString e
+ when (isJust mailfile) $
+ removeFile $ fromJust mailfile
putInfo $ "Successfully sent patch bundle to: "++lt thetargets++"."
where lt [t] = t
lt [t,""] = t
hunk ./Send.lhs 322
\end{verbatim}
\begin{code}
- -get_description :: [DarcsFlag] -> [Patch] -> IO Doc
+get_description :: [DarcsFlag] -> [Patch] -> IO (Doc, Maybe String)
get_description opts patches =
if EditDescription `elem` opts
hunk ./Send.lhs 325
- - then do writeDocBinFile ".darcs-temp-mail" patchdesc
- - edit_file ".darcs-temp-mail"
- - readDocBinFile ".darcs-temp-mail"
- - else return patchdesc
+ then do f <- world_readable_temp "darcs-temp-mail"
+ writeDocBinFile f patchdesc
+ edit_file f
+ doc <- readDocBinFile f
+ return (doc, Just f)
+ else return (patchdesc, Nothing)
where patchdesc = vsep $ map patch_description patches
\end{code}
}
Context:
[Extended date matching functionality.
Eric Kow <[EMAIL PROTECTED]>**20051228210942
(issue31 and RT #34)
Now accepts ISO 8601 intervals (mostly) as well as a larger subset of
English (including times like "yesterday at noon").
Note: also includes corrections to ISO 8601 date/time parsing, using
a more elegant technique of building dates up.
]
[Partial implementation of iso 8601 dates
Eric Kow <[EMAIL PROTECTED]>**20051228123040
(issue31) - first step
reluctant to implement (ambiguous!):
* years > 9999
* truncated representations with implied century (89 for 1989)
unimplemented:
* time intervals -- this might be good to have in darcs
* negative dates (BC)
]
[Allow rename to different case (RT #466, case-insensitive file systems)
Eric Kow <[EMAIL PROTECTED]>**20060106000141
Creates an exception in the check that the new name does not already exists;
it's ok if both names reduce to the same canonical path
]
[Update "darcs init" documentation to match its behavior.
Bill Trost <[EMAIL PROTECTED]>**20060105040737]
[Invert 'file exists already' error message in mv
Eric Kow <[EMAIL PROTECTED]>**20051230220431
mv used the wrong error message for --case-ok and opposite
]
[bug fixes for darcs help
Eric Kow <[EMAIL PROTECTED]>**20051230011003]
[Canonize myself and almost all other contributers.
Eric Kow <[EMAIL PROTECTED]>**20051229140428
Add function to append name to email address
Merged: Marnix Klooster, Eric Kow, Andres Loeh, Esa Ilari Vuokko
Looked up name on Google for most orphaned email addresses.
Hope nobody actually objects to this.
]
[add a --without-docs option to configure
[EMAIL PROTECTED]
[only print 'making executable' in verbose mode
Eric Kow <[EMAIL PROTECTED]>**20051226182817]
[fix for Issue14 remove darcs-createrepo
Jason Dagit <[EMAIL PROTECTED]>**20051224002230]
[Support --interactive option in changes command (issue #59).
Zachary P. Landau <[EMAIL PROTECTED]>**20051221052049]
[Fix type incompatibility between C code and Haskell foreign declaration.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20060106154108]
[Move patchSetToPatches to Repository.lhs
Zachary P. Landau <[EMAIL PROTECTED]>**20051219043719]
[Use _darcs/pristine instead of _darcs/current.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051215180814
All versions of Darcs since 1.0.2rc1 are able to handle either name. This
will break compatibility of new repositories with older versions.
]
[Do not document "darcs query manifest" twice.
Erik Schnetter <[EMAIL PROTECTED]>**20051222125103]
[Rename git.c to gitlib.c
Erik Schnetter <[EMAIL PROTECTED]>**20051222115318
On case-insensitive file systems, the source files Git.lhs and git.c
lead to the same object file git.o. Renaming git.c to gitlib.c solves
this problem.
]
[Remove periods from the AC_MSG_CHECKING call for the release state.
Matt Kraai <[EMAIL PROTECTED]>**20051220174536]
[Implementation of help command
Eric Kow <[EMAIL PROTECTED]>**20051218172558
(RT #307)
Provides a command to display usage information on the screen.
darcs help = darcs --help
darcs help --verbose = darcs --extended-help
darcs help command = darcs command --help
This implementation understands abbreviated commands and subcommands.
Slightly refactors darcs.lhs.
]
[reorganize comments (and add a comment) in Depends.lhs.
David Roundy <[EMAIL PROTECTED]>**20051218122029]
[fix bug in doesDirectoryReallyExist.
David Roundy <[EMAIL PROTECTED]>**20051020121710
We were failing with an exception if there was no such object. The error
message was:
Fail: getSymbolicLinkStatus: does not exist
]
[fix type of foreign calls in FastPackedString.
David Roundy <[EMAIL PROTECTED]>**20050920125800]
[rename RepoTypes to PatchSet.
David Roundy <[EMAIL PROTECTED]>**20050917133920]
[remove PatchSequence, which has long been obsolete.
David Roundy <[EMAIL PROTECTED]>**20050917133313
The patch removes remaining vestiges of PatchSequence, which was obsoleted
long ago by PatchSet (which stores patches in the opposite order (better
for lazy use) and which has additional information about tags that allows
us to avoid looking at old history.
]
[correction for send.sh test
Eric Kow <[EMAIL PROTECTED]>**20051218095652
previously failed on (at least) MacOS X 10.3.9
]
[RemoteApply no longer depends on cd, use --repodir instead.
[EMAIL PROTECTED]
This is a minor change to make darcs no longer use cd
before applying patches to a remote repository.
Now the --repodir option for the apply command is used.
This patch came from a hack to rssh[http://sf.net/projects/rssh]
to allow using darcs as a restricted command without depending
on the cd binary.
http://sf.net/tracker/index.php?func=detail&aid=1351939&group_id=65349&atid=510643
]
[print out the patch name when a test fails.
Zachary P. Landau <[EMAIL PROTECTED]>**20051205055109]
[Support signed push
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129082159]
[Fix typo in multirepo pull.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051217201918]
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051217201903]
[add changelog entry for multirepo pull.
David Roundy <[EMAIL PROTECTED]>**20051215122808]
[add support for pulling from multiple repositories simultaneously.
David Roundy <[EMAIL PROTECTED]>**20050919125012]
[Use POSIX-style option for 'head', instead of obsolescent syntax
Marnix Klooster <[EMAIL PROTECTED]>**20051216111731]
[Clarify wording for changes that can't be unreverted
[EMAIL PROTECTED]
[Set attachment filename when sending a patch bundle by e-mail.
Zachary P. Landau <[EMAIL PROTECTED]>**20051217195009]
[save long comment file if a test fails during record
Zachary P. Landau <[EMAIL PROTECTED]>**20051216023948]
[properly quote paths so that paths with spaces in them are okay
[EMAIL PROTECTED]
[fix up debug printouts in cygwin-wrapper.bash
[EMAIL PROTECTED]
[smoother invocation of cygwin-wrapper.bash -- it detects fully-qualified path to itself by leading /
[EMAIL PROTECTED]
[modernize amend-record.pl to be more portable.
Mark Stosberg <[EMAIL PROTECTED]>**20050402133417
This depends on the new "echo_to_darcs()" function in Test::Darcs
]
[implementation of --set-scripts-executable on local darcs get
[EMAIL PROTECTED]
proposed fix for issue38
The --set-scripts-executable flag is normally evaluated when you apply
patches. But when you do a local darcs get, no patches are applied.
So as a solution, we traverse the directory on local darcs get , and set
any script files to be executable.
Note: one flaw in this patch is that it duplicates the definition of
what a script is -- a file that starts with #! -- in PatchApply.lhs and
Get.lhs. It might be good to refactor these somehow.
]
[extended set-scripts-executable test
[EMAIL PROTECTED]
added check for local darcs get (issue 38) as well as initial sanity check
]
[Fix merge conflicts.
Juliusz Chroboczek <[EMAIL PROTECTED]>**20051214223217]
[Add --subject flag to 'darcs send'
Joeri van Ruth <[EMAIL PROTECTED]>**20051205120301]
[Fix mistyped /dev/null, fixes --sendmail-command in Windows
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129160120]
[Use \ as path separator for GnuPG in Windows -- makes apply --verify work
Esa Ilari Vuokko <[EMAIL PROTECTED]>**20051129164533]
[make dangers and recommended use of "Amend" clearer in the docs.
Mark Stosberg <[EMAIL PROTECTED]>**20051213140523
I think it's important to be clearer about when it's appropriate to use 'amend',
so I moved some notes into the short and mid-length help texts.
]
[update web page to reflect 1.0.5 as latest stable source.
Tommy Pettersson <[EMAIL PROTECTED]>**20051213111137]
[fix handling of absolute paths containing drive letters
Will <[EMAIL PROTECTED]>**20051208054737
This fixes issue 47 where paths containing drive letters (i.e. on windows)
are not treated as absolute paths.
]
[bump version to 1.0.6pre1
Tommy Pettersson <[EMAIL PROTECTED]>**20051208092839]
[revert maybe_relink and atomic_create to original C code.
David Roundy <[EMAIL PROTECTED]>**20051208131213]
[resolve conflicts between stable and unstable.
David Roundy <[EMAIL PROTECTED]>**20051206134818]
[Merge changes
Ian Lynagh <[EMAIL PROTECTED]>**20051008225210]
[fix mkstemp implementation for win32
Peter Strand <[EMAIL PROTECTED]>**20050810211303]
[Implement parts of System.Posix.(IO|Files) for win32
[EMAIL PROTECTED]
[implement RawMode with library functions instead of ffi
[EMAIL PROTECTED]
[call hsc2hs without output filename argument
[EMAIL PROTECTED]
[Rename compat.c to c_compat.c to avoid object filename conflict with Compat.hs
[EMAIL PROTECTED]
[Move atomic_create/sloppy_atomic_create to Compat
Ian Lynagh <[EMAIL PROTECTED]>**20050730141703]
[Split the raw mode stuff out into its own .hsc file. Windows needs some TLC
Ian Lynagh <[EMAIL PROTECTED]>**20050730134030]
[Move maybe_relink out of compat.c
Ian Lynagh <[EMAIL PROTECTED]>**20050730131205]
[Remove is_symlink
Ian Lynagh <[EMAIL PROTECTED]>**20050730122255]
[Move mkstemp to Compat.hs
Ian Lynagh <[EMAIL PROTECTED]>**20050730020918]
[Start Compat.hs, and move stdout_is_a_pipe from compat.c
Ian Lynagh <[EMAIL PROTECTED]>**20050730004829]
[TAG 1.0.5
Tommy Pettersson <[EMAIL PROTECTED]>**20051207112730]
Patch bundle hash:
89edb924bd817765e5a2797e878c39a8c6ce8fd4
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQFDyWHlMi+gvMn4IFIRAqeRAJ9WYkiycf+hxdQjYw6E+uIMUq3diwCgoaEE
CQ/plrb/rAjhmsi4iuHY+O4=
=ZuNY
-----END PGP SIGNATURE-----
_______________________________________________
darcs-devel mailing list
[email protected]
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel