Compare commits
7 Commits
2a7de7dab2
...
dd0852a154
Author | SHA1 | Date | |
---|---|---|---|
dd0852a154 | |||
6e938d71f7 | |||
23bac97cea | |||
741d70ea42 | |||
fb72d824d3 | |||
203cc55350 | |||
|
29e59ab845 |
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
|
||||
BNC/*
|
||||
data/BNC/*
|
@ -16,7 +16,6 @@ requires "nimcrypto >= 0.4.8"
|
||||
|
||||
# Tasks n scripts
|
||||
|
||||
import strutils
|
||||
|
||||
proc runCmd(command: string, input = "", cache = ""): string =
|
||||
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"):
|
||||
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]
|
||||
|
||||
|
||||
before(build):
|
||||
if not fileExists("src/dictionary.txt"):
|
||||
if not fileExists("data/dictionary.txt"):
|
||||
dictionaryTask()
|
||||
|
@ -23,7 +23,7 @@ proc len(d: Dictionary): int =
|
||||
|
||||
|
||||
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
|
||||
result.offsets.add(startIdx)
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
threadResults: Channel[CountTable[string]]
|
||||
progress: Channel[int]
|
||||
@ -46,17 +64,10 @@ proc processFiles(filenames: seq[string]) =
|
||||
when isMainModule:
|
||||
let start = getMonoTime()
|
||||
|
||||
let basePath =
|
||||
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.")
|
||||
let config = parseInput()
|
||||
|
||||
var paths: seq[string]
|
||||
for path in walkDirRec(basePath):
|
||||
for path in walkDirRec(config.srcPath):
|
||||
if path.endsWith(".xml"):
|
||||
paths.add(path)
|
||||
|
||||
@ -79,15 +90,10 @@ when isMainModule:
|
||||
counts.inc(word, count)
|
||||
|
||||
counts.sort()
|
||||
let outPath =
|
||||
if paramCount() > 1:
|
||||
paramStr(2)
|
||||
else:
|
||||
"."
|
||||
|
||||
let
|
||||
dPath = joinPath(outPath, "dictionary.txt")
|
||||
cPath = joinPath(outPath, "counts.txt")
|
||||
dPath = joinPath(config.dstPath, "dictionary.txt")
|
||||
cPath = joinPath(config.dstPath, "counts.txt")
|
||||
save(counts, dPath, cPath)
|
||||
|
||||
echo "Done. Finished in ", (getMonoTime() - start).inMilliseconds.float / 1000, " seconds."
|
||||
|
Loading…
x
Reference in New Issue
Block a user