Skip to content

Support for aws codecommit private git repository #654

@amitkewal

Description

@amitkewal

Support for aws codecommit private git repository

When I ran terraform-compliance on the repository present in the aws codecommit , the terraform-compliance throws the error:

File "C:\Users\AKewal\AppData\Local\Programs\Python\Python310\lib\site-packages\terraform_compliance\main.py", line 95, in cli
   raise ValueError("Bad feature directory:" + args.features)
ValueError: Bad feature directory:https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MY_REPO

Suggested Solution description ( if you have any ):
I have looked over the code and found out it supports only URL ending with *.git


 if args.features.startswith(('http', 'https', 'ssh')):
        # Default to master branch and full repository
        if args.features.endswith('.git'):
            features_git_repo = args.features
            features_git_branch = "master"

        # Optionally allow for directory and branch
        elif '.git//' in args.features and '?ref=' in args.features:
            # Split on .git/
            features_git_list = args.features.split('.git/', 1)
            # Everything up to .git is the repository
            features_git_repo = features_git_list[0] + '.git'

            # Split the directory and branch ref
            features_git_list = features_git_list[1].split('?ref=', 1)
            features_dir = features_git_list[0]
            features_git_branch = features_git_list[1]

        else:  # invalid
            raise ValueError("Bad feature directory:" + args.features)

AWS Codecommit git URL sample: https://git-codecommit.us-east-1.amazonaws.com/v1/repos/MY_REPO.
I tweaked the code and didn't filter this url based on .git ending and was able to clone the repo and run the terraform compliance command successfully.

Sharing code snippet here

    if args.features.startswith(('http', 'https', 'ssh')):
        # Default to master branch and full repository
        features_codecommit_list = 

> args.features.split('//', 2)

        if args.features.endswith('.git'):
            features_git_repo = args.features
            features_git_branch = 'master'

        # Optionally allow for directory and branch
        elif '.git//' in args.features and '?ref=' in args.features:
            # Split on .git/
            features_git_list = args.features.split('.git/', 1)
            # Everything up to .git is the repository
            features_git_repo = features_git_list[0] + '.git'

            # Split the directory and branch ref
            features_git_list = features_git_list[1].split('?ref=', 1)
            features_dir = features_git_list[0]
            features_git_branch = features_git_list[1]

 

>        elif len(features_codecommit_list) == 3:
>             features_split_list = features_codecommit_list[2].split('?ref=',1)
>             if '?ref=' in args.features:
>                 features_dir = features_split_list[0]
>                 features_git_branch = features_split_list[1]
>                 features_git_repo = features_codecommit_list[0] + '//' + features_codecommit_list[1] #args.feaures
>             else:
>                 features_dir = features_split_list[0]
>                 features_git_repo = features_codecommit_list[0] + '//' + features_codecommit_list[1] #args.feaures
> 
>         elif len(features_codecommit_list) == 2:
>             features_split_list = args.features.split('?ref=',1)
>             if '?ref=' in args.features:
>                 features_git_branch = features_split_list[1]
>                 features_git_repo = features_split_list[0] #args.feaures
>             else:
>                 features_git_repo = features_split_list[0] #args.feaures

        
        else:  # invalid

            raise ValueError("Bad feature directory:" + args.features)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions