----- Original Message -----
> From: "Vít Ondruch" <vondr...@redhat.com>
> To: ruby-sig@lists.fedoraproject.org
> Sent: Friday, September 16, 2016 9:52:10 AM
> Subject: Re: Macros to modify gem dependencies
> 
> 
> 
> Dne 15.9.2016 v 20:12 Pavel Valena napsal(a):
> > ----- Original Message -----
> >> From: "Vít Ondruch" <vondr...@redhat.com>
> >> To: ruby-sig@lists.fedoraproject.org
> >> Sent: Thursday, September 15, 2016 2:00:59 PM
> >> Subject: Re: Macros to modify gem dependencies
> >>
> >>
> >>
> >> Dne 15.9.2016 v 10:06 Vít Ondruch napsal(a):
> >>> BTW this is first draft of the macros. I am going to try second
> >>> implementation, which will probably need to use a bit different syntax
> >>> for macro calls, but it might replace the 3 lines usage example above
> >>> with 2 lines version:
> >>>
> >>>
> >>> ```
> >>>
> >>> %gemspec_remove_runtime_dependency -n fog-dynect
> >>> %gemspec_add_runtime_dependency -n fog-dynect ['~> 10.0', '>= 10.1']
> >>>
> >>> ```
> > The above gives me strange result in gemspec
> >
> > ```
> > s.add_runtime_dependency(%q<fog-dynect>, [">= 10.1", ">= 10.1", "~> 10.0"])
> >
> > ```
> 
> Unless you fixed "gemspec_remove_runtime_dependency" by yourself, it
> does not support the -n parameter yet, hence the dependency is not
> cleaned up prior adding new dependencies.

I have used the version of remove without '-n'. This should be ok, AFAIK.

> 
> >
> > However,
> >
> > ```
> > %gemspec_add_dep -n fog-dynect '~> 10.0'
> >
> > ```
> >
> > results in
> >
> > ```
> > s.add_dependency(%q<fog-dynect>, [">= 10.1", "~> 10.0"])
> >
> > ```
> >
> > Which I consider correct for the first example.
> >
> >
> > Also, using the notation below does not produce expected result
> >
> > ```
> > %gemspec_remove_dep fog-dynect
> > %gemspec_add_dep -n fog-dynect '~> 10.0'
> > %gemspec_add_dep -n fog-dynect '>= 10.1'
> >
> > ```
> >
> > =>
> >
> > ```
> > s.add_dependency(%q<fog-dynect>, ["~> 10.0"])
> >
> > ```
> >
> > FTR, in case of the non-named-variable-macro version (without '-n') the
> > result is correct.
> >
> >
> >>>
> >> As I promised, this is implementation with the '-n' parameter:
> >>
> >> ```
> >> %define gemspec_add_runtime_dependency(n:) \
> >> read -d '' add_runtime_dependency_script << 'EOR' || : \
> >>   name = '%{-n*}' \
> >>   version = %{*} \
> >>   spec = Gem::Specification.load('.%{gem_spec}') \
> >>   dep = spec.dependencies.detect { |d| d.type == :runtime && d.name ==
> >> name } \
> >>   if dep \
> >>     dep.requirement.concat version \
> >>   else \
> >>     spec.add_runtime_dependency name, version \
> >>   end \
> >>   File.write '.%{gem_spec}', spec.to_ruby \
> >> EOR\
> >> echo "$add_runtime_dependency_script" | ruby \
> >> %{nil}
> >>
> >> ```
> > The above can be also written as
> >
> > ```
> > %define gemspec_add_dep(n:) \
> > echo ' \
> >   name = %q<%{-n*}> \
> >   version = %{*} \
> >   spec = Gem::Specification.load(%q<.%{gem_spec}>) \
> >   dep = spec.dependencies.detect { |d| d.type == :runtime && d.name == name
> >   } \
> >   if dep \
> >     dep.requirement.concat version \
> >   else \
> >     spec.add_runtime_dependency name, version \
> >   end \
> >   File.write %q<.%{gem_spec}>, spec.to_ruby \
> > ' | ruby
> > %{nil}
> >
> > ```
> 
> Yes, you can write it like this, but you have to be careful about the
> usage later, e.g. the example you have used above:
> 
> ```
> %gemspec_add_dep -n fog-dynect '~> 10.0'
> ```
> 
> is probably reason for the issues you have described. If checked the log
> output correctly, you would see following output:

I have used your original code while getting that error. The results should be 
completely same- I have done some tests and I haven't found any results which 
differ.

Especially the single quotes do not cause any problems AFAIK. 

> 
> ```
> + echo '
>   name = %q<fog-dynect>
>   version = ~'
> /var/tmp/rpm-tmp.4CWGoP: line 71: 10.0
>   spec =
> Gem::Specification.load(%q<./usr/share/gems/specifications/fog-1.38.0.gemspec>)
> 
>   dep = spec.dependencies.detect { |d| d.type == :runtime && d.name ==
> name }
>   if dep
>     dep.requirement.concat version
>   else
>     spec.add_runtime_dependency name, version
>   end
>   File.write %q<./usr/share/gems/specifications/fog-1.38.0.gemspec>,
> spec.to_ruby
> : No such file or directory
> + ruby
> 
> ```
> 
> 
> The correct usage for this would be:
> 
> ```
> %gemspec_add_dep -n fog-dynect "~> 10.0"
> ```
> 
> IOW please note the single vs double quotes ...
> 
> 
> Vít
> 
> _______________________________________________
> ruby-sig mailing list
> ruby-sig@lists.fedoraproject.org
> https://lists.fedoraproject.org/admin/lists/ruby-sig@lists.fedoraproject.org
> 
_______________________________________________
ruby-sig mailing list -- ruby-sig@lists.fedoraproject.org
To unsubscribe send an email to ruby-sig-le...@lists.fedoraproject.org

Reply via email to