Procházet zdrojové kódy

ffho-site-generate: fix some bugs
fix Makefile
use luci-lib-json instead ob luci-lib-jsonc
remove obsolete sites.lua
fix and improve 005-set-site-config

Karsten Böddeker před 8 roky
rodič
revize
6451d270d0

+ 3 - 5
ffho/ffho-site-generate/Makefile

@@ -14,7 +14,7 @@ define Package/ffho-site-generate
   SECTION:=ffho
   CATEGORY:=Gluon
   TITLE:=Scripts for generating a new site.json
-  DEPENDS:=+gluon-core
+  DEPENDS:=+gluon-core +luci-lib-json
   MAINTAINER:=Freifunk Hochstift <maschinenraum@paderborn.freifunk.net>
   URL:=https://git.c3pb.de/freifunk-pb/ffho-packages
   SOURCE:=git@git.c3pb.de:freifunk-pb/ffho-packages.git
@@ -39,10 +39,8 @@ endef
 define Package/ffho-site-generate/install
 	$(CP) ./files/* $(1)/
 	lua -e 'print(require("cjson").encode(assert(dofile("$(GLUONDIR)/scripts/site_config.lua"))))' > $(1)/lib/gluon/site-select/default.json
-	lua -e 'print(require("cjson").encode(assert(dofile(" ./scripts/sites.lua"))))' >  $(1)/lib/gluon/site-select/sites.json
-	if [ -e $(GLUON_SITEDIR)/extra/groups.conf  ]; then
-		lua -e 'print(require("cjson").encode(assert(dofile(" ./scripts/groupes.lua"))))' >  $(1)/lib/gluon/site-select/groups.json
-	fi
+	lua -e 'print(require("cjson").encode(assert(dofile("./scripts/sites.lua"))))' >  $(1)/lib/gluon/site-select/sites.json
+	if [ -e $(GLUON_SITEDIR)/extra/groups.conf  ]; then lua -e 'print(require("cjson").encode(assert(dofile("./scripts/groupes.lua"))))' >  $(1)/lib/gluon/site-select/groups.json; fi
 endef
 
 $(eval $(call BuildPackage,ffho-site-generate))

+ 18 - 8
ffho/ffho-site-generate/files/lib/gluon/upgrade/005-set-site-config

@@ -1,11 +1,18 @@
 #!/usr/bin/lua
 
 local uci = require('luci.model.uci').cursor()
-local json =  require 'luci.jsonc'
+local json =  require 'luci.json'
 local site_code = require('gluon.site_config').site_code
-local default = json.decode(io.open('/lib/gluon/site-select/default.json'):read('*a'))
-local groups = json.decode(io.open('/lib/gluon/site-select/groups.json'):read('*a'))
-local sites = json.decode(io.open('/lib/gluon/site-select/sites.json'):read('*a'))
+
+function get_config(file)
+  local f = io.open(file)
+  if f then
+    local config = json.decode(f:read('*a'))
+    f:close()
+    return config
+  end
+  return nil
+end
 
 function add_var_to_table(table, var)
   if type(var) == "table" and type(table) == "table" then
@@ -20,20 +27,23 @@ function add_var_to_table(table, var)
   return table
 end
 
+local default = get_config('/lib/gluon/site-select/default.json')
+local groups = get_config('/lib/gluon/site-select/groups.json')
+local sites = get_config('/lib/gluon/site-select/sites.json')
 local currentsite = uci:get("currentsite", "current", "name")
 
 if site_code ~= currentsite then
   local configured = false
   for index, site in pairs(sites) do
     if site.site_code == currentsite then
-      if site.site_select.group and groups and groups[site.site_select.group] then
+      if site.site_select and site.site_select.group and groups and groups[site.site_select.group] then
         default = add_var_to_table(default, groups[site.site_select.group])
       end
       default = add_var_to_table(default, site)
 
-      file = '/lib/gluon/site.conf'
-      f = io.open(file, "w")
-      io.write(f,json.encode(default))
+      local file = '/lib/gluon/site.conf'
+      local f = io.open(file, "w")
+      f:write(json.encode(default))
       f:close()
 
       configured = true

+ 0 - 13
ffho/ffho-site-generate/files/usr/lib/lua/gluon/sites.lua

@@ -1,13 +0,0 @@
-local config = '/lib/gluon/site-select/sites.conf'
-
-local function loader()
-   coroutine.yield('return ')
-   coroutine.yield(io.open(config):read('*a'))
-end
-
--- setfenv doesn't work with Lua 5.2 anymore, but we're using 5.1
-local sites = setfenv(assert(load(coroutine.wrap(loader), 'sites.conf')), {})()
-
-module 'gluon.sites'
-
-return sites