Module: Prick
- Defined in:
- lib/prick/version.rb,
lib/prick.rb,
lib/prick/git.rb,
lib/prick/build.rb,
lib/prick/migra.rb,
lib/prick/rdbms.rb,
lib/prick/ensure.rb,
lib/prick/schema.rb,
lib/prick/archive.rb,
lib/prick/project.rb,
lib/prick/version.rb,
lib/prick/database.rb,
lib/prick/constants.rb,
lib/prick/migration.rb,
lib/prick/exceptions.rb
Overview
Project related code starts here
Defined Under Namespace
Modules: Ensure, EnsureMethods, Git, Migra, Rdbms Classes: AbstractMethod, AbstractRelease, Build, Database, DumpFile, Error, Fail, Feature, FeatureMigration, Internal, Migration, MigrationPrerelease, MigrationRelease, NotYet, Prerelease, Project, Release, ReleaseMigration, Schema, Version
Constant Summary collapse
- VERSION =
"0.2.0"
- SHARE_PATH =
Shared files (part of the installation)
"#{File.dirname(File.dirname(__dir__))}/share"
- DIRS =
Project directories
[ RELEASE_DIR = "releases", MIGRATION_DIR = "migrations", FEATURE_DIR = "features", SCHEMA_DIR = "schemas", PRICK_DIR = "#{SCHEMA_DIR}/prick", PUBLIC_DIR = "#{SCHEMA_DIR}/public", VAR_DIR = "var", CACHE_DIR = "#{VAR_DIR}/cache", TMP_DIR = "tmp", CLONE_DIR = "tmp/clone", SPEC_DIR = "spec" ]
- DUMP_EXT =
Dump files
"dump.gz"
- DUMP_GLOB =
"*-[0-9]*.#{DUMP_EXT}"
- IDENT_SUB_RE =
Matches an identifier. Identifiers consist of lower case letters, digits and underscores but not dashes because they’re used as separators
/[a-z][a-z0-9_]*/
- IDENT_RE =
/^#{IDENT_SUB_RE}$/
- NAME_SUB_RE =
A (system) name. Names are used for projects and usernames that are external to prick and can include both dashes and underscores but dashes have to be followed by a character and not a digit so ‘ident-1234’ is not allowed but ‘ident_1234’ and ‘ident1234’ are
/#{IDENT_SUB_RE}/
- NAME_RE =
/^#{NAME_SUB_RE}$/
- PROJECT_NAME_SUB_RE =
Matches a project name
NAME_SUB_RE
- PROJECT_NAME_RE =
NAME_RE
- CUSTOM_NAME_SUB_RE =
Matches a custom name
NAME_SUB_RE
- CUSTOM_NAME_RE =
NAME_RE
- FEATURE_NAME_SUB_RE =
Matches a feature name
NAME_SUB_RE
- FEATURE_NAME_RE =
NAME_RE
- USER_NAME_SUB_RE =
Matches a postgres user name
NAME_SUB_RE
- USER_NAME_RE =
NAME_RE
- MMP_SEMVER_SUB_RE =
Matches a major.minor.patch version
The *_SEMVER REs are derived from the canonical RE
/
(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*) (?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))? (?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?
/x
semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string.
/(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)/
- MMP_SEMVER_RE =
/^#{MMP_SEMVER_SUB_RE}$/
- PRE_SEMVER_SUB_RE =
Matches the prelease part of a semantic version
/pre\.\d+/
- PRE_SEMVER_RE =
/^#{PRE_SEMVER_SUB_RE}$/
- SEMVER_SUB_RE =
Matches a semantic version
/#{MMP_SEMVER_SUB_RE}(?:-#{PRE_SEMVER_SUB_RE})?/
- SEMVER_RE =
/^#{SEMVER_SUB_RE}$/
- VERSION_SUB_RE =
Version RE. The general syntax for a version is ‘<custom>-<version>_<feature>’
The RE defines the following captures:
$1 - custom name, can be nil $2 - semantic version $3 - feature name, can be nil
/ (?:(#{CUSTOM_NAME_SUB_RE})-)? (#{SEMVER_SUB_RE}) (?:_(#{FEATURE_NAME_SUB_RE}))? /x
- VERSION_RE =
/^#{VERSION_SUB_RE}$/
- ABSTRACT_RELEASE_SUB_RE =
Matches an abstract release (either a release or a prerelease)
The RE defines the following captures:
$1 - custom name, can be nil $2 - semantic version
/ (?:(#{CUSTOM_NAME_SUB_RE})-)? (#{SEMVER_SUB_RE}) /x
- ABSTRACT_RELEASE_RE =
/^#{ABSTRACT_RELEASE_SUB_RE}$/
- RELEASE_SUB_RE =
Matches a (proper) release
The RE defines the following captures:
$1 - custom name, can be nil $2 - semantic version
/ (?:(#{CUSTOM_NAME_SUB_RE})-)? (#{MMP_SEMVER_SUB_RE}) /x
- RELEASE_RE =
/^#{RELEASE_SUB_RE}$/
- MIGRATION_SUB_RE =
Migration RE. The syntax is <version>_<version>
The RE defines the following captures
$1 - from version $2 - from custom name, can be nil $3 - from semantic version $4 - to version $5 - to custom name, can be nil $6 - to semantic version
/(#{RELEASE_SUB_RE})_(#{RELEASE_SUB_RE})/
- MIGRATION_RE =
/^#{MIGRATION_SUB_RE}$/
- PRERELEASE_SUB_RE =
Matches a prerelease branch
The RE defines the following captures:
$1 - custom name, can be nil $2 - semantic version
/ (?:(#{CUSTOM_NAME_SUB_RE})-)? (#{MMP_SEMVER_SUB_RE}-#{PRE_SEMVER_SUB_RE}) /x
- PRERELEASE_RE =
/^#{PRERELEASE_SUB_RE}$/
- FEATURE_SUB_RE =
Matches a feature branch
The RE defines the following captures:
$1 - custom name, can be nil $2 - semantic version $3 - feature name
/#{ABSTRACT_RELEASE_SUB_RE}_(#{FEATURE_NAME_SUB_RE})/
- FEATURE_RE =
/^#{FEATURE_SUB_RE}$/
- PROJECT_SUB_RE =
Project release RE. The general syntax is ‘<project>-<custom>-<version>’
The RE defines the following captures:
$1 - project $2 - version $3 - custom name, can be nil $4 - semantic version
/(#{PROJECT_NAME_SUB_RE})-(#{ABSTRACT_RELEASE_SUB_RE})/
- PROJECT_RE =
/^#{PROJECT_SUB_RE}$/
- DATABASE_SUB_RE =
Matches versioned databases. Note that databases never include the feature name. Features use the project database instead of a feature-specific database
The RE defines the following captures
$1 - project $2 - version $3 - custom name, can be nil $4 - semantic version
PROJECT_SUB_RE
- DATABASE_RE =
/^#{DATABASE_SUB_RE}$/
- ALL_DATABASES_SUB_RE =
Matches project database and versioned databases
The RE defines the following captures
$1 - project $2 - version, can be nil $3 - custom name, can be nil $4 - semantic version, can be nil
/(#{PROJECT_NAME_SUB_RE})(?:-(#{ABSTRACT_RELEASE_SUB_RE}))?/
- ALL_DATABASES_RE =
/^#{ALL_DATABASES_SUB_RE}$/
Class Method Summary collapse
- .all_databases_re(project_name) ⇒ Object
- .all_databases_sub_re(project_name) ⇒ Object
- .database_re(project_name) ⇒ Object
- .database_sub_re(project_name) ⇒ Object
- .dump_glob(project_name) ⇒ Object
- .project_sub_re(project_name) ⇒ Object
- .release_re(project_name) ⇒ Object
Class Method Details
.all_databases_re(project_name) ⇒ Object
197 |
# File 'lib/prick/constants.rb', line 197 def self.all_databases_re(project_name) /^#{all_databases_sub_re(project_name)}$/ end |
.all_databases_sub_re(project_name) ⇒ Object
196 |
# File 'lib/prick/constants.rb', line 196 def self.all_databases_sub_re(project_name) /(#{project_name})(?:-(#{ABSTRACT_RELEASE_SUB_RE}))?/ end |
.database_re(project_name) ⇒ Object
184 |
# File 'lib/prick/constants.rb', line 184 def self.database_re(project_name) /^#{database_sub_re(project_name)}$/ end |
.database_sub_re(project_name) ⇒ Object
183 |
# File 'lib/prick/constants.rb', line 183 def self.database_sub_re(project_name) project_sub_re(project_name) end |
.dump_glob(project_name) ⇒ Object
24 |
# File 'lib/prick/constants.rb', line 24 def self.dump_glob(project_name) "#{project_name}-*.#{DUMP_EXT}" end |
.project_sub_re(project_name) ⇒ Object
167 168 169 |
# File 'lib/prick/constants.rb', line 167 def self.project_sub_re(project_name) /(#{Regexp.escape(project_name)})(-#{VERSION_SUB_RE})/ end |
.release_re(project_name) ⇒ Object
170 |
# File 'lib/prick/constants.rb', line 170 def self.release_re(project_name) /^#{project_sub_re(project_name)}$/ end |