On 9/24/18 10:45 PM, Thomas De Schampheleire wrote:
# HG changeset patch
# User Thomas De Schampheleire <thomas.de_schamphele...@nokia.com>
# Date 1537814676 -7200
#      Mon Sep 24 20:44:36 2018 +0200
# Node ID b807b1e90e61d2c8c16c5e3ec5978ef7dd7a2d31
# Parent  dd4da443ed94fd93ca09d5f5fd9cf1b2c72b3cc4
cli: add commands to handle front-end generation


It would be nice with examples of how to use it and what the user experience is.

(It will probably also be obvious from the accompanying documentation changes.)


diff --git a/kallithea/bin/kallithea_cli.py b/kallithea/bin/kallithea_cli.py
--- a/kallithea/bin/kallithea_cli.py
+++ b/kallithea/bin/kallithea_cli.py
@@ -14,7 +14,11 @@
import click +from kallithea.bin.kallithea_cli_frontend import frontend
+
  @click.group()
  def cli():
      """Various commands to set up a Kallithea instance."""
      pass
+
+cli.add_command(frontend)
diff --git a/kallithea/bin/kallithea_cli_frontend.py 
b/kallithea/bin/kallithea_cli_frontend.py
new file mode 100644
--- /dev/null
+++ b/kallithea/bin/kallithea_cli_frontend.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import click
+import os
+import subprocess
+
+import kallithea
+
+rootdir = os.path.dirname(os.path.dirname(os.path.abspath(kallithea.__file__)))
+
+@click.group(name='front-end')
+def frontend():
+    pass


I haven't tested and don't know exactly how this shows up, but could it be confusing that this "sub command" "isn't the front-end itself", but just tooling for management/installation of the front-end?


+@frontend.command(name='install-deps')
+def install_deps():
+    """Install required dependencies"""


I guess we should clarify that it is npm dependencies it is installing ... and that it thus needs npm.

Especially, for a correct understanding of what is going on, it must be clear to the user that Python dependencies must be installed first ... and that the Python dependency installation doesn't cover this.


+    click.echo("Running 'npm install' to install front-end dependencies from 
package.json\n")
+    subprocess.check_call(['npm', 'install'], cwd=rootdir)
+
+@frontend.command(name='generate-css')
+def generate_css():
+    """Generate CSS files"""
+    click.echo("\nGenerating pygments.css")
+    with open(os.path.join(rootdir, 'kallithea', 'public', 'css', 
'pygments.css'), 'w') as f:
+        subprocess.check_call(['pygmentize',
+                '-S', 'default',
+                '-f', 'html',
+                '-a', '.code-highlight'],
+                stdout=f)
+
+    click.echo("\nRunning 'npm run less' to generate CSS from LESS")


The "less" command is our own custom command. That one should perhaps also be cleaned up, and more should be moved into this command?

It is perhaps not so important that we generate from .less files. What really matters is that we generate from Kallithea source and npm package content (bootstrap) and perhaps user customization/configuration. (But ok, that bigger context might be covered by the previous "generating" message, and it is fine that this one just show actually is being run now ...)


+    subprocess.check_call(['npm', 'run', 'less'], cwd=rootdir)
+
+@frontend.command()
+@click.pass_context
+def create(ctx):
+    """Create the front-end completely"""
+    ctx.invoke(install_deps)
+    ctx.invoke(generate_css)


/Mads

_______________________________________________
kallithea-general mailing list
kallithea-general@sfconservancy.org
https://lists.sfconservancy.org/mailman/listinfo/kallithea-general

Reply via email to