Compare commits
2 commits
1fa8fcec64
...
82af3b5d47
Author | SHA1 | Date | |
---|---|---|---|
82af3b5d47 | |||
3035c59a88 |
4 changed files with 64 additions and 1 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
/target/
|
||||||
|
|
49
README.md
49
README.md
|
@ -6,6 +6,53 @@ 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.
|
- Straightforward: No weird formats. Plain text with `\n` escape sequences; easy to add or remove content.
|
||||||
|
|
||||||
|
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
Normal file
7
justfile
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
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,22 +2,29 @@ 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