Compare commits
2 Commits
dd0852a154
...
2a7de7dab2
Author | SHA1 | Date | |
---|---|---|---|
2a7de7dab2 | |||
74795db477 |
39
.drone.yml
Normal file
39
.drone.yml
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
kind: pipeline
|
||||||
|
type: docker
|
||||||
|
name: main
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
- tag
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build-windows
|
||||||
|
image: nimlang/nim
|
||||||
|
commands:
|
||||||
|
- apt update
|
||||||
|
- apt install -y mingw-w64
|
||||||
|
- nimble build -y -d:mingw
|
||||||
|
|
||||||
|
- name: build-linux
|
||||||
|
image: nimlang/nim
|
||||||
|
commands:
|
||||||
|
- nimble build -y
|
||||||
|
- mv passphrase passphrase_linux
|
||||||
|
|
||||||
|
- name: release
|
||||||
|
image: plugins/gitea-release
|
||||||
|
when:
|
||||||
|
event: tag
|
||||||
|
depends_on:
|
||||||
|
- build-windows
|
||||||
|
- build-linux
|
||||||
|
settings:
|
||||||
|
base_url: 'https://git.jfmonty2.com/jfmonty2/passphrase.git'
|
||||||
|
files:
|
||||||
|
- passphrase_linux
|
||||||
|
- passphrase.exe
|
||||||
|
api_key:
|
||||||
|
from_secret: gitea_token
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,2 @@
|
|||||||
*.exe
|
*.exe
|
||||||
BNC/*
|
data/BNC/*
|
@ -16,7 +16,6 @@ requires "nimcrypto >= 0.4.8"
|
|||||||
|
|
||||||
# Tasks n scripts
|
# Tasks n scripts
|
||||||
|
|
||||||
import strutils
|
|
||||||
|
|
||||||
proc runCmd(command: string, input = "", cache = ""): string =
|
proc runCmd(command: string, input = "", cache = ""): string =
|
||||||
let (output, exitCode) = gorgeEx(command, input, cache)
|
let (output, exitCode) = gorgeEx(command, input, cache)
|
||||||
@ -29,10 +28,10 @@ proc runCmd(command: string, input = "", cache = ""): string =
|
|||||||
|
|
||||||
task(dictionary, "Generate dictionary from BNC XML files"):
|
task(dictionary, "Generate dictionary from BNC XML files"):
|
||||||
echo "Building dictionary"
|
echo "Building dictionary"
|
||||||
let output = runCmd("nim c --run --threads:on -d:release -d:lto src/process.nim BNC/2554/download/Texts src/")
|
let output = runCmd("nim c --run --threads:on -d:release -d:lto src/process.nim data/BNC/2554/download/Texts src/")
|
||||||
echo output.strip().splitlines()[^1]
|
echo output.strip().splitlines()[^1]
|
||||||
|
|
||||||
|
|
||||||
before(build):
|
before(build):
|
||||||
if not fileExists("src/dictionary.txt"):
|
if not fileExists("data/dictionary.txt"):
|
||||||
dictionaryTask()
|
dictionaryTask()
|
||||||
|
@ -23,7 +23,7 @@ proc len(d: Dictionary): int =
|
|||||||
|
|
||||||
|
|
||||||
proc loadWords(): Dictionary =
|
proc loadWords(): Dictionary =
|
||||||
for word in staticRead("dictionary.txt").strip().splitLines():
|
for word in staticRead("../data/dictionary.txt").strip().splitLines():
|
||||||
let startIdx = result.words.len.uint32
|
let startIdx = result.words.len.uint32
|
||||||
result.offsets.add(startIdx)
|
result.offsets.add(startIdx)
|
||||||
result.words.add(word)
|
result.words.add(word)
|
||||||
|
1
src/passphrase.nims
Normal file
1
src/passphrase.nims
Normal file
@ -0,0 +1 @@
|
|||||||
|
--d: release
|
@ -27,6 +27,24 @@ proc save(wordCounts: CountTable; dictName, countName: string) =
|
|||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
type Config = object
|
||||||
|
srcPath: string
|
||||||
|
dstPath: string
|
||||||
|
|
||||||
|
|
||||||
|
proc parseInput(): Config =
|
||||||
|
result.srcPath = r"../data/BNC/2554/download/Texts/"
|
||||||
|
result.dstPath = "."
|
||||||
|
|
||||||
|
if paramCount() > 0:
|
||||||
|
result.srcPath = paramStr(1)
|
||||||
|
if paramCount() > 1:
|
||||||
|
result.dstPath = paramStr(2)
|
||||||
|
|
||||||
|
if not dirExists(result.srcPath):
|
||||||
|
quit("Could not locate datafiles: directory " & result.srcPath & " does not exist.")
|
||||||
|
|
||||||
|
|
||||||
var
|
var
|
||||||
threadResults: Channel[CountTable[string]]
|
threadResults: Channel[CountTable[string]]
|
||||||
progress: Channel[int]
|
progress: Channel[int]
|
||||||
@ -46,17 +64,10 @@ proc processFiles(filenames: seq[string]) =
|
|||||||
when isMainModule:
|
when isMainModule:
|
||||||
let start = getMonoTime()
|
let start = getMonoTime()
|
||||||
|
|
||||||
let basePath =
|
let config = parseInput()
|
||||||
if paramCount() > 0:
|
|
||||||
paramStr(1)
|
|
||||||
else:
|
|
||||||
r"../BNC/2554/download/Texts/"
|
|
||||||
|
|
||||||
if not dirExists(basePath):
|
|
||||||
quit("Could not locate datafiles: directory " & basePath & " does not exist.")
|
|
||||||
|
|
||||||
var paths: seq[string]
|
var paths: seq[string]
|
||||||
for path in walkDirRec(basePath):
|
for path in walkDirRec(config.srcPath):
|
||||||
if path.endsWith(".xml"):
|
if path.endsWith(".xml"):
|
||||||
paths.add(path)
|
paths.add(path)
|
||||||
|
|
||||||
@ -79,15 +90,10 @@ when isMainModule:
|
|||||||
counts.inc(word, count)
|
counts.inc(word, count)
|
||||||
|
|
||||||
counts.sort()
|
counts.sort()
|
||||||
let outPath =
|
|
||||||
if paramCount() > 1:
|
|
||||||
paramStr(2)
|
|
||||||
else:
|
|
||||||
"."
|
|
||||||
|
|
||||||
let
|
let
|
||||||
dPath = joinPath(outPath, "dictionary.txt")
|
dPath = joinPath(config.dstPath, "dictionary.txt")
|
||||||
cPath = joinPath(outPath, "counts.txt")
|
cPath = joinPath(config.dstPath, "counts.txt")
|
||||||
save(counts, dPath, cPath)
|
save(counts, dPath, cPath)
|
||||||
|
|
||||||
echo "Done. Finished in ", (getMonoTime() - start).inMilliseconds.float / 1000, " seconds."
|
echo "Done. Finished in ", (getMonoTime() - start).inMilliseconds.float / 1000, " seconds."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user