mirror of
https://github.com/lazuscripts/locator.git
synced 2024-11-19 10:54:24 +00:00
push & pull
This commit is contained in:
parent
26c5fae9c4
commit
380708bae6
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,4 @@
|
|||||||
*.lua
|
*.lua
|
||||||
|
!push.lua
|
||||||
|
!pull.lua
|
||||||
|
!add.lua
|
||||||
|
45
pull.lua
Normal file
45
pull.lua
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
local config = require("locator_config")
|
||||||
|
local execute
|
||||||
|
execute = function(cmd, capture_exit_code)
|
||||||
|
if capture_exit_code == nil then
|
||||||
|
capture_exit_code = true
|
||||||
|
end
|
||||||
|
local handle
|
||||||
|
if capture_exit_code then
|
||||||
|
handle = io.popen(tostring(cmd) .. "\necho $?")
|
||||||
|
else
|
||||||
|
handle = io.popen(cmd)
|
||||||
|
end
|
||||||
|
local result = handle:read("*a")
|
||||||
|
handle:close()
|
||||||
|
local exit_start, exit_end = result:find("(%d*)[%c]$")
|
||||||
|
local exit_code = tonumber(result:sub(exit_start, exit_end):sub(1, -2))
|
||||||
|
local output = result:sub(1, exit_start - 1)
|
||||||
|
if exit_code == 0 then
|
||||||
|
return output
|
||||||
|
else
|
||||||
|
return error("sub-process '" .. tostring(cmd) .. "' returned status " .. tostring(exit_code) .. ".\n\n" .. tostring(output))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local list = execute("git remote")
|
||||||
|
local remotes = { }
|
||||||
|
for line in list:gmatch("[^\n]+") do
|
||||||
|
remotes[line] = true
|
||||||
|
end
|
||||||
|
for _index_0 = 1, #config do
|
||||||
|
local item = config[_index_0]
|
||||||
|
if item.remote and item.remote.fetch then
|
||||||
|
if not (item.remote.branch) then
|
||||||
|
item.remote.branch = "master"
|
||||||
|
end
|
||||||
|
if item.remote.name then
|
||||||
|
if not (remotes[item.remote.name]) then
|
||||||
|
execute("git remote add -f " .. tostring(item.remote.name) .. " " .. tostring(item.remote.fetch))
|
||||||
|
if item.remote.push and not ("boolean" == type(item.remote.push)) then
|
||||||
|
execute("git remote set-url --push " .. tostring(item.remote.name) .. " " .. tostring(item.remote.push))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
execute("git subtree pull --prefix " .. tostring(item.path:gsub("%.", "/")) .. " " .. tostring(item.remote.fetch) .. " " .. tostring(item.remote.branch) .. " --squash")
|
||||||
|
end
|
||||||
|
end
|
38
pull.moon
Normal file
38
pull.moon
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
config = require "locator_config"
|
||||||
|
|
||||||
|
execute = (cmd, capture_exit_code=true) ->
|
||||||
|
local handle
|
||||||
|
if capture_exit_code
|
||||||
|
handle = io.popen "#{cmd}\necho $?"
|
||||||
|
else
|
||||||
|
handle = io.popen cmd
|
||||||
|
result = handle\read "*a"
|
||||||
|
handle\close!
|
||||||
|
|
||||||
|
exit_start, exit_end = result\find "(%d*)[%c]$"
|
||||||
|
exit_code = tonumber result\sub(exit_start, exit_end)\sub 1, -2
|
||||||
|
output = result\sub 1, exit_start - 1
|
||||||
|
|
||||||
|
if exit_code == 0
|
||||||
|
return output
|
||||||
|
else
|
||||||
|
error "sub-process '#{cmd}' returned status #{exit_code}.\n\n#{output}"
|
||||||
|
|
||||||
|
list = execute "git remote"
|
||||||
|
remotes = {}
|
||||||
|
for line in list\gmatch "[^\n]+"
|
||||||
|
remotes[line] = true
|
||||||
|
|
||||||
|
for item in *config
|
||||||
|
if item.remote and item.remote.fetch -- if configured to pull
|
||||||
|
unless item.remote.branch
|
||||||
|
item.remote.branch = "master"
|
||||||
|
|
||||||
|
if item.remote.name -- if we want a named remote
|
||||||
|
unless remotes[item.remote.name] -- add it if needed
|
||||||
|
execute "git remote add -f #{item.remote.name} #{item.remote.fetch}"
|
||||||
|
if item.remote.push and not ("boolean" == type item.remote.push)
|
||||||
|
execute "git remote set-url --push #{item.remote.name} #{item.remote.push}"
|
||||||
|
|
||||||
|
-- we actually ignore names with in-script usage..
|
||||||
|
execute "git subtree pull --prefix #{item.path\gsub "%.", "/"} #{item.remote.fetch} #{item.remote.branch} --squash"
|
46
push.lua
Normal file
46
push.lua
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
local config = require("locator_config")
|
||||||
|
local execute
|
||||||
|
execute = function(cmd, capture_exit_code)
|
||||||
|
if capture_exit_code == nil then
|
||||||
|
capture_exit_code = true
|
||||||
|
end
|
||||||
|
local handle
|
||||||
|
if capture_exit_code then
|
||||||
|
handle = io.popen(tostring(cmd) .. "\necho $?")
|
||||||
|
else
|
||||||
|
handle = io.popen(cmd)
|
||||||
|
end
|
||||||
|
local result = handle:read("*a")
|
||||||
|
handle:close()
|
||||||
|
local exit_start, exit_end = result:find("(%d*)[%c]$")
|
||||||
|
local exit_code = tonumber(result:sub(exit_start, exit_end):sub(1, -2))
|
||||||
|
local output = result:sub(1, exit_start - 1)
|
||||||
|
if exit_code == 0 then
|
||||||
|
return output
|
||||||
|
else
|
||||||
|
return error("sub-process '" .. tostring(cmd) .. "' returned status " .. tostring(exit_code) .. ".\n\n" .. tostring(output))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
local list = execute("git remote")
|
||||||
|
local remotes = { }
|
||||||
|
for line in list:gmatch("[^\n]+") do
|
||||||
|
remotes[line] = true
|
||||||
|
end
|
||||||
|
for _index_0 = 1, #config do
|
||||||
|
local item = config[_index_0]
|
||||||
|
if item.remote and item.remote.push then
|
||||||
|
if "boolean" == type(item.remote.push) then
|
||||||
|
item.remote.push = item.remote.fetch
|
||||||
|
end
|
||||||
|
if not (item.remote.branch) then
|
||||||
|
item.remote.branch = "master"
|
||||||
|
end
|
||||||
|
if item.remote.name then
|
||||||
|
if not (remotes[item.remote.name]) then
|
||||||
|
execute("git remote add -f " .. tostring(item.remote.name) .. " " .. tostring(item.remote.fetch))
|
||||||
|
execute("git remote set-url --push " .. tostring(item.remote.name) .. " " .. tostring(item.remote.push))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
execute("git subtree push --prefix " .. tostring(item.path:gsub("%.", "/")) .. " " .. tostring(item.remote.push) .. " " .. tostring(item.remote.branch))
|
||||||
|
end
|
||||||
|
end
|
39
push.moon
Normal file
39
push.moon
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
config = require "locator_config"
|
||||||
|
|
||||||
|
execute = (cmd, capture_exit_code=true) ->
|
||||||
|
local handle
|
||||||
|
if capture_exit_code
|
||||||
|
handle = io.popen "#{cmd}\necho $?"
|
||||||
|
else
|
||||||
|
handle = io.popen cmd
|
||||||
|
result = handle\read "*a"
|
||||||
|
handle\close!
|
||||||
|
|
||||||
|
exit_start, exit_end = result\find "(%d*)[%c]$"
|
||||||
|
exit_code = tonumber result\sub(exit_start, exit_end)\sub 1, -2
|
||||||
|
output = result\sub 1, exit_start - 1
|
||||||
|
|
||||||
|
if exit_code == 0
|
||||||
|
return output
|
||||||
|
else
|
||||||
|
error "sub-process '#{cmd}' returned status #{exit_code}.\n\n#{output}"
|
||||||
|
|
||||||
|
list = execute "git remote"
|
||||||
|
remotes = {}
|
||||||
|
for line in list\gmatch "[^\n]+"
|
||||||
|
remotes[line] = true
|
||||||
|
|
||||||
|
for item in *config
|
||||||
|
if item.remote and item.remote.push -- if configured to push
|
||||||
|
if "boolean" == type item.remote.push
|
||||||
|
item.remote.push = item.remote.fetch
|
||||||
|
unless item.remote.branch
|
||||||
|
item.remote.branch = "master"
|
||||||
|
|
||||||
|
if item.remote.name -- if we want a named remote
|
||||||
|
unless remotes[item.remote.name] -- add it if needed
|
||||||
|
execute "git remote add -f #{item.remote.name} #{item.remote.fetch}"
|
||||||
|
execute "git remote set-url --push #{item.remote.name} #{item.remote.push}"
|
||||||
|
|
||||||
|
-- we actually ignore names with in-script usage..
|
||||||
|
execute "git subtree push --prefix #{item.path\gsub "%.", "/"} #{item.remote.push} #{item.remote.branch}"
|
Loading…
Reference in New Issue
Block a user