120 lines
4.3 KiB
Python
120 lines
4.3 KiB
Python
# -*- coding: utf-8 -*- #
|
|
# Copyright 2014 Google LLC. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""The gen_repo_info_file command."""
|
|
|
|
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import unicode_literals
|
|
|
|
import json
|
|
import os
|
|
|
|
from googlecloudsdk.appengine.tools import context_util
|
|
from googlecloudsdk.calliope import base
|
|
from googlecloudsdk.command_lib.app import exceptions
|
|
from googlecloudsdk.core import log
|
|
from googlecloudsdk.core.util import files
|
|
import six
|
|
|
|
|
|
@base.Hidden
|
|
@base.ReleaseTracks(base.ReleaseTrack.GA, base.ReleaseTrack.BETA)
|
|
class GenRepoInfoFile(base.Command):
|
|
"""[DEPRECATED] Saves repository information in a file.
|
|
|
|
DEPRECATED, use `gcloud beta debug source gen-repo-info-file` instead. The
|
|
generated file is an opaque blob representing which source revision the
|
|
application was built at, and which Google-hosted repository this revision
|
|
will be pushed to.
|
|
"""
|
|
|
|
detailed_help = {
|
|
'DESCRIPTION': """\
|
|
DEPRECATED, use `gcloud beta debug source gen-repo-info-file`
|
|
instead.
|
|
|
|
This command generates a {name} file, containing information on the
|
|
source revision and remote repository associated with the given
|
|
source directory.
|
|
|
|
{name} contains information on the remote repository: the associated
|
|
Cloud Repository if there is one, or the remote Git repository if
|
|
there is no Cloud Repository.
|
|
""".format(name=context_util.CONTEXT_FILENAME),
|
|
'EXAMPLES': """\
|
|
To generate repository information file for your app,
|
|
from your source directory run:
|
|
|
|
$ {command}
|
|
""",
|
|
}
|
|
|
|
@staticmethod
|
|
def Args(parser):
|
|
parser.add_argument(
|
|
'--source-directory',
|
|
default='.',
|
|
help='The path to directory containing the source code for the build.')
|
|
# TODO(b/25215149) Remove this option.
|
|
parser.add_argument(
|
|
'--output-file',
|
|
help=(
|
|
'(Deprecated; use --output-directory instead.) '
|
|
'Specifies the full name of the output file to contain a single '
|
|
'source context. The file name must be "{name}" in '
|
|
'order to work with cloud diagnostic tools.').format(
|
|
name=context_util.CONTEXT_FILENAME))
|
|
parser.add_argument(
|
|
'--output-directory',
|
|
default='',
|
|
help=(
|
|
'The directory in which to create the source context file. '
|
|
'Defaults to the current directory, or the directory containing '
|
|
'--output-file if that option is provided with a file name that '
|
|
'includes a directory path.'))
|
|
|
|
def Run(self, args):
|
|
if six.PY3:
|
|
raise exceptions.NotSupportedPy3Exception(
|
|
'This command does not support python3.')
|
|
|
|
log.warning('This command is deprecated. Please use '
|
|
'`gcloud beta source debug gen-repo-info-file` instead.')
|
|
contexts = context_util.CalculateExtendedSourceContexts(
|
|
args.source_directory)
|
|
|
|
# First create the old-style source-context.json file
|
|
if args.output_file:
|
|
log.warning(
|
|
'The --output-file option is deprecated and will soon be removed.')
|
|
output_directory = os.path.dirname(args.output_file)
|
|
output_file = args.output_file
|
|
else:
|
|
output_directory = ''
|
|
output_file = context_util.CONTEXT_FILENAME
|
|
|
|
if not output_directory:
|
|
if args.output_directory:
|
|
output_directory = args.output_directory
|
|
output_file = os.path.join(output_directory, output_file)
|
|
else:
|
|
output_directory = '.'
|
|
|
|
best_context = context_util.BestSourceContext(contexts)
|
|
files.MakeDir(output_directory)
|
|
files.WriteFileContents(
|
|
output_file, json.dumps(best_context, indent=2, sort_keys=True))
|