Compare commits
No commits in common. "82af3b5d471013b092dc0a066476f581298de390" and "1fa8fcec64714fbe6689a270e59244004f0e6828" have entirely different histories.
82af3b5d47
...
1fa8fcec64
4 changed files with 1 additions and 64 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +0,0 @@
|
||||||
/target/
|
|
||||||
|
|
49
README.md
49
README.md
|
@ -6,53 +6,6 @@ A no-nonsense, user-extensible `fortune-mod` replacement.
|
||||||
## Goals
|
## Goals
|
||||||
|
|
||||||
- Sensible: I'm fed up with fortunes about men hating their wives.
|
- Sensible: I'm fed up with fortunes about men hating their wives.
|
||||||
- Straightforward: No weird formats. Plain text with `\n` escape sequences; easy to add or remove content.
|
- Straightforward: No weird formats. Plain text with `\n` escape sequences.
|
||||||
|
|
||||||
This project was originally built in Rust, and I migrated it to C# primarily to
|
|
||||||
test out [bflat](https://github.com/bflattened/bflat).
|
|
||||||
|
|
||||||
## Installation
|
|
||||||
|
|
||||||
### Application
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Release Binary</summary>
|
|
||||||
|
|
||||||
Copy the compiled binary from the [releases page](https://git.vwolfe.io/valerie/fortune-cs/releases)
|
|
||||||
to a directory in `$PATH`, such as `/usr/bin/`.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>From Source</summary>
|
|
||||||
|
|
||||||
Clone the source repository and either use the prewritten [just](https://github.com/casey/just)
|
|
||||||
recipe with the command `just build`, or run `bflat build ./src/Program.cs` if
|
|
||||||
you'd rather set your build options manually.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### Base Fortunes
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Release Tarball</summary>
|
|
||||||
|
|
||||||
Copy the `base-fortunes.tar.gz` tarball from the [releases page](https://git.vwolfe.io/valerie/fortune-cs/releases),
|
|
||||||
extract the archive using `tar xzf base-fortunes.tar.gz`, and move the
|
|
||||||
resulting `.txt` files to `/usr/share/fortune-cs/`.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>From Source</summary>
|
|
||||||
|
|
||||||
Clone the source repository and copy the files from the `data/` directory to
|
|
||||||
`/usr/share/fortune-cs`.
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Dependencies
|
|
||||||
|
|
||||||
- [bflat](https://github.com/bflattened/bflat): Compiler
|
|
||||||
- [just](https://github.com/casey/just): Build recipe
|
|
||||||
|
|
||||||
|
|
7
justfile
7
justfile
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
build:
|
|
||||||
bflat build -o ./target/fortune-cs --no-reflection --no-stacktrace-data --no-globalization --no-debug-info --no-pie
|
|
||||||
|
|
||||||
fortunes:
|
|
||||||
cd data & tar czf ../target/base-fortunes.tar.gz ./*.txt
|
|
||||||
|
|
|
@ -2,29 +2,22 @@ using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
|
||||||
// make sure fortune directory exists
|
|
||||||
var resourcePath = "/usr/share/fortune-cs/";
|
var resourcePath = "/usr/share/fortune-cs/";
|
||||||
if(!Directory.Exists(resourcePath)) {
|
if(!Directory.Exists(resourcePath)) {
|
||||||
Console.WriteLine("fortune-cs: directory '/usr/share/fortune-cs/' does not exist");
|
Console.WriteLine("fortune-cs: directory '/usr/share/fortune-cs/' does not exist");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// pull file list
|
|
||||||
var files = Directory.GetFiles(resourcePath, "*.txt");
|
var files = Directory.GetFiles(resourcePath, "*.txt");
|
||||||
|
|
||||||
var prng = RandomNumberGenerator.Create();
|
var prng = RandomNumberGenerator.Create();
|
||||||
|
|
||||||
// choose a file and line
|
|
||||||
var file = files[RandomNumberGenerator.GetInt32(files.Length)];
|
var file = files[RandomNumberGenerator.GetInt32(files.Length)];
|
||||||
var lines = File.ReadAllLines(file);
|
var lines = File.ReadAllLines(file);
|
||||||
var line = lines[RandomNumberGenerator.GetInt32(lines.Length)];
|
var line = lines[RandomNumberGenerator.GetInt32(lines.Length)];
|
||||||
|
|
||||||
prng.Dispose();
|
prng.Dispose();
|
||||||
|
|
||||||
// process escape codes
|
|
||||||
line = line.Replace("\\n", "\n");
|
|
||||||
|
|
||||||
// write
|
|
||||||
Console.WriteLine(line);
|
Console.WriteLine(line);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue