def main(self):

        # Check
        try:
            self._check_before()
        except:
            return

        # Input information
        mys.log("Please type your new Django application information.")

        # Check namespace
        try:
            self._project_name = mys.log("Project name", withInput=True)
            self._check_namesapce(self._project_name)
        except:
            mys.log("Project \"{0}\" is already exists.".format(
                self._project_name),
                    withError=True,
                    errorDetail=
                    "Please remove duplication of Django project namespace.")
            return

        version = mys.log("App version", withInput=True, default="0.0.1")
        author = mys.log("Author name", withInput=True)
        email = mys.log("Email", withInput=True)
        git_url = mys.log("Git URL", withInput=True)
        license_name = mys.log("License", withInput=True)
        description = mys.log("Description", withInput=True)
        copyrightor = mys.log("Copyrightor", withInput=True, default=author)

        self._create_new_django_app()

        # Create logging instance
        logger = mys.Progress()

        with proj.InDir("./" + self._project_name):

            # Generate .gitignore
            #log("Generating gitignore...")
            logger.write("Generating gitignore...", withLazy=True)
            self._create_template_git_project()

            # Generate README.md
            logger.update("Generating readme...", withLazy=True)
            self._create_docs(description)

            # Generate Miragefile
            logger.update("Generating Miragefile...", withLazy=True)
            self._create_miragefile(version, author, email, git_url,
                                    license_name, description, copyrightor)

            # Add remote repo
            logger.update("Adding remote repository...", withLazy=True)
            mys.command("git remote add origin " + git_url)

        # Completed
        logger.update("Completed!")
    def main(self):

        # Check
        try:
            self._check_before()
        except:
            return

        # Input information
        mys.log("Please type your new Django application information.")

        # Check namespace
        try:
            self._project_name = mys.log("Project name", withInput=True)
            self._check_namesapce(self._project_name)
        except:
            mys.log("Project \"{0}\" is already exists.".format(
                self._project_name),
                    withError=True,
                    errorDetail=
                    "Please remove duplication of Django project namespace.")
            return

        version = mys.log("App version", withInput=True, default="0.0.1")
        author = mys.log("Author name", withInput=True)
        email = mys.log("Email", withInput=True)
        git_url = mys.log("Git URL", withInput=True)
        license_name = mys.log("License", withInput=True)
        license_url = mys.log("License Url", withInput=True)
        description = mys.log("Description", withInput=True)
        copyrightor = mys.log("Copyrightor", withInput=True, default=author)

        self._create_new_django_app()

        # Create logging instance
        logger = mys.Progress()

        with proj.InDir("./" + self._project_name):

            # Generate .gitignore
            #log("Generating gitignore...")
            logger.write("Generating gitignore...", withLazy=True)
            self._create_template_git_project()

            # Generate README.md
            logger.update("Generating readme...", withLazy=True)
            self._create_docs(author, description, license_name)

            # Generate Miragefile
            logger.update("Generating Miragefile...", withLazy=True)
            self._create_miragefile(version, author, email, git_url,
                                    license_name, license_url, description,
                                    copyrightor)

            # Add remote repo
            logger.update("Adding remote repository...", withLazy=True)
            mys.command("git remote add origin " + git_url)

            # Create React App
            self._create_package_json()
            logger.update("Preparing Angular setup tools...", withLazy=True)
            logger.update(
                "Preparing Angular setup tools... ( please wait for a momenet )"
            )
            mys.command("yarn add --dev @angular/cli")

            # To avoid ng inside the project error, remove package.package.json
            os.remove("package.json")

            logger.update(
                "Configuring Angular setup tools to use Yarn package...")
            mys.command(
                "./node_modules/.bin/ng set --global packageManager=yarn")
            logger.update("Creating Angular app...", withLazy=True)
            logger.update(
                "Creating Angular app... ( please wait for a momenet )")
            mys.command("./node_modules/.bin/ng new shell")

            if self._plugins == "--nebular":
                logger.update("Installing Nebular packages...", withLazy=True)
                logger.update(
                    "Installing Nebular packages... ( please wait for a momenet )"
                )
                with proj.InDir("./shell"):
                    mys.command("yarn add @nebular/theme @nebular/auth")

            elif self._plugins == "--material":
                logger.update("Installing material theme packages...")
                with proj.InDir("./shell"):
                    mys.command("yarn add @angular/material @angular/cdk")

            elif self._plugins == "--bootstrap":
                logger.update("Installing Bootstrap theme packages...")
                with proj.InDir("./shell"):
                    mys.command("yarn add ngx-bootstrap")

            # Cleaning
            logger.update("Cleaning...", withLazy=True)
            fileable.rm("yarn.lock")
            fileable.rm("package.json")
            fileable.rm("node_modules/")

            with proj.InDir("./shell"):
                fileable.rm(".gitignore")
                fileable.rm("README.md")

        # Completed
        logger.update("Completed!")
    def main(self):

        # Check
        try:
            self._check_before()
        except:
            return

        # Input information
        mys.log("Please type your new Django application information.")

        # Check namespace
        try:
            self._project_name = mys.log("Project name", withInput=True)
            self._check_namesapce(self._project_name)
        except:
            mys.log("Project \"{0}\" is already exists.".format(
                self._project_name),
                    withError=True,
                    errorDetail=
                    "Please remove duplication of Django project namespace.")
            return

        version = mys.log("App version", withInput=True, default="0.0.1")
        author = mys.log("Author name", withInput=True)
        email = mys.log("Email", withInput=True)
        git_url = mys.log("Git URL", withInput=True)
        license_name = mys.log("License", withInput=True)
        license_url = mys.log("License Url", withInput=True)
        description = mys.log("Description", withInput=True)
        copyrightor = mys.log("Copyrightor", withInput=True, default=author)

        self._create_new_django_app()

        # Create logging instance
        logger = mys.Progress()

        with proj.InDir("./" + self._project_name):

            # Generate .gitignore
            #log("Generating gitignore...")
            logger.write("Generating gitignore...", withLazy=True)
            self._create_template_git_project()

            # Generate README.md
            logger.update("Generating readme...", withLazy=True)
            self._create_docs(author, description, license_name)

            # Generate Miragefile
            logger.update("Generating Miragefile...", withLazy=True)
            self._create_miragefile(version, author, email, git_url,
                                    license_name, license_url, description,
                                    copyrightor)

            # Add remote repo
            logger.update("Adding remote repository...", withLazy=True)
            mys.command("git remote add origin " + git_url)

            # Create React App
            logger.update("Creating React app...")
            self._create_package_json()
            mys.command("yarn add --dev create-react-app")

            if self._js_runtime == "--javascript":
                mys.command("./node_modules/.bin/create-react-app shell")
            else:
                mys.command(
                    "./node_modules/.bin/create-react-app --scripts-version=react-scripts-ts shell"
                )

            logger.update("Installing additional packages...")
            with proj.InDir("./shell"):
                mys.command("yarn add redux react-redux")
                mys.command("yarn add react-router react-router-dom")

            # Cleaning
            logger.update("Cleaning...", withLazy=True)
            fileable.rm("yarn.lock")
            fileable.rm("package.json")
            fileable.rm("node_modules/")

            with proj.InDir("./shell"):
                fileable.rm(".gitignore")
                fileable.rm("README.md")

        # Completed
        logger.update("Completed!")