Merge branch 'master' of github.com:diaspora/diaspora
This commit is contained in:
commit
bb7e2a9918
44 changed files with 738 additions and 318 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -2,6 +2,7 @@
|
|||
.DS_Store
|
||||
.idea
|
||||
.rvmrc
|
||||
.stgit*
|
||||
*.swap
|
||||
*.swo
|
||||
*.swp
|
||||
|
|
@ -19,4 +20,4 @@ gpg/*/random_seed
|
|||
public/uploads/*
|
||||
public/source.tar
|
||||
tmp/**/*
|
||||
capybara-*.html
|
||||
capybara-*.html
|
||||
|
|
|
|||
4
Gemfile
4
Gemfile
|
|
@ -4,9 +4,9 @@ gem 'rails', '3.0.0'
|
|||
gem 'bundler', '>= 1.0.0'
|
||||
|
||||
#Security
|
||||
gem 'devise', '1.1.2'
|
||||
gem 'devise', '1.1.3'
|
||||
gem 'devise-mongo_mapper', :git => 'git://github.com/collectiveidea/devise-mongo_mapper'
|
||||
|
||||
gem 'devise_invitable', '~> 0.3.4'
|
||||
#Mongo
|
||||
gem 'mongo_mapper', :branch => 'rails3', :git => 'http://github.com/jnunemaker/mongomapper.git'
|
||||
gem 'bson_ext', '1.1'
|
||||
|
|
|
|||
51
Gemfile.lock
51
Gemfile.lock
|
|
@ -49,21 +49,22 @@ GIT
|
|||
|
||||
GIT
|
||||
remote: http://github.com/dcu/magent.git
|
||||
revision: 06513f3dac812469a55f2e365c349af4d2abc92a
|
||||
revision: 5d664351b305141158fc69fc495456414821adb3
|
||||
specs:
|
||||
magent (0.4.2)
|
||||
mongo (>= 0.1.0)
|
||||
uuidtools (>= 2.0.0)
|
||||
magent (1.0.0)
|
||||
em-websocket
|
||||
mongo
|
||||
uuidtools
|
||||
|
||||
GIT
|
||||
remote: http://github.com/jnunemaker/mongomapper.git
|
||||
revision: 5a3328244b641fa4f6a3743e9e0b4dd6a1ac2700
|
||||
revision: fd59b0ab068be7321f8e84b9dc12fb4fa6b8535d
|
||||
branch: rails3
|
||||
specs:
|
||||
mongo_mapper (0.8.4)
|
||||
activemodel (~> 3.0.0)
|
||||
activesupport (~> 3.0.0)
|
||||
plucky (~> 0.3.5)
|
||||
plucky (~> 0.3.6)
|
||||
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
|
|
@ -119,6 +120,8 @@ GEM
|
|||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
selenium-webdriver (>= 0.0.3)
|
||||
childprocess (0.0.7)
|
||||
ffi (~> 0.6.3)
|
||||
columnize (0.3.1)
|
||||
crack (0.1.8)
|
||||
cucumber (0.9.2)
|
||||
|
|
@ -132,9 +135,11 @@ GEM
|
|||
culerity (0.2.12)
|
||||
daemons (1.1.0)
|
||||
database_cleaner (0.5.2)
|
||||
devise (1.1.2)
|
||||
devise (1.1.3)
|
||||
bcrypt-ruby (~> 2.1.2)
|
||||
warden (~> 0.10.7)
|
||||
devise_invitable (0.3.4)
|
||||
devise (~> 1.1.0)
|
||||
diff-lcs (1.1.2)
|
||||
em-websocket (0.1.4)
|
||||
addressable (>= 2.1.1)
|
||||
|
|
@ -171,7 +176,7 @@ GEM
|
|||
subexec (~> 0.0.4)
|
||||
mocha (0.9.8)
|
||||
rake
|
||||
mongo (1.0.9)
|
||||
mongo (1.1)
|
||||
bson (>= 1.0.5)
|
||||
net-scp (1.0.4)
|
||||
net-ssh (>= 1.99.1)
|
||||
|
|
@ -181,8 +186,8 @@ GEM
|
|||
net-ssh-gateway (1.0.1)
|
||||
net-ssh (>= 1.99.1)
|
||||
nokogiri (1.4.3.1)
|
||||
plucky (0.3.5)
|
||||
mongo (~> 1.0.8)
|
||||
plucky (0.3.6)
|
||||
mongo (~> 1.1)
|
||||
polyglot (0.3.1)
|
||||
pubsubhubbub (0.1.1)
|
||||
em-http-request (>= 0.1.5)
|
||||
|
|
@ -208,16 +213,16 @@ GEM
|
|||
rake (0.8.7)
|
||||
rest-client (1.6.1)
|
||||
mime-types (>= 1.16)
|
||||
rspec (2.0.0.rc)
|
||||
rspec-core (= 2.0.0.rc)
|
||||
rspec-expectations (= 2.0.0.rc)
|
||||
rspec-mocks (= 2.0.0.rc)
|
||||
rspec-core (2.0.0.rc)
|
||||
rspec-expectations (2.0.0.rc)
|
||||
rspec (2.0.0)
|
||||
rspec-core (= 2.0.0)
|
||||
rspec-expectations (= 2.0.0)
|
||||
rspec-mocks (= 2.0.0)
|
||||
rspec-core (2.0.0)
|
||||
rspec-expectations (2.0.0)
|
||||
diff-lcs (>= 1.1.2)
|
||||
rspec-mocks (2.0.0.rc)
|
||||
rspec-core (= 2.0.0.rc)
|
||||
rspec-expectations (= 2.0.0.rc)
|
||||
rspec-mocks (2.0.0)
|
||||
rspec-core (= 2.0.0)
|
||||
rspec-expectations (= 2.0.0)
|
||||
rspec-rails (2.0.0.beta.17)
|
||||
rspec (>= 2.0.0.beta.14)
|
||||
webrat (>= 0.7.0)
|
||||
|
|
@ -227,8 +232,9 @@ GEM
|
|||
ruby-debug-base (0.10.3)
|
||||
linecache (>= 0.3)
|
||||
rubyzip (0.9.4)
|
||||
selenium-webdriver (0.0.28)
|
||||
ffi (>= 0.6.1)
|
||||
selenium-webdriver (0.0.29)
|
||||
childprocess (>= 0.0.7)
|
||||
ffi (~> 0.6.3)
|
||||
json_pure
|
||||
rubyzip
|
||||
subexec (0.0.4)
|
||||
|
|
@ -267,8 +273,9 @@ DEPENDENCIES
|
|||
carrierwave!
|
||||
cucumber-rails (= 0.3.2)
|
||||
database_cleaner
|
||||
devise (= 1.1.2)
|
||||
devise (= 1.1.3)
|
||||
devise-mongo_mapper!
|
||||
devise_invitable (~> 0.3.4)
|
||||
em-http-request!
|
||||
em-websocket
|
||||
factory_girl_rails
|
||||
|
|
|
|||
|
|
@ -11,21 +11,22 @@ Initial installation instructions are [here](http://github.com/diaspora/diaspora
|
|||
|
||||
We are continuing to build features and improve the code base.
|
||||
When we think it is ready for general use, we will post more final
|
||||
instructions.
|
||||
instructions. Issue tracking is at [bugs.joindiaspora.com](bugs.joindiaspora.com).
|
||||
|
||||
## Commit Guidelines
|
||||
|
||||
You are welcome to contribute, add to and extend Diaspora however you see fit. We
|
||||
will do our best to incorporate everything that meets our guidelines.
|
||||
|
||||
Please make your changes on a topic branch in your repo and submit your pull request
|
||||
from there, so that commits you don't want to submit aren't included.
|
||||
You can find an introduction to the source code [here](http://github.com/diaspora/diaspora/wiki/An-Introduction-to-the-Diaspora-Source). For an idea of where to start, look at our [issue tracker](bugs.joindiaspora.com).
|
||||
|
||||
Make a topic branch. By making your changes in a topic branch, you ensure that new commits to your master are not included in the pull request, and it's easier for us to merge your commits.
|
||||
|
||||
Please do not rebase our tree into yours.
|
||||
See [here](http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html)
|
||||
for when to rebase.
|
||||
|
||||
All commits must be tested, and all your tests should be green
|
||||
Patches must be tested, and all your tests should be green
|
||||
before a pull request is sent. Please write your tests in Rspec.
|
||||
|
||||
GEMS: We would like to keep external dependencies unduplicated. We're using
|
||||
|
|
|
|||
|
|
@ -37,8 +37,12 @@ class AlbumsController < ApplicationController
|
|||
def show
|
||||
@photo = Photo.new
|
||||
@album = current_user.find_visible_post_by_id( params[:id] )
|
||||
@album_photos = @album.photos
|
||||
respond_with @album
|
||||
unless @album
|
||||
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404
|
||||
else
|
||||
@album_photos = @album.photos
|
||||
respond_with @album
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
|
|
|
|||
|
|
@ -41,10 +41,14 @@ class AspectsController < ApplicationController
|
|||
end
|
||||
|
||||
def show
|
||||
@aspect = current_user.aspect_by_id params[:id]
|
||||
@friends = @aspect.people
|
||||
@posts = current_user.visible_posts( :by_members_of => @aspect ).paginate :per_page => 15, :order => 'created_at DESC'
|
||||
respond_with @aspect
|
||||
@aspect = current_user.aspect_by_id params[:id]
|
||||
unless @aspect
|
||||
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404
|
||||
else
|
||||
@friends = @aspect.people
|
||||
@posts = current_user.visible_posts( :by_members_of => @aspect ).paginate :per_page => 15, :order => 'created_at DESC'
|
||||
respond_with @aspect
|
||||
end
|
||||
end
|
||||
|
||||
def public
|
||||
|
|
|
|||
21
app/controllers/invitations_controller.rb
Normal file
21
app/controllers/invitations_controller.rb
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
# Copyright (c) 2010, Diaspora Inc. This file is
|
||||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
class InvitationsController < Devise::InvitationsController
|
||||
def update
|
||||
begin
|
||||
user = User.find_by_invitation_token(params["user"]["invitation_token"])
|
||||
user.accept_invitation!(params["user"])
|
||||
rescue MongoMapper::DocumentNotValid => e
|
||||
user = nil
|
||||
flash[:error] = e.message
|
||||
end
|
||||
if user
|
||||
flash[:notice] = I18n.t 'registrations.create.success'
|
||||
sign_in_and_redirect(:user, user)
|
||||
else
|
||||
redirect_to new_user_registration_path
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -17,26 +17,18 @@ class PeopleController < ApplicationController
|
|||
end
|
||||
|
||||
def show
|
||||
begin
|
||||
@person = current_user.visible_person_by_id(params[:id])
|
||||
rescue BSON::InvalidObjectId
|
||||
flash[:error] = "Person not found."
|
||||
redirect_to people_path
|
||||
return
|
||||
end
|
||||
@person = current_user.visible_person_by_id(params[:id])
|
||||
unless @person
|
||||
flash[:error] = "Person not found."
|
||||
redirect_to people_path
|
||||
return
|
||||
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404
|
||||
else
|
||||
@profile = @person.profile
|
||||
@aspects_with_person = current_user.aspects_with_person(@person)
|
||||
@aspects_dropdown_array = current_user.aspects.collect{|x| [x.to_s, x.id]}
|
||||
@posts = current_user.visible_posts(:person_id => @person.id).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
@latest_status_message = current_user.raw_visible_posts.find_all_by__type_and_person_id("StatusMessage", params[:id]).last
|
||||
@post_count = @posts.count
|
||||
respond_with @person
|
||||
end
|
||||
|
||||
@profile = @person.profile
|
||||
@aspects_with_person = current_user.aspects_with_person(@person)
|
||||
@aspects_dropdown_array = current_user.aspects.collect{|x| [x.to_s, x.id]}
|
||||
@posts = current_user.visible_posts(:person_id => @person.id).paginate :page => params[:page], :order => 'created_at DESC'
|
||||
@latest_status_message = current_user.raw_visible_posts.find_all_by__type_and_person_id("StatusMessage", params[:id]).last
|
||||
@post_count = @posts.count
|
||||
respond_with @person
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
|
|
|||
|
|
@ -76,8 +76,12 @@ class PhotosController < ApplicationController
|
|||
|
||||
def show
|
||||
@photo = current_user.find_visible_post_by_id params[:id]
|
||||
@album = @photo.album
|
||||
respond_with @photo, @album
|
||||
unless @photo
|
||||
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => 404
|
||||
else
|
||||
@album = @photo.album
|
||||
respond_with @photo, @album
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
|
|
|
|||
|
|
@ -33,7 +33,11 @@ class StatusMessagesController < ApplicationController
|
|||
|
||||
def show
|
||||
@status_message = current_user.find_visible_post_by_id params[:id]
|
||||
respond_with @status_message
|
||||
unless @status_message
|
||||
render :status => 404
|
||||
else
|
||||
respond_with @status_message
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
|||
|
|
@ -78,6 +78,10 @@ class UsersController < ApplicationController
|
|||
send_data( File.open(tar_path).read, :filename => "#{current_user.id}.tar" )
|
||||
end
|
||||
|
||||
def invite
|
||||
User.invite!(:email => params[:email])
|
||||
end
|
||||
|
||||
private
|
||||
def prep_image_url(params)
|
||||
url = APP_CONFIG[:pod_url].chop if APP_CONFIG[:pod_url][-1,1] == '/'
|
||||
|
|
|
|||
|
|
@ -34,8 +34,21 @@ class Person
|
|||
/^(https?):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?(:[0-9]{1,5})?(\/.*)?$/ix
|
||||
|
||||
def self.search(query)
|
||||
query = Regexp.escape( query.to_s.strip )
|
||||
Person.all('profile.first_name' => /^#{query}/i) | Person.all('profile.last_name' => /^#{query}/i)
|
||||
qTokens = query.to_s.strip.split(" ")
|
||||
fullQueryText = Regexp.escape( query.to_s.strip )
|
||||
p = []
|
||||
|
||||
qTokens.each {
|
||||
|token|
|
||||
|
||||
q = Regexp.escape( token.to_s.strip )
|
||||
p = Person.all('profile.first_name' => /^#{q}/i) \
|
||||
| Person.all('profile.last_name' => /^#{q}/i) \
|
||||
| p
|
||||
|
||||
}
|
||||
|
||||
return p
|
||||
end
|
||||
|
||||
def real_name
|
||||
|
|
|
|||
|
|
@ -7,6 +7,16 @@ require File.join(Rails.root, 'lib/diaspora/user/querying')
|
|||
require File.join(Rails.root, 'lib/diaspora/user/receiving')
|
||||
require File.join(Rails.root, 'lib/salmon/salmon')
|
||||
|
||||
class InvitedUserValidator < ActiveModel::Validator
|
||||
def validate(document)
|
||||
unless document.invitation_token
|
||||
unless document.person
|
||||
document.errors[:base] << "Unless you are being invited, you must have a person"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class User
|
||||
include MongoMapper::Document
|
||||
plugin MongoMapper::Devise
|
||||
|
|
@ -16,11 +26,13 @@ class User
|
|||
include Encryptor::Private
|
||||
QUEUE = MessageHandler.new
|
||||
|
||||
devise :database_authenticatable, :registerable,
|
||||
devise :invitable, :database_authenticatable, :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable
|
||||
key :username, :unique => true
|
||||
key :serialized_private_key, String
|
||||
|
||||
key :invitation_token, String
|
||||
key :invitation_sent_at, DateTime
|
||||
key :friend_ids, Array
|
||||
key :pending_request_ids, Array
|
||||
key :visible_post_ids, Array
|
||||
|
|
@ -38,6 +50,7 @@ class User
|
|||
after_create :seed_aspects
|
||||
|
||||
before_validation :downcase_username, :on => :create
|
||||
validates_with InvitedUserValidator
|
||||
|
||||
before_destroy :unfriend_everyone, :remove_person
|
||||
|
||||
|
|
@ -254,6 +267,27 @@ class User
|
|||
end
|
||||
|
||||
###Helpers############
|
||||
|
||||
def accept_invitation!( opts = {} )
|
||||
if self.invited?
|
||||
self.username = opts[:username]
|
||||
self.password = opts[:password]
|
||||
self.password_confirmation = opts[:password_confirmation]
|
||||
opts[:person][:diaspora_handle] = "#{opts[:username]}@#{APP_CONFIG[:terse_pod_url]}"
|
||||
opts[:person][:url] = APP_CONFIG[:pod_url]
|
||||
|
||||
opts[:serialized_private_key] = User.generate_key
|
||||
self.serialized_private_key = opts[:serialized_private_key]
|
||||
opts[:person][:serialized_public_key] = opts[:serialized_private_key].public_key
|
||||
|
||||
person_hash = opts.delete(:person)
|
||||
self.person = Person.create(person_hash)
|
||||
self.person.save
|
||||
self.save
|
||||
self
|
||||
end
|
||||
end
|
||||
|
||||
def self.instantiate!( opts = {} )
|
||||
opts[:person][:diaspora_handle] = "#{opts[:username]}@#{APP_CONFIG[:terse_pod_url]}"
|
||||
opts[:person][:url] = APP_CONFIG[:pod_url]
|
||||
|
|
|
|||
|
|
@ -21,13 +21,20 @@
|
|||
= request.person.real_name
|
||||
%h3=t('.ignore_remove')
|
||||
|
||||
%li.remove
|
||||
.remove
|
||||
%ul.dropzone
|
||||
%li.grey Drag to ignore/remove
|
||||
|
||||
%h3= link_to "Invite a friend!", "#invite_user_pane", :id => "invite_user_button", :class => "invite_user_button", :title => "Invite a friend"
|
||||
|
||||
.yo{ :style => "display:none;"}
|
||||
#invite_user_pane
|
||||
= render "invitations/new"
|
||||
|
||||
- content_for :publish do
|
||||
= link_to(t('.add_a_new_aspect'), "#add_aspect_pane", :id => "add_aspect_button", :class => "new_aspect button", :title => t('.add_a_new_aspect'))
|
||||
|
||||
|
||||
%ul#aspect_list
|
||||
- for aspect in @aspects
|
||||
%li.aspect
|
||||
|
|
|
|||
8
app/views/invitations/_new.haml
Normal file
8
app/views/invitations/_new.haml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
%h2 Send invitation
|
||||
= form_for User.new, :url => invitation_path(User) do |f|
|
||||
/= devise_error_messages!
|
||||
%p
|
||||
= f.label :email
|
||||
= f.text_field :email
|
||||
%p= f.submit "Send an invitation"
|
||||
/= link_to "Home", after_sign_in_path_for(resource_name)
|
||||
25
app/views/invitations/edit.html.haml
Normal file
25
app/views/invitations/edit.html.haml
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
= image_tag "http://needcoffee.cachefly.net/needcoffee/uploads/2009/02/predator-arnold-schwarzenegger.jpg"
|
||||
|
||||
= form_for(resource, :as => resource_name, :url => invitation_path(resource_name), :html => {:method => :put }) do |f|
|
||||
%p
|
||||
= f.label :username
|
||||
= f.text_field :username
|
||||
%p
|
||||
= f.label :password
|
||||
= f.password_field :password
|
||||
%p
|
||||
= f.label :password_confirmation
|
||||
= f.password_field :password_confirmation
|
||||
|
||||
= f.fields_for :person do |p|
|
||||
= p.fields_for :profile do |pr|
|
||||
%p
|
||||
= pr.label :first_name
|
||||
= pr.text_field :first_name
|
||||
%p
|
||||
= pr.label :last_name
|
||||
= pr.text_field :last_name
|
||||
|
||||
= f.hidden_field :invitation_token
|
||||
= f.submit 'sign_up'
|
||||
= render :partial => "devise/shared/links"
|
||||
8
app/views/invitations/new.html.haml
Normal file
8
app/views/invitations/new.html.haml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
%h2 Send invitation
|
||||
= form_for User.new, :url => invitation_path(User) do |f|
|
||||
= devise_error_messages!
|
||||
%p
|
||||
= f.label :email
|
||||
= f.text_field :email
|
||||
%p= f.submit "Send an invitation"
|
||||
/= link_to "Home", after_sign_in_path_for(resource_name)
|
||||
|
|
@ -22,6 +22,5 @@
|
|||
%p
|
||||
= pr.label :last_name
|
||||
= pr.text_field :last_name
|
||||
|
||||
= f.submit t('.sign_up')
|
||||
= render :partial => "devise/shared/links"
|
||||
|
|
|
|||
|
|
@ -19,5 +19,11 @@
|
|||
= render "requests/new_request", :aspect => @aspect
|
||||
-else
|
||||
.clear
|
||||
%br
|
||||
= link_to t('.add_friends'), aspects_manage_path
|
||||
|
||||
%br
|
||||
= link_to "Invite a friend!", "#invite_user_pane", :id => "invite_user_button", :class => "invite_user_button", :title => "Invite a friend"
|
||||
.yo{ :style => "display:none;"}
|
||||
#invite_user_pane
|
||||
= render "invitations/new"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,10 @@
|
|||
= f.hidden_field( :public, :value => false )
|
||||
|
||||
.buttons
|
||||
= f.submit t('.share')
|
||||
- if @aspect == :all
|
||||
= f.submit t('.share'), :title => "Share with all aspects"
|
||||
- else
|
||||
= f.submit t('.share'), :title => "Share with #{@aspect.name}"
|
||||
- if defined? broadcast
|
||||
= f.submit "Broadcast", :class => "broadcast", :name => "broadcast"
|
||||
= f.submit "Broadcast", :class => "broadcast", :name => "broadcast", :title => "Publish to Diaspora and Facebook"
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
|
||||
%h2 Profile
|
||||
= link_to new_user_invitation_path(current_user)
|
||||
|
||||
= form_for @user do |f|
|
||||
= f.error_messages
|
||||
|
|
|
|||
9
app/views/users/mailer/invitation.html.haml
Normal file
9
app/views/users/mailer/invitation.html.haml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
%p
|
||||
Hello #{@resource.email}!
|
||||
%p
|
||||
Someone has invited you to #{root_url}, you can accept it through the link below.
|
||||
%p= link_to 'Accept invitation', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token)
|
||||
%p
|
||||
If you don't want to accept the invitation, please ignore this email.
|
||||
%br/
|
||||
Your account won't be created until you access the link above and set your password.
|
||||
|
|
@ -44,6 +44,11 @@ Devise.setup do |config|
|
|||
# Setup a pepper to generate the encrypted password.
|
||||
config.pepper = "065eb8798b181ff0ea2c5c16aee0ff8b70e04e2ee6bd6e08b49da46924223e39127d5335e466207d42bf2a045c12be5f90e92012a4f05f7fc6d9f3c875f4c95b"
|
||||
|
||||
# ==> Configuration for :invitable
|
||||
# Time interval where the invitation token is valid (default: 0).
|
||||
# If invite_for is 0 or nil, the invitation will never expire.
|
||||
# config.invite_for = 2.weeks
|
||||
|
||||
# ==> Configuration for :confirmable
|
||||
# The time you want to give your user to confirm his account. During this time
|
||||
# he will be able to access your application without confirming. Default is nil.
|
||||
|
|
|
|||
|
|
@ -2,4 +2,22 @@
|
|||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
GIT_INFO = `git show --name-only`
|
||||
s = `git show --name-only 2>/dev/null || :`
|
||||
if (s.nil? or s.empty?)
|
||||
path = File.expand_path("config/gitversion")
|
||||
begin
|
||||
if (File.exists?( path))
|
||||
s = ''
|
||||
f = File.open( path)
|
||||
f.each_line do |line|
|
||||
s += line
|
||||
end
|
||||
f.close
|
||||
end
|
||||
rescue
|
||||
s = ""
|
||||
end
|
||||
end
|
||||
GIT_INFO = s
|
||||
# What's the scope of this s? Leave to GC just in case...
|
||||
s = nil
|
||||
|
|
|
|||
46
config/locales/devise.en.yml
Normal file
46
config/locales/devise.en.yml
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
en:
|
||||
errors:
|
||||
messages:
|
||||
not_found: "not found"
|
||||
already_confirmed: "was already confirmed"
|
||||
not_locked: "was not locked"
|
||||
|
||||
devise:
|
||||
failure:
|
||||
unauthenticated: 'You need to sign in or sign up before continuing.'
|
||||
unconfirmed: 'You have to confirm your account before continuing.'
|
||||
locked: 'Your account is locked.'
|
||||
invalid: 'Invalid email or password.'
|
||||
invalid_token: 'Invalid authentication token.'
|
||||
timeout: 'Your session expired, please sign in again to continue.'
|
||||
inactive: 'Your account was not activated yet.'
|
||||
sessions:
|
||||
signed_in: 'Signed in successfully.'
|
||||
signed_out: 'Signed out successfully.'
|
||||
passwords:
|
||||
send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.'
|
||||
updated: 'Your password was changed successfully. You are now signed in.'
|
||||
confirmations:
|
||||
send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.'
|
||||
confirmed: 'Your account was successfully confirmed. You are now signed in.'
|
||||
registrations:
|
||||
signed_up: 'You have signed up successfully. If enabled, a confirmation was sent to your e-mail.'
|
||||
updated: 'You updated your account successfully.'
|
||||
destroyed: 'Bye! Your account was successfully cancelled. We hope to see you again soon.'
|
||||
unlocks:
|
||||
send_instructions: 'You will receive an email with instructions about how to unlock your account in a few minutes.'
|
||||
unlocked: 'Your account was successfully unlocked. You are now signed in.'
|
||||
invitations:
|
||||
send_instructions: 'Your invitation has been sent.'
|
||||
invitation_token_invalid: 'The invitation token provided is not valid!'
|
||||
updated: 'Your password was set successfully. You are now signed in.'
|
||||
mailer:
|
||||
confirmation_instructions:
|
||||
subject: 'Confirmation instructions'
|
||||
reset_password_instructions:
|
||||
subject: 'Reset password instructions'
|
||||
unlock_instructions:
|
||||
subject: 'Unlock Instructions'
|
||||
invitation:
|
||||
subject: 'A friend wants you to join Diaspora!'
|
||||
|
||||
|
|
@ -11,10 +11,11 @@ Diaspora::Application.routes.draw do
|
|||
resources :albums
|
||||
|
||||
devise_for :users, :controllers => {:registrations => "registrations",
|
||||
:password => "devise/passwords"}
|
||||
:password => "devise/passwords",
|
||||
:invitations => "invitations"}
|
||||
# added public route to user
|
||||
match 'public/:username', :to => 'users#public'
|
||||
match 'users/export', :to => 'users#export'
|
||||
match 'public/:username', :to => 'users#public'
|
||||
match 'users/export', :to => 'users#export'
|
||||
match 'users/export_photos', :to => 'users#export_photos'
|
||||
resources :users, :except => [:create, :new, :show]
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ module Diaspora
|
|||
module Querying
|
||||
|
||||
def find_visible_post_by_id( id )
|
||||
self.raw_visible_posts.find id
|
||||
self.raw_visible_posts.find id.to_id
|
||||
end
|
||||
|
||||
def visible_posts( opts = {} )
|
||||
|
|
@ -44,11 +44,9 @@ module Diaspora
|
|||
end
|
||||
|
||||
def people_in_aspects aspects
|
||||
people = []
|
||||
aspects.each{ |aspect|
|
||||
people = people | aspect.people
|
||||
}
|
||||
people
|
||||
aspects.inject([]) do |found_people,aspect|
|
||||
found_people | aspect.people
|
||||
end
|
||||
end
|
||||
|
||||
def all_aspect_ids
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@
|
|||
|
||||
class String
|
||||
def to_id
|
||||
BSON::ObjectId self
|
||||
begin
|
||||
BSON::ObjectId self
|
||||
rescue
|
||||
nil
|
||||
end
|
||||
end
|
||||
end
|
||||
class BSON::ObjectId
|
||||
|
|
|
|||
1
pkg/fedora/.gitignore
vendored
1
pkg/fedora/.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
|||
TODO
|
||||
dist
|
||||
.stgit*
|
||||
|
|
|
|||
|
|
@ -1,24 +1,25 @@
|
|||
## Diaspora RPM tools
|
||||
|
||||
Creates RPM packages from diaspora git repository.
|
||||
Creates diaspora source tarballs and RPM packages
|
||||
|
||||
An alternative to the capistrano system, providing classic, binary RPM
|
||||
packages for deployment on Fedora 13.
|
||||
An alternative to the capistrano system, providing classic, binary RPM
|
||||
packages for deployment on Fedora 13 and OS-independent source tarballs
|
||||
aimed for packaging purposes.
|
||||
|
||||
|
||||
#### Synopsis:
|
||||
#### Fedora RPM synopsis
|
||||
|
||||
*Prerequisites*: ruby-1.8, rubygem and other packages as described in
|
||||
http://github.com/diaspora/diaspora/wiki/Rpm-installation-on-fedora
|
||||
or http://github.com/diaspora/diaspora/wiki/Installing-on-CentOS-Fedora
|
||||
|
||||
Create source tarballs like dist/diaspora-0.0-1010041233_fade4231.tar.gz
|
||||
Create source tarballs like dist/diaspora-0.0-1010041233_fade4231.tar.gz
|
||||
and dist/diaspora-bundle-0.0-1010041233_fade4231.tar.gz:
|
||||
% ./make-dist.sh source
|
||||
% ./make-dist.sh bundle
|
||||
|
||||
Setup links to tarballs from RPM source directory:
|
||||
% ./make-dist.sh links
|
||||
Setup links to tarballs from RPM source directory and create spec files:
|
||||
% ./make-dist.sh prepare
|
||||
|
||||
Build rpms:
|
||||
rpmbuild -ba dist/diaspora.spec
|
||||
|
|
@ -28,7 +29,7 @@ Install (as root):
|
|||
rpm -U ~/rmpbuild/rpms/i686/diaspora-bundle-0.0-1.1010042345_4343fade43.fc13.i686
|
||||
rpm -U ~/rmpbuild/rpms/noarch/diaspora-0.0-1.1010042345_4343fade43.fc13.noarch
|
||||
|
||||
Initiate (as root).
|
||||
Initiate (as root).
|
||||
/usr/share/diaspora/diaspora-setup
|
||||
|
||||
Start development server:
|
||||
|
|
@ -37,48 +38,75 @@ Start development server:
|
|||
cd /usr/share/diaspora/master
|
||||
./script/server
|
||||
|
||||
See http://github.com/diaspora/diaspora/wiki/Using-apache for
|
||||
See http://github.com/diaspora/diaspora/wiki/Using-apache for
|
||||
apache/passenger setup. After configuration, start with:
|
||||
/sbin/service diaspora-ws start
|
||||
/sbin/service diaspora-wsd start
|
||||
/sbin/service httpd restart
|
||||
|
||||
#### Generic source synopsis
|
||||
|
||||
Generate source tarball:
|
||||
% ./make-dist.sh source
|
||||
Using repo: http://github.com/diaspora/diaspora.git
|
||||
Commit id: 1010092232_b313272
|
||||
Source: dist/diaspora-0.0-1010092232_b313272.tar.gz
|
||||
Required bundle: 1010081636_d1a4ee0
|
||||
%
|
||||
|
||||
The source tarball could be used as-is, by unpacking add making a
|
||||
*bundle install*. An alternative is to generate a canned bundle like:
|
||||
% ./make-dist.sh bundle
|
||||
[ lot's of output...]
|
||||
Bundle: dist/diaspora-bundle-0.0-1010081636_d1a4ee0.tar.gz
|
||||
%
|
||||
|
||||
This file can be installed anywhere. To use it, add a symlink from vendor/bundle
|
||||
to the bundle's master directory. Reasonable defaults are to install
|
||||
diaspora in /var/diaspora and bundle in /usr/lib/diaspora-bundle. With these,
|
||||
the link is
|
||||
% rm -rf /var/diaspora/master/vendor/bundle
|
||||
% ln -sf /usr/lib/diaspora-bundle/master/bundle \
|
||||
> /var/diaspora/master/vendor
|
||||
%
|
||||
|
||||
The directories tmp, log, and public/uploads needs to be writable. If using
|
||||
apache passenger, read the docs on uid used and file ownership.
|
||||
|
||||
Note that the bundle version required is printed each time a new source
|
||||
is generated.
|
||||
|
||||
#### Notes
|
||||
|
||||
The source tarball is as retrieved from diaspora with following differences:
|
||||
|
||||
- The .git directories are removed (freeing more than 50% of the size).
|
||||
- A new file /master/config/gitversion is created.
|
||||
- The file public/source.tar is generated.
|
||||
- The file .bundle/config is patched. Remove before doing
|
||||
*bundle install*
|
||||
|
||||
Routines uses last available version from master branch at github. The
|
||||
version contains a time stamp and an abbreviated git commit id. If listed
|
||||
in filename order, like ls does, latest version will be the last one.
|
||||
version contains a time stamp and an abbreviated git commit id.
|
||||
Using -c, a specific commit can be used for source build.
|
||||
|
||||
*make-dist links* creates links also for all files listed in SOURCES.
|
||||
*make-dist prepare* creates links also for all files listed in SOURCES.
|
||||
Typically, this is secondary sources. *make-dist.sh sources*
|
||||
applies all patches named *.patch in this directory after checking out
|
||||
source from git.
|
||||
|
||||
The spec-files in dist/ are patched by ./make-dist.sh source to reference
|
||||
The spec-files in dist/ are patched by *./make-dist.sh prepare* to reference
|
||||
correct versions of diaspora and diaspora-bundle. The diaspora-bundle
|
||||
is only updated if Gemfile is updated, upgrading diaspora doesn't
|
||||
is only updated if Gemfile is updated, upgrading diaspora doesn't
|
||||
always require a new diaspora-bundle. Editing spec files should be done
|
||||
in this directory, changes in dist/ are lost when doing ./make-dist source.
|
||||
in this directory, changes in dist/ are lost when doing *./make-dist prepare*.
|
||||
|
||||
The topmost comment's version is patched to reflect the complete version
|
||||
of current specfile by 'make-dist source'. WRite the comment in this
|
||||
of current specfile by *make-dist source*. Write the comment in this
|
||||
directory, copy-paste previous version nr. It will be updated.
|
||||
|
||||
rpmlint shows many errors, most of which related to that the server
|
||||
won't start if the .git directories are not included. Needs investigation.
|
||||
|
||||
This has been confirmed to start up and provide basic functionality both using
|
||||
the thin webserver and apache passenger, and on 32/64 bit systems.
|
||||
|
||||
#### Bugs
|
||||
|
||||
As of now, diaspora fails if it not owns all file under /usr/share/diaspora.
|
||||
I guess this means diaspora writes some stuff somewhere. In the long run,
|
||||
this should be located and symlinked to /var,leaving the rest of the files
|
||||
owned by root. FTM, all files in /usr/share/diaspore are owned by
|
||||
diaspora
|
||||
|
||||
This has been confirmed to start up and provide basic functionality both using
|
||||
the thin webserver and apache passenger, on 32/64 bit systems and in the
|
||||
mock build environment.
|
||||
|
||||
#### Implementation
|
||||
|
||||
|
|
@ -86,22 +114,23 @@ diaspora
|
|||
dist/diaspora directory. This content is, after some patches, the diaspora package.
|
||||
|
||||
'make-dir.sh bundle' makes a 'bundle install --deployment' in the diaspora dir.
|
||||
The resulting bundle is stored in vendor/bundle. This is, after some more
|
||||
The resulting bundle is stored in vendor/bundle. This is, after some more
|
||||
patches, the content of diaspora-bundle.
|
||||
|
||||
Here is also support for running the diaspora websocket service as a system
|
||||
Here is also support for running the diaspora websocket service as a system
|
||||
service through /sbin/service and some install scripts.
|
||||
|
||||
Diaspora files are stored in /usr/share/diaspora, and owned by diaspora. The
|
||||
|
||||
Diaspora files are stored in /usr/share/diaspora, and owned by root. The
|
||||
bundle, containing some C extensions, is architecture-dependent and lives
|
||||
in /usr/lib[64]/diaspora. Log files are in /var/log/diaspora. Symlinks in
|
||||
/usr/share diaspora makes log and bundle available as expected by diaspora app.
|
||||
This is more or less as mandated by LSB and Fedora packaging rules.
|
||||
|
||||
find /usr/share/diaspora/ -type l -exec ls -l {} \; | awk '{print $9, $10, $11}'
|
||||
/usr/share/diaspora/master/public/uploads -> /var/lib/diaspora/uploads
|
||||
/usr/share/diaspora/master/log -> /var/log/diaspora
|
||||
/usr/share/diaspora/master/vendor/bundle -> /usr/lib/diaspora-bundle/master/vendor/bundle
|
||||
/usr/share diaspora makes log, bundle and tmp dir available as expected by
|
||||
diaspora app. This is more or less as mandated by LSB and Fedora packaging rules.
|
||||
|
||||
find . -type l -exec ls -l {} \; | awk '{print $9, $10, $11}'
|
||||
./public/uploads -> /var/lib/diaspora/uploads
|
||||
./log -> /var/log/diaspora
|
||||
./tmp -> /var/lib/diaspora/tmp
|
||||
./vendor/bundle -> /usr/lib/diaspora-bundle/master/vendor/bundle
|
||||
|
||||
|
||||
#### Discussion
|
||||
|
|
@ -119,11 +148,11 @@ original README.md:
|
|||
not 777.
|
||||
|
||||
- Splitting in two packages makes sense IMHO. The bundle is not changed that often,
|
||||
but is quite bug: ~18M without test packages (the default) or ~55M with test
|
||||
packages. The application is just ~7.5M, and is fast to deploy even with these
|
||||
but is quite big: ~30M without test packages (the default) or ~55M with test
|
||||
packages. The application is just ~3M, and is fast to deploy even with these
|
||||
tools (yes, I know, capistrano is much faster...)
|
||||
|
||||
- Many, roughly 50% of the packages in the bundle are already packaged for Fedora
|
||||
i. e., they could be removed from the bundle and added as dependencies instead.
|
||||
This is likely to make things more stable in the long run.
|
||||
This is likely to make things more stable in the long run.
|
||||
diaspora.spec has a list.
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
# These files will be linked to %_sourcedir by 'make-dist links'
|
||||
diaspora-setup
|
||||
diaspora-ws
|
||||
diaspora-wsd
|
||||
diaspora.logconf
|
||||
make_rel_symlink.py
|
||||
|
|
|
|||
|
|
@ -4,22 +4,22 @@
|
|||
%define __jar_repack %{nil}
|
||||
|
||||
# Turn off the brp-python-bytecompile script, *pyc/pyo causes problems
|
||||
%global __os_install_post %(echo '%{__os_install_post}' |
|
||||
%global __os_install_post %(echo '%{__os_install_post}' |
|
||||
sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
|
||||
|
||||
Summary: Rubygem bundle for diaspora
|
||||
Name: diaspora-bundle
|
||||
Version: 0.0
|
||||
Release: 1.%{git_release}%{?dist}
|
||||
License: AGPLv3
|
||||
License: AGPLv3
|
||||
Group: Applications/Communications
|
||||
URL: http://www.joindiaspora.com/
|
||||
Vendor: joindiaspora.com
|
||||
Source: %{name}-%{version}-%{git_release}.tar.gz
|
||||
Prefix: %{_prefix}
|
||||
BuildRoot: %{_rmpdir}/not-used-in-fedora/
|
||||
|
||||
Requires(pre): shadow-utils
|
||||
BuildRequires: git
|
||||
Requires: ruby(abi) = 1.8
|
||||
|
||||
%description
|
||||
|
|
@ -37,6 +37,8 @@ Source file usede to compile native libraries in diaspora-bundle.
|
|||
%prep
|
||||
%setup -q -n %{name}-%{version}-%{git_release}
|
||||
|
||||
find . -name .git* -print | xargs rm -rf
|
||||
|
||||
pushd bundle/ruby/1.8/
|
||||
find . -name \*.css -exec chmod 644 {} \;
|
||||
find . -name \*.js -exec chmod 644 {} \;
|
||||
|
|
@ -64,12 +66,12 @@ pushd bundle/ruby/1.8/
|
|||
sed -i -e '/^#!/d' $f
|
||||
chmod 0644 $f
|
||||
done > /dev/null 2>&1
|
||||
find . -perm /u+x -type f -print0 |
|
||||
find . -perm /u+x -type f -print0 |
|
||||
xargs --null sed -i 's|^#!/usr/local/bin/ruby|#!/usr/bin/ruby|'
|
||||
|
||||
chmod 755 gems/thin-1.2.7/example/async_chat.ru
|
||||
chmod 755 gems/thin-1.2.7/example/async_tailer.ru
|
||||
chmod 644 gems/i18n-0.4.1/MIT-LICENSE
|
||||
chmod 644 gems/i18n-0.4.1/MIT-LICENSE
|
||||
chmod 755 gems/abstract-1.0.0/abstract.gemspec
|
||||
chmod 644 gems/mini_magick-2.1/MIT-LICENSE
|
||||
chmod 755 gems/thin-1.2.7/lib/thin/controllers/service.sh.erb
|
||||
|
|
@ -82,7 +84,7 @@ pushd bundle/ruby/1.8/
|
|||
# In repo (2.2.4)
|
||||
test -d gems/gherkin-*/ext && {
|
||||
pushd gems/gherkin-*/ext
|
||||
# Recompile all shared libraries using -O2 optimalization flagcd
|
||||
# Recompile all shared libraries using -O2 flag
|
||||
for lexer_dir in */ ; do
|
||||
pushd $lexer_dir
|
||||
sed -i 's/ -O0 / -O2 /' extconf.rb
|
||||
|
|
@ -118,7 +120,7 @@ pushd bundle/ruby/1.8/
|
|||
ln -s ../cbson/cbson.so .
|
||||
popd
|
||||
|
||||
# In repo (0.10.4)
|
||||
# In repo (0.10.4)
|
||||
pushd gems/ruby-debug-base-0.10.3/lib
|
||||
rm ruby_debug.so
|
||||
ln -s ../ext/ruby_debug.so .
|
||||
|
|
@ -144,6 +146,7 @@ pushd bundle/ruby/1.8/
|
|||
ln -sf ../../ext/nokogiri/nokogiri.so .
|
||||
popd
|
||||
|
||||
# in repo (rawhide)
|
||||
pushd gems/json-1.4.6/ext/json/ext/json/ext
|
||||
rm generator.so
|
||||
ln -s ../../generator/generator.so
|
||||
|
|
@ -199,18 +202,18 @@ popd
|
|||
}
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_libdir}/diaspora-bundle/master/vendor
|
||||
|
||||
cp -ar bundle $RPM_BUILD_ROOT/%{_libdir}/diaspora-bundle/master/vendor
|
||||
|
||||
find %{buildroot}/%{_libdir}/diaspora-bundle \
|
||||
-type d -fprintf dirs '%%%dir "%%p"\n'
|
||||
find -L %{buildroot}/%{_libdir}/diaspora-bundle -regextype posix-awk \
|
||||
-type f -not -regex '.*[.]c$|.*[.]h$|.*[.]cpp$|.*Makefile$' \
|
||||
-type f -not -regex '.*[.]c$|.*[.]h$|.*[.]cpp$|.*Makefile$' \
|
||||
-fprintf files '"%%p"\n'
|
||||
find %{buildroot}/%{_libdir}/diaspora-bundle -regextype posix-awk \
|
||||
-type f -regex '.*[.]c$|.*[.]h$|.*[.]cpp$|.*Makefile$' \
|
||||
-fprintf dev-files '"%%p"\n'
|
||||
find %{buildroot}/%{_libdir}/diaspora-bundle -regextype posix-awk \
|
||||
-type f -regex '.*[.]c$|.*[.]h$|.*[.]cpp$|.*Makefile$' \
|
||||
-fprintf dev-files '"%%p"\n'
|
||||
sed -i -e 's|%{buildroot}||' -e 's|//|/|' files dev-files dirs
|
||||
cat files >> dirs && cp dirs files
|
||||
cat files >> dirs && cp dirs files
|
||||
|
||||
%clean
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -fr $RPM_BUILD_ROOT
|
||||
|
|
@ -224,5 +227,5 @@ cat files >> dirs && cp dirs files
|
|||
%doc COPYRIGHT AUTHORS GNU-AGPL-3.0
|
||||
|
||||
%changelog
|
||||
* Sat Oct 02 2010 Alec Leamas <leamas.alec@gmail.com> 1.1009271539_08b9aa8
|
||||
* Sat Oct 02 2010 Alec Leamas <leamas.alec@gmail.com> 0.0-1.1009271539_08b9aa8
|
||||
- Initial attempt to create a spec file
|
||||
|
|
|
|||
|
|
@ -1,14 +1,13 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Try to revert to pristine state, deleting all users and
|
||||
# configuration
|
||||
# Try to revert to pristine state, deleting all users and
|
||||
# configuration
|
||||
#
|
||||
|
||||
set -x
|
||||
service mongod stop
|
||||
service diaspora-ws stop
|
||||
service diaspora-wsd stop
|
||||
rm -rf /var/lib/mongodb/*
|
||||
cp /usr/share/diaspora/master/config/app_config.yml.example \
|
||||
/usr/share/diaspora/master/config/app_config.yml
|
||||
service mongod start
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,23 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Do what's needed to initiate diaspora.
|
||||
# Do what's needed to initiate diaspora.
|
||||
#
|
||||
# See http://github.com/diaspora/diaspora/issues/issue/395
|
||||
#
|
||||
# Note: This is really sort of prototyping. This should be done in ruby,
|
||||
# on a web page.
|
||||
|
||||
test $UID = "0" || {
|
||||
echo "You need to be root to do this, giving up"
|
||||
exit 2
|
||||
}
|
||||
|
||||
cd /usr/share/diaspora/master
|
||||
services=$( netstat -nl | grep '[^:]:3000[ \t]')
|
||||
test -n "$services" && {
|
||||
echo "Warning: something is already using port 3000"
|
||||
echo " $services"
|
||||
}
|
||||
|
||||
/sbin/service mongod start || :
|
||||
|
||||
cd /usr/share/diaspora/master
|
||||
|
||||
test -e config/app_config.yml ||
|
||||
cp config/app_config.yml.example config/app_config.yml
|
||||
|
||||
|
|
@ -49,4 +51,3 @@ while : ; do
|
|||
break
|
||||
}
|
||||
done
|
||||
|
||||
|
|
|
|||
|
|
@ -1,30 +1,30 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# /etc/rc.d/init.d/diaspora-ws
|
||||
# /etc/rc.d/init.d/diaspora-wsd
|
||||
#
|
||||
# Starts the diaspora websocket server
|
||||
# Starts the diaspora websocket daemon
|
||||
#
|
||||
# chkconfig: - 80 80
|
||||
# description: Diaspora websocket server
|
||||
# description: Diaspora websocket daemon
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: diaspora-ws
|
||||
# Provides: diaspora-wsd
|
||||
# Required-Start: $local_fs $network
|
||||
# Required-Stop: $local_fs $network
|
||||
# Should-Start: $remote_fs
|
||||
# Should-Stop: $remote_fs
|
||||
# Default-Start:
|
||||
# Default-Start:
|
||||
# Default-Stop: 0 1 2 3 4 5 6
|
||||
# Short-Description: start and stop Diaspora websocket server
|
||||
# Description: The websocket server provides websocket services for
|
||||
# diaspora.
|
||||
# diaspora.
|
||||
### END INIT INFO
|
||||
|
||||
# Source function library.
|
||||
. /etc/init.d/functions
|
||||
|
||||
if [ -f /etc/sysconfig/diaspora-ws -a $UID -eq 0 ]; then
|
||||
. /etc/sysconfig/diaspora-ws
|
||||
if [ -f /etc/sysconfig/diaspora-wsd -a $UID -eq 0 ]; then
|
||||
. /etc/sysconfig/diaspora-wsd
|
||||
fi
|
||||
|
||||
# Note: this line is patched by installation scripts.
|
||||
|
|
@ -33,9 +33,9 @@ cd /usr/share/diaspora
|
|||
RETVAL=0
|
||||
prog="Diaspora websocket server"
|
||||
exec="script/websocket_server.rb"
|
||||
pidfile="/var/run/diaspora-ws"
|
||||
lockfile="/var/lock/subsys/diaspora-ws"
|
||||
logfile=/var/log/diaspora-ws.log
|
||||
pidfile="/var/run/diaspora-wsd"
|
||||
lockfile="/var/lock/subsys/diaspora-wsd"
|
||||
logfile=/var/log/diaspora-wsd.log
|
||||
|
||||
[ -n "$OPTIONS" ] && OPTIONS=" $OPTIONS"
|
||||
ruby_cmd="ruby -C $PWD $exec$OPTIONS"
|
||||
|
|
@ -8,6 +8,6 @@
|
|||
notifempty
|
||||
missingok
|
||||
postrotate
|
||||
( /sbin/service diaspora-ws condrestart ) >/dev/null 2>&1
|
||||
( /sbin/service diaspora-wsd condrestart ) >/dev/null 2>&1
|
||||
endscript
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +1,21 @@
|
|||
%global debug_package %{nil}
|
||||
%global debug_package %{nil}
|
||||
%define git_release HEAD
|
||||
|
||||
Summary: A social network server
|
||||
Name: diaspora
|
||||
Version: 0.0.1
|
||||
Release: 1.%{git_release}%{?dist}
|
||||
License: AGPLv3
|
||||
License: AGPLv3
|
||||
Group: Applications/Communications
|
||||
URL: http://www.joindiaspora.com/
|
||||
Vendor: joindiaspora.com
|
||||
Source: %{name}-%{version}-%{git_release}.tar.gz
|
||||
Source1: diaspora-ws
|
||||
Source1: diaspora-wsd
|
||||
Source2: diaspora-setup
|
||||
Source3: diaspora.logconf
|
||||
Source4: make_rel_symlink.py
|
||||
BuildArch: noarch
|
||||
BuildRoot: %{_rmpdir}/not-used-in-fedora/
|
||||
|
||||
Requires: mongodb-server
|
||||
Requires: ruby(abi) = 1.8
|
||||
|
|
@ -26,36 +29,49 @@ open source social network server.
|
|||
%prep
|
||||
%setup -q -n %{name}-%{version}-%{git_release}
|
||||
|
||||
find . -perm /u+x -type f -exec \
|
||||
find . -perm /u+x -type f -exec \
|
||||
sed -i 's|^#!/usr/local/bin/ruby|#!/usr/bin/ruby|' {} \; > /dev/null
|
||||
|
||||
%build
|
||||
rm -rf master/vendor/bundle
|
||||
mkdir master/tmp || :
|
||||
pushd master
|
||||
tar cf public/source.tar --exclude='source.tar' -X .gitignore *
|
||||
popd
|
||||
|
||||
%install
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -fr $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/diaspora
|
||||
cp master/README.md .
|
||||
mv master/GNU-AGPL-3.0 .
|
||||
rm -fr $RPM_BUILD_ROOT
|
||||
|
||||
sed -i \
|
||||
'/BUNDLE_PATH/s|:.*|: %{_libdir}/diaspora-bundle/master/vendor/bundle|' \
|
||||
master/.bundle/config
|
||||
|
||||
cp master/GNU-AGPL-3.0 master/COPYRIGHT master/README.md master/AUTHORS .
|
||||
cp master/pkg/fedora/README.md README-Fedora.md
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/init.d
|
||||
sed -i '/^cd /s|.*|cd %{_datadir}/diaspora/master|' diaspora-ws
|
||||
cp diaspora-ws $RPM_BUILD_ROOT/etc/init.d
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
|
||||
cp diaspora.logconf $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/diaspora
|
||||
cp %SOURCE1 $RPM_BUILD_ROOT/etc/init.d
|
||||
sed -i '/^cd /s|.*|cd %{_datadir}/diaspora/master|' \
|
||||
$RPM_BUILD_ROOT/etc/init.d/diaspora-wsd
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d
|
||||
cp %SOURCE3 $RPM_BUILD_ROOT/%{_sysconfdir}/logrotate.d/diaspora
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/diaspora
|
||||
cp -ar master $RPM_BUILD_ROOT/%{_datadir}/diaspora
|
||||
cp -ar master/.gitignore master/.bundle $RPM_BUILD_ROOT/%{_datadir}/diaspora/master
|
||||
cp diaspora-setup $RPM_BUILD_ROOT/%{_datadir}/diaspora
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads
|
||||
cp %SOURCE2 $RPM_BUILD_ROOT/%{_datadir}/diaspora
|
||||
|
||||
find $RPM_BUILD_ROOT/%{_datadir}/diaspora -type d -fprintf dirs '%%%dir "%%p"\n'
|
||||
find -L $RPM_BUILD_ROOT/%{_datadir}/diaspora -type f -fprintf files '"%%p"\n'
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads
|
||||
mkdir -p $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp
|
||||
|
||||
%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/log/diaspora \
|
||||
$RPM_BUILD_ROOT/%{_datadir}/diaspora/master/log
|
||||
%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/uploads \
|
||||
$RPM_BUILD_ROOT/%{_datadir}/diaspora/master/public/uploads
|
||||
%{SOURCE4} $RPM_BUILD_ROOT/%{_localstatedir}/lib/diaspora/tmp \
|
||||
$RPM_BUILD_ROOT/%{_datadir}/diaspora/master/tmp
|
||||
|
||||
find $RPM_BUILD_ROOT/%{_datadir}/diaspora -type d \
|
||||
-fprintf dirs '%%%dir "%%p"\n'
|
||||
find -L $RPM_BUILD_ROOT/%{_datadir}/diaspora -type f \
|
||||
-fprintf files '"%%p"\n'
|
||||
cat files >> dirs && mv -f dirs files
|
||||
sed -i -e '\|.*/master/config.ru"$|d' \
|
||||
-e '\|.*/master/config/environment.rb"$|d' \
|
||||
|
|
@ -64,36 +80,33 @@ sed -i -e '\|.*/master/config.ru"$|d' \
|
|||
|
||||
|
||||
%post
|
||||
rm -f %{_datadir}/diaspora/master/vendor/bundle
|
||||
rm -f %{_datadir}/diaspora/master/log
|
||||
rm -f %{_datadir}/diaspora/master/public/uploads
|
||||
/sbin/chkconfig --add diaspora-wsd
|
||||
|
||||
ln -s %{_localstatedir}/log/diaspora \
|
||||
%{_datadir}/diaspora/master/log || :
|
||||
ln -s %{_libdir}/diaspora-bundle/master/vendor/bundle \
|
||||
%{_datadir}/diaspora/master/vendor || :
|
||||
ln -s %{_localstatedir}/lib/diaspora/uploads \
|
||||
%{_datadir}/diaspora/master/public/uploads || :
|
||||
/sbin/chkconfig --add diaspora-ws || :
|
||||
|
||||
%preun
|
||||
if [ $1 -eq 0 ] ; then
|
||||
service diaspora-ws stop >/dev/null 2>&1 || :
|
||||
/sbin/chkconfig --del diaspora-ws
|
||||
service diaspora-wsd stop &>/dev/null || :
|
||||
/sbin/chkconfig --del diaspora-wsd
|
||||
fi
|
||||
|
||||
|
||||
%clean
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -fr $RPM_BUILD_ROOT
|
||||
rm -fr $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%files -f files
|
||||
%defattr(-, diaspora, diaspora, 0755)
|
||||
%doc README.md GNU-AGPL-3.0
|
||||
%defattr(-, root, root, 0755)
|
||||
%doc AUTHORS README.md GNU-AGPL-3.0 COPYRIGHT README-Fedora.md
|
||||
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config.ru
|
||||
%attr(-, diaspora, diaspora) %{_datadir}/diaspora/master/config/environment.rb
|
||||
%attr(-, diaspora, diaspora) %{_localstatedir}/log/diaspora
|
||||
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/uploads
|
||||
%attr(-, diaspora, diaspora) %{_localstatedir}/lib/diaspora/tmp
|
||||
%{_datadir}/diaspora/master/tmp
|
||||
%{_datadir}/diaspora/master/public/uploads
|
||||
%{_datadir}/diaspora/master/log
|
||||
%config(noreplace) %{_sysconfdir}/logrotate.d/diaspora
|
||||
%{_sysconfdir}/init.d/diaspora-ws
|
||||
%{_sysconfdir}/init.d/diaspora-wsd
|
||||
|
||||
%changelog
|
||||
* Fri Sep 24 2010 Alec Leamas <leamas.alec@gmail.com> 0.0-1.1009280542_859ec2d
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#
|
||||
GIT_REPO='http://github.com/diaspora/diaspora.git'
|
||||
VERSION='0.0'
|
||||
RELEASE='1'
|
||||
|
||||
|
||||
function git_id
|
||||
#
|
||||
|
|
@ -14,63 +16,65 @@ function git_id
|
|||
# Usage: git_id [-n] [file or directory]
|
||||
#
|
||||
{
|
||||
nl="\n"
|
||||
file_or_dir="$PWD"
|
||||
local nl="\n"
|
||||
local file_or_dir="$PWD"
|
||||
test "$1" = '-n' && { nl=""; shift; }
|
||||
test -n "$1" && file_or_dir="$1"
|
||||
if [ -d $file_or_dir ]; then
|
||||
file=""
|
||||
dir=$file_or_dir
|
||||
local file=""
|
||||
local dir=$file_or_dir
|
||||
else
|
||||
file=$(basename $file_or_dir)
|
||||
dir=$(dirname $file_or_dir)
|
||||
fi
|
||||
local file=$(basename $file_or_dir)
|
||||
local dir=$(dirname $file_or_dir)
|
||||
fi
|
||||
|
||||
export LANG=C
|
||||
(
|
||||
cd $dir
|
||||
git log -1 --abbrev-commit --date=iso $file |
|
||||
awk -v nl="$nl" \
|
||||
' BEGIN { commit = "" }
|
||||
/^commit/ { if ( commit == "") commit = $2 }
|
||||
/^Date:/ { split( $2, d, "-")
|
||||
split( $3, t, ":")
|
||||
}
|
||||
END { printf( "%s%s%s%s%s_%s%s",
|
||||
substr( d[1],3), d[2], d[3],
|
||||
t[1], t[2],
|
||||
commit, nl)
|
||||
}'
|
||||
awk -v nl="$nl" \
|
||||
' BEGIN { commit = ""; d[1] = "" }
|
||||
/^commit/ { if ( commit == "") commit = $2 }
|
||||
/^Date:/ { if (d[1] == "") {
|
||||
split( $2, d, "-")
|
||||
split( $3, t, ":")
|
||||
}
|
||||
}
|
||||
END { printf( "%s%s%s%s%s_%s%s",
|
||||
substr( d[1],3), d[2], d[3],
|
||||
t[1], t[2],
|
||||
commit, nl)
|
||||
}'
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
function fix_alphatag()
|
||||
# Patch version on top comment first id line:
|
||||
# Usage: fix_alphatag <file> <version> <commit_id>
|
||||
# Usage: fix_alphatag <file> <version> <commit_id> <release>
|
||||
# Patches:\
|
||||
# * Fri Sep 24 2010 name surname <email@com> 1.20100925_faf23207
|
||||
{
|
||||
dist=$(rpm --eval %dist)
|
||||
awk -v dist="$dist" -v version="$2" -v release="$3" \
|
||||
' BEGIN { done = 0 }
|
||||
/^[*]/ { if (done)
|
||||
print
|
||||
else
|
||||
{
|
||||
gsub( "1[.].*", "")
|
||||
printf( "%s%s-1.%s%s\n",
|
||||
$0, version, release,dist)
|
||||
done = 1
|
||||
}
|
||||
next
|
||||
}
|
||||
{ print }' \
|
||||
< $1 > $1.tmp && mv -f $1.tmp $1
|
||||
local dist=$(rpm --eval %dist)
|
||||
awk -v dist="$dist" -v version="$2" -v commit="$3" -v release="$4" \
|
||||
' BEGIN { done = 0 }
|
||||
/^[*]/ { if (done)
|
||||
print
|
||||
else
|
||||
{
|
||||
s = sprintf( "-%s.%s%s\n", release, commit, dist)
|
||||
gsub( "-[0-9][.][^ ]*$", s)
|
||||
done = 1
|
||||
# add new gsub for version...
|
||||
print
|
||||
}
|
||||
next
|
||||
}
|
||||
{ print }' < $1 > $1.tmp && mv -f $1.tmp $1
|
||||
}
|
||||
|
||||
|
||||
function fix_bundle_deps
|
||||
# usage: fix_bundle_deps <specfile> <version> <release>
|
||||
# usage: fix_bundle_deps <specfile> <version> <commit>
|
||||
# Patches: Requires: diaspora-bundle = 0.0-20101021-aefsf323148
|
||||
{
|
||||
awk -v vers="$2-$3" \
|
||||
|
|
@ -79,101 +83,112 @@ function fix_bundle_deps
|
|||
else
|
||||
print
|
||||
next
|
||||
}
|
||||
{ print}' \
|
||||
< $1 > $1.tmp && mv -f $1.tmp $1
|
||||
}
|
||||
{ print}' \
|
||||
< $1 > $1.tmp && mv -f $1.tmp $1
|
||||
}
|
||||
|
||||
|
||||
function patch()
|
||||
# Patch spec-files with current version-release
|
||||
# Usage: patch VERSION RELEASE
|
||||
# Usage: patch <version> <commit> <release>
|
||||
{
|
||||
sed -e "/^%define/s|HEAD|$2|" \
|
||||
-e '/^Version:/s|.*|Version: '$1'|' \
|
||||
<diaspora.spec >dist/diaspora.spec
|
||||
fix_alphatag dist/diaspora.spec $1 $2
|
||||
bundle_id=$(git_id dist/diaspora/Gemfile)
|
||||
dist_tag=$(rpm --eval %dist)
|
||||
fix_bundle_deps dist/diaspora.spec $1 "1.${bundle_id}$dist_tag"
|
||||
<diaspora.spec >dist/diaspora.spec
|
||||
fix_alphatag dist/diaspora.spec $1 $2 $3
|
||||
local bundle_id=$(git_id dist/diaspora/Gemfile)
|
||||
local dist_tag=$(rpm --eval %dist)
|
||||
fix_bundle_deps dist/diaspora.spec $1 "$RELEASE.${bundle_id}$dist_tag"
|
||||
sed -e "/^%define/s|HEAD|$bundle_id|" \
|
||||
-e '/^Version:/s|.*|Version: '$1'|' \
|
||||
< diaspora-bundle.spec > dist/diaspora-bundle.spec
|
||||
|
||||
|
||||
cp dist/diaspora.spec dist/diaspora/diaspora.spec
|
||||
}
|
||||
|
||||
|
||||
function checkout()
|
||||
# Checkout last version of diaspora unless it's already there.
|
||||
# Usage: checkout [commit id, defaults to HEAD]
|
||||
# Returns: commit for current branch's HEAD.
|
||||
{
|
||||
mkdir dist >/dev/null 2>&1 || :
|
||||
{
|
||||
mkdir dist &>/dev/null || :
|
||||
(
|
||||
cd dist
|
||||
local last_repo=''
|
||||
cd dist
|
||||
|
||||
test -e '.last-repo' &&
|
||||
last_repo=$( cat '.last-repo')
|
||||
test "$last_repo" != $GIT_REPO &&
|
||||
rm -rf diaspora
|
||||
test -d diaspora || {
|
||||
git clone --quiet $GIT_REPO;
|
||||
(
|
||||
cd diaspora;
|
||||
git remote add upstream \
|
||||
git://github.com/diaspora/diaspora.git
|
||||
for p in ../../*.patch; do
|
||||
git apply --whitespace=fix $p > /dev/null
|
||||
done
|
||||
)
|
||||
git clone --quiet $GIT_REPO;
|
||||
(
|
||||
cd diaspora;
|
||||
git remote add upstream \
|
||||
git://github.com/diaspora/diaspora.git
|
||||
for p in ../../*.patch; do
|
||||
git apply --whitespace=fix $p > /dev/null
|
||||
done &> /dev/null || :
|
||||
)
|
||||
}
|
||||
cd diaspora;
|
||||
git fetch --quiet upstream
|
||||
echo -n "$GIT_REPO" > '.last-repo'
|
||||
|
||||
cd diaspora;
|
||||
git fetch --quiet upstream
|
||||
git merge --quiet upstream/master
|
||||
git checkout --quiet ${1:-'HEAD'}
|
||||
git_id -n
|
||||
git_id -n
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
function make_dist
|
||||
function make_src
|
||||
# Create a distribution tarball
|
||||
# Usage: make dist [ commit, defaults to HEAD]
|
||||
# Usage: make src <commit>
|
||||
{
|
||||
echo "Using repo: $GIT_REPO"
|
||||
|
||||
commit=$(checkout ${1:-'HEAD'})
|
||||
echo "Creating source tarball for $commit"
|
||||
patch $VERSION $commit
|
||||
echo "Commit id: $commit"
|
||||
|
||||
RELEASE_DIR="diaspora-$VERSION-$commit"
|
||||
rm -rf dist/${RELEASE_DIR}
|
||||
rm -rf dist/${RELEASE_DIR}
|
||||
mkdir dist/${RELEASE_DIR}
|
||||
cp diaspora-ws diaspora-setup diaspora.logconf dist/${RELEASE_DIR}
|
||||
cd dist
|
||||
mkdir ${RELEASE_DIR}/master
|
||||
cp -ar diaspora/* diaspora/.git* ${RELEASE_DIR}/master
|
||||
mv ${RELEASE_DIR}/master/diaspora.spec ${RELEASE_DIR}
|
||||
(
|
||||
cd ${RELEASE_DIR};
|
||||
find . -name .gitkeep -delete
|
||||
cd master
|
||||
cd ${RELEASE_DIR}/master
|
||||
git show --name-only > config/gitversion
|
||||
tar cf public/source.tar \
|
||||
--exclude='source.tar' -X .gitignore *
|
||||
find $PWD -name .git\* | xargs rm -rf
|
||||
rm -rf .bundle
|
||||
git apply ../../../add-bundle.patch
|
||||
/usr/bin/patch -p1 -s <../../../add-bundle.diff
|
||||
)
|
||||
tar czf ${RELEASE_DIR}.tar.gz ${RELEASE_DIR} && \
|
||||
rm -rf ${RELEASE_DIR}
|
||||
cd ..
|
||||
echo "Source: dist/${RELEASE_DIR}.tar.gz"
|
||||
echo "Required bundle: $(git_id dist/diaspora/Gemfile)"
|
||||
echo "Source specfile: dist/diaspora.spec"
|
||||
echo "Bundle specfile: dist/diaspora-bundle.spec"
|
||||
echo "Source: dist/${RELEASE_DIR}.tar.gz"
|
||||
echo "Required bundle: $(git_id dist/diaspora/Gemfile)"
|
||||
}
|
||||
|
||||
|
||||
function make_bundle()
|
||||
# Create the bundle tarball
|
||||
# Usage: make_bundle [ commit, defaults to HEAD]
|
||||
#
|
||||
{
|
||||
checkout ${1:-'HEAD'} >/dev/null
|
||||
bundle_id=$(git_id dist/diaspora/Gemfile)
|
||||
bundle_id=$( git_id dist/diaspora/Gemfile)
|
||||
bundle_name="diaspora-bundle-$VERSION-$bundle_id"
|
||||
test -e "dist/$bundle_name.tar.gz" || {
|
||||
echo "Creating bundle $bundle_name"
|
||||
cd dist
|
||||
rm -rf $bundle_name
|
||||
rm -rf $bundle_name
|
||||
mkdir -p $bundle_name/bundle
|
||||
pushd diaspora > /dev/null
|
||||
bundle install --deployment \
|
||||
|
|
@ -184,89 +199,126 @@ function make_bundle()
|
|||
"../$bundle_name"
|
||||
popd > /dev/null
|
||||
tar czf $bundle_name.tar.gz $bundle_name
|
||||
rm -rf $bundle_name
|
||||
cd ..
|
||||
}
|
||||
echo
|
||||
echo
|
||||
echo "Bundle: dist/$bundle_name.tar.gz"
|
||||
}
|
||||
|
||||
function make_links()
|
||||
# Usage: make_links [source commit]
|
||||
|
||||
function prepare_rpm()
|
||||
# Usage: prepare_rpm < commit>
|
||||
{
|
||||
dest=$(rpm --eval %_sourcedir)
|
||||
local dest=$(rpm --eval %_sourcedir)
|
||||
test -z "$dest" && {
|
||||
echo "Can't find RPM source directory, giving up."
|
||||
exit 2
|
||||
}
|
||||
echo "Linking sources to $dest"
|
||||
|
||||
src_commit="${1:-$( checkout)}"
|
||||
|
||||
src="dist/diaspora-$VERSION-$src_commit.tar.gz"
|
||||
local commit=$( checkout $1)
|
||||
echo "Release: $RELEASE.$commit"
|
||||
echo "Rpm source dir: $dest"
|
||||
|
||||
patch $VERSION $commit $RELEASE
|
||||
|
||||
local src="dist/diaspora-$VERSION-$commit.tar.gz"
|
||||
test -e $src ||
|
||||
cat <<- EOF
|
||||
Warning: $src does not exist
|
||||
(last version not built?)
|
||||
EOF
|
||||
ln -sf $PWD/$src $dest
|
||||
|
||||
bundle_commit=$(git_id dist/diaspora/Gemfile)
|
||||
bundle="dist/diaspora-bundle-$VERSION-$bundle_commit.tar.gz"
|
||||
local bundle_commit=$( git_id dist/diaspora/Gemfile)
|
||||
local bundle="dist/diaspora-bundle-$VERSION-$bundle_commit.tar.gz"
|
||||
test -e $bundle ||
|
||||
cat <<- EOF
|
||||
Warning: $bundle does not exist
|
||||
(last version not built?)
|
||||
EOF
|
||||
ln -sf $PWD/$bundle $dest
|
||||
|
||||
local file
|
||||
for file in $( grep -v '^#' SOURCES); do
|
||||
ln -sf $PWD/$file $dest/$file
|
||||
if [ -e "$file" ]; then
|
||||
ln -sf $PWD/$file $dest/$file
|
||||
else
|
||||
echo "Warning: $file (listed in SOURCES) does not exist"
|
||||
fi
|
||||
done
|
||||
|
||||
cd $dest
|
||||
find . -type l -not -readable -exec rm {} \;
|
||||
( cd $dest; find . -type l -not -readable -exec rm {} \;)
|
||||
echo "Source specfile: dist/diaspora.spec"
|
||||
echo "Bundle specfile: dist/diaspora-bundle.spec"
|
||||
}
|
||||
|
||||
|
||||
function usage()
|
||||
{
|
||||
cat <<- EOF
|
||||
|
||||
Usage: make-dist [-c commit] <dist|bundle|links>
|
||||
Usage: make-dist [options] <dist|bundle|prepare>
|
||||
|
||||
-c Use a given commit, defaults to last checked in.
|
||||
dist Build a diaspora application tarball.
|
||||
Options:
|
||||
|
||||
-h Print this message.
|
||||
-c commit Use a given commit, defaults to last checked in.
|
||||
-r release Mark with specified release, defaults to 1.
|
||||
-u uri Git repository URI, defaults to
|
||||
$GIT_REPO.
|
||||
|
||||
source Build a diaspora application tarball.
|
||||
bundle Build a bundler(1) bundle for diaspora.
|
||||
links Symlink bundle and source tarballs to rpm source dir.
|
||||
|
||||
prepare Symlink bundle and source tarballs to rpm source dir,
|
||||
create patched rpm spec files.
|
||||
|
||||
All results are stored in dist/
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
test "$1" = "-h" -o $# = 0 && {
|
||||
commit='HEAD'
|
||||
while getopts ":r:c:h" opt
|
||||
do
|
||||
case $opt in
|
||||
u) GIT_REPO="$OPTARG"
|
||||
;;
|
||||
c) commit="${OPTARG:0:7}"
|
||||
;;
|
||||
r) RELEASE="$OPTARG:"
|
||||
;;
|
||||
h) usage
|
||||
exit 0
|
||||
;;
|
||||
*) usage
|
||||
exit 2
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
typeset -r GIT_REPO RELEASE
|
||||
export LANG=C
|
||||
|
||||
test $# -gt 1 -o $# -eq 0 && {
|
||||
usage;
|
||||
exit 0
|
||||
exit 2;
|
||||
}
|
||||
|
||||
test "$1" = "-c" && {
|
||||
test -z "$2" && {
|
||||
usage;
|
||||
exit 1
|
||||
}
|
||||
commit="$2"
|
||||
shift; shift
|
||||
}
|
||||
|
||||
|
||||
case $1 in
|
||||
|
||||
|
||||
"bundle") make_bundle $commit
|
||||
;;
|
||||
|
||||
'source') make_dist $commit
|
||||
'source') make_src $commit
|
||||
;;
|
||||
|
||||
'links') make_links $commit
|
||||
'prepare') prepare_rpm $commit $release
|
||||
;;
|
||||
|
||||
"fix_gemfile")
|
||||
fix_gemfile
|
||||
;;
|
||||
|
||||
*) usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
52
pkg/fedora/make_rel_symlink.py
Executable file
52
pkg/fedora/make_rel_symlink.py
Executable file
|
|
@ -0,0 +1,52 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import os
|
||||
import os.path
|
||||
import sys
|
||||
import pdb
|
||||
import shutil
|
||||
|
||||
def relative_ln_s( from_, to_ ):
|
||||
"""
|
||||
|
||||
This is just so dirty & boring: create a relative symlink, making the
|
||||
to_ path relative to from_. No errorchecks. Both arguments must be
|
||||
files, a destination directory doesn't work (I think). An existing
|
||||
file in to_ will be removed.
|
||||
|
||||
"""
|
||||
prefix = os.path.commonprefix( [ to_, from_ ] )
|
||||
if prefix == '':
|
||||
prefix = '/'
|
||||
source = from_.split( prefix )[ 1 ]
|
||||
dest = to_.split( prefix )[ 1 ]
|
||||
level = len( dest.split( '/' ) ) - 1
|
||||
path = ( '../' * level ) + source
|
||||
return path
|
||||
|
||||
USAGE = 'Usage: make_rel_symlink [-p] <sourcefile> <destfile>'
|
||||
|
||||
just_print = False;
|
||||
if sys.argv[1] == "-p":
|
||||
just_print = True;
|
||||
sys.argv = sys.argv[ 1:]
|
||||
|
||||
if len( sys.argv ) != 3:
|
||||
print USAGE
|
||||
sys.exit( 1 )
|
||||
|
||||
if os.path.isdir( sys.argv[2] ):
|
||||
print "Removing link target dir:" + sys.argv[2]
|
||||
shutil.rmtree( sys.argv[2])
|
||||
|
||||
link_path = relative_ln_s( sys.argv[1], sys.argv[2] )
|
||||
if just_print:
|
||||
print link_path
|
||||
else:
|
||||
os.chdir( os.path.dirname( sys.argv[2]))
|
||||
target = os.path.basename( sys.argv[2])
|
||||
if os.path.exists( target ):
|
||||
os.unlink( target)
|
||||
os.symlink( link_path, target)
|
||||
|
||||
|
||||
|
|
@ -28,6 +28,7 @@ $(document).ready(function(){
|
|||
//buttons//////
|
||||
$("#add_aspect_button").fancybox({ 'titleShow' : false });
|
||||
$("#add_request_button").fancybox({ 'titleShow': false });
|
||||
$("#invite_user_button").fancybox({ 'titleShow': false });
|
||||
$(".add_request_button").fancybox({ 'titleShow': false });
|
||||
|
||||
$("input[type='submit']").addClass("button");
|
||||
|
|
@ -72,7 +73,7 @@ $.fn.clearForm = function() {
|
|||
|
||||
$("#publisher .broadcast").live("click", function(evt){
|
||||
evt.preventDefault();
|
||||
if( confirm("Broadcast to the world?") ) {
|
||||
if( confirm("Publish to Diaspora and Facebook?") ) {
|
||||
$("#status_message_public").val("true");
|
||||
$(this).submit();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -115,7 +115,7 @@ describe Person do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'searching' do
|
||||
describe '::search' do
|
||||
before do
|
||||
@friend_one = Factory.create(:person)
|
||||
@friend_two = Factory.create(:person)
|
||||
|
|
@ -159,6 +159,11 @@ describe Person do
|
|||
people.include?(@friend_three).should == false
|
||||
end
|
||||
|
||||
it 'should yield results on full names' do
|
||||
people = Person.search("Casey Grippi")
|
||||
people.should == [@friend_four]
|
||||
end
|
||||
|
||||
it 'should search by diaspora_handle exactly' do
|
||||
stub_success("tom@tom.joindiaspora.com")
|
||||
Person.by_webfinger(@friend_one.diaspora_handle).should == @friend_one
|
||||
|
|
|
|||
35
spec/models/user/invite_spec.rb
Normal file
35
spec/models/user/invite_spec.rb
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
# Copyright (c) 2010, Diaspora Inc. This file is
|
||||
# licensed under the Affero General Public License version 3 or later. See
|
||||
# the COPYRIGHT file.
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
describe User do
|
||||
let!(:invited_user) { create_user_with_invitation("abc")}
|
||||
|
||||
context "the acceptance of an invitation" do
|
||||
it "should create the person with the passed in params" do
|
||||
Person.count.should be 0
|
||||
u = invited_user.accept_invitation!(:invitation_token => "abc",
|
||||
:username => "user",
|
||||
:password => "secret",
|
||||
:password_confirmation => "secret",
|
||||
:person => {:profile => {:first_name => "Bob",
|
||||
:last_name => "Smith"}} )
|
||||
Person.count.should be 1
|
||||
u.person.profile.first_name.should == "Bob"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
def create_user_with_invitation(invitation_token, attributes={})
|
||||
user = User.new({:password => nil, :password_confirmation => nil}.update(attributes))
|
||||
#puts user.inspect
|
||||
#user.skip_confirmation!
|
||||
user.invitation_token = invitation_token
|
||||
user.invitation_sent_at = Time.now.utc
|
||||
user.save(:validate => false)
|
||||
user
|
||||
end
|
||||
0
tmp/.gitkeep
Normal file
0
tmp/.gitkeep
Normal file
Loading…
Reference in a new issue