diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2daa301 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,26 @@ +# EditorConfig is awesome: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +max_line_length = 80 +tab_width = 4 +trim_trailing_whitespace = true + +[*.{js,ts}] +quote_type = double + +[*.yaml] +indent_size = 4 +tab_width = 4 +indent_style = space + +[package.json] +indent_size = 2 +tab_width = 2 diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3b49f50 --- /dev/null +++ b/.envrc @@ -0,0 +1,2 @@ +export PATH=$PWD/scripts:$PWD/node_modules/.bin:$PATH +use flake || use nix diff --git a/.gitignore b/.gitignore index 0e21ad4..53892d0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,13 @@ -node_modules/ -*.epub -*.mobi -*.pdf -*.docx *~ -dmoonfire* +node_modules/ +.direnv/ +tmp/ +build/ + +.*-swp +dmoonfire*.pdf +dmoonfire*.docx +dmoonfire*.html +dmoonfire*.mobi +dmoonfire*.epub +*.bz2 diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab102f3..d839bdd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,29 +1,19 @@ -image: dmoonfire/mfgames-writing-js:2.0.0 - stages: - - publish + - build + - test + - release -publish: - stage: publish - only: [master] - tags: [docker] +default: + image: registry.gitlab.com/dmoonfire/nix-flake-docker:latest + +build: + stage: build script: - # Install the basic requirements including the free fonts. - - npm ci - - # Verify that the commits are good. - - npx commitlint --from=$CI_BUILD_BEFORE_SHA - - # We need the cover from the general repository. - - mkdir -p build/repos - - git clone https://oauth2:$fedranAccessKey@gitlab.com/fedran/fedran-covers.git build/repos/fedran-covers - - # Trigger the release if needed. - - npx semantic-release - - # Build the files. - - npm run upload - + - nix profile install 'nixpkgs#fontconfig' + - nix develop --command scripts/setup.sh + - nix develop --command scripts/build.sh + rules: + - if: $CI_COMMIT_BRANCH artifacts: expire_in: 1 week paths: @@ -32,3 +22,28 @@ publish: - "*.mobi" - "*.docx" - "*.html" + +test: + stage: test + script: + - nix develop --command scripts/setup.sh + - nix develop --command scripts/test.sh + rules: + - if: $CI_COMMIT_BRANCH + - if: $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME + +release: + stage: release + script: + - nix profile install 'nixpkgs#fontconfig' + - nix develop --command scripts/setup.sh + - nix develop --command scripts/release.sh + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + artifacts: + paths: + - "*.pdf" + - "*.epub" + - "*.mobi" + - "*.docx" + - "*.html" diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b6003ee --- /dev/null +++ b/.prettierignore @@ -0,0 +1,17 @@ +CHANGELOG.md +package-lock.json +yarn.lock + +*~ + +archives/ +build/ +extras/ +others/ +node_modules/ +submissions/ +sample-edits/ +maps/ +.direnv/ +tmp/ +edit/ diff --git a/commitlint.config.js b/commitlint.config.js new file mode 100644 index 0000000..1080a13 --- /dev/null +++ b/commitlint.config.js @@ -0,0 +1,6 @@ +module.exports = { + extends: ["@commitlint/config-conventional"], + rules: { + "body-max-line-length": [0], + }, +}; diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..88236de --- /dev/null +++ b/flake.lock @@ -0,0 +1,58 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1642700792, + "narHash": "sha256-XqHrk7hFb+zBvRg6Ghl+AZDq03ov6OshJLiSWOoX5es=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "846b2ae0fc4cc943637d3d1def4454213e203cba", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1643805626, + "narHash": "sha256-AXLDVMG+UaAGsGSpOtQHPIKB+IZ0KSd9WS77aanGzgc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "554d2d8aa25b6e583575459c297ec23750adb6cb", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "nixstable": { + "locked": { + "lastModified": 1622516815, + "narHash": "sha256-ZjBd81a6J3TwtlBr3rHsZspYUwT9OdhDk+a/SgSEf7I=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "7e9b0dff974c89e070da1ad85713ff3c20b0ca97", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "21.05", + "type": "indirect" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "nixstable": "nixstable" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e698969 --- /dev/null +++ b/flake.nix @@ -0,0 +1,30 @@ +{ + description = ""Flight of the Scions" is a novel by D. Moonfire."; + + inputs = { + nixstable.url = "nixpkgs/21.05"; + nixpkgs.url = "nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, nixstable, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + stable = nixstable.legacyPackages.${system}; + in { + devShell = pkgs.mkShell { + buildInputs = [ + pkgs.epubcheck + pkgs.nixfmt + pkgs.nodejs-16_x + pkgs.pandoc + pkgs.pdftk + pkgs.python39Full + pkgs.python39Packages.weasyprint + pkgs.jq + pkgs.s3cmd + ]; + }; + }); +} diff --git a/matter/about.md b/matter/about.md new file mode 100644 index 0000000..6688e0e --- /dev/null +++ b/matter/about.md @@ -0,0 +1,11 @@ +--- +title: About D. Moonfire +--- + +D. Moonfire is the remarkable intersection of a computer nerd and a scientist. He inherited a desire for learning, endless curiosity, and a talent for being a polymath from both of his parents. Instead of focusing on a single genre, he writes stories and novels in many different settings ranging from fantasy to science fiction. He also throws in the occasional romance or forensics murder mystery to mix things up. + +In addition to having a borderline unhealthy obsession with the written word, he is also a developer who loves to code as much as he loves writing. + +He lives near Cedar Rapids, Iowa with his wife, numerous pet computers, and a pair of highly mobile things of the male variety. + +You can see more work by D. Moonfire at his website at [https://d.moonfire.us/](https://d.moonfire.us/). His fantasy world, Fedran, can be found at [https://fedran.com/](https://fedran.com/). diff --git a/matter/colophon.md b/matter/colophon.md new file mode 100644 index 0000000..1c5214d --- /dev/null +++ b/matter/colophon.md @@ -0,0 +1,11 @@ +--- +title: Colophon +--- + +Each chapter of this book was written as plain text files formatted with Markdown and include a YAML header at the top of each one. These files are managed in a Git repository located on [https://gitlab.com/fedran/flight-of-the-scions/](https://src.mfgames.com/fedran/flight-of-the-scions/). Emacs and Atom were used as the primary environment for writing. + +These individual chapters were combined together using a TypeScript-based publication framework called MfGames Writing, a set of tools for converting those files into PDF (via WeasyPrint), EPUB, and MOBI. + +The cover was created using Inkscape and TypeScript. The color scheme uses eight shades of a single color and an another eight of the color's complementary. These colors are shared among all of the Kanéko novels. Likewise, the "0047-00" along the spine indicates this is the first published book ("00") with Kanéko as the main character ("0047"). + +The font used on the cover and interior is Source Serif Pro in various weights and styles. diff --git a/matter/credits.md b/matter/credits.md new file mode 100644 index 0000000..915e908 --- /dev/null +++ b/matter/credits.md @@ -0,0 +1,31 @@ +--- +title: Credits +--- + +This is a book I've been working on for over twenty years. It has gone through so many iterations and readers that I've been unable to document them all to give them proper credit. For all those people, credits and not, thank you for helping me see this book to fruition. + +## Alpha Readers + +| ---------- | --------- | ---------- | --------- +| Aimee K. | bil J. | Bill H. | Brent M. +| Cassie M. | Ciuin | Dylan B. | Evelyn C. +| George D. | Greg H. | Greg T. | Kelsey L. +| Kris P. | Laura W. | Mark H. | Mary J. +| Nathan S. | Nick T. | Phyllis R. | Riley O. +| Shannon R. | Stacie S. | Stacy | Steve W. +| Tony M. | Tyree C. | Uriah | + +## Editors + +| ---------- | --------- | ---------- | --------- +| Shannon Ryan || Sarah Chorn || + +## Beta Readers + +| ---------- | --------- | ---------- | --------- +| Marta B. | Mike K. | Randy R. || + +## Sensitivity Readers + +| ---------- | --------- | ---------- | --------- +| Teri C. |||| diff --git a/frontmatter/dedication.md b/matter/dedication.md similarity index 100% rename from frontmatter/dedication.md rename to matter/dedication.md diff --git a/matter/fedran.md b/matter/fedran.md new file mode 100644 index 0000000..8501950 --- /dev/null +++ b/matter/fedran.md @@ -0,0 +1,13 @@ +--- +title: Fedran +--- + +Fedran is a world caught on the cusp of two great ages. + +For centuries, the Crystal Age shaped society through the exploration of magic. Every creature had the ability to affect the world using talents and spells. The only limitation was imagination, will, and the inescapable rules of resonance. But as society grew more civilized, magic became less reliable and weaker. + +When an unexpected epiphany seemingly breaks the laws of resonance, everything changed. Artifacts no longer exploded when exposed to spells, but only if they were wrapped in cocoons of steel and brass. The humble fire rune becomes the fuel for new devices, ones powered by steam and pressure. These machines herald the birth of a new age, the Industrial Age. + +Now, the powers of the old age struggle against the onslaught of new technologies and an alien way of approaching magic. Either the world will adapt or it will be washed away in the relentless march of innovation. + +To explore the world of Fedran, check out [https://fedran.com/](https://fedran.com/). There you'll find stories, novels, character write-ups and more. diff --git a/frontmatter/legal.md b/matter/legal.md similarity index 100% rename from frontmatter/legal.md rename to matter/legal.md diff --git a/matter/license.md b/matter/license.md new file mode 100644 index 0000000..936c112 --- /dev/null +++ b/matter/license.md @@ -0,0 +1,32 @@ +--- +title: License +--- + +This book is distributed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license. More info can be found at [https://creativecommons.org/licenses/by-nc-sa/4.0/](https://creativecommons.org/licenses/by-nc-sa/4.0/). This means: + +### You are free to: + +- Share — copy and redistribute the material in any medium or format +- Adapt — remix, transform, and build upon the material + +The licensor cannot revoke these freedoms as long as you follow the license terms. + +### Under the following terms: + +- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use. +- NonCommercial — You may not use the material for commercial purposes. +- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original. + +No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits. + +### Preferred Attribution + +The preferred attribution for this novel is: + +> "Flight of the Scions" by D. Moonfire is licensed under CC BY-NC-SA 4.0 + +In the above attribution, use the following links: + +- Flight of the Scions: [https://fedran.com/flight-of-the-scions/](https://fedran.com/flight-of-the-scions/) +- D. Moonfire: https://d.moonfire.us/ +- CC BY-NC-SA 4.0: https://creativecommons.org/licenses/by-nc-sa/4.0/ diff --git a/matter/lorban.html b/matter/lorban.html new file mode 100644 index 0000000..ccc625a --- /dev/null +++ b/matter/lorban.html @@ -0,0 +1,29 @@ +--- +title: Lorban +--- + +

