aws-cft-tools 0.1.0
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 +7 -0
- data/.editorconfig +10 -0
- data/.gitignore +52 -0
- data/.rspec +2 -0
- data/.rubocop.yml +19 -0
- data/.travis.yml +5 -0
- data/.yardopts +1 -0
- data/BEST-PRACTICES.md +136 -0
- data/CONTRIBUTING.md +38 -0
- data/Gemfile +8 -0
- data/LICENSE +15 -0
- data/README.md +118 -0
- data/Rakefile +17 -0
- data/USAGE.adoc +404 -0
- data/aws-cft-tools.gemspec +53 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/code.json +24 -0
- data/exe/aws-cft +176 -0
- data/lib/aws-cft-tools.rb +3 -0
- data/lib/aws_cft_tools.rb +31 -0
- data/lib/aws_cft_tools/aws_enumerator.rb +55 -0
- data/lib/aws_cft_tools/change.rb +66 -0
- data/lib/aws_cft_tools/client.rb +84 -0
- data/lib/aws_cft_tools/client/base.rb +40 -0
- data/lib/aws_cft_tools/client/cft.rb +93 -0
- data/lib/aws_cft_tools/client/cft/changeset_management.rb +109 -0
- data/lib/aws_cft_tools/client/cft/stack_management.rb +85 -0
- data/lib/aws_cft_tools/client/ec2.rb +136 -0
- data/lib/aws_cft_tools/client/templates.rb +84 -0
- data/lib/aws_cft_tools/deletion_change.rb +43 -0
- data/lib/aws_cft_tools/dependency_tree.rb +109 -0
- data/lib/aws_cft_tools/dependency_tree/nodes.rb +71 -0
- data/lib/aws_cft_tools/dependency_tree/variables.rb +37 -0
- data/lib/aws_cft_tools/errors.rb +25 -0
- data/lib/aws_cft_tools/runbook.rb +166 -0
- data/lib/aws_cft_tools/runbook/report.rb +30 -0
- data/lib/aws_cft_tools/runbooks.rb +16 -0
- data/lib/aws_cft_tools/runbooks/common/changesets.rb +30 -0
- data/lib/aws_cft_tools/runbooks/common/templates.rb +38 -0
- data/lib/aws_cft_tools/runbooks/deploy.rb +107 -0
- data/lib/aws_cft_tools/runbooks/deploy/reporting.rb +50 -0
- data/lib/aws_cft_tools/runbooks/deploy/stacks.rb +109 -0
- data/lib/aws_cft_tools/runbooks/deploy/templates.rb +37 -0
- data/lib/aws_cft_tools/runbooks/deploy/threading.rb +37 -0
- data/lib/aws_cft_tools/runbooks/diff.rb +28 -0
- data/lib/aws_cft_tools/runbooks/diff/context.rb +86 -0
- data/lib/aws_cft_tools/runbooks/diff/context/reporting.rb +87 -0
- data/lib/aws_cft_tools/runbooks/hosts.rb +43 -0
- data/lib/aws_cft_tools/runbooks/images.rb +43 -0
- data/lib/aws_cft_tools/runbooks/init.rb +86 -0
- data/lib/aws_cft_tools/runbooks/retract.rb +69 -0
- data/lib/aws_cft_tools/runbooks/retract/templates.rb +44 -0
- data/lib/aws_cft_tools/runbooks/stacks.rb +43 -0
- data/lib/aws_cft_tools/stack.rb +83 -0
- data/lib/aws_cft_tools/template.rb +177 -0
- data/lib/aws_cft_tools/template/dsl_context.rb +14 -0
- data/lib/aws_cft_tools/template/file_system.rb +62 -0
- data/lib/aws_cft_tools/template/metadata.rb +144 -0
- data/lib/aws_cft_tools/template/properties.rb +129 -0
- data/lib/aws_cft_tools/template_set.rb +120 -0
- data/lib/aws_cft_tools/template_set/array_methods.rb +63 -0
- data/lib/aws_cft_tools/template_set/closure.rb +77 -0
- data/lib/aws_cft_tools/template_set/dependencies.rb +55 -0
- data/lib/aws_cft_tools/template_set/each_slice_state.rb +58 -0
- data/lib/aws_cft_tools/version.rb +8 -0
- data/rubycritic.reek +3 -0
- metadata +321 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 32c8025214a49ca0ed274d45c3c6ee266dcbfb71
|
4
|
+
data.tar.gz: 135e9ef53e1081cc471bf095dd3a5e218364162e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: bae7aae8cdc869ed5fcf53e9dd8e8419765d6ed475f8035ed482fbbdb9042a185df1323639a2263ef52e0169d0607a55ba11fe473eb0667a6327e4f28f016579
|
7
|
+
data.tar.gz: 8f06dceea86f02f3be1b3507a09da24d257484160437eb9d109c044965e3652084937bd6eadff37e7f64da92bf2534520ccc52a7aa17fdd599d2c560e71b9715
|
data/.editorconfig
ADDED
data/.gitignore
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
/.config
|
4
|
+
/coverage/
|
5
|
+
/InstalledFiles
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/spec/examples.txt
|
9
|
+
/test/tmp/
|
10
|
+
/test/version_tmp/
|
11
|
+
/tmp/
|
12
|
+
|
13
|
+
# Used by dotenv library to load environment variables.
|
14
|
+
# .env
|
15
|
+
|
16
|
+
## Specific to RubyMotion:
|
17
|
+
.dat*
|
18
|
+
.repl_history
|
19
|
+
build/
|
20
|
+
*.bridgesupport
|
21
|
+
build-iPhoneOS/
|
22
|
+
build-iPhoneSimulator/
|
23
|
+
|
24
|
+
## Specific to RubyMotion (use of CocoaPods):
|
25
|
+
#
|
26
|
+
# We recommend against adding the Pods directory to your .gitignore. However
|
27
|
+
# you should judge for yourself, the pros and cons are mentioned at:
|
28
|
+
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
|
29
|
+
#
|
30
|
+
# vendor/Pods/
|
31
|
+
|
32
|
+
## Documentation cache and generated files:
|
33
|
+
/.yardoc/
|
34
|
+
/_yardoc/
|
35
|
+
/doc/
|
36
|
+
/rdoc/
|
37
|
+
|
38
|
+
## Environment normalization:
|
39
|
+
/.bundle/
|
40
|
+
/vendor/bundle
|
41
|
+
/lib/bundler/man/
|
42
|
+
|
43
|
+
# for a library or gem, you might want to ignore these files since the code is
|
44
|
+
# intended to run in multiple environments; otherwise, check them in:
|
45
|
+
Gemfile.lock
|
46
|
+
.ruby-version
|
47
|
+
.ruby-gemset
|
48
|
+
|
49
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
50
|
+
.rvmrc
|
51
|
+
|
52
|
+
.rspec_status
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
require: rubocop-rspec
|
3
|
+
|
4
|
+
Metrics/BlockLength:
|
5
|
+
Exclude:
|
6
|
+
- 'aws-cft-tools.gemspec'
|
7
|
+
- 'example/**/*'
|
8
|
+
- 'exe/aws-cft'
|
9
|
+
- 'spec/**/*'
|
10
|
+
|
11
|
+
Metrics/LineLength:
|
12
|
+
Max: 108
|
13
|
+
Details: >-
|
14
|
+
Long lines require scrolling left/right when reviewing in GitHub. Keep lines below
|
15
|
+
108 characters to avoid this. Be kind to your fellow reviewers.
|
16
|
+
|
17
|
+
Style/FileName:
|
18
|
+
Exclude:
|
19
|
+
- 'lib/aws-cft-tools.rb'
|
data/.travis.yml
ADDED
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
lib/**/*.rb - README.md CONTRIBUTING.md LICENSE BEST-PRACTICES.md USAGE.adoc
|
data/BEST-PRACTICES.md
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
# Best Practices
|
2
|
+
|
3
|
+
## Environment-Dependent Settings
|
4
|
+
|
5
|
+
It's common to use mappings to manage settings that depend on the deployment environment when using only
|
6
|
+
CloudFormation templates. When adding a new environment, the template has to be modified to accommodate the
|
7
|
+
new environment.
|
8
|
+
|
9
|
+
While we don't get away from this completely -- the template has to list the environment as an allowed
|
10
|
+
value -- the goal is to minimize the changes to templates when deploying to a new environment.
|
11
|
+
|
12
|
+
By putting environment-dependent settings in a YAML parameters file that sits alongside the CloudFormation
|
13
|
+
template, we can leverage the YAML dictionary merging features to extract common settings across environments.
|
14
|
+
This lets us avoid
|
15
|
+
[magic numbers](<https://en.wikipedia.org/wiki/Magic_number_(programming)#Unnamed_numerical_constants>)
|
16
|
+
as well.
|
17
|
+
|
18
|
+
For example, if we have a template setting up an auto scaling group with instance sizing dependent on
|
19
|
+
the environment, and with two AWS accounts (e.g., a lower and an upper account) and deployments in two
|
20
|
+
regions, we can create a parameters file like so:
|
21
|
+
|
22
|
+
```yaml
|
23
|
+
---
|
24
|
+
Lower: &Lower
|
25
|
+
InstanceType: m3.medium
|
26
|
+
Upper: &Upper
|
27
|
+
InstanceType: m4.large
|
28
|
+
USEast1: &USEast1
|
29
|
+
Foo: bar
|
30
|
+
USWest1: &USWest1
|
31
|
+
Foo: baz
|
32
|
+
|
33
|
+
Lower-us-east-1: &Lower-us-east-1
|
34
|
+
<<: *Lower
|
35
|
+
<<: *USEast1
|
36
|
+
AmiId: ami-abcdef12
|
37
|
+
Upper-us-east-1: &Upper-us-east-1
|
38
|
+
<<: *Upper
|
39
|
+
<<: *USEast1
|
40
|
+
AmiId: ami-123456ab
|
41
|
+
|
42
|
+
Lower-us-west-1: &Lower-us-west-1
|
43
|
+
<<: *Lower
|
44
|
+
<<: *USWest1
|
45
|
+
AmiId: ami-cdef1234
|
46
|
+
Upper-us-west-1: &Upper-us-west-1
|
47
|
+
<<: *Upper
|
48
|
+
<<: *USWest1
|
49
|
+
AmiId: ami-34cdef12
|
50
|
+
|
51
|
+
dev:
|
52
|
+
<<: *Lower-<%= ENV['AWS_REGION'] %>
|
53
|
+
SpotPrice: 0.02
|
54
|
+
qa:
|
55
|
+
<<: *Lower-<%= ENV['AWS_REGION'] %>
|
56
|
+
SpotPrice: 0.04
|
57
|
+
demo:
|
58
|
+
<<: *Lower-<%= ENV['AWS_REGION'] %>
|
59
|
+
SpotPrice: 0.06
|
60
|
+
staging:
|
61
|
+
<<: *Upper-<%= ENV['AWS_REGION'] %>
|
62
|
+
production:
|
63
|
+
<<: *Upper-<%= ENV['AWS_REGION'] %>
|
64
|
+
```
|
65
|
+
|
66
|
+
We use `Lower` and `Upper` to capture cross-region parameters that are dependent on the account, and
|
67
|
+
`USEast1` and `USWest` to capture cross-account parameters that are dependent on the region. The
|
68
|
+
`Lower-us-east-1` and similarly named dictionaries capture settings that are dependent on both the region
|
69
|
+
and account while inheriting from the cross-region and cross-account settings.
|
70
|
+
|
71
|
+
Finally, we use the environment variable specifying the region to which we are deploying to select the
|
72
|
+
proper account/region set of settings to import into the environment settings.
|
73
|
+
|
74
|
+
## Template Dependencies
|
75
|
+
|
76
|
+
Most template interdependencies can be discovered by looking at the list of `Output`s and `Fn::ImportValue`s.
|
77
|
+
But sometimes, one template builds out a feature in a VPC (e.g., peering) that another template has to have
|
78
|
+
in order to finish its build (e.g., fetching Chef cookbooks through a peering connection). In these
|
79
|
+
situations, the template with the dependency should note the required templates in a `Metadata` section:
|
80
|
+
|
81
|
+
```yaml
|
82
|
+
---
|
83
|
+
Metadata:
|
84
|
+
DependsOn:
|
85
|
+
Templates:
|
86
|
+
- relative-path-to/template.yaml
|
87
|
+
```
|
88
|
+
|
89
|
+
These dependencies are harmless if they replicate what can be discovered by examining the other contents of
|
90
|
+
the template, but it's best to rely on the implicit dependencies from the `Output`s and `Fn::ImportValue`s.
|
91
|
+
|
92
|
+
## Multiple AWS Accounts
|
93
|
+
|
94
|
+
Common practice separates development and testing environments from pre-production and
|
95
|
+
production environments. The easiest way to manage templates and parameters is to ensure that
|
96
|
+
all environments across accounts have unique names. For example, rather than have a
|
97
|
+
`devops` environment in each of the accounts when there might be account-dependent
|
98
|
+
resource references, you can incorporate the account into the environment's name
|
99
|
+
(e.g., `lower-devops` and `upper-devops`).
|
100
|
+
|
101
|
+
In the parameter files, you can use YAML aliases and references to aggregate common
|
102
|
+
parameter settings for environments across accounts that share the same purpose.
|
103
|
+
|
104
|
+
If you are working with environments that share the same name but reside in different
|
105
|
+
accounts, you can use an environment variable to select the account and use YAML aliases
|
106
|
+
and references to pull in the account-specific settings:
|
107
|
+
|
108
|
+
```yaml
|
109
|
+
---
|
110
|
+
devops-lower: &devops-lower
|
111
|
+
ImageId: ami-abcdef12
|
112
|
+
|
113
|
+
devops-upper: &devops-upper
|
114
|
+
ImageId: ami-34cdef12
|
115
|
+
|
116
|
+
devops:
|
117
|
+
<<: *devops-<%= ENV['AWS_ACCOUNT'] || begin
|
118
|
+
raise AwsCftTools::IncompleteEnvironmentError,
|
119
|
+
'Please rerun with `AWS_ACCOUNT=lower ...` or `AWS_ACCOUNT=upper ...`'
|
120
|
+
end
|
121
|
+
%>
|
122
|
+
```
|
123
|
+
|
124
|
+
## Authentication to AWS
|
125
|
+
|
126
|
+
The `aws-cft` command supports the `-p` or `--profile` option to select an AWS profile. This makes
|
127
|
+
it easy to get up and running with multiple AWS accounts. Best practice here is to make sure none
|
128
|
+
of your profiles are labeled `default`. If there isn't a default profile, then you must select a
|
129
|
+
profile each time you run the `aws-cft` command. This helps prevent accidentally running a job in
|
130
|
+
the wrong account.
|
131
|
+
|
132
|
+
Because the tools use the AWS SDK's standard authentication mechanism, you can avoid selecting a
|
133
|
+
profile by storing your account credentials in environment variables. This lets you use tools such
|
134
|
+
as [aws-vault](https://github.com/99designs/aws-vault) to manage credentials without having them
|
135
|
+
stored in cleartext in a file that might get checked into a source code repository or otherwise
|
136
|
+
leaked.
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
## Developing in the Open
|
4
|
+
|
5
|
+
Developing in the open creates a healthier working environment, a more collaborative process,
|
6
|
+
and just better software.
|
7
|
+
|
8
|
+
We welcome contributions.
|
9
|
+
|
10
|
+
The aws-cft-tools team handles development of this project in the open. As such, we use Github
|
11
|
+
to keep track of project development. We may not accept contributions if they introduce operational
|
12
|
+
complexity or don't align with the goals of the project. All contributions are subject to the license and in no way imply compensation for contributions.
|
13
|
+
|
14
|
+
## Feedback
|
15
|
+
|
16
|
+
To provide feedback on the code, please create an issue on GitHub. For other issues, please contact
|
17
|
+
the [Certify Help Desk](mailto:help@certify.sba.gov).
|
18
|
+
|
19
|
+
## How to Contribute
|
20
|
+
|
21
|
+
To contribute, simple create a pull request:
|
22
|
+
|
23
|
+
1. Fork this repository
|
24
|
+
2. Create a feature branch on which to work (`git checkout -b my-new-feature`)
|
25
|
+
3. Commit your work (we like commits that explain your thought process)
|
26
|
+
4. Submit a pull request
|
27
|
+
5. If there is an issue associated with your pull request, then link that issue.
|
28
|
+
|
29
|
+
For documentation changes, you can edit the file directly on GitHub and select the option to create a pull
|
30
|
+
request with your own branch.
|
31
|
+
|
32
|
+
## Tests and Continuous Integration
|
33
|
+
|
34
|
+
All pull requests must pass our continuous integration (CI) tests in order to be accepted.
|
35
|
+
We use [rubocop](https://github.com/bbatsov/rubocop) with a style guide to enforce style on Ruby
|
36
|
+
projects as part of the CI tests.
|
37
|
+
|
38
|
+
The agency reserves the right to change this policy at any time.
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
aws-cft-tools: Tools for managing CloudFormation Templates
|
2
|
+
|
3
|
+
Copyright (c) 2017 Small Business Administration
|
4
|
+
|
5
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
you may not use this software and associated documentation files except
|
7
|
+
in compliance with the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
data/README.md
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
# AwsCftTools
|
2
|
+
|
3
|
+
CloudFormation and related services provide a way to manage infrastructure state in "the cloud." This
|
4
|
+
gem and its included command (`aws-cft`) build on top of this state management system to create an
|
5
|
+
infrastructure management solution native to the AWS environment.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'aws-cft-tools'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
|
21
|
+
$ gem install aws-cft-tools
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
The `aws-cft` command provides access to a number of run books that manage different tasks.
|
26
|
+
|
27
|
+
- `aws-cft deploy` to deploy CloudFormation templates
|
28
|
+
- `aws-cft diff` to see differences between local and deployed CloudFormation templates
|
29
|
+
- `aws-cft hosts` to list running EC2 instances
|
30
|
+
- `aws-cft images` to list available AMIs
|
31
|
+
- `aws-cft init` to initialize a new infrastructure project
|
32
|
+
- `aws-cft retract` to remove deployed CloudFormation templates
|
33
|
+
- `aws-cft stacks` to list CloudFormation stacks
|
34
|
+
|
35
|
+
See [`USAGE.adoc`](USAGE.adoc) for more details.
|
36
|
+
|
37
|
+
### Template organization
|
38
|
+
|
39
|
+
CloudFormation templates are managed in any number of directories that correspond to infrastructure
|
40
|
+
layers. For example, `vpcs`, `networks`, `security`, and `applications`. The layers are completely
|
41
|
+
arbitrary.
|
42
|
+
|
43
|
+
Templates also belong to a "role" based on their participation in the infrastructure. The role is defined
|
44
|
+
with metadata in the template:
|
45
|
+
|
46
|
+
```yaml
|
47
|
+
Metadata:
|
48
|
+
Role: foo
|
49
|
+
```
|
50
|
+
|
51
|
+
Templates are deployed or retracted based on their dependency order. The scripts try to discover this
|
52
|
+
by examining the values exported by one template and imported by another. When this fails to describe
|
53
|
+
the proper dependencies of a template, you can add an explicit dependency in the template's `Metadata`:
|
54
|
+
|
55
|
+
```yaml
|
56
|
+
Metadata:
|
57
|
+
DependsOn:
|
58
|
+
Templates:
|
59
|
+
- relative_path_to/template.yaml
|
60
|
+
```
|
61
|
+
|
62
|
+
This follows the pattern for listing explicit dependencies between resources in a template.
|
63
|
+
|
64
|
+
## Development
|
65
|
+
|
66
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the
|
67
|
+
tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
68
|
+
|
69
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version,
|
70
|
+
update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git
|
71
|
+
tag for the version, push git commits and tags, and push the `.gem` file to
|
72
|
+
[rubygems.org](https://rubygems.org).
|
73
|
+
|
74
|
+
## Building Gem for Local Use
|
75
|
+
|
76
|
+
```shell
|
77
|
+
bundle install --deployment --without development test
|
78
|
+
gem build ./aws-cft-tools.gemspec
|
79
|
+
```
|
80
|
+
|
81
|
+
## Minimum IAM Policy to run initial script
|
82
|
+
|
83
|
+
```json
|
84
|
+
{
|
85
|
+
"Sid": "aws-cft",
|
86
|
+
"Effect": "Allow",
|
87
|
+
"Action": [
|
88
|
+
"ec2:DescribeInstances",
|
89
|
+
"ec2:DescribeTags",
|
90
|
+
"ec2:DescribeImages",
|
91
|
+
"ec2:DescribeImageAttribute"
|
92
|
+
],
|
93
|
+
"Resource": [ "*" ]
|
94
|
+
}
|
95
|
+
```
|
96
|
+
|
97
|
+
## Security Policy
|
98
|
+
|
99
|
+
Please do not submit an issue on GitHub for a security vulnerability. Please contact the development team
|
100
|
+
through the Certify Help Desk at [help@certify.sba.gov](mailto:help@certify.sba.gov).
|
101
|
+
|
102
|
+
Be sure to include all the pertinent information.
|
103
|
+
|
104
|
+
## License
|
105
|
+
|
106
|
+
Aws-cft-tools is licensed permissively under the Apache License v2.0.
|
107
|
+
A copy of that license is distributed with this software.
|
108
|
+
|
109
|
+
## Contributing
|
110
|
+
|
111
|
+
We welcome contributions. Please read [`CONTRIBUTING.md`](CONTRIBUTING.md) for how to contribute.
|
112
|
+
|
113
|
+
We strive for a welcoming and inclusive environment for the aws-cft-tools project.
|
114
|
+
|
115
|
+
Please follow this guidelines in all interactions:
|
116
|
+
|
117
|
+
1. Be Respectful: use welcoming and inclusive language.
|
118
|
+
2. Assume best intentions: seek to understand others' opinions.
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
require 'rubycritic/rake_task'
|
6
|
+
require 'yard'
|
7
|
+
|
8
|
+
RubyCritic::RakeTask.new do |task|
|
9
|
+
# Glob pattern to match source files. Defaults to FileList['.'].
|
10
|
+
task.paths = FileList['lib/**/*.rb']
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec::Core::RakeTask.new(:spec)
|
14
|
+
|
15
|
+
YARD::Rake::YardocTask.new
|
16
|
+
|
17
|
+
task default: :spec
|