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 <chrisj...@gmail.com>

> 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 gitorious@googlegroups.com
> To unsubscribe from this group, send email to
> gitorious+unsubscr...@googlegroups.com
>
>
>
>


-- 
------             Wilfried Kopp               ------
-             chev...@gmail.com               -
------------------------------------------------------------

-- 
-- 
To post to this group, send email to gitorious@googlegroups.com
To unsubscribe from this group, send email to
gitorious+unsubscr...@googlegroups.com



Reply via email to