rake_tasklib 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +56 -0
  3. data/.circleci/gpg.private.enc +0 -0
  4. data/.envrc +5 -0
  5. data/.git-crypt/.gitattributes +4 -0
  6. data/.git-crypt/keys/default/0/41D2606F66C3FF28874362B61A16916844CE9D82.gpg +0 -0
  7. data/.git-crypt/keys/default/0/837D1812341A8C7F3E556D33623A196DE10A7326.gpg +0 -0
  8. data/.gitattributes +1 -0
  9. data/.gitignore +32 -0
  10. data/.rspec +2 -0
  11. data/.ruby-version +1 -0
  12. data/CODE_OF_CONDUCT.md +75 -0
  13. data/Gemfile +4 -0
  14. data/Gemfile.lock +60 -0
  15. data/LICENSE.txt +21 -0
  16. data/README.md +70 -0
  17. data/Rakefile +24 -0
  18. data/TODO.md +2 -0
  19. data/bin/console +14 -0
  20. data/bin/setup +8 -0
  21. data/config/secrets/.unlocked +1 -0
  22. data/config/secrets/ci/encryption.passphrase +1 -0
  23. data/config/secrets/ci/gpg.private +105 -0
  24. data/config/secrets/ci/gpg.public +51 -0
  25. data/config/secrets/ci/ssh.private +51 -0
  26. data/config/secrets/ci/ssh.public +1 -0
  27. data/config/secrets/rubygems/credentials +2 -0
  28. data/go +56 -0
  29. data/lib/rake_factory.rb +5 -0
  30. data/lib/rake_factory/actions.rb +11 -0
  31. data/lib/rake_factory/defaults.rb +56 -0
  32. data/lib/rake_factory/exceptions.rb +4 -0
  33. data/lib/rake_factory/parameter.rb +61 -0
  34. data/lib/rake_factory/parameter_set.rb +48 -0
  35. data/lib/rake_factory/parameter_view.rb +21 -0
  36. data/lib/rake_factory/parameters.rb +14 -0
  37. data/lib/rake_factory/task.rb +85 -0
  38. data/lib/rake_factory/version.rb +3 -0
  39. data/rake_factory.gemspec +37 -0
  40. data/scripts/ci/common/configure-git.sh +8 -0
  41. data/scripts/ci/common/configure-rubygems.sh +16 -0
  42. data/scripts/ci/common/install-git-crypt.sh +8 -0
  43. data/scripts/ci/common/install-gpg-key.sh +19 -0
  44. data/scripts/ci/steps/prerelease.sh +16 -0
  45. data/scripts/ci/steps/release.sh +18 -0
  46. data/scripts/ci/steps/test.sh +12 -0
  47. metadata +188 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1f4f4a401133f57d757e6603f83f0f2b7468f6c91dd0ff5eaaae29f4f4d3b8ca
