From 9b1b00ac725e13e6b1a1ae9f8fa96128afda32aa Mon Sep 17 00:00:00 2001 From: Vinit Mahedia Date: Mon, 18 Jun 2018 11:50:29 -0700 Subject: [PATCH] Add option to skip swaparoo, fix broken swaparoo for older apps --- VERSION | 2 +- cli/docker_build.py | 29 +++++++++++++++++------------ cli/roger_build.py | 5 +++-- cli/roger_deploy.py | 1 + 4 files changed, 22 insertions(+), 15 deletions(-) diff --git a/VERSION b/VERSION index d199fe2..2b2a18d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.4.19 +0.4.20 diff --git a/cli/docker_build.py b/cli/docker_build.py index 1bdd2e7..4a4589c 100755 --- a/cli/docker_build.py +++ b/cli/docker_build.py @@ -159,9 +159,10 @@ def packagejson_swaparoo(): # Do the swaparoo for name, version in data['dependencies'].items(): - if('git' in version or 'https' in version) and 'seomoz' in version: - print("popped {} as a private dependency".format(version)) - os.system('npm install {}'.format(version)) + if('git' in version or 'https' in version or 'ssh' in version) and 'seomoz' in version: + data['dependencies'].pop(name, None) + print("Installing {} as a private dependency".format(name)) + os.system('npm install {}'.format(name)) # Write modified with open('package.json', 'w+') as packagejson: @@ -183,7 +184,7 @@ def null_swaparoo(): class Docker(object): - def docker_build(self, dockerUtilsObj, appObj, directory, repo, projects, path, image_tag, build_args, verbose_mode, docker_file='Dockerfile'): + def docker_build(self, dockerUtilsObj, appObj, directory, repo, projects, path, image_tag, build_args, verbose_mode, docker_file='Dockerfile', disable_swaparoo = False): '''run a `docker_build -t image_tag .` in the current directory, handling any private repos''' repo_name = appObj.getRepoName(repo) sourcePath = "{0}/{1}/".format(directory, repo_name) @@ -197,15 +198,19 @@ def docker_build(self, dockerUtilsObj, appObj, directory, repo, projects, path, if path != 'none': docker_path = sourcePath + "/{0}".format(path) os.chdir(docker_path) - - if os.path.isfile('package.json'): - swaparoo = packagejson_swaparoo - elif os.path.isfile('Gemfile'): - swaparoo = gemfile_swaparoo + # skip doing swaparoo, if explicitly asked for + if not disable_swaparoo: + if verbose_mode: print("Using swaparoo functionality") + if os.path.isfile('package.json'): + swaparoo = packagejson_swaparoo + elif os.path.isfile('Gemfile'): + swaparoo = gemfile_swaparoo + else: + swaparoo = null_swaparoo + with swaparoo(): + dockerUtilsObj.docker_build(image_tag, docker_file, verbose_mode, build_args) else: - swaparoo = null_swaparoo - - with swaparoo(): + if verbose_mode: print("Skipping swaparoo functionality") dockerUtilsObj.docker_build(image_tag, docker_file, verbose_mode, build_args) if __name__ == "__main__": diff --git a/cli/roger_build.py b/cli/roger_build.py index 85b5f0a..6d050c5 100755 --- a/cli/roger_build.py +++ b/cli/roger_build.py @@ -61,6 +61,7 @@ def parse_args(self): self.parser.add_argument('--push', '-p', help="Also push to registry. Defaults to false.", action="store_true") self.parser.add_argument('--build-arg', action='append', help='docker build-arg; Use flags multiple times to pass more than one arg') + self.parser.add_argument('-ns', '--disable-swaparoo', help="Disables swaparoo functionality", action="store_true") return self.parser def main(self, settingObj, appObj, hooksObj, dockerUtilsObj, dockerObj, args): @@ -168,14 +169,14 @@ def main(self, settingObj, appObj, hooksObj, dockerUtilsObj, dockerObj, args): if checkout_dir == args.directory: try: dockerObj.docker_build( - dockerUtilsObj, appObj, args.directory, repo, projects, dockerfile_rel_repo_path, image, docker_build_args, args.verbose, build_filename) + dockerUtilsObj, appObj, args.directory, repo, projects, dockerfile_rel_repo_path, image, docker_build_args, args.verbose, build_filename, args.disable_swaparoo) except ValueError: raise ValueError("Docker build failed") else: directory = os.path.join(cur_dir, args.directory) try: dockerObj.docker_build( - dockerUtilsObj, appObj, directory, repo, projects, dockerfile_rel_repo_path, image, docker_build_args, args.verbose, build_filename) + dockerUtilsObj, appObj, directory, repo, projects, dockerfile_rel_repo_path, image, docker_build_args, args.verbose, build_filename, args.disable_swaparoo) except ValueError: print('Docker build failed.') raise diff --git a/cli/roger_deploy.py b/cli/roger_deploy.py index a55a193..5079537 100755 --- a/cli/roger_deploy.py +++ b/cli/roger_deploy.py @@ -187,6 +187,7 @@ def parseArgs(self): self.parser.add_argument('-sp', '--skip-push', action="store_true", help="skip the push step. Defaults to false.'") self.parser.add_argument('-v', '--verbose', help="verbose mode for debugging. Defaults to false.", action="store_true") + self.parser.add_argument('-ns', '--disable-swaparoo', help="Disables swaparoo functionality", action="store_true") self.parser.add_argument('-f', '--force-push', action="store_true", help="force push. Not recommended. Forces push even if validation checks failed. Applies only if skip_push is false. Defaults to false.") self.parser.add_argument('-p', '--incr-patch', action="store_true",