samus 1.4.4 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +8 -0
- data/Rakefile +43 -0
- data/bin/samus +42 -39
- data/commands/build/changelog-parse +1 -1
- data/lib/samus/action.rb +8 -6
- data/lib/samus/build_action.rb +10 -13
- data/lib/samus/builder.rb +30 -20
- data/lib/samus/command.rb +31 -24
- data/lib/samus/credentials.rb +10 -6
- data/lib/samus/publish_action.rb +3 -1
- data/lib/samus/publisher.rb +5 -6
- data/lib/samus/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec8b4850b480f49ce49ab6c437a0feb1e50de811
|
4
|
+
data.tar.gz: 07f12c2e09ade8dde71f5b92e4bd34e37cc78bfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 21705267ac960018b61b4de530f334c3231d533f324dd0caec788bb96df259754a1a02b3dc7c5514183bf5e5719fc73d3388879e13f21ae3854a0e2f369cde64
|
7
|
+
data.tar.gz: 67de29e4727253e87a1c90b4d7b890ec716c76e888751784c2deab377fb5c5e21305afecc6ab60888d7d156ffe1fa2afd10a3df297233d2868102e46e1303f9e
|
data/Dockerfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
task default: :build
|
2
|
+
|
3
|
+
task :build do
|
4
|
+
home = Dir.home
|
5
|
+
id = `docker build -q .`.chomp
|
6
|
+
dirs = [
|
7
|
+
"#{home}/.ssh:/root/.sshkeys",
|
8
|
+
"#{home}/.samus:/root/.samus",
|
9
|
+
"#{home}/.gitconfig:/root/.gitconfig",
|
10
|
+
"#{Dir.pwd}:/app"
|
11
|
+
]
|
12
|
+
cmd = "rake build_from_docker VERSION=#{ENV['VERSION']}"
|
13
|
+
alldirs = dirs.map { |d| "-v \"#{d}\"" }.join(' ')
|
14
|
+
sh "docker run --rm #{alldirs} -w /app -t #{id} #{cmd}"
|
15
|
+
end
|
16
|
+
|
17
|
+
task :build_from_docker do
|
18
|
+
version = ENV['VERSION']
|
19
|
+
sh 'mkdir -p ~/.ssh && cp -R ~/.sshkeys/* ~/.ssh'
|
20
|
+
sh 'chmod 700 ~/.ssh && chmod 400 ~/.ssh/*'
|
21
|
+
sh "samus build #{version}"
|
22
|
+
end
|
23
|
+
|
24
|
+
task :publish do
|
25
|
+
home = Dir.home
|
26
|
+
id = `docker build -q .`.chomp
|
27
|
+
dirs = [
|
28
|
+
"#{home}/.ssh:/root/.sshkeys",
|
29
|
+
"#{home}/.samus:/root/.samus",
|
30
|
+
"#{home}/.gitconfig:/root/.gitconfig",
|
31
|
+
"#{Dir.pwd}:/app"
|
32
|
+
]
|
33
|
+
cmd = "rake publish_from_docker FILE=#{ENV['FILE']}"
|
34
|
+
alldirs = dirs.map { |d| "-v \"#{d}\"" }.join(' ')
|
35
|
+
sh "docker run --rm #{alldirs} -w /app -t #{id} #{cmd}"
|
36
|
+
end
|
37
|
+
|
38
|
+
task :publish_from_docker do
|
39
|
+
file = ENV['FILE']
|
40
|
+
sh 'mkdir -p ~/.ssh && cp -R ~/.sshkeys/* ~/.ssh'
|
41
|
+
sh 'chmod 700 ~/.ssh && chmod 400 ~/.ssh/*'
|
42
|
+
sh "samus publish #{file}"
|
43
|
+
end
|
data/bin/samus
CHANGED
@@ -4,67 +4,70 @@ require_relative '../lib/samus'
|
|
4
4
|
require 'optparse'
|
5
5
|
require 'tmpdir'
|
6
6
|
|
7
|
-
command =
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
7
|
+
command =
|
8
|
+
case ARGV.shift
|
9
|
+
when 'install'
|
10
|
+
Dir.mkdir(Samus::CONFIG_PATH) unless File.directory?(Samus::CONFIG_PATH)
|
11
|
+
Dir.chdir(Samus::CONFIG_PATH) { system "git clone #{ARGV.shift}" }
|
12
|
+
exit
|
13
|
+
when 'update'
|
14
|
+
Samus.config_paths.each do |path|
|
15
|
+
Dir.chdir(path) do
|
16
|
+
if File.directory?('.git')
|
17
|
+
puts "[I] Updating #{path}"
|
18
|
+
system 'git pull'
|
19
|
+
else
|
20
|
+
puts "[S] Skipping non-Git directory #{path}"
|
21
|
+
end
|
20
22
|
end
|
21
23
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
exit
|
25
|
+
when 'show-cmd'
|
26
|
+
stage = ARGV.shift
|
27
|
+
if stage
|
28
|
+
name = ARGV.shift
|
29
|
+
if name
|
30
|
+
Samus::Command.new(stage, name).show_help
|
31
|
+
else
|
32
|
+
Samus::Command.list_commands(stage)
|
33
|
+
end
|
30
34
|
else
|
31
|
-
Samus::Command.list_commands
|
35
|
+
Samus::Command.list_commands
|
32
36
|
end
|
33
|
-
|
34
|
-
|
37
|
+
exit
|
38
|
+
when 'publish', 'push'
|
39
|
+
Samus::Publisher
|
40
|
+
when 'build'
|
41
|
+
Samus::Builder
|
35
42
|
end
|
36
|
-
exit
|
37
|
-
when 'publish', 'push'; Samus::Publisher
|
38
|
-
when 'build'; Samus::Builder
|
39
|
-
end
|
40
43
|
|
41
44
|
dry_run = false
|
42
45
|
zip_release = true
|
43
46
|
outfile = nil
|
44
|
-
|
47
|
+
options = OptionParser.new do |opts|
|
45
48
|
opts.banner = "Usage: samus publish [options] <directory> [directory ...]\n"
|
46
49
|
opts.banner += " samus build [options] <version> [build.json]\n"
|
47
50
|
opts.banner += " samus show-cmd [stage] [name]\n"
|
48
51
|
|
49
|
-
opts.separator
|
50
|
-
opts.separator
|
51
|
-
opts.on(
|
52
|
+
opts.separator ''
|
53
|
+
opts.separator 'Options:'
|
54
|
+
opts.on('--dry-run', "Print commands, don't run them") do |_v|
|
52
55
|
dry_run = true
|
53
56
|
end
|
54
57
|
if command == Samus::Builder
|
55
|
-
opts.on(
|
58
|
+
opts.on('--[no-]zip', 'Zip release directory') do |zip|
|
56
59
|
zip_release = zip
|
57
60
|
end
|
58
|
-
opts.on(
|
61
|
+
opts.on('-o FILE', '--output', 'The file (no extension) to generate') do |file|
|
59
62
|
outfile = file
|
60
63
|
end
|
61
64
|
end
|
62
65
|
end
|
63
|
-
|
66
|
+
options.parse!
|
64
67
|
|
65
68
|
if command == Samus::Publisher
|
66
69
|
ARGV.each do |dir|
|
67
|
-
|
70
|
+
raise "Aborting due to missing path #{dir}" unless File.exist?(dir)
|
68
71
|
end
|
69
72
|
|
70
73
|
ARGV.each do |dir|
|
@@ -78,9 +81,9 @@ if command == Samus::Publisher
|
|
78
81
|
end
|
79
82
|
end
|
80
83
|
elsif command == Samus::Builder
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
+
ver = ARGV.shift
|
85
|
+
raise 'Missing version' if ver.nil?
|
86
|
+
Samus::Builder.build_version = ver.sub(/^v/, '')
|
84
87
|
|
85
88
|
(ARGV.empty? ? ['samus.json'] : ARGV).each do |file|
|
86
89
|
command.new(file).build(dry_run, zip_release, outfile)
|
data/lib/samus/action.rb
CHANGED
@@ -12,7 +12,9 @@ module Samus
|
|
12
12
|
@arguments = opts[:arguments] || {}
|
13
13
|
end
|
14
14
|
|
15
|
-
def stage
|
15
|
+
def stage
|
16
|
+
raise NotImplementedError, 'action must define stage'
|
17
|
+
end
|
16
18
|
|
17
19
|
def load(opts = {})
|
18
20
|
opts.each do |key, value|
|
@@ -32,10 +34,10 @@ module Samus
|
|
32
34
|
|
33
35
|
def command_options
|
34
36
|
{
|
35
|
-
:
|
36
|
-
:
|
37
|
-
:
|
38
|
-
:
|
37
|
+
arguments: @creds ? @arguments.merge(@creds.load) : @arguments,
|
38
|
+
files: @files,
|
39
|
+
dry_run: @dry_run,
|
40
|
+
allow_fail: @allow_fail
|
39
41
|
}
|
40
42
|
end
|
41
43
|
|
@@ -54,7 +56,7 @@ module Samus
|
|
54
56
|
attr_writer :files
|
55
57
|
|
56
58
|
def arguments=(args)
|
57
|
-
args.each {|k, v| @arguments[k] = v }
|
59
|
+
args.each { |k, v| @arguments[k] = v }
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
data/lib/samus/build_action.rb
CHANGED
@@ -10,15 +10,15 @@ module Samus
|
|
10
10
|
|
11
11
|
attr_reader :publish
|
12
12
|
|
13
|
-
def stage
|
13
|
+
def stage
|
14
|
+
'build'
|
15
|
+
end
|
14
16
|
|
15
17
|
def command_options
|
16
|
-
super.merge(:
|
18
|
+
super.merge(pwd: @pwd)
|
17
19
|
end
|
18
20
|
|
19
|
-
|
20
|
-
@pwd = pwd
|
21
|
-
end
|
21
|
+
attr_writer :pwd
|
22
22
|
|
23
23
|
def run
|
24
24
|
return if @skip
|
@@ -26,21 +26,18 @@ module Samus
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def publish=(publish)
|
29
|
-
@publish = Array
|
29
|
+
@publish = publish.is_a?(Array) ? publish : [publish]
|
30
30
|
@publish.each do |publish_action|
|
31
31
|
publish_action['files'] ||= @files if @files
|
32
32
|
end
|
33
|
-
@publish
|
34
33
|
end
|
35
34
|
|
36
35
|
attr_reader :skip
|
37
36
|
def condition=(condition)
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
raise e
|
43
|
-
end
|
37
|
+
@skip = !eval(condition)
|
38
|
+
rescue StandardError => e
|
39
|
+
puts "[E] Condition failed on #{@raw_options['action']}"
|
40
|
+
raise e
|
44
41
|
end
|
45
42
|
end
|
46
43
|
end
|
data/lib/samus/builder.rb
CHANGED
@@ -5,25 +5,30 @@ require_relative './build_action'
|
|
5
5
|
|
6
6
|
module Samus
|
7
7
|
class Builder
|
8
|
-
RESTORE_FILE =
|
8
|
+
RESTORE_FILE = '.git/samus-restore'.freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_accessor :build_version
|
12
|
+
end
|
9
13
|
|
10
14
|
attr_reader :build_manifest
|
11
15
|
|
12
16
|
def initialize(build_manifest_file)
|
17
|
+
fdata = File.read(build_manifest_file).gsub('$version', version)
|
13
18
|
@stage = 'build'
|
14
19
|
@build_manifest_file = build_manifest_file
|
15
|
-
@build_manifest = JSON.parse(
|
20
|
+
@build_manifest = JSON.parse(fdata)
|
16
21
|
@manifest = {}
|
17
22
|
end
|
18
23
|
|
19
24
|
def build(dry_run = false, zip_release = true, outfile = nil)
|
20
25
|
orig_pwd = Dir.pwd
|
21
|
-
manifest = {'version' =>
|
22
|
-
build_branch = "samus-release/v#{
|
26
|
+
manifest = { 'version' => version, 'actions' => [] }
|
27
|
+
build_branch = "samus-release/v#{version}"
|
23
28
|
orig_branch = `git symbolic-ref -q --short HEAD`.chomp
|
24
29
|
|
25
|
-
if `git diff --shortstat 2> /dev/null | tail -n1` !=
|
26
|
-
Samus.error
|
30
|
+
if `git diff --shortstat 2> /dev/null | tail -n1` != ''
|
31
|
+
Samus.error 'Repository is dirty, it is too dangerous to continue.'
|
27
32
|
end
|
28
33
|
|
29
34
|
system "git checkout -qb #{build_branch} 2>/dev/null"
|
@@ -31,24 +36,25 @@ module Samus
|
|
31
36
|
|
32
37
|
Dir.mktmpdir do |build_dir|
|
33
38
|
actions.map do |action|
|
34
|
-
BuildAction.new(:
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
39
|
+
BuildAction.new(dry_run: dry_run, arguments: {
|
40
|
+
'_restore_file' => RESTORE_FILE,
|
41
|
+
'_build_dir' => build_dir,
|
42
|
+
'_build_branch' => build_branch,
|
43
|
+
'version' => version
|
44
|
+
}).load(action)
|
40
45
|
end.each do |action|
|
41
46
|
next if action.skip
|
42
47
|
action.run
|
43
48
|
manifest['actions'] += action.publish if action.publish
|
44
49
|
end
|
45
50
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
51
|
+
unless dry_run
|
52
|
+
Dir.chdir(build_dir) do
|
53
|
+
generate_manifest(manifest)
|
54
|
+
generate_release(orig_pwd, zip_release, outfile)
|
55
|
+
end
|
56
|
+
end
|
50
57
|
end
|
51
|
-
|
52
58
|
ensure
|
53
59
|
restore_git_repo
|
54
60
|
system "git checkout -q #{orig_branch} 2>/dev/null"
|
@@ -64,7 +70,7 @@ module Samus
|
|
64
70
|
end
|
65
71
|
|
66
72
|
def generate_release(orig_pwd, zip_release = true, outfile = nil)
|
67
|
-
file = outfile || build_manifest['output'] || "release-v#{
|
73
|
+
file = outfile || build_manifest['output'] || "release-v#{version}"
|
68
74
|
file = File.join(orig_pwd, file) unless file[0] == '/'
|
69
75
|
file_is_zipped = file =~ /\.(tar\.gz|tgz)$/
|
70
76
|
if zip_release || file_is_zipped
|
@@ -86,10 +92,10 @@ module Samus
|
|
86
92
|
File.readlines(RESTORE_FILE).each do |line|
|
87
93
|
type, branch, commit = *line.split(/\s+/)
|
88
94
|
case type
|
89
|
-
when
|
95
|
+
when 'tag'
|
90
96
|
puts "[D] Removing tag #{branch}" if $DEBUG
|
91
97
|
system "git tag -d #{branch} >/dev/null"
|
92
|
-
when
|
98
|
+
when 'branch'
|
93
99
|
puts "[D] Restoring #{branch} to #{commit}" if $DEBUG
|
94
100
|
system "git checkout -q #{branch}"
|
95
101
|
system "git reset -q --hard #{commit}"
|
@@ -102,5 +108,9 @@ module Samus
|
|
102
108
|
def remove_restore_file
|
103
109
|
File.unlink(RESTORE_FILE) if File.file?(RESTORE_FILE)
|
104
110
|
end
|
111
|
+
|
112
|
+
def version
|
113
|
+
self.class.build_version
|
114
|
+
end
|
105
115
|
end
|
106
116
|
end
|
data/lib/samus/command.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Samus
|
2
2
|
class Command
|
3
3
|
class << self
|
4
|
-
|
4
|
+
attr_reader :command_paths
|
5
5
|
|
6
6
|
def list_commands(stage = nil)
|
7
7
|
display_commands(collect_commands(stage))
|
@@ -10,15 +10,17 @@ module Samus
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def display_commands(stages)
|
13
|
-
puts
|
14
|
-
puts
|
13
|
+
puts 'Commands:'
|
14
|
+
puts ''
|
15
15
|
stages.each do |type, commands|
|
16
16
|
puts "#{type}:"
|
17
|
-
puts
|
17
|
+
puts ''
|
18
18
|
commands.sort.each do |command|
|
19
|
-
puts(
|
19
|
+
puts(format(' * %<name>-20s%<desc>s',
|
20
|
+
name: command.name,
|
21
|
+
desc: command.help_text.split(/\r?\n/)[0]))
|
20
22
|
end
|
21
|
-
puts
|
23
|
+
puts ''
|
22
24
|
end
|
23
25
|
end
|
24
26
|
|
@@ -26,7 +28,7 @@ module Samus
|
|
26
28
|
stages = {}
|
27
29
|
command_paths.each do |path|
|
28
30
|
Dir.glob(File.join(path, '*', '*')).each do |dir|
|
29
|
-
type, name = *dir.split(File::SEPARATOR)[-2,2]
|
31
|
+
type, name = *dir.split(File::SEPARATOR)[-2, 2]
|
30
32
|
next if name =~ /\.md$/
|
31
33
|
next if stage && stage != type
|
32
34
|
(stages[type] ||= []).push(new(type, name))
|
@@ -36,7 +38,9 @@ module Samus
|
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
39
|
-
|
41
|
+
@command_paths = [File.expand_path(
|
42
|
+
File.join(File.dirname(__FILE__), '..', '..', 'commands')
|
43
|
+
)]
|
40
44
|
|
41
45
|
attr_reader :stage, :name
|
42
46
|
|
@@ -48,35 +52,34 @@ module Samus
|
|
48
52
|
|
49
53
|
def show_help
|
50
54
|
puts "#{stage.capitalize} Command: #{name}"
|
51
|
-
puts
|
55
|
+
puts ''
|
52
56
|
puts help_text
|
53
57
|
end
|
54
58
|
|
55
59
|
def help_text
|
56
|
-
@help_text ||= File.exist?(help_path) ? File.read(help_path) :
|
60
|
+
@help_text ||= File.exist?(help_path) ? File.read(help_path) : ''
|
57
61
|
end
|
58
62
|
|
59
63
|
def log_command(env = {}, arguments = [])
|
60
|
-
e = env.map {|k,v| k =~ /^(AWS|__)/ ? nil : "#{k}=#{v.inspect}" }.compact.join(
|
61
|
-
e
|
62
|
-
puts(
|
64
|
+
e = env.map { |k, v| k =~ /^(AWS|__)/ ? nil : "#{k}=#{v.inspect}" }.compact.join(' ')
|
65
|
+
e += ' ' unless e.empty?
|
66
|
+
puts('[C] ' + e + name + (arguments ? ' ' + arguments.join(' ') : ''))
|
63
67
|
end
|
64
68
|
|
65
69
|
def run(opts = {})
|
66
|
-
env = (opts[:arguments] || {}).
|
70
|
+
env = (opts[:arguments] || {}).each_with_object({}) { |(k, v), h| h["_#{k}"] = v; }
|
67
71
|
arguments = opts[:files] || []
|
68
72
|
dry_run = opts[:dry_run] || false
|
69
73
|
allow_fail = opts[:allow_fail] || false
|
70
74
|
pwd = opts[:pwd]
|
71
|
-
old_pwd = Dir.pwd
|
72
75
|
|
73
76
|
log_command(env, arguments)
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
report_error($?, allow_fail)
|
77
|
+
|
78
|
+
return if dry_run
|
79
|
+
exec_in_dir(pwd) do
|
80
|
+
system(env, @full_path + ' ' + (arguments ? arguments.join(' ') : ''))
|
79
81
|
end
|
82
|
+
report_error($CHILD_STATUS, allow_fail)
|
80
83
|
end
|
81
84
|
|
82
85
|
def <=>(other)
|
@@ -86,7 +89,7 @@ module Samus
|
|
86
89
|
private
|
87
90
|
|
88
91
|
def report_error(exit_code, allow_fail)
|
89
|
-
return if exit_code.to_i
|
92
|
+
return if exit_code.to_i.zero?
|
90
93
|
puts "[E] Last command failed with #{exit_code}#{allow_fail ? ' but allowFail=true' : ', exiting'}."
|
91
94
|
exit(exit_code.to_i) unless allow_fail
|
92
95
|
end
|
@@ -96,11 +99,15 @@ module Samus
|
|
96
99
|
end
|
97
100
|
|
98
101
|
def load_full_path
|
99
|
-
|
102
|
+
path = self.class.command_paths.find do |ipath|
|
103
|
+
File.exist?(File.join(ipath, stage, name))
|
104
|
+
end
|
105
|
+
|
106
|
+
if path
|
100
107
|
@full_path = File.join(path, stage, name)
|
101
108
|
else
|
102
|
-
Samus.error "Could not find command: #{name} "
|
103
|
-
|
109
|
+
Samus.error "Could not find command: #{name} " \
|
110
|
+
"(cmd_paths=#{self.class.command_paths.join(':')})"
|
104
111
|
end
|
105
112
|
end
|
106
113
|
|
data/lib/samus/credentials.rb
CHANGED
@@ -2,7 +2,11 @@ module Samus
|
|
2
2
|
class Credentials
|
3
3
|
attr_reader :name
|
4
4
|
|
5
|
-
|
5
|
+
class << self
|
6
|
+
attr_accessor :credentials
|
7
|
+
end
|
8
|
+
|
9
|
+
@credentials = {}
|
6
10
|
|
7
11
|
def initialize(name)
|
8
12
|
@name = name
|
@@ -10,7 +14,7 @@ module Samus
|
|
10
14
|
end
|
11
15
|
|
12
16
|
def load
|
13
|
-
return
|
17
|
+
return self.class.credentials[name] if self.class.credentials[name]
|
14
18
|
|
15
19
|
hsh = {}
|
16
20
|
data = nil
|
@@ -28,7 +32,7 @@ module Samus
|
|
28
32
|
hsh["_creds_#{name.strip.downcase}"] = value.strip
|
29
33
|
end
|
30
34
|
|
31
|
-
|
35
|
+
self.class.credentials[name] = hsh
|
32
36
|
end
|
33
37
|
|
34
38
|
private
|
@@ -41,8 +45,8 @@ module Samus
|
|
41
45
|
return
|
42
46
|
end
|
43
47
|
end
|
44
|
-
Samus.error "Could not find credential: #{name} "
|
45
|
-
|
48
|
+
Samus.error "Could not find credential: #{name} " \
|
49
|
+
"(SAMUS_CONFIG_PATH=#{Samus.config_paths.join(':')})"
|
46
50
|
end
|
47
51
|
end
|
48
|
-
end
|
52
|
+
end
|
data/lib/samus/publish_action.rb
CHANGED
data/lib/samus/publisher.rb
CHANGED
@@ -12,12 +12,11 @@ module Samus
|
|
12
12
|
def publish(dry_run = false)
|
13
13
|
Dir.chdir(@dir) do
|
14
14
|
actions.map do |action|
|
15
|
-
PublishAction.new(
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
15
|
+
PublishAction.new(
|
16
|
+
dry_run: dry_run,
|
17
|
+
arguments: { 'version' => manifest['version'] }
|
18
|
+
).load(action)
|
19
|
+
end.each(&:run)
|
21
20
|
end
|
22
21
|
end
|
23
22
|
|
data/lib/samus/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: samus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Loren Segal
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: lsegal@soen.ca
|
@@ -18,8 +18,10 @@ extensions: []
|
|
18
18
|
extra_rdoc_files: []
|
19
19
|
files:
|
20
20
|
- CHANGELOG.md
|
21
|
+
- Dockerfile
|
21
22
|
- LICENSE
|
22
23
|
- README.md
|
24
|
+
- Rakefile
|
23
25
|
- bin/samus
|
24
26
|
- commands/build/archive-git-full
|
25
27
|
- commands/build/archive-git-full.help.md
|
@@ -105,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
107
|
version: '0'
|
106
108
|
requirements: []
|
107
109
|
rubyforge_project:
|
108
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.6.14.1
|
109
111
|
signing_key:
|
110
112
|
specification_version: 4
|
111
113
|
summary: Samus helps you release Open Source Software.
|