Implement installer script
This commit is contained in:
parent
5418617a61
commit
60323cac9d
37
src/nimbs/installerscript.nim
Normal file
37
src/nimbs/installerscript.nim
Normal 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
|
0
tests/installerscript/source-whitelist/README.md
Normal file
0
tests/installerscript/source-whitelist/README.md
Normal file
0
tests/installerscript/source-whitelist/file1.nim
Normal file
0
tests/installerscript/source-whitelist/file1.nim
Normal file
0
tests/installerscript/source-whitelist/file2.nim
Normal file
0
tests/installerscript/source-whitelist/file2.nim
Normal file
|
@ -0,0 +1,3 @@
|
|||
version = "1.0"
|
||||
|
||||
installExt = @["nim"]
|
27
tests/installerscript/test_source_whitelist.nim
Normal file
27
tests/installerscript/test_source_whitelist.nim
Normal 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)
|
Loading…
Reference in New Issue
Block a user