aboutsummaryrefslogtreecommitdiff
path: root/bcst
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2020-04-22 10:03:04 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2020-04-22 10:03:04 +0200
commit586e35e3906214fc964714dd60091b290400ba1d (patch)
tree34fcc2b46d8a95abadd454773edcc94c48df6ffc /bcst
parent24ef10da650d091e67bd82ec3f9b329bcee1a15e (diff)
Clean theme and improve api
Diffstat (limited to 'bcst')
-rw-r--r--bcst/args.py11
-rwxr-xr-xbcst/bcst41
-rw-r--r--bcst/resource.py23
-rw-r--r--bcst/theme.py73
-rw-r--r--bcst/themes/default/index.html22
5 files changed, 92 insertions, 78 deletions
diff --git a/bcst/args.py b/bcst/args.py
deleted file mode 100644
index 993c9ed..0000000
--- a/bcst/args.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env python
-
-import argparse
-
-args_parser = argparse.ArgumentParser()
-args_parser.add_argument("resource", nargs="?", help="A JSON resource file.")
-args_parser.add_argument("destination", nargs="?",help="Start page folder name.")
-args_parser.add_argument("-l","--list", dest="list",action="store_true", help="List available themes.")
-args_parser.add_argument("-e","--extract", metavar="theme",dest="extract", help="Extract theme resource.")
-args = args_parser.parse_args()
-
diff --git a/bcst/bcst b/bcst/bcst
index a38bf5c..e843410 100755
--- a/bcst/bcst
+++ b/bcst/bcst
@@ -1,18 +1,37 @@
#!/usr/bin/env python
-from bcst.args import args
-from bcst.resource import Resource
from bcst.theme import *
-if args.list:
+import argparse
+
+# if args.list:
+# for theme in list_themes():
+# print("- "+theme)
+# exit(0)
+# elif args.extract:
+# t=Theme("default")
+# t.extract("resources.json")
+# exit(0)
+# elif args.resource and args.destination:
+# t=Theme("default")
+# t.update_resource(args.resource)
+# t.deploy(args.destination)
+
+
+
+args_parser = argparse.ArgumentParser()
+args_parser.add_argument("-g", "--generate", nargs=3,metavar=("theme","resource","destination"), help="Generate a start page using a <theme> with a <resource> into the <destination> folder.")
+args_parser.add_argument("-l","--list", dest="list",action="store_true", help="List available themes.")
+args_parser.add_argument("-e","--extract", metavar="theme", help="Extract theme resource.")
+args = args_parser.parse_args()
+
+if args.generate :
+ t=Theme(args.generate[0])
+ t.update_resource(args.generate[1])
+ t.generate(args.generate[2])
+elif args.list:
for theme in list_themes():
print("- "+theme)
- exit(0)
elif args.extract:
- t=Theme("default")
- t.extract("resources.json")
- exit(0)
-elif args.resource and args.destination:
- t=Theme("default")
- t.update_resource(args.resource)
- t.deploy(args.destination)
+ t=Theme(args.extract)
+ print(t.resource.content)
diff --git a/bcst/resource.py b/bcst/resource.py
deleted file mode 100644
index 342e08a..0000000
--- a/bcst/resource.py
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env python
-
-from os import path
-import json
-
-
-class Resource:
- def __init__(self, resource):
- self.resource=resource
- # Read data
- try:
- with open(resource,'r') as f:
- self.data=f.read()
- except IOError:
- print("Unable to found "+resource)
- exit(1)
- # Decode data
- try:
- self.json=json.loads(self.data)
- except:
- print("Unable to read json from "+resource)
- exit(1)
-
diff --git a/bcst/theme.py b/bcst/theme.py
index 9bdd956..93efed2 100644
--- a/bcst/theme.py
+++ b/bcst/theme.py
@@ -1,18 +1,18 @@
#!/usr/bin/env python
-from bcst.resource import Resource
+
from shutil import copytree, ignore_patterns
from jinja2 import Template
-import os
-from os import path
+import json
+from os import path, listdir
themes_location=path.join(path.dirname(path.abspath(__file__)),"themes")
def list_themes():
themes=list()
- for f in os.listdir(themes_location):
- if(not(os.path.isfile(os.path.join(themes_location,f)))):
+ for f in listdir(themes_location):
+ if(not(path.isfile(path.join(themes_location,f)))):
themes.append(f)
return(themes)
@@ -24,15 +24,52 @@ def get_theme_path(name):
print("Could not find theme: "+name)
exit(1)
-class Theme:
+class Resource:
+ """
+ Load a resource file.
+ - path: Contains the resources location
+ - data: Contains the loaded (from json) resource data
+ - content: Contains the plain text data of the resource file
+ """
+ def __init__(self, resource_path):
+ self.path=resource_path
+ # Read data
+ try:
+ with open(resource_path,'r') as resFile:
+ self.content=resFile.read()
+ except:
+ self.error("unable to read "+resource_path)
+ # Decode data
+ try:
+ self.data=json.loads(self.content)
+ except:
+ self.error("unable to load json from "+resource_path)
+
+ def error(self, msg):
+ """
+ Raise error and exit.
+ """
+ print("In Resource ==> "+msg)
+ exit(1)
+
+ def update_data(self, new_data):
+ """
+ Update current resource data.
+ """
+ self.data.update(new_data)
+
+
+class Theme:
+ """
+ Load a theme.
+ """
def __init__(self, name):
- self.theme_path=get_theme_path(name)
- self.res_path=self.theme_path+"/resources.json"
- self.data=Resource(self.res_path).json
+ self.path=get_theme_path(name)
+ self.resource=Resource(self.path+"/resources.json")
# Read theme
try:
- with open(self.theme_path+"/index.html",'r') as f:
+ with open(self.path+"/index.html",'r') as f:
self.template=Template(f.read())
except IOError:
print("Unable to found "+resource)
@@ -40,17 +77,9 @@ class Theme:
def update_resource(self,resource_path):
r=Resource(resource_path)
- self.data.update(r.json)
-
+ self.resource.update_data(r.data)
- def extract(self, dest):
- with open(dest, "w") as resFile:
- resFile.write(self.data.data)
-
-
- def deploy(self, dest_path):
- copytree(self.theme_path, dest_path, dirs_exist_ok=True,ignore=ignore_patterns("*.json","index.html"))
- themes_dir=os.path.split(self.theme_path)[0]
- theme_dir=os.path.split(self.theme_path)[1]
+ def generate(self, dest_path):
+ copytree(self.path, dest_path, dirs_exist_ok=True,ignore=ignore_patterns("*.json","index.html"))
with open(dest_path+"/index.html", "w") as index:
- index.write(self.template.render(self.data))
+ index.write(self.template.render(self.resource.data))
diff --git a/bcst/themes/default/index.html b/bcst/themes/default/index.html
index 82133cb..e82802f 100644
--- a/bcst/themes/default/index.html
+++ b/bcst/themes/default/index.html
@@ -4,18 +4,18 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="assets/style.css">
<!-- Removed custom title -->
-<!-- Meta injected by Custom Start Page for SEO purposes -->
-<title>{{ title }}</title>
-<meta name="description" content="Jazz is a free, open source and customisable start page for your browser, hosted by Custom Start Page.">
-</head><span id="warning-container"><i data-reactroot=""></i></span><link type="text/css" id="dark-mode" rel="stylesheet" href=""><style type="text/css" id="dark-mode-custom-style"></style>
+ <!-- Meta injected by Custom Start Page for SEO purposes -->
+ <title>{{ title }}</title>
+ <meta name="description" content="Jazz is a free, open source and customisable start page for your browser, hosted by Custom Start Page.">
+ </head>
+ <span id="warning-container">
+ <i data-reactroot=""></i>
+ </span>
+ <link type="text/css" id="dark-mode" rel="stylesheet" href="">
+ <style type="text/css" id="dark-mode-custom-style"></style>
+ <body>
-<body>
- <!--div id="clock"-->
- <!--span id="date"--><!--/span-->
- <!--span class="slash"--><!--/span-->
- <!--span id="time"--><!--/span-->
- <!--/div-->
<main>
{% for key,value in bookmarks.items() %}
<section>
@@ -33,5 +33,5 @@
</main>
<script src="assets/script.js"></script>
-</body>
+ </body>
</html>