diff options
| author | ruki <[email protected]> | 2018-11-28 23:53:47 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-11-28 17:22:44 +0800 |
| commit | 7b10ce1303e6081762498cfdef0870cba732ffd0 (patch) | |
| tree | 04d7efcd9cd4ada02506ef09ae54210fa5041e86 | |
| parent | 6b51f7f0a60dbe3553273fa8a450f8349a51e8e5 (diff) | |
cleanup tmp files
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | xmake/actions/build/cleaner.lua | 78 | ||||
| -rw-r--r-- | xmake/actions/build/main.lua | 4 |
3 files changed, 84 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 3805dc1d8..e3d81c603 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ * [#249](https://github.com/tboox/xmake/pull/249): revise progress formatting to space-leading three digit percentages * [#247](https://github.com/tboox/xmake/pull/247): Add `-D` and `--diagnosis` instead of `--backtrace` * [#259](https://github.com/tboox/xmake/issues/259): Improve on_build, on_build_file and on_xxx for target and rule +* [#269](https://github.com/tboox/xmake/issues/269): Clean up the temporary files at last 30 days ## v2.2.2 @@ -518,6 +519,7 @@ * [#250](https://github.com/tboox/xmake/issues/250): 添加`xmake f --vs_sdkver=10.0.15063.0`去改变windows sdk版本 * 添加`lib.luajit.ffi`和`lib.luajit.jit`扩展模块 * [#263](https://github.com/tboox/xmake/issues/263): 添加object目标类型,仅仅用于编译生成object对象文件 +* [#269](https://github.com/tboox/xmake/issues/269): 每天第一次构建时候后台进程自动清理最近30天的临时文件 ### 改进 diff --git a/xmake/actions/build/cleaner.lua b/xmake/actions/build/cleaner.lua new file mode 100644 index 000000000..6648a2d02 --- /dev/null +++ b/xmake/actions/build/cleaner.lua @@ -0,0 +1,78 @@ +--!A cross-platform build utility based on Lua +-- +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you 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 - 2018, TBOOX Open Source Group. +-- +-- @author ruki +-- @file cleaner.lua +-- + +-- imports +import("core.base.option") +import("core.project.config") +import("core.platform.platform") +import("core.platform.environment") + +-- clean up temporary files once a day +function cleanup() + + -- has been cleaned up today? + local markfile = path.join(os.tmpdir(), "cleanup", os.date("%y%m%d") .. ".mark") + if os.isfile(markfile) then + return + end + + -- mark as posted first, avoid to post it repeatly + io.writefile(markfile, "ok") + + -- init argument list + local argv = {"lua", path.join(os.scriptdir(), "cleaner.lua")} + for _, name in ipairs({"root", "file", "project", "diagnosis", "verbose", "quiet", "yes"}) do + local value = option.get(name) + if type(value) == "string" then + table.insert(argv, "--" .. name .. "=" .. value) + elseif value then + table.insert(argv, "--" .. name) + end + end + + -- try to post it in background + try + { + function () + local proc = process.openv("xmake", argv, path.join(os.tmpdir(), "cleaner.log")) + if proc ~= nil then + process.close(proc) + end + end + } +end + +-- the main function +function main() + + -- clean up the temporary files at last 30 days + local parentdir = path.directory(os.tmpdir()) + for day = 1, 30 do + local tmpdir = path.join(parentdir, os.date("%y%m%d", os.time() - day * 24 * 3600)) + if os.isdir(tmpdir) then + print("cleanup %s ..", tmpdir) + os.tryrm(tmpdir) + end + end +end diff --git a/xmake/actions/build/main.lua b/xmake/actions/build/main.lua index b0d530ef3..b1b64ac50 100644 --- a/xmake/actions/build/main.lua +++ b/xmake/actions/build/main.lua @@ -29,6 +29,7 @@ import("core.project.config") import("core.project.project") import("core.platform.platform") import("build") +import("cleaner") import("trybuild") import("statistics") @@ -52,6 +53,9 @@ function main() -- post statistics statistics.post() + -- clean up temporary files once a day + cleaner.cleanup() + -- build it try { |
