Implement installer script

This commit is contained in:
Anna “CyberTailor” 2022-06-29 01:17:26 +05:00
parent 5418617a61
commit 60323cac9d
Signed by: CyberTaIlor
GPG Key ID: E7B76EDC50864BB1
6 changed files with 67 additions and 0 deletions

View File

@ -0,0 +1,37 @@
# SPDX-FileCopyrightText: 2022 Anna <cyber@sysrq.in>
# SPDX-License-Identifier: BSD-3-Clause
import os, strformat
import options, packageinfo
proc writeCpFile(f: File, source, dest: string) =
f.write(&"""echo "-- Installing " & destDir & "{dest}"""")
f.write('\n')
f.write(&"""cpFile("{source}", destDir & "{dest}")""")
f.write('\n')
proc writeMkDir(f: File, dir: string) =
f.write(&"""mkDir(destDir & "{dir}")""")
f.write('\n')
proc writeInstallerScript*(f: File, pkgInfo: PackageInfo, options: Options) =
f.write("""#!/usr/bin/env nim e
let destDir = getEnv("DESTDIR")
""")
let packageDir = options.getPkgsDir() / (pkgInfo.name & '-' & pkgInfo.version)
f.writeMkDir(packageDir)
f.writeCpFile(pkgInfo.nimbleFile, packageDir / pkgInfo.nimbleFile.lastPathPart)
let offset = pkgInfo.getSourceDir(options).len
for entry in pkgInfo.getInstallFiles(options):
let dest = packageDir / entry.path.substr(offset)
case entry.kind
of pcDir:
f.write('\n')
f.writeMkDir(dest)
of pcFile:
f.writeCpFile(entry.path, dest)
else: continue

View File

@ -0,0 +1,3 @@
version = "1.0"
installExt = @["nim"]

View File

@ -0,0 +1,27 @@
# SPDX-FileCopyrightText: 2022 Anna <cyber@sysrq.in>
# SPDX-License-Identifier: BSD-3-Clause
discard """
disabled: "win"
output: '''#!/usr/bin/env nim e
let destDir = getEnv("DESTDIR")
mkDir(destDir & "/opt/nimble/pkgs2/source-whitelist-1.0")
echo "-- Installing " & destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/source-whitelist.nimble"
cpFile("tests/installerscript/source-whitelist/source-whitelist.nimble", destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/source-whitelist.nimble")
echo "-- Installing " & destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/file1.nim"
cpFile("tests/installerscript/source-whitelist/file1.nim", destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/file1.nim")
echo "-- Installing " & destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/file2.nim"
cpFile("tests/installerscript/source-whitelist/file2.nim", destDir & "/opt/nimble/pkgs2/source-whitelist-1.0/file2.nim")
'''
"""
import os
import nimbs/installerscript, nimbs/options, nimbs/packageinfo
var opts = Options(sourceDir: "tests" / "installerscript" / "source-whitelist")
opts.setNimBin
opts.setNimbleDir
let pkgInfo = initPackageInfo(opts)
stdout.writeInstallerScript(pkgInfo, opts)