I've pushed changes to roster-emeritus branch to:
- enable sending email to secretary, cc member
- enable creating the file emeritus-requests-received/member.txt
There is a problem with the create_ function. [1]
Any ideas?
Thanks,
Craig
Line 83:
# Write the emeritus request to emeritus-requests-received
EMERITUS_REQUEST_URL = ASF::SVN.svnpath!('emeritus-requests-received').untaint
83=> rc = ASF::SVN.create_(EMERITUS_REQUEST_URL, "#{USERID}.txt",
signed_request, "Emeritus request from #{USERNAME} (#{USERID}", env, _)
[1] {
"exception": "#<UncaughtThrowError: uncaught throw #<RuntimeError: clr.txt
already exists! svn: warning: W160013: URL
'https://svn.apache.org/repos/private/documents/emeritus-requests-received/clr.txt'
non-existent in revision 98098\nsvn: E200009: Could not list all targets
because some targets don't exist\n>>",
"backtrace": [
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/svn.rb:757:in `throw'",
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/svn.rb:757:in `create_'",
"/Users/clr/apache/git/whimsy/www/roster/views/actions/memstat.json.rb:83:in
`_evaluate'",
"/Users/clr/apache/git/whimsy/www/roster/main.rb:204:in `block in <top
(required)>'",
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/rack.rb:225:in `call'",
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/rack.rb:50:in `call'",
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/rack.rb:202:in `call'",
"/Users/clr/apache/git/whimsy/lib/whimsy/asf/rack.rb:256:in `call'"
]
}
> On Jul 8, 2020, at 2:57 PM, Craig Russell <[email protected]> wrote:
>
> Hi Sebb,
>
> Here's the code snippet from memstat.json.rb.
>
> EMERITUS_REQUEST_URL =
> ASF::SVN.svnpath('emeritus-requests-received').untaint
> rc = ASF::SVN.create_(EMERITUS_REQUEST_URL, "#{USERID}.txt",
> signed_request, "Emeritus request from #{USERNAME} (#{USERID}", env, _)
> if rc == 1 break # do nothing if there is already an emeritus request
>
> I'm not sure about whether if rc==1 break is correct. There is nothing else
> to do if there is already a pending emeritus request... And there was already
> an exception if there was anything else amiss.
>
> This is actually a lot more readable than I expected when I asked if there
> was a create_ function.
>
> Craig
>
>> On Jul 8, 2020, at 12:39 PM, sebb <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> By all means test it.
>>
>> I think it works, however it may be necessary to change the API or
>> behaviour which is why it is marked as draft.
>>
>> On Wed, 8 Jul 2020 at 19:46, Craig Russell <[email protected]
>> <mailto:[email protected]>> wrote:
>>>
>>> Hi Sebb,
>>>
>>> Is this ready for testing, or should I wait?
>>>
>>> Thanks,
>>> Craig
>>>
>>>> Begin forwarded message:
>>>>
>>>> From: [email protected] <mailto:[email protected]>
>>>> Subject: [whimsy] branch master updated: += create_ metthod
>>>> Date: July 7, 2020 at 4:07:34 AM PDT
>>>> To: "[email protected] <mailto:[email protected]>"
>>>> <[email protected] <mailto:[email protected]>>
>>>> Reply-To: [email protected] <mailto:[email protected]>
>>>>
>>>> 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
>>>> <https://gitbox.apache.org/repos/asf/whimsy.git>
>>>>
>>>>
>>>> The following commit(s) were added to refs/heads/master by this push:
>>>> new 4d3e6fc += create_ metthod
>>>> 4d3e6fc is described below
>>>>
>>>> commit 4d3e6fc5da801224cda3421041a86750984dc711
>>>> Author: Sebb <[email protected] <mailto:[email protected]>>
>>>> AuthorDate: Tue Jul 7 12:07:23 2020 +0100
>>>>
>>>> += create_ metthod
>>>> ---
>>>> lib/whimsy/asf/svn.rb | 31 ++++++++++++++++++++++++++++++-
>>>> 1 file changed, 30 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/lib/whimsy/asf/svn.rb b/lib/whimsy/asf/svn.rb
>>>> index 6c78056..0dfdb60 100644
>>>> --- a/lib/whimsy/asf/svn.rb
>>>> +++ b/lib/whimsy/asf/svn.rb
>>>> @@ -717,7 +717,36 @@ module ASF
>>>> FileUtils.rm_rf tmpdir unless temp
>>>> end
>>>> end
>>>> -
>>>> +
>>>> + # DRAFT DRAFT
>>>> + # create a new file and fail if it already exists
>>>> + # Parameters:
>>>> + # directory - parent directory as an SVN URL
>>>> + # filename - name of file to create
>>>> + # source - file to upload
>>>> + # msg - commit message
>>>> + # env - user/pass
>>>> + # _ - wunderbar context
>>>> + # Returns:
>>>> + # 0 on success
>>>> + # 1 if the file exists
>>>> + # RuntimeError on unexpected error
>>>> + def self.create_(directory, filename, source, msg, env, _)
>>>> + parentrev, err = self.getInfoItem(directory, 'revision', env.user,
>>>> env.password)
>>>> + unless parentrev
>>>> + throw RuntimeError.new("Failed to get revision for #{directory}:
>>>> #{err}")
>>>> + end
>>>> + target = File.join(directory, filename)
>>>> + out, err = self.svn('list', target, {env: env})
>>>> + return 1 if out # already exists
>>>> + # Need to check for unexpected errors; the error message does not
>>>> include the full repo URL
>>>> + unless err =~ %r{^svn: warning: W160013: Path '.+#{filename}' not
>>>> found}
>>>> + throw RuntimeError.new("#{filename} already exists! #{err}")
>>>> + end
>>>> + commands = [['put', source, target]]
>>>> + self.svnmucc_(commands, msg, env, _, parentrev)
>>>> + end
>>>> +
>>>> # DRAFT DRAFT DRAFT
>>>> # checkout file and update it using svnmucc put
>>>> # the block can return additional info, which is used
>>>>
>>>
>>> Craig L Russell
>>> [email protected] <mailto:[email protected]>
>>>
>
> Craig L Russell
> [email protected] <mailto:[email protected]>
>
Craig L Russell
[email protected]