mirror of
https://github.com/platformio/platformio-core.git
synced 2025-08-01 19:04:29 +02:00
Improve "init" command. Resolve #31
This commit is contained in:
@@ -5,6 +5,9 @@ Release History
|
|||||||
---------
|
---------
|
||||||
|
|
||||||
* Implemented `platformio settings <http://docs.platformio.ikravets.com/en/latest/userguide/cmd_settings.html>`_ command
|
* Implemented `platformio settings <http://docs.platformio.ikravets.com/en/latest/userguide/cmd_settings.html>`_ command
|
||||||
|
* Improved `platformio init <http://docs.platformio.ikravets.com/en/latest/userguide/cmd_init.html>`_ command.
|
||||||
|
Added new option ``--project-dir`` where you can specify another path to
|
||||||
|
directory where new project will be initialized (`issue #31 <https://github.com/ivankravets/platformio/issues/31>`_)
|
||||||
* Added *Migration Manager* which simplifies process with upgrading to a
|
* Added *Migration Manager* which simplifies process with upgrading to a
|
||||||
major release
|
major release
|
||||||
* Added *Telemetry Service* which should help us make *PlatformIO* better
|
* Added *Telemetry Service* which should help us make *PlatformIO* better
|
||||||
|
@@ -10,7 +10,7 @@ Usage
|
|||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
platformio init
|
platformio init [OPTIONS]
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
@@ -21,22 +21,50 @@ Initialize new PlatformIO based project.
|
|||||||
|
|
||||||
This command will create:
|
This command will create:
|
||||||
|
|
||||||
* ``.pioenvs`` - a temporary working directory.
|
|
||||||
* ``lib`` - a directory for project specific libraries. PlatformIO will
|
|
||||||
compile them to static libraries and link to executable file
|
|
||||||
* ``src`` - a source directory. Put your source code here.
|
|
||||||
* :ref:`projectconf`
|
* :ref:`projectconf`
|
||||||
|
* ``src`` - a source directory. Put your source code here
|
||||||
|
* ``lib`` - a directory for the project specific libraries. PlatformIO will
|
||||||
|
compile them to static libraries and link to executable file
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. option::
|
||||||
|
--project-dir, -d
|
||||||
|
|
||||||
|
Specified path to the directory where *PlatformIO* will initialize new project.
|
||||||
|
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
--------
|
--------
|
||||||
|
|
||||||
|
1. Create new project in the current working directory
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Change directory to the future project
|
|
||||||
$ cd /path/to/empty/directory
|
|
||||||
$ platformio init
|
$ platformio init
|
||||||
Project has been initialized!
|
The current working directory *** will be used for the new project.
|
||||||
Please put your source code to `src` directory, external libraries to `lib`
|
You can specify another project directory via
|
||||||
and setup environments in `platformio.ini` file.
|
`platformio init -d %PATH_TO_PROJECT_DIR%` command.
|
||||||
Then process project with `platformio run` command.
|
|
||||||
|
The next files/directories will be created in ***
|
||||||
|
platformio.ini - Project Configuration File
|
||||||
|
src - a source directory. Put your source code here
|
||||||
|
lib - a directory for the project specific libraries
|
||||||
|
Do you want to continue? [y/N]: y
|
||||||
|
Project has been successfully initialized!
|
||||||
|
Now you can process it with `platformio run` command.
|
||||||
|
|
||||||
|
|
||||||
|
2. Create new project in the specified directory
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ platformio init -d %PATH_TO_DIR%
|
||||||
|
The next files/directories will be created in ***
|
||||||
|
platformio.ini - Project Configuration File
|
||||||
|
src - a source directory. Put your source code here
|
||||||
|
lib - a directory for the project specific libraries
|
||||||
|
Do you want to continue? [y/N]: y
|
||||||
|
Project has been successfully initialized!
|
||||||
|
Now you can process it with `platformio run` command.
|
||||||
|
@@ -1,30 +1,58 @@
|
|||||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||||
# See LICENSE for details.
|
# See LICENSE for details.
|
||||||
|
|
||||||
from os import makedirs
|
from os import getcwd, makedirs
|
||||||
from os.path import isdir, isfile, join
|
from os.path import isdir, isfile, join
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
|
||||||
from click import command, secho
|
import click
|
||||||
|
|
||||||
from platformio.exception import ProjectInitialized
|
from platformio.exception import ProjectInitialized
|
||||||
from platformio.util import get_source_dir
|
from platformio.util import get_source_dir
|
||||||
|
|
||||||
|
|
||||||
@command("init", short_help="Initialize new PlatformIO based project")
|
@click.command("init", short_help="Initialize new PlatformIO based project")
|
||||||
def cli():
|
@click.option("--project-dir", "-d", default=getcwd(),
|
||||||
|
type=click.Path(exists=True, file_okay=False, dir_okay=True,
|
||||||
|
writable=True, resolve_path=True))
|
||||||
|
def cli(project_dir):
|
||||||
|
|
||||||
if isfile("platformio.ini") and isdir("src"):
|
project_file = join(project_dir, "platformio.ini")
|
||||||
|
src_dir = join(project_dir, "src")
|
||||||
|
lib_dir = join(project_dir, "lib")
|
||||||
|
if all([isfile(project_file), isdir(src_dir), isdir(lib_dir)]):
|
||||||
raise ProjectInitialized()
|
raise ProjectInitialized()
|
||||||
for d in ("lib", "src"):
|
|
||||||
if not isdir(d):
|
if project_dir == getcwd():
|
||||||
makedirs(d)
|
click.secho("The current working directory", fg="yellow", nl=False)
|
||||||
if not isfile("platformio.ini"):
|
click.secho(" %s " % project_dir, fg="blue", nl=False)
|
||||||
copyfile(join(get_source_dir(), "projectconftpl.ini"),
|
click.secho(
|
||||||
"platformio.ini")
|
"will be used for the new project.\n"
|
||||||
secho("Project has been initialized!\n"
|
"You can specify another project directory via\n"
|
||||||
"Please put your source code to `src` directory, "
|
"`platformio init -d %PATH_TO_PROJECT_DIR%` command.\n",
|
||||||
"external libraries to `lib` and "
|
fg="yellow"
|
||||||
"setup environments in `platformio.ini` file.\n"
|
)
|
||||||
"Then process project with `platformio run` command.",
|
|
||||||
fg="green")
|
click.echo("The next files/directories will be created in %s" %
|
||||||
|
click.style(project_dir, fg="blue"))
|
||||||
|
click.echo("%s - Project Configuration File" %
|
||||||
|
click.style("platformio.ini", fg="cyan"))
|
||||||
|
click.echo("%s - a source directory. Put your source code here" %
|
||||||
|
click.style("src", fg="cyan"))
|
||||||
|
click.echo("%s - a directory for the project specific libraries" %
|
||||||
|
click.style("lib", fg="cyan"))
|
||||||
|
|
||||||
|
if click.confirm("Do you want to continue?"):
|
||||||
|
for d in (src_dir, lib_dir):
|
||||||
|
if not isdir(d):
|
||||||
|
makedirs(d)
|
||||||
|
if not isfile(project_file):
|
||||||
|
copyfile(join(get_source_dir(), "projectconftpl.ini"),
|
||||||
|
project_file)
|
||||||
|
click.secho(
|
||||||
|
"Project has been successfully initialized!\n"
|
||||||
|
"Now you can process it with `platformio run` command.",
|
||||||
|
fg="green"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
click.secho("Aborted by user", fg="red")
|
||||||
|
Reference in New Issue
Block a user