anvil-core 0.0.1.pre.alpha.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -2
- data/VERSION +1 -1
- data/lib/anvil.rb +3 -0
- data/lib/anvil/assure.rb +3 -0
- data/lib/anvil/assures/directory_assure.rb +3 -0
- data/lib/anvil/assures/file_assure.rb +3 -0
- data/lib/anvil/bundler.rb +8 -0
- data/lib/anvil/cli.rb +11 -0
- data/lib/anvil/config.rb +3 -0
- data/lib/anvil/config/class_methods.rb +3 -0
- data/lib/anvil/parser.rb +13 -4
- data/lib/anvil/rubygems.rb +9 -0
- data/lib/anvil/task.rb +9 -1
- data/lib/anvil/task/class_methods.rb +2 -0
- data/lib/anvil/task/naming.rb +5 -0
- data/lib/anvil/task/options.rb +8 -2
- data/lib/anvil/task/repositories.rb +3 -0
- data/lib/anvil/task_manager.rb +30 -3
- data/lib/tasks/gem/bump_task.rb +8 -3
- data/lib/tasks/help_task.rb +1 -1
- data/spec/lib/anvil/parser_spec.rb +17 -0
- data/spec/lib/anvil/task/options_spec.rb +55 -13
- data/spec/lib/anvil/task_manager_spec.rb +35 -0
- data/spec/lib/tasks/gem/bump_task_spec.rb +14 -4
- metadata +25 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ec595224814976ccada12c8a43dc3041bb43cca
|
4
|
+
data.tar.gz: d31891f5299ddd11c15e30317eb33ac10e737ab8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e86c8cef457da7957997a36c0cf976e5181e0a3e45789036ec6454ebf35f0b557b6c73cf98f54a8b0dc81ab8b4244f2c41cc2ea8293ce510c79185434369fd2
|
7
|
+
data.tar.gz: c55729de1caf67c05e1a4fe5e3d5f96a0dae0e68c0f65d29f607e9ce2db686189707d3f8ac559f836edae4c062347a1a84c3db1c82b6393a8711f134949c91dd
|
data/README.md
CHANGED
@@ -4,12 +4,11 @@ Anvil is a tool for the real craftsmen to build its own tools.
|
|
4
4
|
|
5
5
|
[![Build Status](https://travis-ci.org/anvil-src/anvil-core.png?branch=master)](https://travis-ci.org/anvil-src/anvil-core)
|
6
6
|
|
7
|
-
|
8
7
|
Anvil tries to be a framework for building command line applications
|
9
8
|
to automate tedious tasks like apps or gems releasing process. Pull
|
10
9
|
request updating, etc.
|
11
10
|
|
12
|
-
It's purpose is to provide an easy to use Object Oriented
|
11
|
+
It's purpose is to provide an easy to use Object Oriented toolset
|
13
12
|
that developers can use to automate par of its day to day work.
|
14
13
|
|
15
14
|
Things like:
|
@@ -19,6 +18,14 @@ Things like:
|
|
19
18
|
* Doing complex build which involve several projects and branches.
|
20
19
|
* Any other stuff you might want.
|
21
20
|
|
21
|
+
## Sample tasks
|
22
|
+
|
23
|
+
You can find some sample tasks in the samples directory, if you want to give them a try, clone this project and do:
|
24
|
+
|
25
|
+
```shell
|
26
|
+
ANVIL_TASKS_DIR=./sample bin/anvil
|
27
|
+
```
|
28
|
+
|
22
29
|
## Installation
|
23
30
|
|
24
31
|
To install it:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
data/lib/anvil.rb
CHANGED
data/lib/anvil/assure.rb
CHANGED
data/lib/anvil/cli.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'anvil/task_manager'
|
2
4
|
require 'tasks/help_task'
|
3
5
|
|
4
6
|
module Anvil
|
7
|
+
# Anvil command line interface
|
5
8
|
class Cli
|
6
9
|
HELP = <<-HELP
|
7
10
|
Anvil is a tool for making your life easier.
|
@@ -9,6 +12,10 @@ Anvil is a tool for making your life easier.
|
|
9
12
|
Available tasks:
|
10
13
|
HELP
|
11
14
|
|
15
|
+
# Runs a task or prints its help if it needs arguments
|
16
|
+
#
|
17
|
+
# @param argv [Array] Command line arguments
|
18
|
+
# @return [Object, nil] Anything the task returns
|
12
19
|
def run(argv)
|
13
20
|
load_tasks
|
14
21
|
|
@@ -23,6 +30,10 @@ HELP
|
|
23
30
|
Anvil::TaskManager.load_tasks
|
24
31
|
end
|
25
32
|
|
33
|
+
# Builds a task and prepares it to run
|
34
|
+
#
|
35
|
+
# @param argv [Array] Command line arguments
|
36
|
+
# @return [Anvil::Task] A task ready to run
|
26
37
|
def build_task(argv)
|
27
38
|
arguments = argv.dup
|
28
39
|
task_name = arguments.shift
|
data/lib/anvil/config.rb
CHANGED
data/lib/anvil/parser.rb
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'anvil/task'
|
4
|
+
|
1
5
|
module Anvil
|
6
|
+
# Parser for anvil command line arguments and options
|
2
7
|
class Parser < OptionParser
|
3
8
|
attr_accessor :options
|
4
9
|
attr_accessor :task
|
@@ -7,10 +12,9 @@ module Anvil
|
|
7
12
|
@options ||= {}
|
8
13
|
end
|
9
14
|
|
10
|
-
def arguments(args =
|
11
|
-
@arguments
|
12
|
-
@arguments
|
13
|
-
@arguments.compact
|
15
|
+
def arguments(args = nil)
|
16
|
+
return @arguments if @arguments
|
17
|
+
@arguments = [args.presence].compact.flatten
|
14
18
|
end
|
15
19
|
|
16
20
|
def banner
|
@@ -30,5 +34,10 @@ module Anvil
|
|
30
34
|
|
31
35
|
message
|
32
36
|
end
|
37
|
+
|
38
|
+
def from(name)
|
39
|
+
task_klass = Anvil::Task.from_name(name)
|
40
|
+
instance_eval(&task_klass.parser_block) if task_klass.parser_block
|
41
|
+
end
|
33
42
|
end
|
34
43
|
end
|
data/lib/anvil/rubygems.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'cocaine'
|
2
4
|
|
3
5
|
module Anvil
|
6
|
+
# Rubygems wrapper for common commands
|
4
7
|
class Rubygems
|
5
8
|
class << self
|
9
|
+
# Runs gem build for a gemspec
|
10
|
+
#
|
11
|
+
# @param gemspec [String] The gemspec's filename
|
6
12
|
def build(gemspec)
|
7
13
|
line = Cocaine::CommandLine.new 'gem', 'build :gemspec'
|
8
14
|
|
9
15
|
line.run gemspec: gemspec
|
10
16
|
end
|
11
17
|
|
18
|
+
# Runs gem install for a gem file
|
19
|
+
#
|
20
|
+
# @param gem_file [String] The gems' filename
|
12
21
|
def install(gem_file)
|
13
22
|
line = Cocaine::CommandLine.new 'gem', 'install :gem_file'
|
14
23
|
|
data/lib/anvil/task.rb
CHANGED
@@ -1,8 +1,11 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'anvil/task/class_methods'
|
2
4
|
require 'anvil/task/naming'
|
3
5
|
require 'anvil/task/options'
|
4
6
|
|
5
7
|
module Anvil
|
8
|
+
# Common class for all tasks
|
6
9
|
class Task
|
7
10
|
extend ClassMethods
|
8
11
|
extend Naming
|
@@ -14,11 +17,16 @@ module Anvil
|
|
14
17
|
@options = options
|
15
18
|
end
|
16
19
|
|
20
|
+
# Runs a task and its callbacks if the assures are OK
|
21
|
+
#
|
22
|
+
# @return [Object, nil] anything the task might return
|
17
23
|
def run
|
18
24
|
if run_assures
|
19
25
|
run_before_callbacks
|
20
|
-
run_task
|
26
|
+
task_return_value = run_task
|
21
27
|
run_after_callbacks
|
28
|
+
|
29
|
+
task_return_value
|
22
30
|
end
|
23
31
|
end
|
24
32
|
|
data/lib/anvil/task/naming.rb
CHANGED
@@ -2,11 +2,16 @@ require 'active_support/core_ext/string'
|
|
2
2
|
|
3
3
|
module Anvil
|
4
4
|
class Task
|
5
|
+
# Methods for inferring task class names from cli arguments
|
5
6
|
module Naming
|
6
7
|
def get_namespace(task_name)
|
7
8
|
task_name.to_s.split ':'
|
8
9
|
end
|
9
10
|
|
11
|
+
# Returns a ruby class from a CLI name
|
12
|
+
#
|
13
|
+
# @param task_name [String] the CLI name for a task e.g. anvil:build
|
14
|
+
# @return [Class] an {Anvil::Task} descendant
|
10
15
|
def from_name(task_name)
|
11
16
|
namespaced_task = get_namespace task_name
|
12
17
|
camelized_task = "#{namespaced_task.pop}_task".camelize
|
data/lib/anvil/task/options.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'anvil/parser'
|
2
4
|
|
3
5
|
module Anvil
|
4
6
|
class Task
|
7
|
+
# Cli options parsing definition
|
5
8
|
module Options
|
9
|
+
attr_reader :parser_block
|
10
|
+
|
6
11
|
def help
|
7
12
|
parser.help
|
8
13
|
end
|
9
14
|
|
10
15
|
def parser(&block)
|
11
|
-
@
|
16
|
+
@parser_block = block
|
17
|
+
@parser ||= build_parser(&block)
|
12
18
|
end
|
13
19
|
|
14
|
-
def
|
20
|
+
def build_parser(&block)
|
15
21
|
parser = Anvil::Parser.new
|
16
22
|
parser.task = self
|
17
23
|
configure_parser(parser, &block)
|
data/lib/anvil/task_manager.rb
CHANGED
@@ -1,43 +1,70 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
1
4
|
require 'anvil/config'
|
2
5
|
require 'anvil/task'
|
3
|
-
require '
|
6
|
+
require 'rugged'
|
4
7
|
|
5
8
|
module Anvil
|
9
|
+
# Manage loading and finding anvil tasks
|
6
10
|
module TaskManager
|
7
11
|
@tasks_loaded = false
|
8
12
|
|
13
|
+
# Loads all known anvil tasks
|
9
14
|
def self.load_tasks
|
10
15
|
all_files.each { |file| load(file) }
|
11
16
|
@tasks_loaded = true
|
12
17
|
end
|
13
18
|
|
19
|
+
# @return [Array] all the core anvil tasks
|
14
20
|
def self.files_from_anvil
|
15
21
|
files_from_path(File.expand_path('../..', __FILE__))
|
16
22
|
end
|
17
23
|
|
24
|
+
# @return [Array] all possible anvil tasks in this project
|
18
25
|
def self.files_from_current_project
|
19
26
|
path = current_project_path + '/lib/anvil/'
|
20
27
|
files_from_path(path)
|
21
28
|
end
|
22
29
|
|
30
|
+
# @return [String] top level dir if this is a git managed project
|
23
31
|
def self.current_project_path
|
24
|
-
|
32
|
+
Rugged::Repository.discover(ENV['PWD']).gsub('.git/', '')
|
33
|
+
rescue Rugged::RepositoryError
|
34
|
+
''
|
25
35
|
end
|
26
36
|
|
37
|
+
# @param path [String] a path to glob their anvil tasks
|
38
|
+
# @return [Array] all anvil tasks in the given path
|
27
39
|
def self.files_from_path(path)
|
28
40
|
Dir[path + '/tasks/**/*_task.rb']
|
29
41
|
end
|
30
42
|
|
43
|
+
# @return [Array] anvil tasks installed in gems
|
31
44
|
def self.files_from_gems
|
32
45
|
Gem.find_latest_files 'anvil/tasks/**/*_task.rb'
|
33
46
|
end
|
34
47
|
|
48
|
+
# @return [Array] anvil tasks in the specified dir
|
49
|
+
def self.files_from_env
|
50
|
+
if ENV['ANVIL_TASKS_DIR']
|
51
|
+
env_dir_list = ENV['ANVIL_TASKS_DIR'].split(':').join(',')
|
52
|
+
|
53
|
+
Dir["{#{env_dir_list}}/*_task.rb"]
|
54
|
+
else
|
55
|
+
[]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [Array] all known anvil task files
|
35
60
|
def self.all_files
|
36
|
-
[
|
61
|
+
[files_from_env,
|
62
|
+
files_from_anvil,
|
37
63
|
files_from_current_project,
|
38
64
|
files_from_gems].compact.reduce(&:+).uniq
|
39
65
|
end
|
40
66
|
|
67
|
+
# @return [Array] all known {Anvil::Task} desdendants
|
41
68
|
def self.all_tasks
|
42
69
|
load_tasks unless @tasks_loaded
|
43
70
|
::Anvil::Task.descendants
|
data/lib/tasks/gem/bump_task.rb
CHANGED
@@ -5,13 +5,18 @@ class Gem::BumpTask < Anvil::Task
|
|
5
5
|
description "Bumps a gem's version"
|
6
6
|
|
7
7
|
parser do
|
8
|
-
arguments %w
|
8
|
+
arguments %w(term)
|
9
|
+
|
10
|
+
on('-p', '--[no-]persist', 'Commit tag and push the changes') do |p|
|
11
|
+
options[:persist] = p
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
attr_reader :term
|
12
16
|
|
13
17
|
def initialize(term, options = {})
|
14
|
-
@term = term
|
18
|
+
@term = term.to_sym
|
19
|
+
@options = options
|
15
20
|
end
|
16
21
|
|
17
22
|
def task
|
@@ -58,7 +63,7 @@ class Gem::BumpTask < Anvil::Task
|
|
58
63
|
f.close
|
59
64
|
end
|
60
65
|
|
61
|
-
commit_and_tag version
|
66
|
+
commit_and_tag version if options[:persist]
|
62
67
|
end
|
63
68
|
|
64
69
|
def prepare_repo
|
data/lib/tasks/help_task.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe Anvil::Parser do
|
6
|
+
let(:task) { DummyTask }
|
7
|
+
|
8
|
+
describe '#from' do
|
9
|
+
before do
|
10
|
+
task.stub(:parser_block).and_return(proc { 'opts' })
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'inherits parser block from another task' do
|
14
|
+
expect(subject.from('dummy')).to eq('opts')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,33 +1,75 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'anvil/task/options'
|
3
5
|
|
4
6
|
describe Anvil::Task::Options do
|
5
|
-
let(:klass)
|
7
|
+
let(:klass) do
|
8
|
+
Class.new do
|
9
|
+
def self.description
|
10
|
+
'Dummy task'
|
11
|
+
end
|
12
|
+
extend Anvil::Task::Options
|
13
|
+
end
|
14
|
+
end
|
6
15
|
|
7
|
-
describe '.
|
16
|
+
describe '.build_parser' do
|
8
17
|
it 'returns an instance of Anvil::Parser' do
|
9
|
-
expect(klass.
|
18
|
+
expect(klass.build_parser).to be_kind_of(Anvil::Parser)
|
10
19
|
end
|
11
20
|
end
|
12
21
|
|
13
22
|
describe '.parse_options!' do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
23
|
+
context 'with more than one argument and options' do
|
24
|
+
before do
|
25
|
+
klass.class_eval do
|
26
|
+
parser do
|
27
|
+
arguments %w(arg1 arg2)
|
28
|
+
on('-i', '--install') do |i|
|
29
|
+
options[:install] = i
|
30
|
+
end
|
19
31
|
end
|
20
32
|
end
|
21
33
|
end
|
34
|
+
let(:arguments) { %w(arg1 arg2 --install) }
|
35
|
+
let(:expected) { ['arg1', 'arg2', { install: true }] }
|
36
|
+
|
37
|
+
it 'returns the correct arguments and options' do
|
38
|
+
expect(klass.parse_options!(arguments)).to be_eql(expected)
|
39
|
+
end
|
22
40
|
end
|
23
41
|
|
24
|
-
|
42
|
+
context 'with one argument and options' do
|
43
|
+
before do
|
44
|
+
klass.class_eval do
|
45
|
+
parser do
|
46
|
+
arguments %w(arg1)
|
47
|
+
on('-i', '--install') do |i|
|
48
|
+
options[:install] = i
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
let(:arguments) { %w{arg1 --install} }
|
54
|
+
let(:expected) { ['arg1', { install: true }] }
|
25
55
|
|
26
|
-
|
27
|
-
|
56
|
+
it 'returns the correct arguments and options' do
|
57
|
+
expect(klass.parse_options!(arguments)).to be_eql(expected)
|
58
|
+
end
|
28
59
|
end
|
29
|
-
|
30
|
-
|
60
|
+
|
61
|
+
context 'only with one argument' do
|
62
|
+
let(:arguments) { %w(arg1) }
|
63
|
+
let(:expected) { arguments }
|
64
|
+
let(:parser_block) do
|
65
|
+
proc do
|
66
|
+
arguments %w(arg1)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'returns the correct arguments and options' do
|
71
|
+
expect(klass.parse_options!(arguments)).to be_eql(expected)
|
72
|
+
end
|
31
73
|
end
|
32
74
|
end
|
33
75
|
end
|
@@ -21,6 +21,33 @@ describe Anvil::TaskManager do
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
describe '.current_project_path' do
|
25
|
+
let(:pwd) { '/home/user/src/project/' }
|
26
|
+
context 'on a path managed by git' do
|
27
|
+
before do
|
28
|
+
Rugged::Repository.stub(:discover)
|
29
|
+
.and_return(pwd + '.git/')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'returns the repo workdir' do
|
33
|
+
expect(described_class.current_project_path)
|
34
|
+
.to eq(pwd)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context 'on a path not managed by git' do
|
39
|
+
before do
|
40
|
+
Rugged::Repository.stub(:discover)
|
41
|
+
.and_raise(Rugged::RepositoryError)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns an empty string' do
|
45
|
+
expect(described_class.current_project_path)
|
46
|
+
.to be_empty
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
24
51
|
describe '.files_from_gems' do
|
25
52
|
it 'asks Gem to return the anvil tasks' do
|
26
53
|
expect(Gem).to receive(:find_latest_files).with('anvil/tasks/**/*_task.rb')
|
@@ -28,6 +55,14 @@ describe Anvil::TaskManager do
|
|
28
55
|
end
|
29
56
|
end
|
30
57
|
|
58
|
+
describe '.files_from_env' do
|
59
|
+
context 'with empty env variable' do
|
60
|
+
it 'returns an empty array' do
|
61
|
+
expect(described_class.files_from_env).to eq([])
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
31
66
|
describe '.load_tasks' do
|
32
67
|
let(:all_files) { %w[file1 file2] }
|
33
68
|
|
@@ -4,7 +4,7 @@ require 'git'
|
|
4
4
|
require 'anvil'
|
5
5
|
|
6
6
|
describe Gem::BumpTask do
|
7
|
-
subject { Gem::BumpTask.new
|
7
|
+
subject { Gem::BumpTask.new 'major' }
|
8
8
|
|
9
9
|
describe '#task' do
|
10
10
|
before { subject.stub(:read_version).and_return('2.0.0') }
|
@@ -18,9 +18,19 @@ describe Gem::BumpTask do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
describe '#write_version' do
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
context 'when persisting' do
|
22
|
+
subject { Gem::BumpTask.new 'major', persist: true }
|
23
|
+
it 'writes the file and push the changes' do
|
24
|
+
expect(subject).to receive(:version_file).with('w+')
|
25
|
+
expect(subject).to receive(:commit_and_tag)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when no persisting' do
|
30
|
+
it 'writes the file but does not persist the change in git' do
|
31
|
+
expect(subject).to receive(:version_file).with('w+')
|
32
|
+
expect(subject).to_not receive(:commit_and_tag)
|
33
|
+
end
|
24
34
|
end
|
25
35
|
|
26
36
|
after { subject.send :write_version, '2.0.0' }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: anvil-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fran Casas
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: git
|
@@ -31,14 +31,14 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 4.0.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 4.0.0
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: mixlib-config
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,6 +81,20 @@ dependencies:
|
|
81
81
|
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '1.3'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rugged
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0.19'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0.19'
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: bundler
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,7 +153,7 @@ dependencies:
|
|
139
153
|
version: '0.18'
|
140
154
|
description: Anvil is a tool for building tools.
|
141
155
|
email:
|
142
|
-
- nflamel@
|
156
|
+
- nflamel@gmail.com
|
143
157
|
- jondeandres@gmail.com
|
144
158
|
executables:
|
145
159
|
- anvil
|
@@ -156,6 +170,7 @@ files:
|
|
156
170
|
- lib/anvil/assure.rb
|
157
171
|
- lib/anvil/assures/directory_assure.rb
|
158
172
|
- lib/anvil/assures/file_assure.rb
|
173
|
+
- lib/anvil/bundler.rb
|
159
174
|
- lib/anvil/cli.rb
|
160
175
|
- lib/anvil/config.rb
|
161
176
|
- lib/anvil/config/class_methods.rb
|
@@ -181,6 +196,7 @@ files:
|
|
181
196
|
- spec/lib/anvil/assures/file_assure_spec.rb
|
182
197
|
- spec/lib/anvil/cli_spec.rb
|
183
198
|
- spec/lib/anvil/config_spec.rb
|
199
|
+
- spec/lib/anvil/parser_spec.rb
|
184
200
|
- spec/lib/anvil/task/naming_spec.rb
|
185
201
|
- spec/lib/anvil/task/options_spec.rb
|
186
202
|
- spec/lib/anvil/task_manager_spec.rb
|
@@ -216,12 +232,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
232
|
version: '0'
|
217
233
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
234
|
requirements:
|
219
|
-
- - "
|
235
|
+
- - ">="
|
220
236
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
237
|
+
version: '0'
|
222
238
|
requirements: []
|
223
239
|
rubyforge_project:
|
224
|
-
rubygems_version: 2.2.
|
240
|
+
rubygems_version: 2.2.2
|
225
241
|
signing_key:
|
226
242
|
specification_version: 4
|
227
243
|
summary: Anvil is a tool for building tools. A tool that a real craftsmen uses to
|
@@ -232,6 +248,7 @@ test_files:
|
|
232
248
|
- spec/lib/anvil/assures/file_assure_spec.rb
|
233
249
|
- spec/lib/anvil/cli_spec.rb
|
234
250
|
- spec/lib/anvil/config_spec.rb
|
251
|
+
- spec/lib/anvil/parser_spec.rb
|
235
252
|
- spec/lib/anvil/task/naming_spec.rb
|
236
253
|
- spec/lib/anvil/task/options_spec.rb
|
237
254
|
- spec/lib/anvil/task_manager_spec.rb
|