Skip to content

Commit

Permalink
Generators are working.
Browse files Browse the repository at this point in the history
  • Loading branch information
pcg79 committed Mar 17, 2011
1 parent ada8390 commit cf72b29
Show file tree
Hide file tree
Showing 26 changed files with 222 additions and 106 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
.rvmrc
pkg
11 changes: 11 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
source "http://rubygems.org"
# Add dependencies required to use your gem here.
# Example:
# gem "activesupport", ">= 2.3.5"

# Add dependencies to develop your gem here.
# Include everything needed to run rake, tests, features, etc.
group :development do
gem "bundler", "~> 1.0.0"
gem "jeweler", "~> 1.5.2"
end
16 changes: 16 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
GEM
remote: http://rubygems.org/
specs:
git (1.2.5)
jeweler (1.5.2)
bundler (~> 1.0.0)
git (>= 1.2.5)
rake
rake (0.8.7)

PLATFORMS
ruby

DEPENDENCIES
bundler (~> 1.0.0)
jeweler (~> 1.5.2)
59 changes: 35 additions & 24 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -1,46 +1,57 @@
require 'rake/gempackagetask'
require 'hanna/rdoctask'
require 'spec/rake/spectask'
require 'rubygems'
require 'bundler'
begin
Bundler.setup(:default, :development)
rescue Bundler::BundlerError => e
$stderr.puts e.message
$stderr.puts "Run `bundle install` to install missing gems"
exit e.status_code
end
require 'rake'

SPEC = Gem::Specification.new do |gem|
require 'jeweler'
Jeweler::Tasks.new do |gem|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
gem.name = "rcap-rails"
gem.version = "1.0"
gem.version = "1.3"
gem.authors = [ "Farrel Lifson", "Pat George" ]
gem.email = "pat.george@gmail.com"
gem.homepage = "https://github.com/pcg79/RCAP"
gem.platform = Gem::Platform::RUBY
gem.summary = "CAP (Common Alerting Protocol) API for Ruby on Rails"
gem.files = Dir.glob("{lib,examples}/**/*")
gem.files = Dir.glob("lib/**/*")
gem.require_path = "lib"
gem.has_rdoc = true
gem.extra_rdoc_files = [ "README.rdoc","CHANGELOG.rdoc" ]
gem.add_dependency( 'assistance' )
gem.add_dependency( 'json' )
gem.add_dependency( 'uuidtools', '>= 2.0.0' )
# gem.add_dependency 'activerecord', '>=3.0'
gem.description = "A Ruby API providing parsing and generation of CAP (Common Alerting Protocol) messages for use with Rails."
gem.test_files = Dir.glob("spec/*.rb")
end

Rake::GemPackageTask.new(SPEC) do |pkg|
pkg.need_tar = true
# Include your dependencies below. Runtime dependencies are required when using your gem,
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
# gem.add_runtime_dependency 'jabber4r', '> 0.1'
# gem.add_development_dependency 'rspec', '> 1.2.3'
end
Jeweler::RubygemsDotOrgTasks.new

Rake::RDocTask.new do |rdoc|
rdoc.main = "README.rdoc"
rdoc.rdoc_files.include( "README.rdoc", "CHANGELOG.rdoc", "lib/**/*.rb" )
rdoc.rdoc_dir = "doc"
rdoc.title = "RCAP Ruby API"
require 'rake/testtask'
Rake::TestTask.new(:test) do |test|
test.libs << 'lib' << 'test'
test.pattern = 'test/**/test_*.rb'
test.verbose = true
end

Spec::Rake::SpecTask.new do |spec|
spec.libs = ['lib','spec']
spec.warning = true
spec.spec_opts = ['--options spec/spec.opts']
end
task :default => :test

desc( 'Generate a new tag file' )
task( :tags ) do |t|
Kernel.system( 'ctags --recurse lib/* ')
end
require 'rake/rdoctask'
Rake::RDocTask.new do |rdoc|
version = File.exist?('VERSION') ? File.read('VERSION') : ""

task( :default => :spec )
rdoc.rdoc_dir = 'rdoc'
rdoc.title = "test_jeweler #{version}"
rdoc.rdoc_files.include('README*')
rdoc.rdoc_files.include('lib/**/*.rb')
end
27 changes: 0 additions & 27 deletions generators/rcap/migrations/migrations_generators.rb

This file was deleted.

37 changes: 37 additions & 0 deletions lib/generators/rcap/migrations/migrations_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
require 'rails/generators/migration'

module Rcap
module Generators
class MigrationsGenerator < Rails::Generators::Base
include Rails::Generators::Migration

desc <<DESC
Description:
Generate RCAP migrations.
DESC

def self.source_root
@_rcap_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
end

