You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@whimsical.apache.org by se...@apache.org on 2020/07/23 22:03:40 UTC
[whimsy] branch master updated: Simplify: write atts to provided
path
This is an automated email from the ASF dual-hosted git repository.
sebb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/whimsy.git
The following commit(s) were added to refs/heads/master by this push:
new afd6e26 Simplify: write atts to provided path
afd6e26 is described below
commit afd6e26232ece21efae3b8cee85ba98e8f7766b2
Author: Sebb <se...@apache.org>
AuthorDate: Thu Jul 23 23:03:31 2020 +0100
Simplify: write atts to provided path
---
www/secretary/workbench/models/message.rb | 25 ++++++++++---------------
www/secretary/workbench/tasks.rb | 17 ++++++++++++-----
2 files changed, 22 insertions(+), 20 deletions(-)
diff --git a/www/secretary/workbench/models/message.rb b/www/secretary/workbench/models/message.rb
index eccf9d6..b2ccc30 100644
--- a/www/secretary/workbench/models/message.rb
+++ b/www/secretary/workbench/models/message.rb
@@ -203,27 +203,22 @@ class Message
#
# write one or more attachments
- # returns list of input names with their temporary file pointers
- # It's not safe to return the path names of the temp files as
- # that allows the files to be deleted by garbage collection
- # [[name, open temp file, content-type]]
- def write_att(*attachments)
+ # returns list as follows:
+ # [[name, temp file name, content-type]]
+ def write_att(tmpdir, *attachments)
files = []
# drop all nil and empty values
attachments = attachments.flatten.reject {|name| name.to_s.empty?}
- if attachments.flatten.length == 1
- attachment = attachments.first
- att = find(attachment)
- files << [attachment, att.as_file, att.content_type.untaint]
- else
- # write out selected attachment
- attachments.each do |attachment, basename|
- att = find(attachment)
- files << [attachment, att.as_file, att.content_type.untaint]
- end
+ # write out any remaining attachments
+ attachments.each do |name|
+ att = find(name)
+ path = File.join(tmpdir, name)
+ att.write_path(path)
+ files << [name, path, att.content_type.untaint]
end
+
files
end
diff --git a/www/secretary/workbench/tasks.rb b/www/secretary/workbench/tasks.rb
index a53bfdb..90ab4ef 100644
--- a/www/secretary/workbench/tasks.rb
+++ b/www/secretary/workbench/tasks.rb
@@ -80,7 +80,7 @@ class Wunderbar::JsonBuilder
# Commit new file(s) and update associated index
# e.g. add ccla.pdf, ccla.pdf.asc to documents/cclas/xyz/ and update officers/cclas.txt
# Parameters:
- # index_dir - SVN alias of directory containint the index (e.g. foundation or officers)
+ # index_dir - SVN alias of directory containing the index (e.g. foundation or officers)
# index_name - name of index file to update (e.g. cclas.txt)
# docdir - SVN alias for document directory (e.g. cclas)
# docname - document name (as per email)
@@ -91,11 +91,15 @@ class Wunderbar::JsonBuilder
# svnmessage - the svn commit message
# block - the block which is passed the contents of the index file to be updated
def svn_multi(index_dir, index_name, docdir, docname, docsig, outfilename, outfileext, emessage, svnmessage, &block)
- ASF::SVN.multiUpdate_(ASF::SVN.svnpath!(index_dir, index_name), svnmessage, env, _) do |text|
+ rc = nil
+ Dir.mktmpdir do |tmpdir|
+
+ rc = ASF::SVN.multiUpdate_(ASF::SVN.svnpath!(index_dir, index_name), svnmessage, env, _,{tmpdir: tmpdir}) do |text|
extras = []
# write the attachments as file(s)
- dest = emessage.write_att(docname, docsig)
+ dest = emessage.write_att(tmpdir, docname, docsig)
+ Wunderbar.warn dest.inspect
if dest.size > 1 # write to a container directory
unless outfilename =~ /\A[a-zA-Z][-.\w]+\z/ # previously done by write_svn
@@ -115,7 +119,7 @@ class Wunderbar::JsonBuilder
end
outpath = File.join(container, name)
# N.B. file cannot exist here, because the directory was created as part of the same commit
- extras << ['put', file.path, outpath]
+ extras << ['put', file, outpath]
extras << ['propset', 'svn:mime-type', content_type, outpath]
end
else
@@ -125,7 +129,7 @@ class Wunderbar::JsonBuilder
if ASF::SVN.exist?(outpath, nil, env)
raise IOError.new("#{outpath} already exists!")
else
- extras << ['put', file.path, outpath]
+ extras << ['put', file, outpath]
extras << ['propset', 'svn:mime-type', content_type, outpath]
end
end
@@ -134,6 +138,9 @@ class Wunderbar::JsonBuilder
[text, extras]
end
+
+ end
+ rc
end
def template(name)