summaryrefslogtreecommitdiff
path: root/xmake/actions/require/clean.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2021-02-12 22:53:12 +0800
committerruki <[email protected]>2021-02-12 22:53:12 +0800
commitcc7678dfae7d945b34b8abc70f18e26b8045fd9e (patch)
tree8f5959fb0ac52b39677530b40ad522e2aff385d2 /xmake/actions/require/clean.lua
parentb29d4891a97dda8bc7a8b805651a77c0bb7698c0 (diff)
move require impl
Diffstat (limited to 'xmake/actions/require/clean.lua')
-rw-r--r--xmake/actions/require/clean.lua103
1 files changed, 0 insertions, 103 deletions
diff --git a/xmake/actions/require/clean.lua b/xmake/actions/require/clean.lua
deleted file mode 100644
index fb93e6304..000000000
--- a/xmake/actions/require/clean.lua
+++ /dev/null
@@ -1,103 +0,0 @@
---!A cross-platform build utility based on Lua
---
--- Licensed under the Apache License, Version 2.0 (the "License");
--- you may not use this file except in compliance with the License.
--- You may obtain a copy of the License at
---
--- http://www.apache.org/licenses/LICENSE-2.0
---
--- Unless required by applicable law or agreed to in writing, software
--- distributed under the License is distributed on an "AS IS" BASIS,
--- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--- See the License for the specific language governing permissions and
--- limitations under the License.
---
--- Copyright (C) 2015-present, TBOOX Open Source Group.
---
--- @author ruki
--- @file clean.lua
---
-
--- imports
-import("core.base.option")
-import("core.package.package")
-import("core.cache.localcache")
-
--- clear the unused or invalid package directories
-function _clear_packagedirs(packagedir)
-
- -- clear them
- local package_name = path.filename(packagedir)
- for _, versiondir in ipairs(os.dirs(path.join(packagedir, "*"))) do
- local version = path.filename(versiondir)
- for _, hashdir in ipairs(os.dirs(path.join(versiondir, "*"))) do
- local hash = path.filename(hashdir)
- local references_file = path.join(hashdir, "references.txt")
- local referenced = false
- local references = os.isfile(references_file) and io.load(references_file) or nil
- if references then
- for projectdir, refdate in pairs(references) do
- if os.isdir(projectdir) then
- referenced = true
- break
- end
- end
- end
- local manifest_file = path.join(hashdir, "manifest.txt")
- local status = nil
- if os.emptydir(hashdir) then
- status = "empty"
- elseif not referenced then
- status = "unused"
- elseif not os.isfile(manifest_file) then
- status = "invalid"
- end
- if status then
- local description = string.format("remove this ${magenta}%s-%s${clear}/${yellow}%s${clear} (${red}%s${clear})", package_name, version, hash, status)
- local confirm = utils.confirm({default = true, description = description})
- if confirm then
- os.rm(hashdir)
- end
- end
- end
- if os.emptydir(versiondir) then
- os.rm(versiondir)
- end
- end
- if os.emptydir(packagedir) then
- os.rm(packagedir)
- end
-end
-
--- clean the given or all package caches
-function main(package_names)
-
- -- trace
- print("clearing packages ..")
-
- -- clear all unused packages
- local installdir = package.installdir()
- if package_names then
- for _, package_name in ipairs(package_names) do
- for _, packagedir in ipairs(os.dirs(path.join(installdir, package_name:sub(1, 1), package_name))) do
- _clear_packagedirs(packagedir)
- end
- end
- else
- for _, packagedir in ipairs(os.dirs(path.join(installdir, "*", "*"))) do
- _clear_packagedirs(packagedir)
- end
- end
-
- -- trace
- print("clearing caches ..")
-
- -- clear cache directory
- os.rm(package.cachedir())
-
- -- clear require cache
- local require_cache = localcache.cache("package")
- require_cache:clear()
- require_cache:save()
-end
-