def create_migration_file
Dir[File.join(MigrationsGenerator.source_root, '*_migration.rb')].each do |file|
model = file[/(.*\/)?(.*)_migration.rb/, 2]
migration_template file, "db/migrate/create_#{model}_table.rb"
end
end

protected

no_tasks do
def self.next_migration_number(dirname) #:nodoc:
if ActiveRecord::Base.timestamped_migrations
Time.now.utc.strftime("%Y%m%d%H%M%S")
else
"%.3d" % (current_migration_number(dirname) + 1)
end
end
end
end
end
end
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class CreateAlerts < ActiveRecord::Migration
class CreateAlertsTable < ActiveRecord::Migration
def self.up
create_table :alerts do |t|
t.integer :user_id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class CreateAreas < ActiveRecord::Migration
class CreateAreasTable < ActiveRecord::Migration
def self.up
create_table :areas do |t|
t.integer :alert_id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class CreateInfos < ActiveRecord::Migration
class CreateInfosTable < ActiveRecord::Migration
def self.up
create_table :infos do |t|
t.integer :alert_id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
class CreateResources < ActiveRecord::Migration
class CreateResourcesTable < ActiveRecord::Migration
def self.up
create_table :resources do |t|
t.integer :alert_id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Rcap
module Generators
class ModelsGenerator < Rails::Generator::NamedBase
class ModelsGenerator < Rails::Generators::Base
desc <<DESC
Description:
Copy RCAP models to your application.
Expand All @@ -15,7 +15,11 @@ def self.banner
end

def copy_model_files
directory 'rcap'
directory 'models', 'app/models'
end

def copy_lib_files
copy_file 'modules/rcap.rb', 'lib/rcap.rb'
end

private
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module RCAP
# An Alert object is valid if
# An Alert object is valid if
# * it has an identifier
# * it has a sender
# * it has a sent time
Expand All @@ -16,15 +16,15 @@ class Alert
STATUS_TEST = "Test" # :nodoc:
STATUS_DRAFT = "Draft" # :nodoc:
# Valid values for status
VALID_STATUSES = [ STATUS_ACTUAL, STATUS_EXERCISE, STATUS_SYSTEM, STATUS_TEST, STATUS_DRAFT ]
VALID_STATUSES = [ STATUS_ACTUAL, STATUS_EXERCISE, STATUS_SYSTEM, STATUS_TEST, STATUS_DRAFT ]

MSG_TYPE_ALERT = "Alert" # :nodoc:
MSG_TYPE_UPDATE = "Update" # :nodoc:
MSG_TYPE_CANCEL = "Cancel" # :nodoc:
MSG_TYPE_ACK = "Ack" # :nodoc:
MSG_TYPE_ERROR = "Error" # :nodoc:
# Valid values for msg_type
VALID_MSG_TYPES = [ MSG_TYPE_ALERT, MSG_TYPE_UPDATE, MSG_TYPE_CANCEL, MSG_TYPE_ACK, MSG_TYPE_ERROR ]
VALID_MSG_TYPES = [ MSG_TYPE_ALERT, MSG_TYPE_UPDATE, MSG_TYPE_CANCEL, MSG_TYPE_ACK, MSG_TYPE_ERROR ]

SCOPE_PUBLIC = "Public" # :nodoc:
SCOPE_RESTRICTED = "Restricted" # :nodoc:
Expand All @@ -47,20 +47,20 @@ class Alert
REFERENCES_ELEMENT_NAME = 'references' # :nodoc:
INCIDENTS_ELEMENT_NAME = 'incidents' # :nodoc:

