M Manifest.txt +0 -12
@@ 1,13 1,6 @@
-.assembly/commit/on_commit-00_quality_check
-.assembly/commit/on_commit-01_test
-.assembly/tag/on_tag-00_check_signature
-.assembly/tag/on_tag-01_test
-.assembly/tag/on_tag-02_release
-.assembly/tag/on_tag-03_publish_docs
.document
.rdoc_options
.simplecov
-ChangeLog
Cookbook.md
History.md
LICENSE.txt
@@ 27,10 20,8 @@ lib/assemblage/cli.rb
lib/assemblage/client.rb
lib/assemblage/command/client.rb
lib/assemblage/command/publisher.rb
-lib/assemblage/command/repo.rb
lib/assemblage/command/server.rb
lib/assemblage/command/worker.rb
-lib/assemblage/commit.rb
lib/assemblage/connection.rb
lib/assemblage/db_object.rb
lib/assemblage/event.rb
@@ 40,13 31,10 @@ lib/assemblage/publisher.rb
lib/assemblage/refinements.rb
lib/assemblage/repository.rb
lib/assemblage/server.rb
-lib/assemblage/user.rb
lib/assemblage/vcs_strategy.rb
lib/assemblage/vcs_strategy/mercurial.rb
lib/assemblage/worker.rb
lib/cztop/monkeypatches.rb
-local.db
-spec/.status
spec/assemblage/auth_spec.rb
spec/assemblage/client_spec.rb
spec/assemblage/mixins_spec.rb
M README.md +10 -6
@@ 6,7 6,7 @@ home
: https://assembla.ge/
code
-: https://bitbucket.org/sascrotch/assemblage
+: https://hg.sr.ht/~ged/assemblage
github
: https://github.com/ged/assemblage
@@ 112,20 112,24 @@ Now when commits arrive at our repo, it
## Contributing
You can check out the current development source with Mercurial via
-[Bitbucket](http://bitbucket.org/sascrotch/assemblage). Or if you prefer Git,
+[Sourcehut](https://hg.sr.ht/~ged/assemblage). Or if you prefer Git,
via [its Github mirror](https://github.com/ged/assemblage).
After checking out the source, run:
- $ rake newb
+ $ rake setup
+
+This task will install any missing dependencies and do any developer setup.
-This task will install any missing dependencies, run the tests/specs,
-and generate the API documentation.
+
+## Authors
+
+- Michael Granger <ged@faeriemud.org>
## License
-Copyright (c) 2018, Michael Granger
+Copyright (c) 2018-2019, Michael Granger
All rights reserved.
Redistribution and use in source and binary forms, with or without
M Rakefile +5 -110
@@ 1,113 1,8 @@
-#!/usr/bin/env rake
+#!/usr/bin/env ruby -S rake
-begin
- require 'hoe'
-rescue LoadError
- abort "This Rakefile requires hoe (gem install hoe)"
+require 'rake/deveiate'
+
+Rake::DevEiate.setup( 'assemblage' ) do |project|
+ project.publish_to = 'deveiate:/usr/local/www/public/code'
end
-GEMSPEC = 'assemblage.gemspec'
-
-
-Hoe.plugin :mercurial
-Hoe.plugin :signing
-Hoe.plugin :deveiate
-
-Hoe.plugins.delete :rubyforge
-
-hoespec = Hoe.spec 'assemblage' do |spec|
- spec.urls = {
- home: 'https://assembla.ge/',
- code: 'https://bitbucket.org/sascrotch/assemblage',
- github: 'https://github.com/ged/assemblage',
- docs: 'http://assembla.ge/docs/assemblage'
- }
-
- spec.readme_file = 'README.md'
- spec.history_file = 'History.md'
-
- spec.extra_rdoc_files = FileList[ '*.rdoc', '*.md' ]
- spec.license 'BSD-3-Clause'
-
- spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
-
- spec.dependency 'loggability', '~> 0.11'
- spec.dependency 'configurability', '~> 3.2'
- spec.dependency 'hglib', '~> 0.2'
- spec.dependency 'git', '~> 1.3'
- spec.dependency 'gli', '~> 2.18'
- spec.dependency 'tty-prompt', '~> 0.18'
- spec.dependency 'tty-table', '~> 0.10'
- spec.dependency 'sequel', '~> 5.6'
- spec.dependency 'msgpack', '~> 1.2'
- spec.dependency 'rb-readline', '~> 0.5'
- spec.dependency 'rbnacl', '~> 5.0'
- spec.dependency 'state_machines', '~> 0.5'
- spec.dependency 'cztop-reactor', '~> 0.7'
- spec.dependency 'pluggability', '~> 0.6'
-
- spec.dependency 'hoe-deveiate', '~> 0.3', :developer
- spec.dependency 'simplecov', '~> 0.7', :developer
- spec.dependency 'rdoc-generator-fivefish', '~> 0.4', :developer
- spec.dependency 'rdoc', '~> 6.0', :developer
- spec.dependency 'sqlite3', '~> 1.3', :developer
- spec.dependency 'rspec-wait', '~> 0.0', :developer
-
- spec.require_ruby_version( '>=2.3.4' )
- spec.hg_sign_tags = true if spec.respond_to?( :hg_sign_tags= )
- spec.check_history_on_release = true if spec.respond_to?( :check_history_on_release= )
-
- self.rdoc_locations << "deveiate:/usr/local/assemblage/docs/#{remote_rdoc_dir}"
-end
-
-
-ENV['VERSION'] ||= hoespec.spec.version.to_s
-
-# Run the tests before checking in
-task 'hg:precheckin' => [ :check_history, :check_manifest, :gemspec, :spec ]
-
-task :test => :spec
-
-# Rebuild the ChangeLog immediately before release
-task :prerelease => 'ChangeLog'
-CLOBBER.include( 'ChangeLog' )
-
-desc "Build a coverage report"
-task :coverage do
- ENV["COVERAGE"] = 'yes'
- Rake::Task[:spec].invoke
-end
-CLOBBER.include( 'coverage' )
-
-
-# Use the fivefish formatter for docs generated from development checkout
-if File.directory?( '.hg' )
- require 'rdoc/task'
-
- Rake::Task[ 'docs' ].clear
- RDoc::Task.new( 'docs' ) do |rdoc|
- rdoc.main = "README.md"
- rdoc.markup = 'markdown'
- rdoc.rdoc_files.include( "*.md", "*.rdoc", "ChangeLog", "lib/**/*.rb" )
- rdoc.generator = :fivefish
- rdoc.title = 'Assemblage'
- rdoc.rdoc_dir = 'doc'
- end
-end
-
-task :gemspec => GEMSPEC
-file GEMSPEC => __FILE__
-task GEMSPEC do |task|
- spec = $hoespec.spec
- spec.files.delete( '.gemtest' )
- spec.signing_key = nil
- spec.cert_chain = ['certs/ged.pem']
- spec.version = "#{spec.version.bump}.0.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
- File.open( task.name, 'w' ) do |fh|
- fh.write( spec.to_ruby )
- end
-end
-CLOBBER.include( GEMSPEC.to_s )
-
-task :default => :gemspec
-
M assemblage.gemspec +14 -34
@@ 1,26 1,21 @@
# -*- encoding: utf-8 -*-
-# stub: assemblage 0.1.0.pre20190722141336 ruby lib
+# stub: assemblage 0.1.0.pre.20191113155733 ruby lib
Gem::Specification.new do |s|
s.name = "assemblage".freeze
- s.version = "0.1.0.pre20190722141336"
+ s.version = "0.1.0.pre.20191113155733"
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
s.authors = ["Michael Granger".freeze]
- s.cert_chain = ["certs/ged.pem".freeze]
- s.date = "2019-07-22"
- s.description = "`assemblage`, **noun**:\n\n1. a collection of parts, as of machinery, put together to form a whole.\n2. the process of joining persons or things to form a whole.\n\nAssemblage is a continuous integration library. It's intended to provide you\nwith a minimal toolkit for distributing and performing automated tasks when\n**commits** arrive at one or more version control **repositories**. It makes as\nfew assumptions as possible as to what those tasks might be.\n\nThe product or output from such a task in Assemblage is called an Assembly.\nAssemblage has three primary parts for manipulating Assemblies: the **Assembly\nServer**, **Assembly Workers**, and **Publishers**. **Assembly Workers** listen for events set to an **Assembly Server** by a **Publisher**, and run one or more **Assembly Scripts** to assemble their products.\n\n<dl>\n <dt>Assembly Server</dt>\n <dd>Aggregates and distributes events from <em>repositories</em> to\n <em>workers</em> to make one or more \"assemblies\".</dd>\n\n <dt>Assembly Workers</dt>\n <dd>Listens for <em>events</em> published by the <em>assembly server</em>,\n checks out a <em>repository</em>, and runs one or more assembly scripts in\n that repository.</dd>\n\n <dt>Publisher</dt>\n <dd>A client that sends events to the server from distributed version control\n repositories. Assemblage currently supports Mercurial and Git.</dd>\n\n <dt>Event</dt>\n <dd>Notification of some change in a repository, e.g., a\n <code>commit</code>.</dd>\n\n <dt>Assembly</dt>\n <dd>A product or collection of products built as a reaction to one or more\n <em>events</em>.</dd>\n\n <dt>Assembly Script</dt>\n <dd>A script that is executed when an <em>event</em> occurs in a repository,\n checked into the repository source in the `.assembly` directory (by\n default).</dd>\n</dl>".freeze
- s.email = ["ged@FaerieMUD.org".freeze]
- s.executables = ["assemblage".freeze]
- s.extra_rdoc_files = ["Cookbook.md".freeze, "History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "Protocol.md".freeze, "README.md".freeze, "To-Do.md".freeze, "Cookbook.md".freeze, "History.md".freeze, "Protocol.md".freeze, "README.md".freeze, "To-Do.md".freeze]
- s.files = [".assembly/commit/on_commit-00_quality_check".freeze, ".assembly/commit/on_commit-01_test".freeze, ".assembly/tag/on_tag-00_check_signature".freeze, ".assembly/tag/on_tag-01_test".freeze, ".assembly/tag/on_tag-02_release".freeze, ".assembly/tag/on_tag-03_publish_docs".freeze, ".document".freeze, ".rdoc_options".freeze, ".simplecov".freeze, "ChangeLog".freeze, "Cookbook.md".freeze, "History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "Protocol.md".freeze, "README.md".freeze, "Rakefile".freeze, "To-Do.md".freeze, "bin/assemblage".freeze, "data/assemblage/hooks/mercurial-hook.rb".freeze, "data/assemblage/migrations/20180314_initial.rb".freeze, "lib/assemblage.rb".freeze, "lib/assemblage/assembly_builder.rb".freeze, "lib/assemblage/assembly_result.rb".freeze, "lib/assemblage/auth.rb".freeze, "lib/assemblage/cli.rb".freeze, "lib/assemblage/client.rb".freeze, "lib/assemblage/command/client.rb".freeze, "lib/assemblage/command/publisher.rb".freeze, "lib/assemblage/command/repo.rb".freeze, "lib/assemblage/command/server.rb".freeze, "lib/assemblage/command/worker.rb".freeze, "lib/assemblage/commit.rb".freeze, "lib/assemblage/connection.rb".freeze, "lib/assemblage/db_object.rb".freeze, "lib/assemblage/event.rb".freeze, "lib/assemblage/mixins.rb".freeze, "lib/assemblage/protocol.rb".freeze, "lib/assemblage/publisher.rb".freeze, "lib/assemblage/refinements.rb".freeze, "lib/assemblage/repository.rb".freeze, "lib/assemblage/server.rb".freeze, "lib/assemblage/user.rb".freeze, "lib/assemblage/vcs_strategy.rb".freeze, "lib/assemblage/vcs_strategy/mercurial.rb".freeze, "lib/assemblage/worker.rb".freeze, "lib/cztop/monkeypatches.rb".freeze, "local.db".freeze, "spec/.status".freeze, "spec/assemblage/auth_spec.rb".freeze, "spec/assemblage/client_spec.rb".freeze, "spec/assemblage/mixins_spec.rb".freeze, "spec/assemblage/server_spec.rb".freeze, "spec/assemblage/vcs_strategy_spec.rb".freeze, "spec/assemblage/worker_spec.rb".freeze, "spec/assemblage_spec.rb".freeze, "spec/spec_helper.rb".freeze]
+ s.date = "2019-11-13"
+ s.description = "A continuous integration toolkit.".freeze
+ s.email = ["ged@faeriemud.org".freeze]
+ s.files = [".document".freeze, ".rdoc_options".freeze, ".simplecov".freeze, "Cookbook.md".freeze, "History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "Protocol.md".freeze, "README.md".freeze, "Rakefile".freeze, "To-Do.md".freeze, "bin/assemblage".freeze, "data/assemblage/hooks/mercurial-hook.rb".freeze, "data/assemblage/migrations/20180314_initial.rb".freeze, "lib/assemblage.rb".freeze, "lib/assemblage/assembly_builder.rb".freeze, "lib/assemblage/assembly_result.rb".freeze, "lib/assemblage/auth.rb".freeze, "lib/assemblage/cli.rb".freeze, "lib/assemblage/client.rb".freeze, "lib/assemblage/command/client.rb".freeze, "lib/assemblage/command/publisher.rb".freeze, "lib/assemblage/command/server.rb".freeze, "lib/assemblage/command/worker.rb".freeze, "lib/assemblage/connection.rb".freeze, "lib/assemblage/db_object.rb".freeze, "lib/assemblage/event.rb".freeze, "lib/assemblage/mixins.rb".freeze, "lib/assemblage/protocol.rb".freeze, "lib/assemblage/publisher.rb".freeze, "lib/assemblage/refinements.rb".freeze, "lib/assemblage/repository.rb".freeze, "lib/assemblage/server.rb".freeze, "lib/assemblage/vcs_strategy.rb".freeze, "lib/assemblage/vcs_strategy/mercurial.rb".freeze, "lib/assemblage/worker.rb".freeze, "lib/cztop/monkeypatches.rb".freeze, "spec/assemblage/auth_spec.rb".freeze, "spec/assemblage/client_spec.rb".freeze, "spec/assemblage/mixins_spec.rb".freeze, "spec/assemblage/server_spec.rb".freeze, "spec/assemblage/vcs_strategy_spec.rb".freeze, "spec/assemblage/worker_spec.rb".freeze, "spec/assemblage_spec.rb".freeze, "spec/spec_helper.rb".freeze]
s.homepage = "https://assembla.ge/".freeze
s.licenses = ["BSD-3-Clause".freeze]
- s.rdoc_options = ["--main".freeze, "README.md".freeze]
- s.required_ruby_version = Gem::Requirement.new(">= 2.3.4".freeze)
- s.rubygems_version = "3.0.3".freeze
- s.summary = "`assemblage`, **noun**: 1".freeze
+ s.rubygems_version = "3.0.6".freeze
+ s.summary = "A continuous integration toolkit.".freeze
if s.respond_to? :specification_version then
s.specification_version = 4
@@ 28,7 23,7 @@ Gem::Specification.new do |s|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<loggability>.freeze, ["~> 0.11"])
s.add_runtime_dependency(%q<configurability>.freeze, ["~> 3.2"])
- s.add_runtime_dependency(%q<hglib>.freeze, ["~> 0.2"])
+ s.add_runtime_dependency(%q<hglib>.freeze, ["~> 0.1"])
s.add_runtime_dependency(%q<git>.freeze, ["~> 1.3"])
s.add_runtime_dependency(%q<gli>.freeze, ["~> 2.18"])
s.add_runtime_dependency(%q<tty-prompt>.freeze, ["~> 0.18"])
@@ 36,23 31,18 @@ Gem::Specification.new do |s|
s.add_runtime_dependency(%q<sequel>.freeze, ["~> 5.6"])
s.add_runtime_dependency(%q<msgpack>.freeze, ["~> 1.2"])
s.add_runtime_dependency(%q<rb-readline>.freeze, ["~> 0.5"])
- s.add_runtime_dependency(%q<rbnacl>.freeze, ["~> 5.0"])
s.add_runtime_dependency(%q<state_machines>.freeze, ["~> 0.5"])
s.add_runtime_dependency(%q<cztop-reactor>.freeze, ["~> 0.7"])
s.add_runtime_dependency(%q<pluggability>.freeze, ["~> 0.6"])
- s.add_development_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
- s.add_development_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
- s.add_development_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
+ s.add_development_dependency(%q<rake-deveiate>.freeze, ["~> 0.5"])
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.7"])
s.add_development_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.0"])
s.add_development_dependency(%q<sqlite3>.freeze, ["~> 1.3"])
s.add_development_dependency(%q<rspec-wait>.freeze, ["~> 0.0"])
- s.add_development_dependency(%q<hoe>.freeze, ["~> 3.17"])
else
s.add_dependency(%q<loggability>.freeze, ["~> 0.11"])
s.add_dependency(%q<configurability>.freeze, ["~> 3.2"])
- s.add_dependency(%q<hglib>.freeze, ["~> 0.2"])
+ s.add_dependency(%q<hglib>.freeze, ["~> 0.1"])
s.add_dependency(%q<git>.freeze, ["~> 1.3"])
s.add_dependency(%q<gli>.freeze, ["~> 2.18"])
s.add_dependency(%q<tty-prompt>.freeze, ["~> 0.18"])
@@ 60,24 50,19 @@ Gem::Specification.new do |s|
s.add_dependency(%q<sequel>.freeze, ["~> 5.6"])
s.add_dependency(%q<msgpack>.freeze, ["~> 1.2"])
s.add_dependency(%q<rb-readline>.freeze, ["~> 0.5"])
- s.add_dependency(%q<rbnacl>.freeze, ["~> 5.0"])
s.add_dependency(%q<state_machines>.freeze, ["~> 0.5"])
s.add_dependency(%q<cztop-reactor>.freeze, ["~> 0.7"])
s.add_dependency(%q<pluggability>.freeze, ["~> 0.6"])
- s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
- s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
- s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
+ s.add_dependency(%q<rake-deveiate>.freeze, ["~> 0.5"])
s.add_dependency(%q<simplecov>.freeze, ["~> 0.7"])
s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
- s.add_dependency(%q<rdoc>.freeze, ["~> 6.0"])
s.add_dependency(%q<sqlite3>.freeze, ["~> 1.3"])
s.add_dependency(%q<rspec-wait>.freeze, ["~> 0.0"])
- s.add_dependency(%q<hoe>.freeze, ["~> 3.17"])
end
else
s.add_dependency(%q<loggability>.freeze, ["~> 0.11"])
s.add_dependency(%q<configurability>.freeze, ["~> 3.2"])
- s.add_dependency(%q<hglib>.freeze, ["~> 0.2"])
+ s.add_dependency(%q<hglib>.freeze, ["~> 0.1"])
s.add_dependency(%q<git>.freeze, ["~> 1.3"])
s.add_dependency(%q<gli>.freeze, ["~> 2.18"])
s.add_dependency(%q<tty-prompt>.freeze, ["~> 0.18"])
@@ 85,18 70,13 @@ Gem::Specification.new do |s|
s.add_dependency(%q<sequel>.freeze, ["~> 5.6"])
s.add_dependency(%q<msgpack>.freeze, ["~> 1.2"])
s.add_dependency(%q<rb-readline>.freeze, ["~> 0.5"])
- s.add_dependency(%q<rbnacl>.freeze, ["~> 5.0"])
s.add_dependency(%q<state_machines>.freeze, ["~> 0.5"])
s.add_dependency(%q<cztop-reactor>.freeze, ["~> 0.7"])
s.add_dependency(%q<pluggability>.freeze, ["~> 0.6"])
- s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
- s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.10"])
- s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
+ s.add_dependency(%q<rake-deveiate>.freeze, ["~> 0.5"])
s.add_dependency(%q<simplecov>.freeze, ["~> 0.7"])
s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
- s.add_dependency(%q<rdoc>.freeze, ["~> 6.0"])
s.add_dependency(%q<sqlite3>.freeze, ["~> 1.3"])
s.add_dependency(%q<rspec-wait>.freeze, ["~> 0.0"])
- s.add_dependency(%q<hoe>.freeze, ["~> 3.17"])
end
end
M data/assemblage/migrations/20180314_initial.rb +22 -22
@@ 7,28 7,28 @@ Sequel.migration do
create_table( :repositories ) do
primary_key :id
- String :name, null: false, unique: true
- String :type, null: false
- String :url, null: false, unique: true
+ text :name, null: false, unique: true
+ text :type, null: false
+ text :url, null: false, unique: true
jsonb :requirements, default: Sequel.pg_jsonb({})
jsonb :traits, default: Sequel.pg_jsonb([])
- Time :created_at, default: Sequel.function(:now)
- Time :updated_at
- Time :removed_at
+ timestamptz :created_at, default: Sequel.function(:now)
+ timestamptz :updated_at
+ timestamptz :removed_at
end
create_table( :connections ) do
primary_key :id
- String :type, null: false
- String :name, null: false
+ text :type, null: false
+ text :name, null: false
- Time :created_at, default: Sequel.function(:now)
- Time :updated_at
- Time :removed_at
+ timestamptz :created_at, default: Sequel.function(:now)
+ timestamptz :updated_at
+ timestamptz :removed_at
unique [:type, :name]
constraint( :valid_connection_type, type: %w[worker publisher] )
@@ 38,12 38,12 @@ Sequel.migration do
create_table( :events ) do
primary_key :id
- String :type, null: false
+ text :type, null: false
jsonb :data, default: Sequel.pg_jsonb([])
- Time :created_at, default: Sequel.function(:now)
- Time :updated_at
- Time :removed_at
+ timestamptz :created_at, default: Sequel.function(:now)
+ timestamptz :updated_at
+ timestamptz :removed_at
foreign_key :repository_id, :repositories, null: false,
on_delete: :cascade
@@ 54,11 54,11 @@ Sequel.migration do
create_table( :assemblies ) do
primary_key :id
- String :name
+ text :name
- Time :created_at, default: Sequel.function(:now)
- Time :updated_at
- Time :finished_at
+ timestamptz :created_at, default: Sequel.function(:now)
+ timestamptz :updated_at
+ timestamptz :finished_at
foreign_key :via_connection_id, :connections, null: false
foreign_key :triggering_event_id, :events, null: false,
@@ 69,10 69,10 @@ Sequel.migration do
create_table( :assembly_results ) do
primary_key :id
- File :data
+ bytea :data
- Time :created_at, default: Sequel.function(:now)
- Time :updated_at
+ timestamptz :created_at, default: Sequel.function(:now)
+ timestamptz :updated_at
foreign_key :assembly_id, :assemblies, null: false
end
M .gems => gem.deps.rb +26 -17
@@ 1,17 1,26 @@
-configurability
-cztop-reactor
-git
-gli
-hglib
-hoe-deveiate
-loggability
-msgpack
-pluggability
-rb-readline
-rdoc-generator-fivefish
-rspec-wait
-sequel
-simplecov
-sqlite3
-state_machines
-tty
+source 'https://rubygems.org'
+
+gem 'loggability', "~> 0.11"
+gem 'configurability', "~> 3.2"
+gem 'hglib', "~> 0.1"
+gem 'git', "~> 1.3"
+gem 'gli', "~> 2.18"
+gem 'tty-prompt', "~> 0.18"
+gem 'tty-table', "~> 0.10"
+gem 'sequel', "~> 5.6"
+gem 'pg', "~> 1.1"
+gem 'msgpack', "~> 1.2"
+gem 'rb-readline', "~> 0.5"
+gem 'state_machines', "~> 0.5"
+gem 'cztop-reactor', "~> 0.7"
+gem 'pluggability', "~> 0.6"
+
+group :development do
+ gem 'rake-deveiate', "~> 0.5"
+ gem 'simplecov', "~> 0.7"
+ gem 'rdoc-generator-fivefish', "~> 0.4"
+ gem 'rspec-wait', "~> 0.0"
+end
+
+
+
M lib/assemblage/db_object.rb +5 -0
@@ 1,6 1,7 @@
# -*- ruby -*-
# frozen_string_literal: true
+require 'pg'
require 'sequel'
require 'assemblage' unless defined?( Assemblage )
@@ 34,6 35,8 @@ class Assemblage::DbObject
#
Sequel.extension( :migration )
Sequel.extension( :core_refinements )
+ Sequel.extension( :pg_json_ops )
+
plugin :dirty
plugin :subclasses
@@ 70,6 73,8 @@ class Assemblage::DbObject
newdb.sql_log_level = :debug
newdb.logger = Loggability[ Assemblage::DbObject ]
+ newdb.extension( :pg_json )
+
super
self.descendents.each do |subclass|
M lib/assemblage/server.rb +6 -6
@@ 94,12 94,12 @@ class Assemblage::Server
config = Assemblage.config || Configurability.default_config
config.assemblage.auth.cert_store_dir ||= (directory + 'certs').to_s
- if config.assemblage.db.uri
- self.log.warn "Database is already set to: %p" % [ config.assemblage.db.uri ]
- else
- config.assemblage.db.uri = "sqlite:%s" % [ directory + 'assemblage.db' ]
- self.log.debug " No database set up; set to: %s" % [ config.assemblage.db.uri ]
- end
+ # if config.assemblage.db.uri
+ # self.log.warn "Database is already set to: %p" % [ config.assemblage.db.uri ]
+ # else
+ # config.assemblage.db.uri = "sqlite:%s" % [ directory + 'assemblage.db' ]
+ # self.log.debug " No database set up; set to: %s" % [ config.assemblage.db.uri ]
+ # end
config.install
config.write( directory + Assemblage::DEFAULT_CONFIG_FILE )
M spec/assemblage/client_spec.rb +1 -3
@@ 7,9 7,7 @@ require 'assemblage/client'
describe Assemblage::Client do
- it "is well-tested" do
- fail "it isn't."
- end
+ it "can create a client object for a given connection name"
end
M spec/spec_helper.rb +26 -0
@@ 27,6 27,12 @@ require 'assemblage'
#
module AssemblageSpecHelpers
+ # The path to the local config file.
+ LOCAL_TEST_CONFIG = Pathname( '~/.assemblage-test.yml' ).expand_path
+
+ # The path to the testing config file, relative to the base of the project.
+ DEFAULT_TEST_CONFIG = Pathname( 'test-config.yml' ).expand_path
+
# Pathname constants
BASEDIR = Pathname( __FILE__ ).dirname.parent
SPECDIR = BASEDIR + 'spec'
@@ 147,6 153,26 @@ module AssemblageSpecHelpers
end
+ ### Load and install a FM config from the +configfile+ specified. If no
+ ### configfile is specified, it will first look for a file at the
+ ### LOCAL_TEST_CONFIG. If it doesn't exist, the DEFAULT_TEST_CONFIG will be
+ ### checked. If that too doesn't exist, then +nil+ is passed to
+ ### FM.load_config, which will use non-test-specific config files.
+ def load_test_config( configfile=nil )
+ configfile ||= ENV[ FM::CONFIG_ENV ]
+ configfile ||= LOCAL_TEST_CONFIG if LOCAL_TEST_CONFIG.exist?
+ configfile ||= DEFAULT_TEST_CONFIG if DEFAULT_TEST_CONFIG.exist?
+
+ configfile = Pathname( configfile ) if configfile
+
+ $stderr.puts "Loading config from: %s" % [ configfile || 'defaults' ]
+
+ unless FM.config && FM.config.path == configfile
+ FM.load_config( configfile )
+ end
+ end
+
+
#
# Custom matchers