diff options
| author | ruki <[email protected]> | 2021-02-12 22:53:12 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-02-12 22:53:12 +0800 |
| commit | cc7678dfae7d945b34b8abc70f18e26b8045fd9e (patch) | |
| tree | 8f5959fb0ac52b39677530b40ad522e2aff385d2 /xmake/actions/require/clean.lua | |
| parent | b29d4891a97dda8bc7a8b805651a77c0bb7698c0 (diff) | |
move require impl
Diffstat (limited to 'xmake/actions/require/clean.lua')
| -rw-r--r-- | xmake/actions/require/clean.lua | 103 |
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 - |