XPATH = 'cap:alert' # :nodoc:
IDENTIFIER_XPATH = "cap:#{ IDENTIFIER_ELEMENT_NAME }" # :nodoc:
SENDER_XPATH = "cap:#{ SENDER_ELEMENT_NAME }" # :nodoc:
SENT_XPATH = "cap:#{ SENT_ELEMENT_NAME }" # :nodoc:
STATUS_XPATH = "cap:#{ STATUS_ELEMENT_NAME }" # :nodoc:
MSG_TYPE_XPATH = "cap:#{ MSG_TYPE_ELEMENT_NAME }" # :nodoc:
SOURCE_XPATH = "cap:#{ SOURCE_ELEMENT_NAME }" # :nodoc:
SCOPE_XPATH = "cap:#{ SCOPE_ELEMENT_NAME }" # :nodoc:
RESTRICTION_XPATH = "cap:#{ RESTRICTION_ELEMENT_NAME }" # :nodoc:
ADDRESSES_XPATH = "cap:#{ ADDRESSES_ELEMENT_NAME }" # :nodoc:
CODE_XPATH = "cap:#{ CODE_ELEMENT_NAME }" # :nodoc:
NOTE_XPATH = "cap:#{ NOTE_ELEMENT_NAME }" # :nodoc:
REFERENCES_XPATH = "cap:#{ REFERENCES_ELEMENT_NAME }" # :nodoc:
INCIDENTS_XPATH = "cap:#{ INCIDENTS_ELEMENT_NAME }" # :nodoc:
XPATH = 'cap:alert' # :nodoc:
IDENTIFIER_XPATH = "cap:#{ IDENTIFIER_ELEMENT_NAME }" # :nodoc:
SENDER_XPATH = "cap:#{ SENDER_ELEMENT_NAME }" # :nodoc:
SENT_XPATH = "cap:#{ SENT_ELEMENT_NAME }" # :nodoc:
STATUS_XPATH = "cap:#{ STATUS_ELEMENT_NAME }" # :nodoc:
MSG_TYPE_XPATH = "cap:#{ MSG_TYPE_ELEMENT_NAME }" # :nodoc:
SOURCE_XPATH = "cap:#{ SOURCE_ELEMENT_NAME }" # :nodoc:
SCOPE_XPATH = "cap:#{ SCOPE_ELEMENT_NAME }" # :nodoc:
RESTRICTION_XPATH = "cap:#{ RESTRICTION_ELEMENT_NAME }" # :nodoc:
ADDRESSES_XPATH = "cap:#{ ADDRESSES_ELEMENT_NAME }" # :nodoc:
CODE_XPATH = "cap:#{ CODE_ELEMENT_NAME }" # :nodoc:
NOTE_XPATH = "cap:#{ NOTE_ELEMENT_NAME }" # :nodoc:
REFERENCES_XPATH = "cap:#{ REFERENCES_ELEMENT_NAME }" # :nodoc:
INCIDENTS_XPATH = "cap:#{ INCIDENTS_ELEMENT_NAME }" # :nodoc:

# If not set a UUID will be set by default
attr_accessor( :identifier)
Expand All @@ -74,15 +74,15 @@ class Alert
# Value can only be one of VALID_SCOPES
attr_accessor( :scope )
attr_accessor( :source )
# Depends on scope being SCOPE_RESTRICTED.
# Depends on scope being SCOPE_RESTRICTED.
attr_accessor( :restriction )
attr_accessor( :code )
attr_accessor( :note )

# Collection of address strings. Depends on scope being SCOPE_PRIVATE.
attr_reader( :addresses )
# Collection of reference strings - see Alert#to_reference
attr_reader( :references)
attr_reader( :references)
# Collection of incident strings
attr_reader( :incidents )
# Collection of Info objects
Expand Down Expand Up @@ -120,13 +120,13 @@ def initialize( attributes = {})
def to_xml_element #:nodoc:
xml_element = REXML::Element.new( XML_ELEMENT_NAME )
xml_element.add_namespace( RCAP::XMLNS )
xml_element.add_element( IDENTIFIER_ELEMENT_NAME ).add_text( self.identifier )
xml_element.add_element( SENDER_ELEMENT_NAME ).add_text( self.sender )
xml_element.add_element( SENT_ELEMENT_NAME ).add_text( self.sent.to_s )
xml_element.add_element( STATUS_ELEMENT_NAME ).add_text( self.status )
xml_element.add_element( MSG_TYPE_ELEMENT_NAME ).add_text( self.msg_type )
xml_element.add_element( IDENTIFIER_ELEMENT_NAME ).add_text( self.identifier )
xml_element.add_element( SENDER_ELEMENT_NAME ).add_text( self.sender )
xml_element.add_element( SENT_ELEMENT_NAME ).add_text( self.sent.to_s )
xml_element.add_element( STATUS_ELEMENT_NAME ).add_text( self.status )
xml_element.add_element( MSG_TYPE_ELEMENT_NAME ).add_text( self.msg_type )
xml_element.add_element( SOURCE_ELEMENT_NAME ).add_text( self.source ) if self.source
xml_element.add_element( SCOPE_ELEMENT_NAME ).add_text( self.scope )
xml_element.add_element( SCOPE_ELEMENT_NAME ).add_text( self.scope )
xml_element.add_element( RESTRICTION_ELEMENT_NAME ).add_text( self.restriction ) if self.restriction
unless self.addresses.empty?
xml_element.add_element( ADDRESSES_ELEMENT_NAME ).add_text( self.addresses.to_s_for_cap )
Expand Down
5 changes: 5 additions & 0 deletions lib/generators/rcap/models/templates/modules/rcap.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module RCAP
XMLNS = "urn:oasis:names:tc:emergency:cap:1.1"
CAP_VERSION = "1.1"
VERSION = "0.4"
end
24 changes: 0 additions & 24 deletions lib/rcap.rb

This file was deleted.

Loading

0 comments on commit cf72b29

Please sign in to comment.