On Sat, 20 Jun 2020 at 01:39, Craig Russell <apache....@gmail.com> wrote: > > > > > On Jun 19, 2020, at 5:10 PM, sebb <seb...@gmail.com> wrote: > > > > On Sat, 20 Jun 2020 at 01:02, Craig Russell <apache....@gmail.com > > <mailto:apache....@gmail.com>> wrote: > >> > >> > >>> On Jun 19, 2020, at 4:50 PM, sebb <seb...@gmail.com> wrote: > >>> > >>> On Sat, 20 Jun 2020 at 00:44, Craig Russell <apache....@gmail.com> wrote: > >>>> > >>>> I'm getting an undefined local variable error [1] in this function at > >>>> the ASF::SVN.svn_ line > >>>> > >>>> def get_template(url) > >>>> Dir.mktmpdir do |tmpdir| > >>>> tmpdir.untaint > >>>> > >>>> ASF::SVN.svn_('checkout', [url, tmpdir], _, > >>>> {depth: 'empty', user: $USER, password: $PASSWORD}) > >>>> > >>>> # Dir.chdir tmpdir do > >>>> # IO.binwrite(name, @file.read) > >>>> # ASF::SVN.svn_('add', name, _) > >>>> > >>>> # ASF::SVN.svn_('commit', name, _, {user: $USER, password: > >>>> $PASSWORD}) > >>>> # end > >>>> end > >>>> 'This is a sample template with Name: __ Date: __ Metadata: __' > >>>> end > >>>> > >>>> I'm sure it's just a big misunderstanding but where does the _ come > >>>> from? I'm looking at proxy.cgi line 184. > >>> > >>> From the _html do block, see line 273 for example > >> > >> So that means that any svn activity must be in the context of the _html > >> block? > > > > That particular method is designed for use from GUI code. > > "All I want to do is to read a file outside a gui block." > > Is there a way to do just that?
"ASF::SVN.svn does not require _" so can be used anywhere But for reading from the file system, use standard Ruby File IO > > > >> I was hoping to write some functions that would be called from different > >> places because it's a bit distracting looking at svn code in the middle of > >> an _html section... > > > > The code can still be located in a separate method; you just need to > > pass in the '_' variable. > > > >>> > >>> I've committed a fix. > >> > >> What was broken and what did you fix? > > > > _ was missing so I provided it > > > >> Thanks, > >> Craig > >> > >>> > >>>> [Fri Jun 19 16:39:14.214049 2020] [cgi:error] [pid 16948] [client > >>>> 127.0.0.1:64416] AH01215: /srv/whimsy/www/officers/coi.cgi:16:in `block > >>>> in get_template': undefined local variable or method `_' for main:Object > >>>> (NameError): /srv/whimsy/www/officers/coi.cgi > >>>> [Fri Jun 19 16:39:14.214500 2020] [cgi:error] [pid 16948] [client > >>>> 127.0.0.1:64416] AH01215: \tfrom > >>>> /usr/local/Cellar/ruby/2.7.1_2/lib/ruby/2.7.0/tmpdir.rb:89:in > >>>> `mktmpdir': /srv/whimsy/www/officers/coi.cgi > >>>> [Fri Jun 19 16:39:14.214584 2020] [cgi:error] [pid 16948] [client > >>>> 127.0.0.1:64416] AH01215: \tfrom /srv/whimsy/www/officers/coi.cgi:13:in > >>>> `get_template': /srv/whimsy/www/officers/coi.cgi > >>>> > >>>>> On Jun 19, 2020, at 2:38 PM, sebb <seb...@gmail.com> wrote: > >>>>> > >>>>> On Fri, 19 Jun 2020 at 19:50, Sam Ruby <ru...@intertwingly.net> wrote: > >>>>>> > >>>>>> On Fri, Jun 19, 2020 at 2:40 PM Craig Russell <apache....@gmail.com> > >>>>>> wrote: > >>>>>>> > >>>>>>> Big picture: I will read current-year/template.txt, substitute the > >>>>>>> name and date from the $USER information, and present that to the > >>>>>>> user in a scroll window with a button (Sign) at the bottom. > >>>>>>> > >>>>>>> The server will then write that data to current-year/availid.txt and > >>>>>>> send a message to avai...@apache.org, cc:secretary. > >>>>>>> > >>>>>>> Here's a start at reading the file, using repository.yml and > >>>>>>> document.rb: > >>>>>>> coi_url = ASF::SVN.svnurl('conflict-of-interest-current-year') > >>>>>>> current_timestamp = DateTime.now.strftime "%Y-%m-%d %H:%M:%S" > >>>>>>> outputfile = File.join(coi_url, 'template.txt').untaint > >>>>>>> template = File.read(outputfile) > >>>>>>> affirmed = template.gsub("Name: __", "Name: > >>>>>>> _#{user.cn}_").gsub("Date: __", "Date: _#{current_timestamp}_") > >>>>>>> > >>>>>>> Then, in the form method for POST, I need to write the data to the > >>>>>>> (new) file current-year/availid.txt. I have not found any code or > >>>>>>> examples how to do that. > >>>>>> > >>>>>> Here is a complete example: > >>>>>> > >>>>>> https://github.com/apache/whimsy/blob/master/www/treasurer/bill-upload.cgi#L82 > >>>>>> > >>>>>> Important points: > >>>>>> > >>>>>> 1) be sure to validate your inputs as this could be a security hole. > >>>>>> 2) Create a temporary directory, do an empty svn checkout into it, > >>>>>> write contents of the file, and do an svn add and svn commit. > >>>>> > >>>>> You should be able to use ASF::SVN.update() to do that. > >>>>> > >>>>>>> Thanks > >>>>>>> Craig > >>>>>>> > >>>>>>> Craig L Russell > >>>>>>> c...@apache.org > >>>>>> > >>>>>> - Sam Ruby > >>>> > >>>> Craig L Russell > >>>> c...@apache.org > >>>> > >> > >> Craig L Russell > >> c...@apache.org > > Craig L Russell > c...@apache.org >