in src/buildstream/_frontend/app.py [0:0]
def _init_project_interactive(self, project_name, min_version, element_path):
bst_major, bst_minor = utils._get_bst_api_version()
def project_name_proc(user_input):
try:
node._assert_symbol_name(user_input, "project name")
except LoadError as e:
message = "{}\n\n{}\n".format(e, e.detail)
raise UsageError(message) from e
return user_input
def min_version_proc(user_input):
try:
self._assert_min_version(user_input)
except AppError as e:
raise UsageError(str(e)) from e
return user_input
def element_path_proc(user_input):
try:
self._assert_element_path(user_input)
except AppError as e:
raise UsageError(str(e)) from e
return user_input
w = TextWrapper(initial_indent=" ", subsequent_indent=" ", width=79)
# Collect project name
click.echo("", err=True)
click.echo(self._content_profile.fmt("Choose a unique name for your project"), err=True)
click.echo(self._format_profile.fmt("-------------------------------------"), err=True)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"The project name is a unique symbol for your project and will be used "
"to distinguish your project from others in user preferences, namespacing "
"of your project's artifacts in shared artifact caches, and in any case where "
"BuildStream needs to distinguish between multiple projects."
)
),
err=True,
)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"The project name must contain only alphanumeric characters, "
"may not start with a digit, and may contain dashes or underscores."
)
),
err=True,
)
click.echo("", err=True)
project_name = click.prompt(self._content_profile.fmt("Project name"), value_proc=project_name_proc, err=True)
click.echo("", err=True)
# Collect minimum BuildStream version
click.echo(
self._content_profile.fmt("Select the minimum required BuildStream version for your project"), err=True
)
click.echo(
self._format_profile.fmt("----------------------------------------------------------------"), err=True
)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"The minimum version is used to provide users who build your project "
"with a helpful error message in the case that they do not have a recent "
"enough version of BuildStream to support all the features which your "
"project uses."
)
),
err=True,
)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"The lowest version allowed is {major}.0, the currently installed version of BuildStream is {major}.{minor}".format(
major=bst_major, minor=bst_minor
)
)
),
err=True,
)
click.echo("", err=True)
min_version = click.prompt(
self._content_profile.fmt("Minimum version"),
value_proc=min_version_proc,
default=min_version,
err=True,
)
click.echo("", err=True)
# Collect element path
click.echo(self._content_profile.fmt("Select the element path"), err=True)
click.echo(self._format_profile.fmt("-----------------------"), err=True)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"The element path is a project subdirectory where element .bst files are stored "
"within your project."
)
),
err=True,
)
click.echo("", err=True)
click.echo(
self._detail_profile.fmt(
w.fill(
"Elements will be displayed in logs as filenames relative to "
"the element path, and similarly, dependencies must be expressed as filenames "
"relative to the element path."
)
),
err=True,
)
click.echo("", err=True)
element_path = click.prompt(
self._content_profile.fmt("Element path"), value_proc=element_path_proc, default=element_path, err=True
)
return (project_name, min_version, element_path)