From bb1bef736b742ab6da492979f9bbf22a2aa2d6af Mon Sep 17 00:00:00 2001 From: Matthew O'Riordan Date: Wed, 26 Sep 2012 23:30:15 +0200 Subject: [PATCH 1/2] Update system if system exists on create system --- lib/papertrail/cli_add_system.rb | 5 ----- lib/papertrail/connection.rb | 8 +++++++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/papertrail/cli_add_system.rb b/lib/papertrail/cli_add_system.rb index 78e03e7..7357aa1 100644 --- a/lib/papertrail/cli_add_system.rb +++ b/lib/papertrail/cli_add_system.rb @@ -56,11 +56,6 @@ def run connection = Papertrail::Connection.new(options) - # Bail if system already exists - if connection.show_source(options[:system]) - exit 0 - end - if connection.register_source(options[:system], options[:ip], options[:hostname]) exit 0 end diff --git a/lib/papertrail/connection.rb b/lib/papertrail/connection.rb index dea51be..10b606d 100644 --- a/lib/papertrail/connection.rb +++ b/lib/papertrail/connection.rb @@ -99,7 +99,13 @@ def join_group(source_name, group_name) def register_source(name, ip_address, hostname = nil) opts = { :name => name, :ip_address => ip_address } opts.merge! :hostname => hostname unless hostname.nil? - @connection.post("systems.json", :system => opts) + # if system with the same name exists, then update + existing_system = show_source(name) + if existing_system + @connection.put("systems/#{existing_system['id']}.json", :system => opts) + else + @connection.post("systems.json", :system => opts) + end end def unregister_source(name) From 0b791c9f4882ae9f66e232639bdca9bb4e81c638 Mon Sep 17 00:00:00 2001 From: Matthew O'Riordan Date: Wed, 26 Sep 2012 23:55:41 +0200 Subject: [PATCH 2/2] Gem update to use Bundler so one can simple rake install --- Rakefile | 156 +-------------------------------------------- papertrail.gemspec | 2 +- 2 files changed, 3 insertions(+), 155 deletions(-) diff --git a/Rakefile b/Rakefile index 1b7fa15..09b166a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,154 +1,2 @@ -require 'rubygems' -require 'rake' -require 'date' - -############################################################################# -# -# Helper functions -# -############################################################################# - -def name - @name ||= Dir['*.gemspec'].first.split('.').first -end - -def module_name - name.split('-').first -end - -def version - line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/] - line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1] -end - -def date - Date.today.to_s -end - -def rubyforge_project - name -end - -def gemspec_file - "#{name}.gemspec" -end - -def gem_file - "#{name}-#{version}.gem" -end - -def replace_header(head, header_name) - head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"} -end - -############################################################################# -# -# Standard tasks -# -############################################################################# - -task :default => :test - -require 'rake/testtask' -Rake::TestTask.new(:test) do |test| - test.libs << 'lib' << 'test' - test.pattern = 'test/**/test_*.rb' - test.verbose = true -end - -desc "Generate RCov test coverage and open in your browser" -task :coverage do - require 'rcov' - sh "rm -fr coverage" - sh "rcov test/test_*.rb" - sh "open coverage/index.html" -end - -require 'rake/rdoctask' -Rake::RDocTask.new do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = "#{name} #{version}" - rdoc.rdoc_files.include('README*') - rdoc.rdoc_files.include('lib/**/*.rb') -end - -desc "Open an irb session preloaded with this library" -task :console do - sh "irb -rubygems -r ./lib/#{name}.rb" -end - -############################################################################# -# -# Custom tasks (add your own tasks here) -# -############################################################################# - - - -############################################################################# -# -# Packaging tasks -# -############################################################################# - -desc "Create tag v#{version} and build and push #{gem_file} to Rubygems" -task :release => :build do - unless `git branch` =~ /^\* master$/ - puts "You must be on the master branch to release!" - exit! - end - sh "git commit --allow-empty -a -m 'Release #{version}'" - sh "git tag v#{version}" - sh "git push origin master" - sh "git push origin v#{version}" - sh "gem push pkg/#{name}-#{version}.gem" -end - -desc "Build #{gem_file} into the pkg directory" -task :build => :gemspec do - sh "mkdir -p pkg" - sh "gem build #{gemspec_file}" - sh "mv #{gem_file} pkg" -end - -desc "Generate #{gemspec_file}" -task :gemspec => :validate do - # read spec file and split out manifest section - spec = File.read(gemspec_file) - head, manifest, tail = spec.split(" # = MANIFEST =\n") - - # replace name version and date - replace_header(head, :name) - replace_header(head, :version) - replace_header(head, :date) - #comment this out if your rubyforge_project has a different name - replace_header(head, :rubyforge_project) - - # determine file list from git ls-files - files = `git ls-files`. - split("\n"). - sort. - reject { |file| file =~ /^\./ }. - reject { |file| file =~ /^(rdoc|pkg)/ }. - map { |file| " #{file}" }. - join("\n") - - # piece file back together and write - manifest = " s.files = %w[\n#{files}\n ]\n" - spec = [head, manifest, tail].join(" # = MANIFEST =\n") - File.open(gemspec_file, 'w') { |io| io.write(spec) } - puts "Updated #{gemspec_file}" -end - -desc "Validate #{gemspec_file}" -task :validate do - libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{module_name}"] - unless libfiles.empty? - puts "Directory `lib` should only contain a `#{name}.rb` file and `#{module_name}` dir." - exit! - end - unless Dir['VERSION*'].empty? - puts "A `VERSION` file at root level violates Gem best practices." - exit! - end -end +require 'bundler' +Bundler::GemHelper.install_tasks \ No newline at end of file diff --git a/papertrail.gemspec b/papertrail.gemspec index b35bbd4..074b60d 100644 --- a/papertrail.gemspec +++ b/papertrail.gemspec @@ -14,7 +14,7 @@ Gem::Specification.new do |s| ## the sub! line in the Rakefile s.name = 'papertrail' s.version = '0.9.4' - s.date = '2012-08-13' + s.date = '2012-09-26' s.rubyforge_project = 'papertrail' ## Make sure your summary is short. The description may be as long