Indeed, good news!!!
Thanks as well for the tips you gave me, they ended up very help ful.
In return, here are the scripts I am using today (they are worth what they
are :) they do the trick!). Warning hardcode insid to fetch some specific
users and groups, see 99 and 98:
#!/usr/local/bin/ruby
require File.dirname(__FILE__)+'/../config/environment'
require "net/smtp"
require 'optparse'
options = {}
OptionParser.new do |opts|
# opts.banner = "Usage: script.rb "
opts.on("--email [EMAIL]") do |e|
options[:email] = e
end
opts.on("--title [TITLE]") do |t|
options[:title] = t
end
opts.on("--parentslug [SLUG]") do |s|
options[:parentslug] = s
end
opts.on("--desc [DESCRIPTION]") do |d|
options[:desc] = d
end
end.parse!
p options
#p ARGV
# find email of the requester
u = User.find_by_email_with_aliases(options[:email])
wk = User.find(99)
# find id of git_admin group
gitadmin = Group.find(98)
# check if slug already exists: => will be done using SQL
# Project.all.select {|f| f[:slug] == p}
# find parent project:
proj = Project.find_by_sql("select * from projects where slug =
'#{options[:parentslug]}'").first
repo = Repository.create!(
:name => options[:title],
:project => proj,
:description => options[:desc],
:owner => gitadmin,
:user => wk)
committership = repo.committerships.build(:creator => wk, :committer => u)
committership.build_permissions :commit, :admin
committership.save
p repo
-----------------------
#!/usr/local/bin/ruby
require File.dirname(__FILE__)+'/../config/environment'
require "net/smtp"
require 'optparse'
options = {}
OptionParser.new do |opts|
# opts.banner = "Usage: script.rb "
#opts.on("--email [EMAIL]") do |e|
# options[:email] = e
#end
opts.on("--title [TITLE]") do |t|
options[:title] = t
end
opts.on("--slug [SLUG]") do |s|
options[:slug] = s
end
opts.on("--desc [DESCRIPTION]") do |d|
options[:desc] = d
end
end.parse!
p options
#p ARGV
# find email of the requester
#u = User.find_by_email_with_aliases(options[:email])
wk = User.find(99)
# find id of git_admin group
gitadmin = Group.find(98)
# check if slug already exists: => will be done using SQL
# Project.all.select {|f| f[:slug] == p}
proj = Project.create!(
:title => options[:title],
:slug => options[:slug],
:description => options[:desc],
:owner => gitadmin,
:wiki_enabled => false,
:user => wk)
p proj
---------------------------------
2013/1/23 Christian Johansen <[email protected]>
> Hi,
>
> It might please you that Gitorious will soon-ish have an HTTP Api for
> this.
>
> Until then, here are some clues to find your way around the console:
>
> * Use save! (with the exclamation mark) to get an exception that tells
> you what went wrong
> * You can see if a project is valid by doing p.valid?. If it's not
> valid, see what p.errors.inspect gives you
>
> Chrisitian
>
> chevdor writes:
>
> > Hello,
> >
> > I am trying to find a solution to create new Projects and Respositories
> by
> > script.
> >
> > So, from the console, I have tried:
> >
> >> u = User.find(3)
> >> p=Project.create(:title => 'junk', :slug => 'junk', :description =>
> >> 'junk', :owner => u)
> >
> >
> > This returns:
> >
> >> => #<Project id: nil, title: "junk", description: "junk", user_id: nil,
> >> created_at: nil, updated_at: nil, slug: "junk", license: nil, home_url:
> >> nil, mailinglist_url: nil, bugtracker_url: nil, owner_id: 3, owner_type:
> >> "User", wiki_enabled: true, site_id: nil, merge_requests_need_signoff:
> >> false, oauth_signoff_key: nil, oauth_signoff_secret: nil,
> >> oauth_signoff_site: nil, oauth_path_prefix: nil,
> >> merge_request_custom_states: nil, suspended_at: nil>
> >
> >
> > and p.save returns false.
> > How is the 'id' generated?
> >
> > Is the method above the right one to create a new project?
> >
> > --
>
> --
> --
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
>
>
>
>
--
------ Wilfried Kopp ------
- [email protected] -
------------------------------------------------------------
--
--
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]