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 <seb...@gmail.com> 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 <apache....@gmail.com> wrote:
>> 
>> Hi Sebb,
>> 
>> Is this ready for testing, or should I wait?
>> 
>> Thanks,
>> Craig
>> 
>>> Begin forwarded message:
>>> 
>>> From: s...@apache.org
>>> Subject: [whimsy] branch master updated: += create_ metthod
>>> Date: July 7, 2020 at 4:07:34 AM PDT
>>> To: "comm...@whimsical.apache.org" <comm...@whimsical.apache.org>
>>> Reply-To: dev@whimsical.apache.org
>>> 
>>> 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 4d3e6fc  += create_ metthod
>>> 4d3e6fc is described below
>>> 
>>> commit 4d3e6fc5da801224cda3421041a86750984dc711
>>> Author: Sebb <s...@apache.org>
>>> 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
>> c...@apache.org
>> 

Craig L Russell
c...@apache.org

Reply via email to