blob: a82e01677e2c61cf625b76f27c29f01225e83e1b [file] [log] [blame]
# Copyright 2020 Canonical Ltd.
#
# 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.
import json
import argparse
CHANNEL_LIST = [
"stable",
"candidate",
"edge",
]
BUNDLE_PREFIX = "cs:~charmed-osm"
DEFAULT_BUNDLE = "bundles/osm/bundle.yaml"
HA_BUNDLE = "bundles/osm-ha/bundle.yaml"
parser = argparse.ArgumentParser(description="Process some arguments.")
parser.add_argument("--channel", help="Channel from the Charm Store")
parser.add_argument("--destination", help="Destination for the generated bundle")
parser.add_argument("--ha", help="Select HA bundle", action="store_true")
parser.add_argument("--local", help="Path to the bundle directory", action="store_true")
parser.add_argument("--store", help="Path to the bundle directory", action="store_true")
args = parser.parse_args()
print(args)
if not args.local and not args.store:
raise Exception("--local or --store must be specified")
if args.local and args.store:
raise Exception("Both --local and --store cannot be specified. Please choose one.")
if not args.destination:
raise Exception("--destination must be specified")
if args.channel and not args.channel in CHANNEL_LIST:
raise Exception(
"Channel {} does not exist. Please choose one of these: {}".format(
args.channel, CHANNEL_LIST
)
)
channel = args.channel if args.channel else "stable"
path = HA_BUNDLE if args.ha else DEFAULT_BUNDLE
destination = args.destination
prefix = "." if args.local else BUNDLE_PREFIX
suffix = "/build" if args.local else ""
data = {
"channel": channel,
"prefix": prefix,
"suffix": suffix,
}
with open(path) as template:
bundle_template = template.read()
template.close()
with open("{}".format(destination), "w") as text_file:
text_file.write(bundle_template % data)
text_file.close()