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