+ This novel is set in the Kormar countryside where the native language is + Lorban. This is notionally translated into English, but there are certain + quirks of the language that stand being called out. +

+ + + +

+ Lorban has no capital letters, they are added to satisfy English + conventions. +

diff --git a/matter/pad.html b/matter/pad.html new file mode 100644 index 0000000..3fc714a --- /dev/null +++ b/matter/pad.html @@ -0,0 +1 @@ +
diff --git a/frontmatter/title.html b/matter/title.html similarity index 100% rename from frontmatter/title.html rename to matter/title.html diff --git a/package.json b/package.json index 7195992..1347888 100644 --- a/package.json +++ b/package.json @@ -17,74 +17,51 @@ "scripts": { "build:pdf": "mfgames-writing-format build pdf", "build:epub": "mfgames-writing-format build epub", - "build": "npm run build:epub && npm run build:mobi && npm run build:pdf", - "build:extended": "npm run build && npm run build:html && npm run build:docx", - "build:docx": "sed 's@­@@g' < dmoonfire-$npm_package_fedran_pov-$npm_package_fedran_vol-$npm_package_name-$npm_package_version.html | pandoc -f html -t docx -o dmoonfire-$npm_package_fedran_pov-$npm_package_fedran_vol-$npm_package_name-$npm_package_version.docx", - "build:mobi": "kindlegen dmoonfire-$npm_package_fedran_pov-$npm_package_fedran_vol-$npm_package_name-$npm_package_version.epub", - "build:html": "mfgames-writing-format build html", - "prebuild:mobi": "npm run build:epub", - "prebuild": "rm -f $npm_package_name-*.* $npm_package_name.tar.bz2", + "build:docx": "mfgames-writing-format build docx", + "build": "run-s build:*", + "prebuild": "npm run format", "bundle": "tar -cjf $npm_package_name.tar.bz2 *.epub *.pdf", "prebundle": "npm run build", "upload": "aws --endpoint-url https://$AWS_ENDPOINT s3 cp --acl public-read $npm_package_name.tar.bz2 s3://$AWS_BUCKET/$npm_package_name.tar.bz2", "preupload": "npm run bundle", - "lint": "fedran-lint --require-teaser" + "test:epubcheck": "epubcheck *.epub", + "prepare": "husky install", + "format": "run-s format:*", + "format:prettier": "prettier . --write --loglevel warn", + "format:nix": "nixfmt flake.nix", + "test": "run-s test:*", + "test:commits": "commitlint-gitlab-ci -x @commitlint/config-conventional" }, "dependencies": { "@fedran/lint": "^0.1.0", "@fedran/writing-hyphen": "^1.0.0", - "@fedran/writing-theme": "^3.0.5", - "@mfgames-writing/epub2": "^1.1.8", - "@mfgames-writing/format": "^1.2.2", - "@mfgames-writing/guillemet-pipeline": "^1.0.6", - "@mfgames-writing/html": "^0.1.6", - "@mfgames-writing/hyphen": "^0.4.8", - "@mfgames-writing/weasyprint": "^4.0.6", - "commitlint": "^8.3.5" + "@fedran/writing-theme": "^4.0.2", + "@mfgames-writing/contracts": "^4.4.0", + "@mfgames-writing/docx-format": "^1.0.2", + "@mfgames-writing/epub2-format": "^2.1.1", + "@mfgames-writing/format": "^3.3.1", + "@mfgames-writing/guillemet": "^1.0.0", + "@mfgames-writing/hyphen-pipeline": "^1.0.2", + "@mfgames-writing/liquid-theme": "^2.1.1", + "@mfgames-writing/weasyprint-format": "^5.0.4", + "markdown-it-multimd-table": "^4.1.3" }, "devDependencies": { - "@commitlint/cli": "^7.6.1", - "@commitlint/config-conventional": "^7.6.0", - "@semantic-release/changelog": "^3.0.6", - "@semantic-release/git": "^7.0.18", + "@commitlint/cli": "^15.0.0", + "@commitlint/config-conventional": "^15.0.0", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/exec": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@semantic-release/gitlab": "^7.0.4", + "@semantic-release/npm": "^8.0.3", + "@semantic-release/release-notes-generator": "^10.0.3", "commitizen": "^2.10.1", + "commitlint-gitlab-ci": "^0.0.4", "cz-conventional-changelog": "^2.1.0", - "husky": "^4.2.1", - "semantic-release": "^15.14.0" + "husky": "^7.0.2", + "npm-run-all": "^4.1.5", + "prettier": "^2.0.5", + "semantic-release": "^18.0.1" }, - "release": { - "branch": "master", - "message": "chore(release): v${nextRelease.version}\n\n${nextRelease.notes}", - "verifyConditions": [ - "@semantic-release/changelog", - "@semantic-release/git" - ], - "analyzeCommits": [ - "@semantic-release/commit-analyzer" - ], - "prepare": [ - "@semantic-release/changelog", - "@semantic-release/npm", - "@semantic-release/git" - ], - "publish": [], - "success": [], - "fail": [] - }, - "commitlint": { - "extends": [ - "@commitlint/config-conventional" - ] - }, - "config": { - "commitizen": { - "path": "./node_modules/cz-conventional-changelog" - } - }, - "husky": { - "hooks": { - "pre-commit": "npm run lint", - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" - } - } + "private": true } diff --git a/publication.json b/publication.json new file mode 100644 index 0000000..1c3b267 --- /dev/null +++ b/publication.json @@ -0,0 +1,152 @@ +{ + "metadata": { + "title": "Allegro", + "author": "D. Moonfire", + "language": "en", + "theme": "@fedran/writing-theme", + "outputDirectory": ".", + "outputFilename": "dmoonfire-{{ edition.fedran.identifier }}-{{ edition.name }}-{{ edition.version }}.{{ edition.ext }}", + "markdown": { + "extensions": [ + { + "package": "markdown-it-multimd-table", + "options": { + "headerless": true + } + } + ] + }, + "style": { + "css": "td { width: 6em; } td[colspan=\"2\"] { width: 12em; }" + } + }, + "includes": [ + { + "json": "./fedran.json", + "merge": "metadata.fedran" + } + ], + "editions": { + "epub": { + "format": "@mfgames-writing/epub2-format", + "ext": "epub" + }, + "pdf": { + "format": "@mfgames-writing/weasyprint-format", + "images": { + "grayscale": true, + "opaque": true + }, + "ext": "pdf" + }, + "docx": { + "format": "@mfgames-writing/docx-format", + "ext": "docx" + } + }, + "contents": [ + { + "element": "cover", + "source": "build/fedran-covers/pov/covers/0047-00-flight-of-the-scions.jpg", + "linear": false, + "exclude": { + "editions": ["pdf"], + "toc": true + } + }, + { + "element": "bastard", + "source": "matter/title.html", + "linear": false, + "exclude": { + "editions": ["epub", "html"], + "toc": true + } + }, + { + "element": "title", + "source": "matter/title.html", + "linear": false, + "exclude": { + "toc": true + } + }, + { + "element": "legal", + "source": "matter/legal.md", + "liquid": true, + "linear": false + }, + { + "element": "dedication", + "source": "matter/dedication.md", + "linear": false + }, + { + "element": "toc", + "linear": false, + "title": "Contents", + "exclude": { + "editions": ["pdf"] + } + }, + { + "element": "preface", + "source": "matter/lorban.html", + "linear": false + }, + { + "element": "chapter", + "number": 1, + "directory": "chapters", + "source": "/^chapter-\\d+.(markdown|md)$/", + "start": true, + "page": 1, + "pipeline": [ + { + "module": "@mfgames-writing/guillemet" + }, + { + "module": "@fedran/writing-hyphen" + }, + { + "module": "@mfgames-writing/hyphen-pipeline", + "exclude": ["`.*?`", ".*?"] + } + ] + }, + { + "element": "appendix", + "source": "matter/about.md" + }, + { + "element": "appendix", + "source": "matter/fedran.md" + }, + { + "element": "appendix", + "id": "license", + "source": "matter/license.md" + }, + { + "element": "appendix", + "source": "matter/credits.md", + "pipeline": [ + { + "module": "@mfgames-writing/guillemet" + }, + { + "module": "@fedran/writing-hyphen" + }, + { + "module": "@mfgames-writing/hyphen-pipeline", + "exclude": ["`.*?`", ".*?"] + } + ] + }, + { + "element": "colophon", + "source": "matter/colophon.md" + } + ] +} diff --git a/publication.yaml b/publication.yaml deleted file mode 100644 index cd71b63..0000000 --- a/publication.yaml +++ /dev/null @@ -1,87 +0,0 @@ -metadata: - series: - name: Linsan - volume: 1 - title: Allegro - author: D. Moonfire - publisher: Broken Typewriter Press - rights: CC-BY-NC-SA-4.0 - description: - source: ./description.md - subjects: - - Anime - - Fantasy - - Steampunk - - Fiction - - Action - - Drama - language: en - date: 2019-12-20 - theme: "@fedran/writing-theme" - outputDirectory: . - outputFilename: "dmoonfire-{{ edition.fedran.pov }}-{{ edition.fedran.vol}}-{{ edition.name }}-{{ edition.version }}.{{ edition.editionName }}" - -editions: - epub: - format: "@mfgames-writing/epub2" - - pdf: - format: "@mfgames-writing/weasyprint" - images: - grayscale: true - opaque: true - -contents: - - element: cover - source: build/repos/fedran-covers/dist/full/{{ edition.fedran.pov }}-{{ edition.fedran.vol}}-{{ edition.name }}-front.jpg - linear: false - exclude: - editions: [pdf] - toc: true - - element: bastard - source: frontmatter/title.html - linear: false - exclude: - editions: [epub] - toc: true - - element: title - source: frontmatter/title.html - linear: false - exclude: - toc: true - - element: legal - source: frontmatter/legal.md - liquid: true - linear: false - - element: dedication - source: frontmatter/dedication.md - linear: false - - element: toc - linear: false - title: Contents - exclude: - editions: [pdf] - - element: chapter - number: 1 - directory: chapters - source: /^chapter-\d+.md$/ - start: true - page: 1 - pipeline: &pipelines - - module: "@fedran/writing-hyphen" - - module: "@mfgames-writing/hyphen" - - element: appendix - source: backmatter/about.md - - element: appendix - source: backmatter/fedran.md - - element: appendix - id: license - source: backmatter/license.md - liquid: true - - element: appendix - source: backmatter/patrons.md - - element: appendix - source: backmatter/credits.md - pipeline: *pipelines - - element: colophon - source: backmatter/colophon.md diff --git a/release.config.js b/release.config.js new file mode 100644 index 0000000..704b5af --- /dev/null +++ b/release.config.js @@ -0,0 +1,38 @@ +module.exports = { + branches: ["main"], + + extends: ["@commitlint/config-conventional"], + message: + "chore(release): v${nextRelease.version} [skip ci]\n\n${nextRelease.notes}", + + plugins: [ + [ + "@semantic-release/commit-analyzer", + + { + preset: "conventionalcommits", + }, + ], + "@semantic-release/release-notes-generator", + "@semantic-release/npm", + [ + "@semantic-release/exec", + { + prepareCmd: "npm run build", + }, + ], + "@semantic-release/changelog", + "@semantic-release/git", + + [ + "@semantic-release/gitlab", + { + assets: [ + { path: "*.epub", label: "EPUB2", type: "other" }, + { path: "*.pdf", label: "PDF", type: "other" }, + { path: "*.docx", label: "DOCX", type: "other" }, + ], + }, + ], + ], +}; diff --git a/scripts/build.sh b/scripts/build.sh new file mode 100755 index 0000000..0c64d06 --- /dev/null +++ b/scripts/build.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +# Move into the root folder. +cd $(dirname $(dirname $0)) + +# Download the covers. +mkdir -p build/fedran-covers +pushd build/fedran-covers +s3cmd --access_key=$AWS_ACCESS_KEY_ID --access_token=$AWS_SECRET_ACCESS_KEY --host=$AWS_ENDPOINT --host-bucket=$AWS_ENDPOINT -P get s3://$AWS_BUCKET/fedran-covers.tar.bz2 +tar -xjf fedran-covers.tar.bz2 +popd + +# Build the project. +npm run build diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 0000000..ce1bc44 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,11 @@ +mkdir -p build/repos +git clone https://oauth2:$fedranAccessKey@gitlab.com/fedran/fedran-covers.git build/repos/fedran-covers + +rm -f dmoonfire* + +npm install --ci +npx semantic-release + +export npm_package_name=$(cat package.json | jq -r .name) +tar -cjf $npm_package_name.tar.bz2 dmoonfire* +s3cmd --access_key=$AWS_ACCESS_KEY_ID --access_token=$AWS_SECRET_ACCESS_KEY --host=$AWS_ENDPOINT --host-bucket=$AWS_ENDPOINT -P put flight-of-the-scions.tar.bz2 s3://$AWS_BUCKET diff --git a/scripts/setup.sh b/scripts/setup.sh new file mode 100755 index 0000000..c4221ce --- /dev/null +++ b/scripts/setup.sh @@ -0,0 +1,15 @@ +# Install the fonts we need for the covers. +if [ "x$CI" == "x" ] +then + echo "not in CI environment, not installing fonts" +else + echo "installing fonts" + mkdir -p ~/.local/share/fonts + cp $(nix-build --no-out-link '' -A source-serif-pro)/share/fonts/opentype/*.otf ~/.local/share/fonts + cp $(nix-build --no-out-link '' -A source-sans-pro)/share/fonts/opentype/*.otf ~/.local/share/fonts + fc-cache + fc-list | grep -i source +fi + +echo "installing node packages" +npm install --ci diff --git a/scripts/test.sh b/scripts/test.sh new file mode 100755 index 0000000..8037f12 --- /dev/null +++ b/scripts/test.sh @@ -0,0 +1,2 @@ +npm install --ci +npx commitlint-gitlab-ci -x @commitlint/config-conventional