-
Notifications
You must be signed in to change notification settings - Fork 95
/
lime-config
executable file
·68 lines (61 loc) · 1.85 KB
/
lime-config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/lua
local config = require("lime.config")
local fs = require("nixio.fs")
function getopt( arg, options )
--! Taken from http://lua-users.org/wiki/AlternativeGetOpt
local tab = {}
for k, v in ipairs(arg) do
if string.sub( v, 1, 2) == "--" then
local x = string.find( v, "=", 1, true )
if x then tab[ string.sub( v, 3, x-1 ) ] = string.sub( v, x+1 )
else tab[ string.sub( v, 3 ) ] = true
end
elseif string.sub( v, 1, 1 ) == "-" then
local y = 2
local l = string.len(v)
local jopt
while ( y <= l ) do
jopt = string.sub( v, y, y )
if string.find( options, jopt, 1, true ) then
if y < l then
tab[ jopt ] = string.sub( v, y+1 )
y = l
else
tab[ jopt ] = arg[ k + 1 ]
end
else
tab[ jopt ] = true
end
y = y + 1
end
end
end
return tab
end
local lockFilePath = "/var/run/lime-config.pid"
local lockFile = io.open(lockFilePath,"r")
if lockFile then
lockFile:close()
print("Cannot acquire lock on "..lockFilePath)
print("This may be caused by lime-config already running or unexpectedly crashed.")
print("If it is the latter case (check carefully!) try by deleting the lock file with:")
print("# rm -rf "..lockFilePath)
print("Before running lime-config again")
else
lockFile = io.open(lockFilePath,"w")
local statFile = io.open("/proc/self/stat", "r")
lockFile:write(statFile:read("*n"))
statFile:close()
opts = getopt( arg, "" )
config.main()
--! using --no-commit doesn't guarantee filesystem will not be changed
--! mainly because many config files are not uci-based
if not opts["no-commit"] and not opts["n"] then
local uci = require("uci"):cursor()
for config,_ in pairs(uci:changes()) do
uci:commit(config)
end
end
lockFile:close()
os.remove(lockFilePath)
end