Skip to content

Latest commit

 

History

History
71 lines (53 loc) · 2.51 KB

CONTRIBUTING.md

File metadata and controls

71 lines (53 loc) · 2.51 KB

Contributing

I love pull requests from everyone! By the way, I have a favor to ask you with your contribution 🙇

Reporting issue

  • Please write your ...
    • platform (macOS, Linux, Windows, ...)
    • Ruby version
    • Terraforming version
    • Terraform version (if terraform plan failed)
    • executed command and error message (if any)

Making changes

  • Currently, this gem supports only AWS resources. Other providers are supported as separated gems.
  • Do not bump gem version in your pull request.
  • Please follow the coding style of existing code. Most of trivial rules can be checked by RuboCop (rubocop.yml).
    • Coding style is checked automatically by SideCI right after creating pull request. If there is error, SideCI comments at the point error occured.
  • Please write tests for your changes. All tests are written with RSpec.

Adding new resource

  • Class name must match to Terraforming's resource name without aws_ prefix, and be a complete resource name.
    • e.g. aws_iam_group_membership: IAMGroupMembership
    • Yes, I know that some of resources I added a long ago don't follow to this rule...
  • File name must also match to Terraforming's resource name without aws_ prefix.
    • e.g. aws_iam_group_membership: iam_group_membership.rb
  • Command name should be abbreviation.
    • e.g. aws_iam_group_membership: iamgp
  • Please check generation result by executing terraform plan with real resources. There should be NO diff with generated .tf and .tfstate.

script/generate generates new resource code / test skeletons.

$ script/generate ec2
==> Generate ec2.rb
==> Generate ec2_spec.rb
==> Generate ec2.erb

Add below code by hand.

lib/terraforming.rb:

    require "terraforming/resource/ec2"

lib/terraforming/cli.rb:

    module Terraforming
      class CLI < Thor

        # Subcommand name should be acronym.
        desc "ec2", "Ec2"
        def ec2
          execute(Terraforming::Resource::Ec2, options)
        end

spec/lib/terraforming/cli_spec.rb:

module Terraforming
  describe CLI do
    context "resources" do
    describe "ec2" do
        let(:klass)   { Terraforming::Resource::Ec2
        let(:command) { :ec2 }

        it_behaves_like "CLI examples"
      end