4
+ data.tar.gz: 6d4342e66bbb06ee6fe47297e931b98da3d5dd4d84217a669abbaec7773327f5
5
+ SHA512:
6
+ metadata.gz: a0331e1cb19b703c653e4477e6d55fbbf72f7efb76ea8e1a67cc32c2533492556977f936f72d5960dd4f7de3d8e11812cb966a48905e1d3d107faeb1ebb69a66
7
+ data.tar.gz: af12bf88422035c6ef788a083e6cadb0f7c8102a3a330da29ac3eab50d79b2595826ed0c639709ed5c6bd345ead69261ca77f67905212a998ed30b153b88f6aa
@@ -0,0 +1,56 @@
1
+ version: 2
2
+ jobs:
3
+ test:
4
+ working_directory: ~/rake_factory
5
+ docker:
6
+ - image: ruby:2.4.7
7
+ steps:
8
+ - checkout
9
+ - run: ./scripts/ci/steps/test.sh
10
+ prerelease:
11
+ working_directory: ~/rake_factory
12
+ docker:
13
+ - image: ruby:2.4.7
14
+ steps:
15
+ - checkout
16
+ - run: ./scripts/ci/common/install-git-crypt.sh
17
+ - run: ./scripts/ci/common/install-gpg-key.sh
18
+ - run: ./scripts/ci/common/configure-git.sh
19
+ - run: ./scripts/ci/common/configure-rubygems.sh
20
+ - run: ./scripts/ci/steps/prerelease.sh
21
+ release:
22
+ working_directory: ~/rake_factory
23
+ docker:
24
+ - image: ruby:2.4.7
25
+ steps:
26
+ - checkout
27
+ - run: ./scripts/ci/common/install-git-crypt.sh
28
+ - run: ./scripts/ci/common/install-gpg-key.sh
29
+ - run: ./scripts/ci/common/configure-git.sh
30
+ - run: ./scripts/ci/common/configure-rubygems.sh
31
+ - run: ./scripts/ci/steps/release.sh
32
+
33
+ workflows:
34
+ version: 2
35
+ pipeline:
36
+ jobs:
37
+ - test
38
+ - prerelease:
39
+ requires:
40
+ - test
41
+ filters:
42
+ branches:
43
+ only: master
44
+ - hold:
45
+ type: approval
46
+ requires:
47
+ - prerelease
48
+ filters:
49
+ branches:
50
+ only: master
51
+ - release:
52
+ requires:
53
+ - hold
54
+ filters:
55
+ branches:
56
+ only: master
Binary file
data/.envrc ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env bash
2
+
3
+ PROJECT_DIR="$(pwd)"
4
+
5
+ PATH_add ${PROJECT_DIR}
@@ -0,0 +1,4 @@
1
+ # Do not edit this file. To specify the files to encrypt, create your own
2
+ # .gitattributes file in the directory where your files are.
3
+ * !filter !diff
4
+ *.gpg binary
data/.gitattributes ADDED
@@ -0,0 +1 @@
1
+ config/secrets/** filter=git-crypt diff=git-crypt
data/.gitignore ADDED
@@ -0,0 +1,32 @@
1
+ ## Standard stuff:
2
+ *.gem
3
+ *.rbc
4
+ /.config
5
+ /coverage/
6
+ /InstalledFiles
7
+ /pkg/
8
+ .rspec_status
9
+ /spec/reports/
10
+ /spec/examples.txt
11
+ /test/tmp/
12
+ /test/version_tmp/
13
+ /tmp/
14
+ .rakeTasks
15
+
16
+ ## Documentation cache and generated files:
17
+ /.yardoc/
18
+ /_yardoc/
19
+ /doc/
20
+ /rdoc/
21
+ /coverage/
22
+
23
+ ## Environment normalization:
24
+ /.bundle/
25
+ /vendor/bundle
26
+ /lib/bundler/man/
27
+
28
+ ## IDE:
29
+ .idea
30
+ *.ipr
31
+ *.iws
32
+ *.iml
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.5.1
@@ -0,0 +1,75 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of
9
+ experience, nationality, personal appearance, race, religion, or sexual identity
10
+ and orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
+ reported by contacting the project team at tobyclemson@gmail.com. All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an
62
+ incident. Further details of specific enforcement policies may be posted
63
+ separately.
64
+
65
+ Project maintainers who do not follow or enforce the Code of Conduct in good
66
+ faith may face temporary or permanent repercussions as determined by other
67
+ members of the project's leadership.
68
+
69
+ ## Attribution
70
+
71
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
72
+ version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
73
+
74
+ [homepage]: http://contributor-covenant.org
75
+ [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rake_tasklib.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,60 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rake_tasklib (0.0.1)
5
+ activesupport (~> 5.2)
6
+ rake (~> 13.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activesupport (5.2.4.1)
12
+ concurrent-ruby (~> 1.0, >= 1.0.2)
13
+ i18n (>= 0.7, < 2)
14
+ minitest (~> 5.1)
15
+ tzinfo (~> 1.1)
16
+ concurrent-ruby (1.1.5)
17
+ diff-lcs (1.3)
18
+ docile (1.3.2)
19
+ fakefs (0.20.1)
20
+ gem-release (2.1.1)
21
+ i18n (1.7.0)
22
+ concurrent-ruby (~> 1.0)
23
+ json (2.3.0)
24
+ minitest (5.13.0)
25
+ rake (13.0.1)
26
+ rspec (3.9.0)
27
+ rspec-core (~> 3.9.0)
28
+ rspec-expectations (~> 3.9.0)
29
+ rspec-mocks (~> 3.9.0)
30
+ rspec-core (3.9.0)
31
+ rspec-support (~> 3.9.0)
32
+ rspec-expectations (3.9.0)
33
+ diff-lcs (>= 1.2.0, < 2.0)
34
+ rspec-support (~> 3.9.0)
35
+ rspec-mocks (3.9.0)
36
+ diff-lcs (>= 1.2.0, < 2.0)
37
+ rspec-support (~> 3.9.0)
38
+ rspec-support (3.9.0)
39
+ simplecov (0.17.1)
40
+ docile (~> 1.1)
41
+ json (>= 1.8, < 3)
42
+ simplecov-html (~> 0.10.0)
43
+ simplecov-html (0.10.2)
44
+ thread_safe (0.3.6)
45
+ tzinfo (1.2.5)
46
+ thread_safe (~> 0.1)
47
+
48
+ PLATFORMS
49
+ ruby
50
+
51
+ DEPENDENCIES
52
+ bundler (~> 2.0)
53
+ fakefs (~> 0.18)
54
+ gem-release (~> 2.0)
55
+ rake_tasklib!
56
+ rspec (~> 3.9)
57
+ simplecov (~> 0.16)
58
+
59
+ BUNDLED WITH
60
+ 2.1.1
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2019 InfraBlocks Maintainers
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # RakeFactory
2
+
3
+ Base classes and modules to aid in creating custom rake tasks.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'rake_factory'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install rake_factory
20
+
21
+ ## Usage
22
+
23
+ TODO
24
+
25
+ ## Development
26
+
27
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run
28
+ `rake spec` to run the tests. You can also run `bin/console` for an interactive
29
+ prompt that will allow you to experiment.
30
+
31
+ To install this gem onto your local machine, run `bundle exec rake install`. To
32
+ release a new version, update the version number in `version.rb`, and then run
33
+ `bundle exec rake release`, which will create a git tag for the version, push
34
+ git commits and tags, and push the `.gem` file to
35
+ [rubygems.org](https://rubygems.org).
36
+
37
+ ### Managing CircleCI keys
38
+
39
+ To encrypt a GPG key for use by CircleCI:
40
+
41
+ ```bash
42
+ openssl aes-256-cbc \
43
+ -e \
44
+ -md sha1 \
45
+ -in ./config/secrets/ci/gpg.private \
46
+ -out ./.circleci/gpg.private.enc \
47
+ -k "<passphrase>"
48
+ ```
49
+
50
+ To check decryption is working correctly:
51
+
52
+ ```bash
53
+ openssl aes-256-cbc \
54
+ -d \
55
+ -md sha1 \
56
+ -in ./.circleci/gpg.private.enc \
57
+ -k "<passphrase>"
58
+ ```
59
+
60
+ ## Contributing
61
+
62
+ Bug reports and pull requests are welcome on GitHub at
63
+ https://github.com/infrablocks/rake_factory. This project is intended to be a
64
+ safe, welcoming space for collaboration, and contributors are expected to adhere
65
+ to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
66
+
67
+ ## License
68
+
69
+ The gem is available as open source under the terms of the
70
+ [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ RSpec::Core::RakeTask.new(:spec)
4
+
5
+ task :default => :spec
6
+
7
+ namespace :version do
8
+ desc "Bump version for specified type (pre, major, minor patch)"
9
+ task :bump, [:type] do |_, args|
10
+ bump_version_for(args.type)
11
+ end
12
+ end
13
+
14
+ desc "Release gem"
15
+ task :release do
16
+ sh "gem release --tag --push"
17
+ end
18
+
19
+ def bump_version_for(version_type)
20
+ sh "gem bump --version #{version_type} " +
21
+ "&& bundle install " +
22
+ "&& export LAST_MESSAGE=\"$(git log -1 --pretty=%B)\" " +
23
+ "&& git commit -a --amend -m \"${LAST_MESSAGE} [ci skip]\""
24
+ end
data/TODO.md ADDED
@@ -0,0 +1,2 @@
1
+ * Allow lambdas instead of values for lazy evaluation for all parameters
2
+ * Create TaskSet base class
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "rake_factory"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1 @@
1
+ true
@@ -0,0 +1 @@
1
+ GRpGA9D6BvjzBzJhwU8CWk4ct34uRbMk8GQfr4n4pXNk8mAg
@@ -0,0 +1,105 @@
1
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
2
+
3
+ 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
103
+ PDXv14trDg==
104
+ =Rqfy
105
+ -----END PGP PRIVATE KEY BLOCK-----