Untangle route terminology a bit

This commit is contained in:
Lucien Greathouse
2018-06-10 15:50:03 -07:00
parent a089d82023
commit ccec93aee8
2 changed files with 23 additions and 27 deletions

View File

@@ -169,38 +169,34 @@ function Plugin:stopPolling()
return Promise.resolve(true) return Promise.resolve(true)
end end
function Plugin:_pull(api, project, routes) function Plugin:_pull(api, project, fileRoutes)
return api:read(routes) return api:read(fileRoutes)
:andThen(function(items) :andThen(function(items)
for index = 1, #routes do for index = 1, #fileRoutes do
local itemRoute = routes[index] local fileRoute = fileRoutes[index]
local partitionName = itemRoute[1] local partitionName = fileRoute[1]
local partition = project.partitions[partitionName] local partition = project.partitions[partitionName]
local item = items[index] local item = items[index]
local partitionRoute = collectMatch(partition.target, "[^.]+") local partitionTargetRbxRoute = collectMatch(partition.target, "[^.]+")
-- If the item route's length was 1, we need to rename the instance to -- If the item route's length was 1, we need to rename the instance to
-- line up with the partition's root object name. -- line up with the partition's root object name.
-- if item ~= nil and #fileRoute == 1 then
-- This is a HACK! local objectName = partition.target:match("[^.]+$")
if #itemRoute == 1 then item.Name = objectName
if item then
local objectName = partition.target:match("[^.]+$")
item.Name = objectName
end
end end
local fullRoute = {} local itemRbxRoute = {}
for _, piece in ipairs(partitionRoute) do for _, piece in ipairs(partitionTargetRbxRoute) do
table.insert(fullRoute, piece) table.insert(itemRbxRoute, piece)
end end
for i = 2, #itemRoute do for i = 2, #fileRoute do
table.insert(fullRoute, itemRoute[i]) table.insert(itemRbxRoute, fileRoute[i])
end end
self._reconciler:reconcileRoute(fullRoute, item, itemRoute) self._reconciler:reconcileRoute(itemRbxRoute, item, fileRoute)
end end
end) end)
end end
@@ -283,13 +279,13 @@ function Plugin:syncIn()
return Promise.reject(info) return Promise.reject(info)
end end
local routes = {} local fileRoutes = {}
for name in pairs(info.project.partitions) do for name in pairs(info.project.partitions) do
table.insert(routes, {name}) table.insert(fileRoutes, {name})
end end
local pullSuccess, pullResult = self:_pull(api, info.project, routes):await() local pullSuccess, pullResult = self:_pull(api, info.project, fileRoutes):await()
self._syncInProgress = false self._syncInProgress = false

View File

@@ -202,12 +202,12 @@ function Reconciler:reconcile(rbx, item)
return rbx return rbx
end end
function Reconciler:reconcileRoute(route, item, itemRoute) function Reconciler:reconcileRoute(rbxRoute, item, fileRoute)
local parent local parent
local rbx = game local rbx = game
for i = 1, #route do for i = 1, #rbxRoute do
local piece = route[i] local piece = rbxRoute[i]
local child = rbx:FindFirstChild(piece) local child = rbx:FindFirstChild(piece)
@@ -223,7 +223,7 @@ function Reconciler:reconcileRoute(route, item, itemRoute)
end end
-- We don't want to create a folder if we're reaching our target item! -- We don't want to create a folder if we're reaching our target item!
if child == nil and i ~= #route then if child == nil and i ~= #rbxRoute then
child = Instance.new("Folder") child = Instance.new("Folder")
child.Parent = rbx child.Parent = rbx
child.Name = piece child.Name = piece
@@ -235,7 +235,7 @@ function Reconciler:reconcileRoute(route, item, itemRoute)
-- Let's check the route map! -- Let's check the route map!
if rbx == nil then if rbx == nil then
rbx = self._routeMap:get(itemRoute) rbx = self._routeMap:get(fileRoute)
end end
rbx = self:reconcile(rbx, item) rbx = self:reconcile(rbx, item)