aws-cft-tools 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|