Compare commits

...

7 Commits

Author SHA1 Message Date
dd0852a154 typo
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:58:45 -07:00
6e938d71f7 rename linux executable after building
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:56:34 -07:00
23bac97cea add pointless echo step
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:47:47 -07:00
741d70ea42 try to figure out why linux build isn't running
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:47:12 -07:00
fb72d824d3 first attempt to parallelize build stages
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:46:21 -07:00
203cc55350 add drone CI config
All checks were successful
continuous-integration/drone/push Build is passing
2021-07-28 16:37:05 -07:00
Joseph Montanaro
29e59ab845 more refactoring 2021-07-27 10:41:23 -07:00
8 changed files with 66 additions and 21 deletions

39
.drone.yml Normal file
View 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
View File

@ -1,2 +1,2 @@
*.exe
BNC/*
data/BNC/*

View File

@ -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()

View File

@ -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
View File

@ -0,0 +1 @@
--d: release

View File

@ -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."