prick 0.18.0 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +10 -4
- data/README.md +7 -7
- data/Rakefile +3 -1
- data/TODO +13 -11
- data/bin/console +2 -1
- data/doc/build-yml.txt +14 -0
- data/exe/prick +264 -28
- data/lib/builder/batch.rb +147 -0
- data/lib/builder/builder.rb +122 -0
- data/lib/builder/node.rb +189 -0
- data/lib/builder/node_pool.rb +105 -0
- data/lib/builder/parser.rb +120 -0
- data/lib/local/command.rb +193 -0
- data/lib/{prick → local}/git.rb +148 -22
- data/lib/local/timer.rb +98 -0
- data/lib/prick/constants.rb +54 -66
- data/lib/prick/diff.rb +28 -18
- data/lib/prick/prick_version.rb +161 -0
- data/lib/prick/state.rb +80 -165
- data/lib/prick/version.rb +2 -163
- data/lib/prick.rb +43 -27
- data/lib/share/init/.gitignore +10 -0
- data/lib/share/init/.prick-context +2 -0
- data/lib/share/init/.rspec +3 -0
- data/{share/schema/schema/public → lib/share/init/migration}/.keep +0 -0
- data/lib/share/init/prick.yml +6 -0
- data/lib/share/init/schema/.keep +0 -0
- data/lib/share/init/schema/build.yml +2 -0
- data/lib/share/init/schema/prick/.keep +0 -0
- data/lib/share/init/schema/prick/build.yml +5 -0
- data/lib/share/init/schema/prick/data.sql +6 -0
- data/{share/schema → lib/share/init}/schema/prick/tables.sql +2 -3
- data/lib/share/init/schema/public/.keep +0 -0
- data/lib/share/init/spec/prick_helper.rb +1 -0
- data/lib/share/init/spec/prick_spec.rb +6 -0
- data/lib/share/init/spec/spec_helper.rb +50 -0
- data/lib/share/migrate/migration/build.yml +4 -0
- data/lib/share/migrate/migration/diff.after-tables.sql +0 -0
- data/lib/share/migrate/migration/diff.before-tables.sql +0 -0
- data/lib/share/migrate/migration/diff.tables.sql +0 -0
- data/lib/subcommand/prick-build.rb +55 -0
- data/lib/subcommand/prick-create.rb +78 -0
- data/lib/subcommand/prick-drop.rb +25 -0
- data/lib/subcommand/prick-fox.rb +62 -0
- data/lib/subcommand/prick-init.rb +46 -0
- data/lib/subcommand/prick-make.rb +202 -0
- data/lib/subcommand/prick-migrate.rb +37 -0
- data/lib/subcommand/prick-release.rb +23 -0
- data/lib/subcommand/prick-setup.rb +20 -0
- data/lib/subcommand/prick-teardown.rb +18 -0
- data/prick.gemspec +43 -16
- metadata +161 -72
- data/.gitignore +0 -29
- data/.travis.yml +0 -7
- data/doc/create_release.txt +0 -17
- data/doc/flow.txt +0 -98
- data/doc/migra +0 -1
- data/doc/migrations.txt +0 -172
- data/doc/notes.txt +0 -116
- data/doc/prick.txt +0 -114
- data/doc/sh.prick +0 -316
- data/lib/ext/algorithm.rb +0 -14
- data/lib/ext/fileutils.rb +0 -26
- data/lib/ext/forward_method.rb +0 -18
- data/lib/ext/pg.rb +0 -18
- data/lib/ext/shortest_path.rb +0 -44
- data/lib/prick/archive.rb +0 -124
- data/lib/prick/branch.rb +0 -254
- data/lib/prick/builder.rb +0 -205
- data/lib/prick/cache.rb +0 -34
- data/lib/prick/command.rb +0 -102
- data/lib/prick/database.rb +0 -82
- data/lib/prick/dsort.rb +0 -151
- data/lib/prick/ensure.rb +0 -119
- data/lib/prick/exceptions.rb +0 -25
- data/lib/prick/head.rb +0 -183
- data/lib/prick/migration.rb +0 -70
- data/lib/prick/program.rb +0 -506
- data/lib/prick/project.rb +0 -626
- data/lib/prick/rdbms.rb +0 -137
- data/lib/prick/schema.rb +0 -27
- data/lib/prick/share.rb +0 -64
- data/libexec/strip-comments +0 -33
- data/make_releases +0 -72
- data/make_schema +0 -10
- data/share/diff/diff.after-tables.sql +0 -4
- data/share/diff/diff.before-tables.sql +0 -4
- data/share/diff/diff.tables.sql +0 -8
- data/share/features/diff.sql +0 -2
- data/share/features/feature/diff.sql +0 -2
- data/share/features/feature/migrate.sql +0 -2
- data/share/features/features.sql +0 -2
- data/share/features/features.yml +0 -2
- data/share/features/migrations.sql +0 -4
- data/share/gitignore +0 -2
- data/share/migration/diff.tables.sql +0 -8
- data/share/migration/features.yml +0 -6
- data/share/migration/migrate.sql +0 -3
- data/share/migration/migrate.yml +0 -8
- data/share/migration/tables.sql +0 -3
- data/share/schema/build.yml +0 -14
- data/share/schema/schema/build.yml +0 -3
- data/share/schema/schema/prick/build.yml +0 -14
- data/share/schema/schema/prick/data.sql +0 -7
- data/share/schema/schema/prick/schema.sql +0 -3
- data/share/schema/schema/public/build.yml +0 -13
- data/share/schema/schema.sql +0 -3
- data/test_assorted +0 -192
- data/test_feature +0 -112
- data/test_refactor +0 -34
- data/test_single_dev +0 -83
data/lib/prick.rb
CHANGED
|
@@ -1,31 +1,47 @@
|
|
|
1
|
+
require 'prick/version.rb'
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
require
|
|
14
|
-
|
|
15
|
-
require
|
|
16
|
-
require
|
|
17
|
-
require
|
|
18
|
-
|
|
19
|
-
require
|
|
20
|
-
require
|
|
21
|
-
require
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
3
|
+
require 'pg_conn'
|
|
4
|
+
|
|
5
|
+
require 'fixture_fox'
|
|
6
|
+
require 'indented_io'
|
|
7
|
+
require 'constrain'
|
|
8
|
+
|
|
9
|
+
module Prick
|
|
10
|
+
class Error < RuntimeError; end
|
|
11
|
+
class Fail < RuntimeError; end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
require 'prick/constants.rb'
|
|
15
|
+
|
|
16
|
+
require 'local/command.rb'
|
|
17
|
+
require 'local/git.rb'
|
|
18
|
+
require 'local/timer.rb'
|
|
19
|
+
|
|
20
|
+
require 'prick/state.rb'
|
|
21
|
+
require 'prick/prick_version.rb'
|
|
22
|
+
require 'prick/diff.rb'
|
|
23
|
+
|
|
24
|
+
module Prick
|
|
25
|
+
module SubCommand
|
|
26
|
+
extend Timer
|
|
27
|
+
def self.mesg(*msgs) puts msgs.join(" ") if !$quiet end
|
|
28
|
+
def self.verb(*msgs) puts msgs.join(" ") if $verbose && !$quiet end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
require 'subcommand/prick-init.rb'
|
|
33
|
+
require 'subcommand/prick-setup.rb'
|
|
34
|
+
require 'subcommand/prick-teardown.rb'
|
|
35
|
+
require 'subcommand/prick-create.rb'
|
|
36
|
+
require 'subcommand/prick-build.rb'
|
|
37
|
+
require 'subcommand/prick-make.rb'
|
|
38
|
+
require 'subcommand/prick-fox.rb'
|
|
39
|
+
require 'subcommand/prick-drop.rb'
|
|
40
|
+
require 'subcommand/prick-release.rb'
|
|
41
|
+
require 'subcommand/prick-migrate.rb'
|
|
29
42
|
|
|
30
43
|
module Prick
|
|
44
|
+
@state = nil
|
|
45
|
+
def self.state() @state end
|
|
46
|
+
def self.state=(state) @state = state end
|
|
31
47
|
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
-- Controlled by prick(1). Don't touch
|
|
3
2
|
--
|
|
4
3
|
|
|
@@ -12,6 +11,6 @@ create table versions (
|
|
|
12
11
|
patch integer not null,
|
|
13
12
|
pre integer,
|
|
14
13
|
feature varchar,
|
|
15
|
-
version varchar not null
|
|
14
|
+
version varchar not null,
|
|
15
|
+
built_at timestamp without time zone not null default (now() at time zone 'UTC')
|
|
16
16
|
);
|
|
17
|
-
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'prick/constants.rb'
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
|
|
2
|
+
# Set up paths to fox-project libraries
|
|
3
|
+
libdirs = `fox-project-libdirs 2>/dev/null`.chomp.split(":")
|
|
4
|
+
if !libdirs.empty?
|
|
5
|
+
$LOAD_PATH.unshift(*libdirs)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
require "bundler/setup"
|
|
9
|
+
|
|
10
|
+
RSpec.configure do |config|
|
|
11
|
+
# Enable flags like --only-failures and --next-failure
|
|
12
|
+
config.example_status_persistence_file_path = ".rspec_status"
|
|
13
|
+
|
|
14
|
+
# Disable RSpec exposing methods globally on `Module` and `main`
|
|
15
|
+
# config.disable_monkey_patching!
|
|
16
|
+
|
|
17
|
+
config.expect_with :rspec do |c|
|
|
18
|
+
c.syntax = :expect
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Silence most of the output from pending tests. See https://github.com/rspec/rspec-core/issues/2377
|
|
23
|
+
module FormatterOverrides
|
|
24
|
+
def example_pending(n)
|
|
25
|
+
colorizer=::RSpec::Core::Formatters::ConsoleCodes
|
|
26
|
+
output << current_indentation \
|
|
27
|
+
<< colorizer.wrap(n.example.description, :pending) \
|
|
28
|
+
<< "\n"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def dump_pending(_)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
RSpec::Core::Formatters::DocumentationFormatter.prepend FormatterOverrides
|
|
36
|
+
|
|
37
|
+
# Postspec
|
|
38
|
+
require "postspec"
|
|
39
|
+
require 'postspec_helper'
|
|
40
|
+
require 'prick_helper'
|
|
41
|
+
|
|
42
|
+
Postspec.configure do |config|
|
|
43
|
+
config.database = "mikras"
|
|
44
|
+
# config.anchors = "..."
|
|
45
|
+
config.mode = :seed
|
|
46
|
+
config.reflections = Prick::REFLECTIONS_PATH if File.exist?(Prick::REFLECTIONS_PATH)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Local modifications
|
|
50
|
+
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'builder/builder.rb'
|
|
4
|
+
|
|
5
|
+
module Prick::SubCommand
|
|
6
|
+
def self.build(database, username, schema, builddir: "schema", timer: nil, dump: nil)
|
|
7
|
+
Timer.on! if timer
|
|
8
|
+
time "Prick::Command#build" do
|
|
9
|
+
begin
|
|
10
|
+
super_conn = PgConn.new
|
|
11
|
+
conn = nil
|
|
12
|
+
builder = nil
|
|
13
|
+
|
|
14
|
+
time "Load build object" do
|
|
15
|
+
if super_conn.rdbms.exist? database
|
|
16
|
+
conn = PgConn.new(database, username)
|
|
17
|
+
super_conn.rdbms.empty!(database)
|
|
18
|
+
else
|
|
19
|
+
super_conn.rdbms.create database, owner: username
|
|
20
|
+
conn = PgConn.new(database, username)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
builder = Prick::Build::Builder.new(conn, builddir)
|
|
24
|
+
builder.pool.delete_schema(builder.pool.after_schema(schema)) if schema
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
case dump
|
|
28
|
+
when :nodes; builder.nodes.reject { |node| node.is_a?(Build::BuildNode) }.map &:dump
|
|
29
|
+
when :allnodes; builder.nodes.map &:dump
|
|
30
|
+
when :batches; builder.dump
|
|
31
|
+
when nil;
|
|
32
|
+
else
|
|
33
|
+
raise Prick::Error, "Illegal dump type: #{dump.inspect}"
|
|
34
|
+
end && exit
|
|
35
|
+
|
|
36
|
+
time "Execute build object" do
|
|
37
|
+
builder.execute conn
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
rescue Prick::Error => ex
|
|
41
|
+
$stderr.puts ex.message
|
|
42
|
+
exit 1
|
|
43
|
+
|
|
44
|
+
rescue ::Command::Error => ex
|
|
45
|
+
$stderr.puts ex.message
|
|
46
|
+
exit 1
|
|
47
|
+
|
|
48
|
+
ensure
|
|
49
|
+
super_conn&.terminate
|
|
50
|
+
conn&.terminate
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
|
|
2
|
+
module Prick
|
|
3
|
+
module SubCommand
|
|
4
|
+
def self.create_migration(username, from_version, force: false, file: nil)
|
|
5
|
+
constrain from_version, PrickVersion
|
|
6
|
+
Git.clean? or raise "Won't migrate: Repository is dirty"
|
|
7
|
+
Git.synchronized? or raise "Won't migrate: Repository is not synchronized"
|
|
8
|
+
|
|
9
|
+
from_version != PrickVersion.zero or raise Prick::Error, "Can't migrate from release 0.0.0"
|
|
10
|
+
to_version = Prick.state.version
|
|
11
|
+
migration_dir = "#{MIGRATION_DIR}/#{from_version}"
|
|
12
|
+
migration_exist = File.directory? migration_dir
|
|
13
|
+
force || file || !migration_exist or raise Prick::Fail, "Migration #{from_version} exists"
|
|
14
|
+
|
|
15
|
+
$quiet = true if file
|
|
16
|
+
|
|
17
|
+
if file && migration_exist
|
|
18
|
+
File.open(file, "w") { |file|
|
|
19
|
+
for diff_file in DIFF_FILES
|
|
20
|
+
file.write File.read("#{migration_dir}/#{diff_file}")
|
|
21
|
+
end
|
|
22
|
+
}
|
|
23
|
+
else
|
|
24
|
+
from_version != to_version or raise Prick::Fail, "Can't migrate to same release"
|
|
25
|
+
from_version < to_version or raise Prick::Fail, "Can't migrate backwards (why not?)"
|
|
26
|
+
|
|
27
|
+
diff = nil
|
|
28
|
+
if force || !migration_exist
|
|
29
|
+
from_db = "#{Prick.state.name}-#{from_version}"
|
|
30
|
+
to_db = "#{Prick.state.name}-#{to_version}"
|
|
31
|
+
|
|
32
|
+
mesg "Migrating from #{from_version} to #{to_version}"
|
|
33
|
+
begin
|
|
34
|
+
origin = Git.origin
|
|
35
|
+
|
|
36
|
+
# Local repos are supported to ease testing
|
|
37
|
+
if File.directory?(origin)
|
|
38
|
+
origin = File.expand_path(origin)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
diff = Dir.mktmpdir { |tmpdir|
|
|
42
|
+
Dir.chdir(tmpdir) {
|
|
43
|
+
mesg " Building #{from_db}"
|
|
44
|
+
Git.clone(origin, from_version, branch: from_version)
|
|
45
|
+
Dir.chdir(from_version.to_s) { build(from_db, username, nil) }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
mesg " Building #{to_db}"
|
|
49
|
+
build(to_db, username, nil)
|
|
50
|
+
|
|
51
|
+
mesg " Creating diff"
|
|
52
|
+
Diff.new(from_db, to_db)
|
|
53
|
+
}
|
|
54
|
+
!diff.same? or raise Prick::Fail, "No changes"
|
|
55
|
+
ensure
|
|
56
|
+
drop_all(from_db)
|
|
57
|
+
drop_all(to_db)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
diff.write(file) if file
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
if file
|
|
65
|
+
File.open(file, "a") { |f|
|
|
66
|
+
f.puts "-- UPDATE VERSION"
|
|
67
|
+
f.puts File.readlines(SCHEMA_VERSION_PATH).grep_v(/^--/)
|
|
68
|
+
}
|
|
69
|
+
else
|
|
70
|
+
FileUtils.rm_rf migration_dir if force
|
|
71
|
+
FileUtils.mkdir_p migration_dir
|
|
72
|
+
Command.command "cp -a #{SHARE_PATH}/migrate/migration/. #{migration_dir}"
|
|
73
|
+
Dir.chdir(migration_dir) { diff.write(*DIFF_FILES, mark: true) }
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'builder/builder.rb'
|
|
4
|
+
|
|
5
|
+
module Prick::SubCommand
|
|
6
|
+
def self.drop_users(database)
|
|
7
|
+
PgConn.new(database) { |conn|
|
|
8
|
+
users = conn.role.list(database: database)
|
|
9
|
+
conn.role.drop(users, cascade: true)
|
|
10
|
+
}
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.drop_database(database)
|
|
14
|
+
PgConn.new { |conn| conn.rdbms.drop database }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def self.drop_all(database)
|
|
18
|
+
PgConn.new { |conn|
|
|
19
|
+
users = conn.role.list(database: database)
|
|
20
|
+
PgConn.new(database) { |db| db.role.drop(users, cascade: true) }
|
|
21
|
+
conn.rdbms.drop database
|
|
22
|
+
}
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
require 'builder/builder.rb'
|
|
4
|
+
|
|
5
|
+
module Prick::SubCommand
|
|
6
|
+
def self.fox(database, username, files)
|
|
7
|
+
Command.command "fox --state=#{FOX_STATE_PATH} --exec #{database} #{files.join(" ")}"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
__END__
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
Timer.on! if timer
|
|
15
|
+
time "Prick::Command#build" do
|
|
16
|
+
begin
|
|
17
|
+
super_conn = PgConn.new
|
|
18
|
+
conn = nil
|
|
19
|
+
builder = nil
|
|
20
|
+
|
|
21
|
+
time "Load build object" do
|
|
22
|
+
if super_conn.rdbms.exist? database
|
|
23
|
+
conn = PgConn.new(database, username)
|
|
24
|
+
super_conn.rdbms.empty!(database)
|
|
25
|
+
else
|
|
26
|
+
super_conn.rdbms.create database, owner: username
|
|
27
|
+
conn = PgConn.new(database, username)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
builder = Prick::Build::Builder.new(conn, builddir)
|
|
31
|
+
builder.pool.delete_schema(builder.pool.after_schema(schema)) if schema
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
case dump
|
|
35
|
+
when :nodes; builder.nodes.reject { |node| node.is_a?(Build::BuildNode) }.map &:dump
|
|
36
|
+
when :allnodes; builder.nodes.map &:dump
|
|
37
|
+
when :batches; builder.dump
|
|
38
|
+
when nil;
|
|
39
|
+
else
|
|
40
|
+
raise Prick::Error, "Illegal dump type: #{dump.inspect}"
|
|
41
|
+
end && exit
|
|
42
|
+
|
|
43
|
+
time "Execute build object" do
|
|
44
|
+
builder.execute conn
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
rescue Prick::Error => ex
|
|
48
|
+
$stderr.puts ex.message
|
|
49
|
+
exit 1
|
|
50
|
+
|
|
51
|
+
rescue ::Command::Error => ex
|
|
52
|
+
$stderr.puts ex.message
|
|
53
|
+
exit 1
|
|
54
|
+
|
|
55
|
+
ensure
|
|
56
|
+
super_conn&.terminate
|
|
57
|
+
conn&.terminate
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
module Prick::SubCommand
|
|
4
|
+
def self.init(dir, name, title, database, username)
|
|
5
|
+
if dir
|
|
6
|
+
!File.exist?(dir) or raise Prick::Error, "Directory #{dir} exists"
|
|
7
|
+
FileUtils.mkdir_p(dir)
|
|
8
|
+
Dir.chdir(dir)
|
|
9
|
+
else
|
|
10
|
+
dir = "."
|
|
11
|
+
end
|
|
12
|
+
name ||= File.basename(Dir.getwd)
|
|
13
|
+
title ||= name
|
|
14
|
+
database ||= name
|
|
15
|
+
username ||= name
|
|
16
|
+
|
|
17
|
+
Command.command %(
|
|
18
|
+
git init .
|
|
19
|
+
cp -a #{SHARE_PATH}/init/. .
|
|
20
|
+
git add .
|
|
21
|
+
git commit -am "Initial import"
|
|
22
|
+
), fail: false
|
|
23
|
+
|
|
24
|
+
Command.status == 0 or raise Prick::Fail, "Init script failed"
|
|
25
|
+
|
|
26
|
+
state = State.new
|
|
27
|
+
state.name = name
|
|
28
|
+
state.title = title
|
|
29
|
+
state.prick_version = PrickVersion.new VERSION
|
|
30
|
+
state.version = PrickVersion.new("0.0.0")
|
|
31
|
+
state.environment = :development
|
|
32
|
+
state.database = database
|
|
33
|
+
state.username = username
|
|
34
|
+
state.save
|
|
35
|
+
|
|
36
|
+
Command.command %(
|
|
37
|
+
set -e
|
|
38
|
+
git commit -am "Release 0.0.0"
|
|
39
|
+
git tag v0.0.0
|
|
40
|
+
), fail: false
|
|
41
|
+
|
|
42
|
+
Command.status == 0 or raise Prick::Fail, "Init script failed"
|
|
43
|
+
|
|
44
|
+
[dir, state]
|
|
45
|
+
end
|
|
46
|
+
end
|