☁️ chore(automation): Automated update

This commit is contained in:
Brian Zalewski 2022-12-24 21:35:29 -05:00
parent 0930f71263
commit f6bd76c0c5
75 changed files with 6167 additions and 1903 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -2,16 +2,20 @@
version: '2'
plugins:
ansible-lint:
enabled: true
editorconfig:
enabled: true
eslint:
enabled: true
jscpd:
enabled: true
exclude_patterns:
- common/.config/taskfiles/
proselint:
enabled: true
shellcheck:
enabled: true
semgrep:
enabled: true
yamllint:
enabled: true
@ -42,9 +46,10 @@ exclude_patterns:
- deprecated/
- dist/
- features/
- gl-code-quality-report.json
- pnpm-lock.yaml
- roles/
- script/
- test-output/
- testdata/
- Tests/
- tests/

View file

@ -1,23 +1,12 @@
{
"keywords": [
"ansible",
"ansible-playbook",
"archlinux",
"centos",
"debian",
"doctor",
"fedora",
"install",
"installdoc",
"installdoctor",
"macos",
"files",
"mblabs",
"megabytelabs",
"molecule",
"playbook",
"miscellaneous",
"other",
"professormanhattan",
"ubuntu",
"washingtondc",
"windows"
"supporting",
"washingtondc"
]
}

View file

@ -1,14 +1,12 @@
{{ load:.config/docs/common/contributing/header.md }}
{{ template:toc }}
{{ load:.config/docs/common/contributing/code-of-conduct.md }}
{{ load:.config/docs/contributing/philosophy.md }}
{{ load:.config/docs/contributing/supported-os.md }}
{{ load:.config/docs/contributing/dev-environment.md }}
{{ load:.config/docs/contributing/pull-requests.md }}
{{ load:.config/docs/contributing/code-format.md }}
{{ load:.config/docs/contributing/code-style.md }}
{{ load:.config/docs/contributing/commenting.md }}
{{ load:.config/docs/contributing/docs.md }}
{{ load:.config/docs/contributing/overview.md }}
{{ load:.config/docs/contributing/architecture.md }}
{{ load:.config/docs/contributing/tools.md }}
{{ load:.config/docs/contributing/eslint.md }}
{{ load:.config/docs/contributing/testing.md }}
{{ load:.config/docs/contributing/linting.md }}
{{ load:.config/docs/contributing/pull-requests.md }}
{{ load:.config/docs/common/contributing/styleguides.md }}
{{ load:.config/docs/common/contributing/troubleshooting.md }}
{{ load:.config/docs/common/contributing/contributors.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,8 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme-misc/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme-scoop/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme-scoop/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,9 @@
{{ load:.config/docs/common/readme/header.md }}
{{ load:.config/docs/readme-tap/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/overview.md }}
{{ load:.config/docs/readme-tap/requirements.md }}
{{ load:docs/partials/guide.md }}
{{ load:.config/docs/common/readme/contribute.md }}
{{ load:.config/docs/common/readme/license.md }}

View file

@ -0,0 +1,8 @@
{{ load:.config/docs/readme/header.md }}
{{ load:.config/docs/readme/subheader.md }}
{{ load:.config/docs/readme/quick-description.md }}
{{ template:toc }}
{{ load:.config/docs/readme/requirements.md }}
{{ load:.blueprint.md }}
{{ load:.config/docs/readme/contributing-details.md }}
{{ load:.config/docs/readme/license.md }}

View file

@ -0,0 +1,16 @@
## Architecture
For the most part, when working on one of our NPM packages, all of the code should be placed in the `src/` folder. Usually, at the minimum, the `src/` folder will contain:
- **`app.ts`** - This is the main starting file for the project. This is the file that should house the main logic and any bootstrapping that needs to be done.
- **`cli.ts`** - Entry point for CLI commands. If the project supports CLI commands, then you should handle the logic for the CLI and help menu in this file.
- **`index.ts`** - Entry point to the package for other packages that are including it as a dependency. This is where you would export methods that you want to expose publicly.
We adhere to strict design-patterns across all of our NPM packages. In order for you to get a feel for what we are looking for, you should browse through our [`Buildr`]({{ repository.project.buildr }}) project's files. After browsing through the Buildr project's source code, you will notice that we include other files/folders in the `src/` folder:
- `constants/` - This folder houses all the constant variables used in the project. The constants are generally seperated out into different files based on where they are being used in the application.
- `lib/` - This folder contains all the pieces of the app that would generally be utilized by the `app.ts` file.
- `models/` - This folder contains all of the data models that are used. Data models are important to use especially in larger projects because they provide type definitions and also open the door to data validation which is touched on in the [Preferred Libraries](#preferred-libraries) section.
- `tsconfig.json` - This file is included to address a Visual Studio Code bug that occurs if you open the `src/` directory and not the root folder
When building a new project, try to follow the same design patterns that are used by the [`Buildr`]({{ repository.project.buildr }}) project. In most cases, all of the aforementioned files and folders should be part of the project.

View file

@ -0,0 +1,27 @@
## ESLint
In the root of this project, you will see a file titled `.eslintrc`. This file controls how [ESLint](https://eslint.org/) works. As mentioned in the [Overview](#overview), our `.eslintrc` file is shared across all of [our NPM packages]({{ repository.group.npm }}). If you make changes to the `.eslintrc` file then they will be overwritten. Instead, if you absolutely need to change the `.eslintrc` file's definitions, then you should open up a pull request against the repository that houses all of the [common NPM package files]({{ repository.group.common }}/npm).
### Disabling ESLint Features
Instead of changing the `.eslintrc` file, we prefer that you instruct ESLint to disable checks for a specific rule on a specific line. For example, if you want to disable the `no-console` rule for one line of code, then you could accomplish this by modifying the code to follow the format below:
```
/* eslint-disable no-console */
console.log('foo');
/* eslint-enable no-console */
```
The above method is preferred over disabling all ESLint features. For example, we prefer that you never disable all checks on a line like this:
```
/* eslint-disable */
console.log('bar');
/* eslint-enable */
```
It is important that you include the second `/* eslint-enable */` line so that ESLint does not remain disabled for the rest of the file. Do not do this but, for your information, you can disable ESLint for an entire file by placing `/* eslint-disable */` at the top of the file.
**You should fix the lint error instead of using `/* eslint-disable */` whenever possible.**
For more details, see the [official ESLint docs](https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments).

View file

@ -0,0 +1,47 @@
## Overview
This repository uses a customized starting template that is inspired by the [TypeScript Starter](https://github.com/bitjson/typescript-starter) project on GitHub. It includes many different build tools and files meant to improve team efficiency. All of the code and assets are stored in the `src/` folder. All of our NPM packages should follow the same format and use the same design patterns so it is important to check out a few of [our NPM repositories]({{ repository.group.npm }}) before diving into the code. Our [Buildr]({{ repository.project.buildr }}) project is a great example of what we are looking for.
After you clone this repository, you can get started by running `npm i` (with [Node.js >9]({{ repository.project.node }}) installed). This will install the dependencies as well as perform a few maintenance tasks such as synchronizing the common development-related dotfiles and re-generating the documentation.
### List Build Tool Commands
After you run `npm i`, you can view the available pre-defined build tool commands by running `npm run info`. A chart will be displayed in your terminal that looks something like this:
```
npm run info
> {{ pkg.name }}@1.0.4 info
> npm-scripts-info
build:
Clean and rebuild the project
commit:
Automatically fix errors and guides you through the commit process
cov:
Rebuild, run tests, then create and open the coverage report
doc:json:
Generate API documentation in typedoc JSON format
doc:
Generate HTML API documentation and open it in a browser
fix:
Try to automatically fix any linting problems
info:
Display information about the package scripts
prepare-release:
One-step: clean, build, test, publish docs, and prep a release
reset:
Delete all untracked files and reset the repo to the last commit
test:
Lint and unit test the project
version:
Bump package.json version, update CHANGELOG.md, tag release
watch:
Watch and rebuild the project on save, then rerun relevant tests
```
You should then realize that you can build the project by running `npm run build` or test the project by running `npm run test`.
### Dotfiles
As you may have noticed, this project contains many files in the root directory. Many of these files are dotfiles. These files are intended to help our team of developers create code that is consistent and also compliant with industry best practices. Most of the dotfiles (and dot-folders) are synchronized across all of [our NPM packages]({{ repository.group.npm }}). This means that any changes you make to the dotfiles will eventually be over-written. If you need to make a change to any of the dotfiles, you will have to open a pull request against our [common NPM files repository]({{ repository.group.common }}/npm). Bear in mind that any changes you make to the common NPM files will be propagated to all of our NPM repositories.

View file

@ -1,3 +1,11 @@
## Pull Requests
All pull requests should be associated with issues. Although not strictly required, the pull requests should be made to [the GitLab repository issues board]({{ repository.gitlab }}{{ repository.location.issues.gitlab }}) instead of the [GitHub mirror repository]({{ repository.github }}{{ repository.location.issues.github}}). This is because we use GitLab as our primary repository and mirror the changes to GitHub for the community.
All pull requests should be associated with issues. You can find the [issues board on GitLab]({{ repository.group.dockerfile }}/{{ slug }}/-/issues). The pull requests should be made to [the GitLab repository]({{ repository.group.dockerfile }}/{{ slug }}) instead of the [GitHub repository]({{ profile.github }}/npm-{{ slug }}). This is because we use GitLab as our primary repository and mirror the changes to GitHub for the community.
### How to Commit Code
Instead of using `git commit`, we prefer that you use `npm run commit`. You will understand why when you try it but basically it streamlines the commit process and helps us generate better CHANGELOG files.
### Pre-Commit Hook
Even if you decide not to use `npm run commit`, you will see that `git commit` behaves differently because there is a pre-commit hook that installs automatically after you run `npm i`. This pre-commit hook is there to test your code before committing and help you become a better coder. If you need to bypass the pre-commit hook, then you may add the `--no-verify` tag at the end of your `git commit` command (e.g. `git commit -m "Commit" --no-verify`).

View file

@ -1,62 +1,22 @@
## Testing
You can test all of the operating systems we support by running the following command in the root of the project:
For each feature in an NPM package, some basic unit tests should be added. Although it may seem trivial for a new project, the unit tests can be helpful for spotting regressions when the project grows or when it is refactored years down the line. You can check out some examples of unit tests by checking out the `*.spec.ts` files listed on [this TypeScript Starter page](https://github.com/bitjson/typescript-starter/tree/master/src/lib).
```shell
molecule test
### Using `npm link`
If you are creating a CLI, it is possible to install the module for testing before you publish the module to npm. After running `npm i && npm run build`, you can then run `npm link` in the root of the project. You can then access the app from its' shortcut defined in `package.json` under the `"bin"` value.
Take the following as an example:
**package.json**
```
{
"name": "@megabytelabs/myapp",
"bin": {
"myclicommand": "bin/cli"
},
}
```
The command `molecule test` will spin up VirtualBox VMs for all the OSes we support and run the role(s). _Do this before committing code._ If you are committing code for only one OS and can not create the fix or feature for the other operating systems then please, at the very minimum, [file an issue]({{ repository.gitlab }}{{ repository.location.issues }}) so someone else can pick it up.
### Idempotence
It is important to note that `molecule test` tests for idempotence. To pass the idempotence test means that if you run the role twice in a row then Ansible should not report any changes the second time around.
### Debugging
If you would like to shell into a container for debugging, you can do that by running:
```shell
task common:shell
```
### Molecule Documentation
For more information about Ansible Molecule, check out [the docs](https://molecule.readthedocs.io/en/latest/).
### Testing Desktop Environments
Some of our roles include applications like [Android Studio](https://github.com/ProfessorManhattan/ansible-androidstudio). You can not fully test Android Studio from a Docker command line. In cases like this, you should use our desktop scenarios to provision a desktop GUI-enabled VM to test things like:
- Making sure the Android Studio shortcut is in the applications menu
- Opening Android Studio to make sure it is behaving as expected
- Seeing if there is anything we can automate (e.g. if there is a "Terms of Usage" you have to click OK at then we should automate that process if possible)
You can specify which scenario you want to test by passing the `-s` flag with the name of the scenario you want to run. For instance, if you wanted to test on Ubuntu Desktop, you would run the following command:
```shell
molecule test -s ubuntu-desktop
```
This would run the Molecule test on Ubuntu Desktop.
By default, the `molecule test` command will destroy the VM after the test is complete. To run the Ubuntu Desktop test and then open the desktop GUI you would have to:
1. Run `molecule converge -s ubuntu-desktop`
2. Open the VM through the VirtualBox UI (the username and password are both _vagrant_)
You can obtain a list of all possible scenarios by looking in the `molecule/` folder. The `molecule/default/` folder is run when you do not pass a scenario. All the other scenarios can be run by manually specifying the scenario (e.g. `molecule test -s ubuntu-desktop` will run the test using the scenario in `molecule/ubuntu-desktop/`).
### Molecule Scenario Descriptions
The chart below provides a list of the scenarios we include in all of our Ansible projects along with a brief description of what they are included for.
{{ molecule_descriptions }}
### Continuous Integration (CI)
You might have noticed that there are no CI tests in the chart above for macOS and Windows. Due to the limitations of Docker, we use other methods to test macOS and Windows automatically with CI. After a project has passed various linting tests on GitLab CI, the following methods are used to test the Ansible play:
- Linux platforms are tested using Molecule and Docker on GitLab CI in parallel. ([Link to GitLab CI configuration]({{ repository.group.ci }}/-/blob/master/test/molecule.gitlab-ci.yml))
- Windows is tested using GitLab CI without Molecule. ([Link to GitLab CI configuration]({{ repository.group.ci }}/-/blob/master/test/windows-ansible-test.gitlab-ci.yml))
- macOS is tested using GitHub Actions after the code is automatically synchronized between GitLab and GitHub. ([Link to the macOS GitHub Action configuration]({{ repository.github }}/-/blob/master/.github/workflows/macOS.yml))
Running `npm link` with the `package.json` configuration listed above will install the app so that it is accessible by running `myclicommand`.

View file

@ -0,0 +1,60 @@
## Preferred Libraries
A lot of research has gone into determining what the best tool is for each common task that gets performed. These tasks can range from generating a CLI help menu to validating user inputs. You can browse through the dependencies in the `package.json` file of our [NPM package starting template](https://gitlab.com/megabyte-labs/templates/npm) to get a better idea of what we prefer.
### Logger
If you browsed through the `package.json` file mentioned above, you will see that we are including `pino` and `pino-pretty` as dependencies. Both should be used to handle all logging. There should be no `console.log` commands in the project. Instead, all of the logging should be handled by a Logger class. You can see an [example provided by the Buildr project here](https://gitlab.com/megabyte-labs/npm/buildr/-/blob/master/src/lib/log.ts). When creating a Logger class, feel free to copy and paste from the linked Buildr Logger class file.
### CLI / Help Menu
[Commander.js](https://www.npmjs.com/package/commander) is the leading solution for handling CLI commands and generating terminal help menus. The library is included in the aforementioned starting template and should be used in any project that includes CLI command capabilities or CLI help menus. Using this library is not a hard requirement but any deviations from it should be approved by the project's maintainer.
### Interactive CLI Prompts
[Inquirer.js](https://www.npmjs.com/package/inquirer) is our preferred library for providing enhanced CLI prompts. You might choose to use this library if part of the app includes prompting the user for different values. Browsing through the capabilities of Inquirer.js using the link provided is highly encouraged. If you are not utilizing this dependency then it should be removed from the `package.json`. The same goes for any package that is unused - if it is not being used then throw it out!
### Data Model Validation
One feature we like to include in all of our projects that rely on any input parameters is data validation. For instance, if one of the parameters that is passed in is supposed to be a FQDN and the user passes in a string that does not match the RegEx of a FQDN, then the user should be notified with a simple, well-formatted error message (which is generated by `pino`). We accomplish this by leveraging the [`class-validator`](https://www.npmjs.com/package/class-validator) library. There are tons of examples provided on their page and we highly encourage you to get comfortable using the library by checking out the link.
In order to utilize `class-validator`, you have to assign all input data to a model. The model is then set up to use `class-validator` decorators on each attribute. With the data model populated, you can use the `class-validator` library to validate the input. Take the following as an example:
```
import { validate, IsInt, IsFQDN, Min, Max } from 'class-validator';
export class Post {
@IsInt() // This is a decorator
@Min(0)
@Max(10)
rating: number;
@IsFQDN()
site: string;
}
let post = new Post();
post.rating = 11; // Should not pass validation
post.site = 'googlecom'; // Should not pass validation
validate(post).then(errors => {
// errors is an array of validation errors
if (errors.length > 0) {
console.log('validation failed. errors: ', errors);
} else {
console.log('validation succeed');
}
});
```
Using the library above can provide real value to our users. By validating the data before running any business logic, we can save the user time by taking out the guess work required for debugging. Please note that in practice, the `Post` model/class would be seperated into a file stored in `src/models/post.model.ts`.
**All data inputs should utilize this form of validation.** If the `class-validator` project does not provide a decorator that can properly validate the input data then you can extend the library by creating a custom validation decorator. There is an [example of how to create a custom validator in the Buildr project](https://gitlab.com/megabyte-labs/npm/buildr/-/blob/master/src/lib/validators/is-true.validator.ts).
### Update Notifier
As a feature meant to make our packages stand out from the crowd, we prefer that you incorporate [`update-notifier`](https://www.npmjs.com/package/update-notifier) in the project to notify users of any updates to the NPM package.
### Environment Variables
In some cases, a package might rely on sensitive data that should not be included in git repositories. In this case, you may choose to utilize environment variables. If that is the case, then please include support for [dotenv](https://www.npmjs.com/package/dotenv) which allows users to load environment variables by defining a `.env` file. The users can then add `.env` to their `.gitignore` file to keep the `.env` file out of their project's repository.

View file

@ -0,0 +1,7 @@
## Installation
This NPM package includes all the packages it makes use of as `dependencies`. This means that you do not have to include all the [plugins it uses]({{repository.gitlab}}/-/blob/master/package.json) in your `package.json`. However, it also means that you should make sure that you do not include this package in your `package.json` `dependencies`. Instead, you should include the package in your `devDependencies`. This is accomplished by installing the package with the following command:
```shell
npm install --save-dev @{{profile.npmjs_organization}}/{{repository.prefix.github}}{{slug}}
```

View file

@ -0,0 +1,20 @@
<div align="center">
<a href="{{ link.home }}" title="{{ organization }} homepage" target="_blank">
<img alt="Homepage" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Homepage&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.contributing.github }}" title="Learn about contributing" target="_blank">
<img alt="Contributing" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.chat }}" title="Chat with us on Slack" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.gitter }}" title="Chat with the community on Gitter" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}" title="GitHub mirror" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style={{ badge_style }}" />
</a>
<a href="{{ repository.gitlab }}" title="GitLab repository" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style={{ badge_style }}" />
</a>
</div>

View file

@ -0,0 +1,15 @@
## Requirements
In order to leverage the software that this Scoop bucket provides, you first need to [install Scoop on your system](https://github.com/ScoopInstaller/Scoop/wiki/Quick-Start). Scoop is used to install software on Windows. If you are looking for a Linux or macOS installer, then this repository is not for you. After you have Scoop installed, you must then add our Scoop bucket to install the scoops that are housed in this repository / bucket. You can install the Scoop bucket by running:
```shell
scoop bucket add org {{repository.github}}.git
```
## Example Install
After the Scoop bucket is added, you can install software. For example, if you want to install [Bodega](https://github.com/megabyte-labs/Bodega) then you would run:
```shell
scoop install installdoc/bodega
```

View file

@ -0,0 +1,32 @@
<div align="center">
<a href="{{ link.home }}" title="{{ organization }} homepage" target="_blank">
<img alt="Homepage" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Homepage&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.contributing.github }}" title="Learn about contributing" target="_blank">
<img alt="Contributing" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.chat }}" title="Chat with us on Slack" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.gitter }}" title="Chat with the community on Gitter" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}" title="GitHub mirror" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style={{ badge_style }}" />
</a>
<a href="{{ repository.gitlab }}" title="GitLab repository" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style={{ badge_style }}" />
</a>
</div>
<br/>
<div align="center">
<a href="{{ repository.gitlab }}{{ repository.location.commits.gitlab }}" title="GitLab CI build status" target="_blank">
<img alt="Build status" src="https://img.shields.io/gitlab/pipeline-status/{{ repository.group.cloud_path }}/{{ slug }}?branch=master&label=build&logo=gitlab&logoColor=white&style={{ alt_badge_style }}">
</a>
<a href="https://install.doctor" target="_blank">
<img alt="Documentation / Instructions" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=readthedocs&logoColor=white&style={{ alt_badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.license.github }}" target="_blank">
<img alt="License: {{ license }}" src="https://img.shields.io/badge/license-{{ license }}-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style={{ alt_badge_style }}" />
</a>
</div>

View file

@ -0,0 +1,15 @@
## Requirements
In order to leverage the software that this Homebrew tap provides, you first need to [install Homebrew on your system](https://brew.sh/). It is available on macOS, Linux, and you can install it on Windows with WSL. After you have Homebrew installed, you must then add our tap to install the software that is housed in this repository. You can install the tap by running:
```shell
brew tap installdoc/tap
```
## Example Install
After the tap is installed, you can install software by specifying its short name. For instance, if you wanted to install [Bodega](https://github.com/megabyte-labs/Bodega) then you would run:
```shell
brew install bodega
```

View file

@ -0,0 +1,32 @@
<div align="center">
<a href="{{ link.home }}" title="{{ organization }} homepage" target="_blank">
<img alt="Homepage" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Homepage&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.contributing.github }}" title="Learn about contributing" target="_blank">
<img alt="Contributing" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.chat }}" title="Chat with us on Slack" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.gitter }}" title="Chat with the community on Gitter" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}" title="GitHub mirror" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style={{ badge_style }}" />
</a>
<a href="{{ repository.gitlab }}" title="GitLab repository" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style={{ badge_style }}" />
</a>
</div>
<br/>
<div align="center">
<a href="{{ repository.gitlab }}{{ repository.location.commits.gitlab }}" title="GitLab CI build status" target="_blank">
<img alt="Build status" src="https://img.shields.io/gitlab/pipeline-status/{{ repository.group.cloud_path }}/{{ slug }}?branch=master&label=build&logo=gitlab&logoColor=white&style={{ alt_badge_style }}">
</a>
<a href="https://install.doctor" target="_blank">
<img alt="Documentation / Instructions" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=readthedocs&logoColor=white&style={{ alt_badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.license.github }}" target="_blank">
<img alt="License: {{ license }}" src="https://img.shields.io/badge/license-{{ license }}-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style={{ alt_badge_style }}" />
</a>
</div>

View file

@ -0,0 +1,3 @@
## Overview
{{ overview }}

View file

@ -0,0 +1 @@
> </br><h4 align="center">**{{ pkg.description }}**</h4></br>

View file

@ -0,0 +1,18 @@
## Requirements
If you are simply including this library in your project, all you need is a recent version of Node.js. **[Node.js >14.18.0]({{ repository.project.node }})** is sometimes required and is the only version range we actively support. Albeit, it is highly probable that lower versions will work as well depending on the requirements that this project imports.
### Developer Requirements
The following versions of Node.js and Python are required for development:
- **[Node.js >14.18.0]({{ repository.project.node }})**
- **[Python >3.10.0]({{ repository.project.python }})**
Other versions may work, but only the above versions are supported. Most development dependencies are installed automatically by our `Taskfile.yml` set-up (even Node.js and Python). Run `bash start.sh` to install **[Bodega](https://github.com/ProfessorManhattan/Bodega)** (an improved fork of [go-task](https://github.com/go-task/task)) and run the initialization sequence. The taskfiles will automatically install dependencies as they are needed, based on what development tasks you are running. For more information, check out the [CONTRIBUTING.md]({{ repository.github }}/blob/main/docs/CONTRIBUTING.md) or simply run:
```shell
npm run help
```
`npm run help` will ensure Bodega is installed and then open an interactive dialog where you can explore and learn about various developer commands.

View file

@ -0,0 +1,47 @@
<div align="center">
<a href="{{ link.home }}" title="{{ organization }} homepage" target="_blank">
<img alt="Homepage" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Homepage&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.contributing.github }}" title="Learn about contributing" target="_blank">
<img alt="Contributing" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.chat }}" title="Chat with us on Slack" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ link.gitter }}" title="Chat with the community on Gitter" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style={{ badge_style }}" />
</a>
<a href="{{ repository.github }}" title="GitHub mirror" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style={{ badge_style }}" />
</a>
<a href="{{ repository.gitlab }}" title="GitLab repository" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style={{ badge_style }}" />
</a>
</div>
<br/>
<div align="center">
<a href="https://www.npmjs.com/package/{{ pkg.name }}" title="Version {{ pkg.version }}" target="_blank">
<img alt="Version: {{ pkg.version }}" src="https://img.shields.io/badge/version-{{ pkg.version }}-blue.svg?cacheSeconds=2592000&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAACNJREFUCNdjIACY//+BEp9hhM3hAzYQwoBIAqEDYQrCZLwAAGlFKxU1nF9cAAAAAElFTkSuQmCC&style={{ alt_badge_style }}" />
</a>
<a href="{{ repository.gitlab }}{{ repository.location.commits.gitlab }}" title="GitLab CI build status" target="_blank">
<img alt="Build status" src="https://img.shields.io/gitlab/pipeline-status/{{ repository.group.npm_path }}/{{ subgroup }}/{{ slug }}?branch=master&label=build&logo=gitlab&logoColor=white&style={{ alt_badge_style }}">
</a>
<a href="https://www.npmjs.com/package/{{ pkg.name }}" title="Dependency status reported by Depfu" target="_blank">
<img alt="Dependency status reported by Depfu" src="https://img.shields.io/depfu/megabyte-labs/{{ customPackageName }}?logo=codeforces&logoColor=white&style={{ alt_badge_style }}&logo=npm" />
</a>
<a href="https://www.npmjs.com/package/{{ pkg.name }}" title="Zip file size" target="_blank">
<img alt="Zip file size" src="https://img.shields.io/bundlephobia/minzip/{{ pkg.name }}?style={{ alt_badge_style }}&logo=npm&logoColor=white" />
</a>
<a href="https://www.npmjs.com/package/{{ pkg.name }}" title="Total downloads of {{ pkg.name }} on npmjs.org" target="_blank">
<img alt="Total downloads of {{ pkg.name }} on npmjs.org" src="https://img.shields.io/npm/dt/{{ pkg.name }}?style={{ alt_badge_style }}&logo=npm&logoColor=white" />
</a>
<a href="https://snyk.io/advisor/npm-package/{{ pkg.name }}" title="Number of vulnerabilities from Snyk scan on {{ pkg.name }}" target="_blank">
<img alt="Number of vulnerabilities from Snyk scan on {{ pkg.name }}" src="https://img.shields.io/snyk/vulnerabilities/npm/{{ pkg.name }}?style={{ alt_badge_style }}&logo=snyk&logoColor=white" />
</a>
<a href="{{ website.documentation }}/{{ group }}" target="_blank">
<img alt="Documentation" src="https://img.shields.io/badge/documentation-yes-brightgreen.svg?logo=readthedocs&logoColor=white&style={{ alt_badge_style }}" />
</a>
<a href="{{ repository.github }}{{ repository.location.license.github }}" target="_blank">
<img alt="License: {{ license }}" src="https://img.shields.io/badge/license-{{ license }}-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHpJREFUCNdjYOD/wMDAUP+PgYHxhzwDA/MB5gMM7AwMDxj4GBgKGGQYGCyAEEgbMDDwAAWAwmk8958xpIOI5zKH2RmOyhxmZjguAiKmgIgtQOIYmFgCIp4AlaQ9OczGkJYCJEAGgI0CGwo2HmwR2Eqw5SBnNIAdBHYaAJb6KLM15W/CAAAAAElFTkSuQmCC&style={{ alt_badge_style }}" />
</a>
</div>

View file

@ -10,41 +10,17 @@
"autodoc_todo_description": "",
"autodoc_variables_description": "",
"badge_style": "for-the-badge",
"blueprint_requirements": [
["Variable Name", "Variable Description"],
[
"`description`",
"Short description of the role, worded in such a way that it makes sense by itself and with 'An Ansible role that ' prepended to it"
],
["`group`", "This should always be set to 'ansible' for Ansible roles"],
[
"`name`",
"This should be the official name for the product that the role installs/configures. It is used in the title of the repository and throughout the documentation to refer to the product."
],
[
"`overview`",
"This variable should be a description of what the role installs. You can usually find a good description by Googling, \"What is Android Studio,\" for example if you were populating this variable for the [Android Studio role]({{ repository.group.ansible_roles }}/androidstudio). This text is shown at the top of the README, right below the header section and before the table of contents. Whenever possible, key products/terms should be linked to using markdown. You can see an example of us hyperlinking in this variable by checking out the [Android Studio role]({{ repository.group.ansible_roles }}/androidstudio). The idea is to make it as easy as possible for our users to figure out exactly what the role does."
],
["`repository.github`", "The HTTPS URL of the GitHub mirror"],
["`repository.gitlab`", "The HTTPS URL of the GitLab repository"],
[
"`slug`",
"This should generally be the ending slug of the GitHub mirror. It is used for things like filling in the package.json name."
],
["`subgroup`", "This should always be set to 'role' for Ansible roles"],
["`title`", "The title of the README.md"]
],
"build_coverage_regex": "Lines\\s*:\\s*(\\d+.?\\d*)%",
"commit_help_url": "https://megabyte.space/docs/contributing/commit-guidelines",
"company": "Megabyte LLC",
"copyright": "2020-2021",
"description_emojis": "👨🏻‍💻 🩺",
"docker_label_authors": "Brian Zalewski <brian@megabyte.space>",
"docs": {
"header_description_post": "<i></i>",
"header_description_pre": "<i></i>",
"header_title_post": "<i></i>",
"header_title_pre": "<i></i>",
"link": "https://megabyte.space/docs/common/ansible"
"link": "https://megabyte.space/docs/common/npm"
},
"downloadLinks": {
"fedora": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso",
@ -72,7 +48,7 @@
}
],
"gomodProxy": true,
"group": "ansible",
"group": "none",
"groups": {
"angular": ["app", "website"],
"ansible": ["playbook", "role"],
@ -87,108 +63,15 @@
"name": "homebrew-tap",
"owner": "installdoc"
},
"hostapp_var_chart": [
["App", "Description", "GitHub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"],
[
"**[Authelia](https://www.authelia.com/)**",
"An authentication portal that supports SSO and 2FA (_[Homepage](https://www.authelia.com/) | [Documentation](https://www.authelia.com/docs/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/authelia/authelia?style=social)](https://github.com/authelia/authelia)"
],
[
"**[Homer](https://github.com/bastienwirtz/homer)**",
"A very simple homepage which is customized by the playbook to automatically include links to the Docker containers you choose to host on the computer (_[Demo](https://homer-demo.netlify.app/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/bastienwirtz/homer?style=social)](https://github.com/bastienwirtz/homer)"
],
[
"**[Portainer](https://www.portainer.io/)**",
"A Docker management tool (_[Homepage](https://www.portainer.io/) | [Documentation](https://docs.portainer.io/) | [Demo](https://github.com/portainer/portainer#demo)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/portainer/portainer?style=social)](https://github.com/portainer/portainer)"
],
[
"**[Serve](https://github.com/vercel/serve)**",
"Simple interface for viewing files located or symlinked to in the `/var/www/` folder of the machine",
"[![GitHub Repo stars](https://img.shields.io/github/stars/vercel/serve?style=social)](https://github.com/vercel/serve)"
]
],
"htpc_var_chart": [
["App", "Description", "GitHub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"],
[
"**[WireGuard](https://docs.linuxserver.io/images/docker-wireguard)**",
"Dedicated WireGuard VPN for the HTPC applications which is configured in *our docker-compose.yml* file to be used as the internet connection for all the containers (_[Homepage](https://www.wireguard.com/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/linuxserver/docker-wireguard?style=social)](https://github.com/linuxserver/docker-wireguard)"
],
[
"**[Bazarr](https://docs.linuxserver.io/images/docker-bazarr)**",
"Manages and automatically downloads subtitles (_[Homepage](https://www.bazarr.media/) | [Documentation](https://wiki.bazarr.media/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/morpheus65535/bazarr?style=social)](https://github.com/morpheus65535/bazarr)"
],
[
"**[Heimdall](https://docs.linuxserver.io/images/docker-heimdall)**",
"Simple start page for all the HTPC apps (_[Homepage](https://heimdall.site/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/linuxserver/Heimdall?style=social)](https://github.com/linuxserver/Heimdall)"
],
[
"**[Jackett](https://docs.linuxserver.io/images/docker-jackett)**",
"Request proxy server for Radarr and Sonarr which helps speed things up",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Jackett/Jackett?style=social)](https://github.com/Jackett/Jackett)"
],
[
"**[Kodi Headless](https://hub.docker.com/r/linuxserver/kodi-headless)**",
"Backend for Kodi used to host a centralized database for Kodi instances (_[Homepage](https://kodi.tv/) | [Documentation](https://kodi.wiki/view/Main_Page)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/xbmc/xbmc?style=social)](https://github.com/xbmc/xbmc)"
],
[
"**[Lidarr](https://docs.linuxserver.io/images/docker-lidarr)**",
"Music collection manager that automatically downloads from BitTorrent and Usenet (_[Homepage](https://lidarr.audio/) | [Documentation](https://wiki.servarr.com/en/lidarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Lidarr/Lidarr?style=social)](https://github.com/Lidarr/Lidarr)"
],
[
"**[NZBGet](https://docs.linuxserver.io/images/docker-nzbget)**",
"NZBGet is a Usenet download manager used to download from NewsGroups which are supposedly more secure than torrents. **NOTE: Viruses are still prevalent on both NewsGroups and torrents - make sure you don't run anything with admin / sudo privileges.** (_[Homepage](https://nzbget.net/) | [Documentation](https://nzbget.net/documentation)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/nzbget/nzbget?style=social)](https://github.com/nzbget/nzbget)"
],
[
"**[Ombi](https://docs.linuxserver.io/images/docker-ombi)**",
"Plex media request and user management system which can be used to allow users who use your HTPC server to request movies, TV shows, and other media (_[Homepage](https://ombi.io/) | [Documentation](https://docs.ombi.app/) | [Demo](https://app.ombi.io/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Ombi-app/Ombi?style=social)](https://github.com/Ombi-app/Ombi)"
],
[
"**[Organizr](https://docs.linuxserver.io/images/docker-htpcmanager)**",
"Front end for HTPC web applications with a full-featured user interface that is full of eye candy (_[Homepage](https://organizr.app/) | [Documentation](https://docs.organizr.app/) | [Demo](https://docs.organizr.app/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/causefx/Organizr?style=social)](https://github.com/causefx/Organizr)"
],
[
"**[Radarr](https://docs.linuxserver.io/images/docker-radarr)**",
"Automatic movie downloader that can even be configured to download lists including the Top 250 IMBD movies (_[Homepage](https://radarr.video/) | [Documentation](https://wiki.servarr.com/radarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Radarr/Radarr?style=social)](https://github.com/Radarr/Radarr)"
],
[
"**[Sonarr](https://docs.linuxserver.io/images/docker-sonarr)**",
"Automatic TV show downloader with tons of ways to easily and automatically download TV shows (_[Homepage](https://sonarr.tv/) | [Documentation](https://wiki.servarr.com/en/sonarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Sonarr/Sonarr?style=social)](https://github.com/Sonarr/Sonarr)"
],
[
"**[Tautulli](https://docs.linuxserver.io/images/docker-tautulli)**",
"Metrics and monitoring dashboard for Plex (_[Homepage](https://tautulli.com/) | [Documentation](https://wiki.bazarr.media/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Tautulli/Tautulli?style=social)](https://github.com/Tautulli/Tautulli)"
],
[
"**[Transmission](https://docs.linuxserver.io/images/docker-transmission)**",
"BitTorrent client that can be used in conjunction with or as an alternative to using NewsGroups via NZBGet (_[Homepage](https://transmissionbt.com/) | [Documentation](https://github.com/transmission/transmission/blob/main/docs/README.md)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/transmission/transmission?style=social)](https://github.com/transmission/transmission)"
]
],
"idPost": "megabyte.space",
"json_top_keys": "",
"license": "MIT",
"link": {
"chat": "https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/",
"docker_role": "https://github.com/ProfessorManhattan/ansible-docker",
"docs": "https://megabyte.space/docs",
"gitter": "https://gitter.im/megabyte-labs/community",
"home": "https://megabyte.space",
"installdoctor": "https://install.doctor",
"mod_ansible_autodoc": "https://pypi.org/project/mod-ansible-autodoc/",
"privacy": "https://megabyte.space/privacy",
"shield": "https://shields.io",
"terms": "https://megabyte.space/terms"
@ -198,31 +81,6 @@
"husky": "https://www.npmjs.com/package/husky",
"tinypng": "https://tinypng.com/"
},
"molecule_descriptions": [
["Scenario", "Description"],
["`default`", "Uses VirtualBox to run tests for all platforms in parallel."],
["`docker`", "Uses Docker to run tests for all Linux platforms and versions in parallel."],
[
"`docker-snap`",
"The same as the `docker` scenario except it excludes platforms that have trouble installing snap packages on Docker."
],
["`archlinux-desktop`", "Runs the test on the latest version of Archlinux desktop using VirtualBox."],
["`centos-desktop`", "Runs the test on the latest version of CentOS desktop using VirtualBox."],
["`debian-desktop`", "Runs the test on the latest version of Debian desktop using VirtualBox."],
["`fedora-desktop`", "Runs the test on the latest version of Fedora desktop using VirtualBox."],
["`macos-desktop`", "Runs the test on the latest version of macOS desktop using VirtualBox."],
["`ubuntu-desktop`", "Runs the test on the latest version of Ubuntu desktop using VirtualBox."],
["`windows-desktop`", "Runs the test on the latest version of Windows desktop using VirtualBox."],
["`ci-docker-archlinux`", "Uses Docker to test Archlinux."],
["`ci-docker-centos`", "Uses Docker to test multiple versions of CentOS."],
["`ci-docker-debian`", "Uses Docker to test multiple versions of Debian."],
[
"`ci-docker-debian-snap`",
"Uses Docker to test Debian just like `ci-docker-debian` except it excludes versions that cannot install snap packages."
],
["`ci-docker-fedora`", "Uses Docker to test multiple versions of Fedora."],
["`ci-docker-ubuntu`", "Uses Docker to test multiple versions of Ubuntu."]
],
"name": "[[ package.json .blueprint.name - See CONTRIBUTING.md ]]",
"newProjectTemplates": {
"angular-app": {
@ -336,7 +194,6 @@
"npm_type": "module",
"organization": "Megabyte Labs",
"overview": "[[ This is a new repository without the details filled in yet. Look for the section about blueprint data in the CONTRIBUTING.md to set up the project. ]]",
"playbook_path": "megabyte-labs/gas-station",
"profile": {
"dockerHubUser": "professormanhattan",
"dockerhub": "megabytelabs",
@ -345,7 +202,7 @@
"githubOrg": "megabyte-labs",
"linkedin": "blzalewski",
"npmjs": "thisismyfirstday",
"npmjs_organization": "installdoc",
"npmjs_organization": "mblabs",
"opencollective": "megabytelabs",
"patreon": "ProfessorManhattan",
"pypi": "ProfessorManhattan",
@ -368,89 +225,6 @@
"twitter": "MegabyteLabs",
"vagrant": "https://app.vagrantup.com"
},
"python_role_dependencies": [
["Package", "Description", "Required"],
[
"<b><a href=\"https://pypi.org/project/ansible/\" title=\"ansible on pypi.org\" target=\"_blank\">ansible</a></b>",
"A configuration management system that can remotely configure computers",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/docker/\" title=\"docker on pypi.org\" target=\"_blank\">docker</a></b>",
"Enables the capability of provisioning Docker containers with Ansible",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/python-vagrant/\" title=\"python-vagrant on pypi.org\" target=\"_blank\">python-vagrant</a></b>",
"Required for provisioning Vagrant VMs",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/pywinrm/\" title=\"pywinrm on pypi.org\" target=\"_blank\">pywinrm</a></b>",
"Required for provisioning Windows machines that are using WinRM",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/ansible-lint/\" title=\"ansible-lint on pypi.org\" target=\"_blank\">ansible-lint</a></b>",
"Linting tool for Ansible files",
""
],
[
"<b><a href=\"https://pypi.org/project/ansibler/\" title=\"ansibler on pypi.org\" target=\"_blank\">ansibler</a></b>",
"Custom tool used to generate advanced documentation (e.g. it generates the compatibility chart and some other charts)",
""
],
[
"<b><a href=\"https://pypi.org/project/black/\" title=\"black on pypi.org\" target=\"_blank\">black</a></b>",
"Python file auto-formatter included in case project utilizes Python test scripts",
""
],
[
"<b><a href=\"https://pypi.org/project/blocklint/\" title=\"blocklint on pypi.org\" target=\"_blank\">blocklint</a></b>",
"Linting tool that prevents certain words from entering the code base",
""
],
[
"<b><a href=\"https://pypi.org/project/flake8/\" title=\"flake8 on pypi.org\" target=\"_blank\">flake8</a></b>",
"Python linter that reports Python syntax and style errors",
""
],
[
"<b><a href=\"https://pypi.org/project/mod-ansible-autodoc/\" title=\"mod-ansible-autodoc on pypi.org\" target=\"_blank\">mod-ansible-autodoc</a></b>",
"Custom fork of [ansible-autodoc](https://pypi.org/project/ansible-autodoc/0.5.1.1/) which allows us to auto-generate documentation based on comments in the role's YAML files",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule/\" title=\"molecule on pypi.org\" target=\"_blank\">molecule</a></b>",
"Test framework for Ansible",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule-docker/\" title=\"molecule-docker on pypi.org\" target=\"_blank\">molecule-docker</a></b>",
"Molecule plugin for provisioning Docker containers",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule-vagrant/\" title=\"molecule-vagrant on pypi.org\" target=\"_blank\">molecule-vagrant</a></b>",
"Molecule plugin for provisioning Vagrant VMs",
""
],
[
"<b><a href=\"https://pypi.org/project/pre-commit-hooks/\" title=\"pre-commit-hooks on pypi.org\" target=\"_blank\">pre-commit-hooks</a></b>",
"Suite of tools useful for linting",
""
],
[
"<b><a href=\"https://pypi.org/project/proselint/\" title=\"proselint on pypi.org\" target=\"_blank\">proselint</a></b>",
"Linter used to generate English-language improvements (used to improve documentation)",
""
],
[
"<b><a href=\"https://pypi.org/project/yamllint/\" title=\"yamllint on pypi.org\" target=\"_blank\">yamllint</a></b>",
"Linter for YAML files that ensures proper syntax and styling is used",
""
]
],
"redditApplicationId": "O3UxD7HlPpcN88gpEkPIXQ",
"redditUsername": "tsgangster",
"repository": {
@ -528,7 +302,6 @@
}
},
"namespace": "",
"prefix": "ansible-",
"project": {
"assets": "https://gitlab.com/megabyte-labs/assets/-/raw/master",
"autodoc": "https://github.com/AndresBott/ansible-autodoc",
@ -536,39 +309,6 @@
"wrangler": "https://gitlab.com/megabyte-labs/wrangler"
}
},
"saas_var_chart": [
["Service", "Description", "Price"],
[
"**[CloudFlare](https://www.cloudflare.com/)**",
"CloudFlare is a DNS provider, edge network, and much more. Some day it might be able to replace all the services in this list but until then CloudFlare is the preferred provider for anything it offers a product for. In our configurations, CloudFlare is used for DNS, encrypted tunnels via [cloudflared](https://github.com/cloudflare/cloudflared), [CloudFlare WARP](https://1.1.1.1/), and [CloudFlare Teams](https://blog.cloudflare.com/introducing-cloudflare-for-teams/). On top of that, CloudFlare provides some other great features that can be utilized to make lightning-fast web apps. (_[Documentation](https://developers.cloudflare.com/docs/)_)",
"**Free** for the services we integrate"
],
[
"**[Digital Ocean](https://m.do.co/c/751743d45e36)**",
"Digital Ocean is a cloud hosting provider. Anytime CloudFlare's offerings are not enough to satisfy requirements, Digital Ocean is used. The service has a clean and simple web UI, a wide variety of CLIs/SDKs available on GitHub, and the company has been around since 2011. Digital Ocean is primarily used by our stack to host Kubernetes, S3 buckets, and cheap virtual private servers. (_[Documentation](https://docs.digitalocean.com/)_)",
"**~$40/month** for a Kubernetes cluster, S3 bucket, and a general-purpose VPS"
],
[
"**[Wasabi](https://wasabi.com/)**",
"Wasabi is the cheapest S3 bucket provider available. It is used as a secondary backup for any data that is backed up / saved to an S3 bucket. (_[Documentation](https://wasabi.com/help/docs/)_)",
"**$5.99/month** for S3 bucket"
],
[
"**[Ory](https://www.ory.sh/)**",
"Ory is the only identity platform that can scale indefinitely and is based entirely on open source. Ory is leveraged to provide a feature-rich and programmable single sign-on platform. It includes support for hardware-based tokens. (_[Documentation](https://www.ory.sh/docs/welcome)_)",
"**Free** for the developer edition"
],
[
"**[Proton](https://proton.me/)**",
"Proton Mail is an end-to-end encrypted email service founded in 2013 in Geneva, Switzerland. Proton Mail and ProtonVPN are used in our stack to provide secure e-mail and configure VPN profiles using ProtonVPN's unique security features. With the Business plan, you can get custom domain branded e-mail and enough VPN connections to configure your router / VPN profiles on each of your devices. (_[Documentation](https://proton.me/support)_)",
"**$12.99/month** for the Business edition"
],
[
"**[GMail](https://mail.google.com)**",
"GMail is a free e-mail service offered by Google. In some cases, we leverage GMail's SMTP capabilities to send notification e-mails. (_[Documentation](https://support.google.com/mail/?hl=en#topic=7065107)_)",
"**Free**"
]
],
"scriptsBuild": "task donothing",
"scriptsHelp": "task --menu",
"scriptsPrepare": "npm run start && (test -f Taskfile.yml && task common:husky) || true",

View file

@ -1,4 +1,4 @@
[flake8]
exclude = .autodoc, .cache, .common, .config, .git, .github, .gitlab, .husky, .modules, .npm, .pnpm-store, .shared, .task, .venv, .vscode, build, dist, node_modules, roles, venv
exclude = .autodoc, .cache, .common, .config, .git, .modules, .npm, .pnpm-store, .shared, .task, .venv, .vscode, build, dist, node_modules, roles, venv
ignore = E402
max-line-length = 120

View file

@ -5,11 +5,18 @@
# @brief A git hook script for the `commit-msg` hook
# @arg $1 Path to a temporary file that contains the commit message written by the developer (e.g. .git/COMMIT_EDITMSG)
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -22,13 +29,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'More on Task here -> `https://taskfile.dev`'
else
task git:hook:commit-msg -- "$1"
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -7,11 +7,18 @@
# @arg $2 The ref of the new HEAD
# @arg $3 Equal to 1 if changing branches
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -24,13 +31,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
task git:hook:post-checkout
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -5,11 +5,18 @@
# @brief A git hook script for the `post-commit` hook. There are no parameters but you can easily get the
# last commit by running `git log -1 HEAD`. Generally, this script is used for notifications or something similar.
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -22,13 +29,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
task git:hook:post-commit
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -5,11 +5,18 @@
# @brief A git hook script for the `post-merge` hook
# @arg $1 A status flag specifying whether or not the merge being done was a squash merge
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -22,13 +29,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
task git:hook:post-merge
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -6,11 +6,18 @@
# that rewrite commits (e.g. git pull origin master --rebase)
# @arg $1 Denotes the command it was invoked by: currently one of amend or rebase
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -23,13 +30,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
task git:hook:post-rewrite
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -4,11 +4,18 @@
# @file .config/husky/pre-commit
# @brief A git hook script for the `pre-commit` hook
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -21,13 +28,12 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
.config/log warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
.config/log info "Performing various pre-commit tasks on staged files (like autofixing, detecting private keys, etc.)"
logger info "Performing various pre-commit tasks on staged files (like autofixing, detecting private keys, etc.)"
STAGED_FILES=$(git diff --cached --name-only)
for FILE in "$STAGED_FILES"; do
if [ -f "$1" ]; then
@ -36,14 +42,14 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
done
wait
.config/log info 'Linting and fixing the staged files with `lint-staged`'
logger info 'Linting and fixing the staged files with `lint-staged`'
task lint:lint-staged
.config/log info 'Reporting possible spelling errors in the staged files with `cspell`'
logger info 'Reporting possible spelling errors in the staged files with `cspell`'
task lint:spelling
.config/log success 'Pre-commit validation complete!'
logger success 'Pre-commit validation complete!'
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -6,11 +6,18 @@
# @arg $1 The name of the remote (e.g. origin)
# @arg $2 The location of the remote (e.g. git@gitlab.com:megabyte-labs/common/angular.git)
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
# Attempt to register Bodega/Task from common places if it is not in PATH
# Attempt to register Task from common places if it is not in PATH
if ! type task > /dev/null; then
PATH="$PATH:$HOME/.local/go/bin:$HOME/.local/bin:$HOME/bin:$HOME/go/bin:$HOME/.asdf/shims"
if ! type task > /dev/null; then
@ -23,13 +30,13 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
fi
fi
# Show warning if Bodega/Task is still not registered/installed, else proceed with hook
# Show warning if Task is still not registered/installed, else proceed with hook
if ! type task > /dev/null; then
.config/log warn 'Bodega `task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
.config/log info 'Get Bodega here -> `https://github.com/megabyte-labs/Bodega`'
logger warn '`task` does not appear to be installed or is not registered in the `PATH` variable - please manually include it'
logger info 'Get `task` here -> https://taskfile.dev'
else
task git:hook:pre-push -- "$1 $2"
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -7,16 +7,23 @@
# @arg $2 string The type of the `prepare-commit-msg` event. For a `git pull origin master`
# command, the event type is 'merge'.
[ -f .config/log ] && chmod +x .config/log
# @description Register appropriate logging utility
if [ -f "$(dirname "$0")/../.config/log" ]; then
alias logger="$(dirname "$0")/../.config/log"
chmod +x "$(dirname "$0")/../.config/log"
elif command -v logg > /dev/null; then
alias logger='logg'
fi
if [ -f "$(dirname "$0")/_/husky.sh" ]; then
. "$(dirname "$0")/_/husky.sh"
if [ "$2" != 'merge' ]; then
.config/log info 'This git hook is configured to run even when --no-verify is used. In order to bypass this prompt, use the -n flag instead.'
.config/log info 'Opening a `git commit` dialog'
logger info 'This git hook is configured to run even when --no-verify is used. In order to bypass this prompt, use the -n flag instead.'
logger info 'Opening a `git commit` dialog'
if ! type pnpx > /dev/null && type npm > /dev/null; then
npm install -g pnpm
elif ! type pnpx > /dev/null; then
.config/log error '`pnpm` or `npm` must be installed'
logger error '`pnpm` or `npm` must be installed'
fi
if ! type git-cz &> /dev/null; then
pnpm install -g commitizen
@ -24,5 +31,5 @@ if [ -f "$(dirname "$0")/_/husky.sh" ]; then
exec < /dev/tty && (git-cz --hook || true)
fi
else
.config/log warn 'Husky pre-commit hooks are currently not properly setup.'
logger warn 'Husky pre-commit hooks are currently not properly setup.'
fi

View file

@ -0,0 +1,5 @@
{
"exec": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register jest --runInBand",
"ext": "js,jsx,ts,tsx,json,ts,yml",
"watch": [".env", "src"]
}

View file

@ -1,4 +1,5 @@
{
"exec": "task project:livereload",
"ext": "py,yml"
"ext": "js,jsx,ts,tsx,json,ts,yml",
"watch": [".env", "src"]
}

View file

@ -0,0 +1,18 @@
import * as esbuild from 'esbuild'
import { nodeExternalsPlugin } from 'esbuild-node-externals'
esbuild.build({
bundle: true,
entryPoints: ['src/main.ts'],
external: [
'@nestjs/microservices',
'@nestjs/websockets/socket-module',
'cache-manager',
'class-transformer',
'class-validator'
],
minify: true,
outfile: 'dist/main.minified.js',
platform: 'node',
plugins: [nodeExternalsPlugin()]
})

View file

@ -1,7 +1,6 @@
{
"SPACE": "",
"alt_badge_style": "flat-square",
"ansible_galaxy_project_id": "",
"author": {
"email": "brian@megabyte.space",
"name": "Brian Zalewski"
@ -11,41 +10,17 @@
"autodoc_todo_description": "",
"autodoc_variables_description": "",
"badge_style": "for-the-badge",
"blueprint_requirements": [
["Variable Name", "Variable Description"],
[
"`description`",
"Short description of the role, worded in such a way that it makes sense by itself and with 'An Ansible role that ' prepended to it"
],
["`group`", "This should always be set to 'ansible' for Ansible roles"],
[
"`name`",
"This should be the official name for the product that the role installs/configures. It is used in the title of the repository and throughout the documentation to refer to the product."
],
[
"`overview`",
"This variable should be a description of what the role installs. You can usually find a good description by Googling, \"What is Android Studio,\" for example if you were populating this variable for the [Android Studio role]({{ repository.group.ansible_roles }}/androidstudio). This text is shown at the top of the README, right below the header section and before the table of contents. Whenever possible, key products/terms should be linked to using markdown. You can see an example of us hyperlinking in this variable by checking out the [Android Studio role]({{ repository.group.ansible_roles }}/androidstudio). The idea is to make it as easy as possible for our users to figure out exactly what the role does."
],
["`repository.github`", "The HTTPS URL of the GitHub mirror"],
["`repository.gitlab`", "The HTTPS URL of the GitLab repository"],
[
"`slug`",
"This should generally be the ending slug of the GitHub mirror. It is used for things like filling in the package.json name."
],
["`subgroup`", "This should always be set to 'role' for Ansible roles"],
["`title`", "The title of the README.md"]
],
"build_coverage_regex": "Lines\\s*:\\s*(\\d+.?\\d*)%",
"commit_help_url": "https://megabyte.space/docs/contributing/commit-guidelines",
"company": "Megabyte LLC",
"copyright": "2020-2021",
"description_emojis": "👨🏻‍💻 🩺",
"docker_label_authors": "Brian Zalewski <brian@megabyte.space>",
"docs": {
"header_description_post": "<i></i>",
"header_description_pre": "Brought to you by ",
"header_description_pre": "Maintained by ",
"header_title_post": "<i></i>",
"header_title_pre": "Ansible Playbook: ",
"link": "https://megabyte.space/docs/ansible/playbook"
"header_title_pre": "<i></i>",
"link": "https://megabyte.space/docs/common/npm"
},
"downloadLinks": {
"fedora": "https://download.fedoraproject.org/pub/fedora/linux/releases/35/Workstation/x86_64/iso/Fedora-Workstation-Live-x86_64-35-1.2.iso",
@ -65,39 +40,12 @@
{
"active": true,
"cron": "0 12 * * 1",
"description": "Weekly Build Test",
"description": "Weekly Test",
"ref": "master",
"variable": {
"WEEKLY_TEST": true
}
},
{
"active": true,
"cron": "0 12 * * 1",
"description": "Weekly Linux Molecule Test",
"ref": "test/linux",
"variable": {
"WEEKLY_LINUX_TEST": true
}
},
{
"active": true,
"cron": "0 12 * * 2",
"description": "Weekly macOS Molecule Test",
"ref": "test/darwin",
"variable": {
"WEEKLY_DARWIN_TEST": true
}
},
{
"active": true,
"cron": "0 12 * * 4",
"description": "Weekly Windows Molecule Test",
"ref": "test/windows",
"variable": {
"WEEKLY_WINDOWS_TEST": true
}
},
{
"active": true,
"cron": "0 5 1 * *",
@ -124,108 +72,15 @@
"name": "homebrew-tap",
"owner": "installdoc"
},
"hostapp_var_chart": [
["App", "Description", "GitHub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"],
[
"**[Authelia](https://www.authelia.com/)**",
"An authentication portal that supports SSO and 2FA (_[Homepage](https://www.authelia.com/) | [Documentation](https://www.authelia.com/docs/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/authelia/authelia?style=social)](https://github.com/authelia/authelia)"
],
[
"**[Homer](https://github.com/bastienwirtz/homer)**",
"A very simple homepage which is customized by the playbook to automatically include links to the Docker containers you choose to host on the computer (_[Demo](https://homer-demo.netlify.app/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/bastienwirtz/homer?style=social)](https://github.com/bastienwirtz/homer)"
],
[
"**[Portainer](https://www.portainer.io/)**",
"A Docker management tool (_[Homepage](https://www.portainer.io/) | [Documentation](https://docs.portainer.io/) | [Demo](https://github.com/portainer/portainer#demo)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/portainer/portainer?style=social)](https://github.com/portainer/portainer)"
],
[
"**[Serve](https://github.com/vercel/serve)**",
"Simple interface for viewing files located or symlinked to in the `/var/www/` folder of the machine",
"[![GitHub Repo stars](https://img.shields.io/github/stars/vercel/serve?style=social)](https://github.com/vercel/serve)"
]
],
"htpc_var_chart": [
["App", "Description", "GitHub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"],
[
"**[WireGuard](https://docs.linuxserver.io/images/docker-wireguard)**",
"Dedicated WireGuard VPN for the HTPC applications which is configured in *our docker-compose.yml* file to be used as the internet connection for all the containers (_[Homepage](https://www.wireguard.com/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/linuxserver/docker-wireguard?style=social)](https://github.com/linuxserver/docker-wireguard)"
],
[
"**[Bazarr](https://docs.linuxserver.io/images/docker-bazarr)**",
"Manages and automatically downloads subtitles (_[Homepage](https://www.bazarr.media/) | [Documentation](https://wiki.bazarr.media/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/morpheus65535/bazarr?style=social)](https://github.com/morpheus65535/bazarr)"
],
[
"**[Heimdall](https://docs.linuxserver.io/images/docker-heimdall)**",
"Simple start page for all the HTPC apps (_[Homepage](https://heimdall.site/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/linuxserver/Heimdall?style=social)](https://github.com/linuxserver/Heimdall)"
],
[
"**[Jackett](https://docs.linuxserver.io/images/docker-jackett)**",
"Request proxy server for Radarr and Sonarr which helps speed things up",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Jackett/Jackett?style=social)](https://github.com/Jackett/Jackett)"
],
[
"**[Kodi Headless](https://hub.docker.com/r/linuxserver/kodi-headless)**",
"Backend for Kodi used to host a centralized database for Kodi instances (_[Homepage](https://kodi.tv/) | [Documentation](https://kodi.wiki/view/Main_Page)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/xbmc/xbmc?style=social)](https://github.com/xbmc/xbmc)"
],
[
"**[Lidarr](https://docs.linuxserver.io/images/docker-lidarr)**",
"Music collection manager that automatically downloads from BitTorrent and Usenet (_[Homepage](https://lidarr.audio/) | [Documentation](https://wiki.servarr.com/en/lidarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Lidarr/Lidarr?style=social)](https://github.com/Lidarr/Lidarr)"
],
[
"**[NZBGet](https://docs.linuxserver.io/images/docker-nzbget)**",
"NZBGet is a Usenet download manager used to download from NewsGroups which are supposedly more secure than torrents. **NOTE: Viruses are still prevalent on both NewsGroups and torrents - make sure you don't run anything with admin / sudo privileges.** (_[Homepage](https://nzbget.net/) | [Documentation](https://nzbget.net/documentation)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/nzbget/nzbget?style=social)](https://github.com/nzbget/nzbget)"
],
[
"**[Ombi](https://docs.linuxserver.io/images/docker-ombi)**",
"Plex media request and user management system which can be used to allow users who use your HTPC server to request movies, TV shows, and other media (_[Homepage](https://ombi.io/) | [Documentation](https://docs.ombi.app/) | [Demo](https://app.ombi.io/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Ombi-app/Ombi?style=social)](https://github.com/Ombi-app/Ombi)"
],
[
"**[Organizr](https://docs.linuxserver.io/images/docker-htpcmanager)**",
"Front end for HTPC web applications with a full-featured user interface that is full of eye candy (_[Homepage](https://organizr.app/) | [Documentation](https://docs.organizr.app/) | [Demo](https://docs.organizr.app/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/causefx/Organizr?style=social)](https://github.com/causefx/Organizr)"
],
[
"**[Radarr](https://docs.linuxserver.io/images/docker-radarr)**",
"Automatic movie downloader that can even be configured to download lists including the Top 250 IMBD movies (_[Homepage](https://radarr.video/) | [Documentation](https://wiki.servarr.com/radarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Radarr/Radarr?style=social)](https://github.com/Radarr/Radarr)"
],
[
"**[Sonarr](https://docs.linuxserver.io/images/docker-sonarr)**",
"Automatic TV show downloader with tons of ways to easily and automatically download TV shows (_[Homepage](https://sonarr.tv/) | [Documentation](https://wiki.servarr.com/en/sonarr)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Sonarr/Sonarr?style=social)](https://github.com/Sonarr/Sonarr)"
],
[
"**[Tautulli](https://docs.linuxserver.io/images/docker-tautulli)**",
"Metrics and monitoring dashboard for Plex (_[Homepage](https://tautulli.com/) | [Documentation](https://wiki.bazarr.media/)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/Tautulli/Tautulli?style=social)](https://github.com/Tautulli/Tautulli)"
],
[
"**[Transmission](https://docs.linuxserver.io/images/docker-transmission)**",
"BitTorrent client that can be used in conjunction with or as an alternative to using NewsGroups via NZBGet (_[Homepage](https://transmissionbt.com/) | [Documentation](https://github.com/transmission/transmission/blob/main/docs/README.md)_)",
"[![GitHub Repo stars](https://img.shields.io/github/stars/transmission/transmission?style=social)](https://github.com/transmission/transmission)"
]
],
"idPost": "megabyte.space",
"json_top_keys": "",
"license": "MIT",
"link": {
"chat": "https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/",
"docker_role": "https://github.com/ProfessorManhattan/ansible-docker",
"docs": "https://megabyte.space/docs",
"gitter": "https://gitter.im/megabyte-labs/community",
"home": "https://megabyte.space",
"installdoctor": "https://install.doctor",
"mod_ansible_autodoc": "https://pypi.org/project/mod-ansible-autodoc/",
"privacy": "https://megabyte.space/privacy",
"shield": "https://shields.io",
"terms": "https://megabyte.space/terms"
@ -235,31 +90,6 @@
"husky": "https://www.npmjs.com/package/husky",
"tinypng": "https://tinypng.com/"
},
"molecule_descriptions": [
["Scenario", "Description"],
["`default`", "Uses VirtualBox to run tests for all platforms in parallel."],
["`docker`", "Uses Docker to run tests for all Linux platforms and versions in parallel."],
[
"`docker-snap`",
"The same as the `docker` scenario except it excludes platforms that have trouble installing snap packages on Docker."
],
["`archlinux-desktop`", "Runs the test on the latest version of Archlinux desktop using VirtualBox."],
["`centos-desktop`", "Runs the test on the latest version of CentOS desktop using VirtualBox."],
["`debian-desktop`", "Runs the test on the latest version of Debian desktop using VirtualBox."],
["`fedora-desktop`", "Runs the test on the latest version of Fedora desktop using VirtualBox."],
["`macos-desktop`", "Runs the test on the latest version of macOS desktop using VirtualBox."],
["`ubuntu-desktop`", "Runs the test on the latest version of Ubuntu desktop using VirtualBox."],
["`windows-desktop`", "Runs the test on the latest version of Windows desktop using VirtualBox."],
["`ci-docker-archlinux`", "Uses Docker to test Archlinux."],
["`ci-docker-centos`", "Uses Docker to test multiple versions of CentOS."],
["`ci-docker-debian`", "Uses Docker to test multiple versions of Debian."],
[
"`ci-docker-debian-snap`",
"Uses Docker to test Debian just like `ci-docker-debian` except it excludes versions that cannot install snap packages."
],
["`ci-docker-fedora`", "Uses Docker to test multiple versions of Fedora."],
["`ci-docker-ubuntu`", "Uses Docker to test multiple versions of Ubuntu."]
],
"name": "[[ package.json .blueprint.name - See CONTRIBUTING.md ]]",
"newProjectTemplates": {
"angular-app": {
@ -370,10 +200,9 @@
},
"npm_publish_config_access": "public",
"npm_standard_version_prerelease": "git add --all",
"npm_type": "module",
"npm_type": "commonjs",
"organization": "Megabyte Labs",
"overview": "[[ This is a new repository without the details filled in yet. Look for the section about blueprint data in the CONTRIBUTING.md to set up the project. ]]",
"playbook_path": "megabyte-labs/gas-station",
"profile": {
"dockerHubUser": "professormanhattan",
"dockerhub": "megabytelabs",
@ -382,7 +211,7 @@
"githubOrg": "megabyte-labs",
"linkedin": "blzalewski",
"npmjs": "thisismyfirstday",
"npmjs_organization": "installdoc",
"npmjs_organization": "mblabs",
"opencollective": "megabytelabs",
"patreon": "ProfessorManhattan",
"pypi": "ProfessorManhattan",
@ -405,89 +234,6 @@
"twitter": "MegabyteLabs",
"vagrant": "https://app.vagrantup.com"
},
"python_role_dependencies": [
["Package", "Description", "Required"],
[
"<b><a href=\"https://pypi.org/project/ansible/\" title=\"ansible on pypi.org\" target=\"_blank\">ansible</a></b>",
"A configuration management system that can remotely configure computers",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/docker/\" title=\"docker on pypi.org\" target=\"_blank\">docker</a></b>",
"Enables the capability of provisioning Docker containers with Ansible",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/python-vagrant/\" title=\"python-vagrant on pypi.org\" target=\"_blank\">python-vagrant</a></b>",
"Required for provisioning Vagrant VMs",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/pywinrm/\" title=\"pywinrm on pypi.org\" target=\"_blank\">pywinrm</a></b>",
"Required for provisioning Windows machines that are using WinRM",
"<div align=\"center\">✔️</div>"
],
[
"<b><a href=\"https://pypi.org/project/ansible-lint/\" title=\"ansible-lint on pypi.org\" target=\"_blank\">ansible-lint</a></b>",
"Linting tool for Ansible files",
""
],
[
"<b><a href=\"https://pypi.org/project/ansibler/\" title=\"ansibler on pypi.org\" target=\"_blank\">ansibler</a></b>",
"Custom tool used to generate advanced documentation (e.g. it generates the compatibility chart and some other charts)",
""
],
[
"<b><a href=\"https://pypi.org/project/black/\" title=\"black on pypi.org\" target=\"_blank\">black</a></b>",
"Python file auto-formatter included in case project utilizes Python test scripts",
""
],
[
"<b><a href=\"https://pypi.org/project/blocklint/\" title=\"blocklint on pypi.org\" target=\"_blank\">blocklint</a></b>",
"Linting tool that prevents certain words from entering the code base",
""
],
[
"<b><a href=\"https://pypi.org/project/flake8/\" title=\"flake8 on pypi.org\" target=\"_blank\">flake8</a></b>",
"Python linter that reports Python syntax and style errors",
""
],
[
"<b><a href=\"https://pypi.org/project/mod-ansible-autodoc/\" title=\"mod-ansible-autodoc on pypi.org\" target=\"_blank\">mod-ansible-autodoc</a></b>",
"Custom fork of [ansible-autodoc](https://pypi.org/project/ansible-autodoc/0.5.1.1/) which allows us to auto-generate documentation based on comments in the role's YAML files",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule/\" title=\"molecule on pypi.org\" target=\"_blank\">molecule</a></b>",
"Test framework for Ansible",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule-docker/\" title=\"molecule-docker on pypi.org\" target=\"_blank\">molecule-docker</a></b>",
"Molecule plugin for provisioning Docker containers",
""
],
[
"<b><a href=\"https://pypi.org/project/molecule-vagrant/\" title=\"molecule-vagrant on pypi.org\" target=\"_blank\">molecule-vagrant</a></b>",
"Molecule plugin for provisioning Vagrant VMs",
""
],
[
"<b><a href=\"https://pypi.org/project/pre-commit-hooks/\" title=\"pre-commit-hooks on pypi.org\" target=\"_blank\">pre-commit-hooks</a></b>",
"Suite of tools useful for linting",
""
],
[
"<b><a href=\"https://pypi.org/project/proselint/\" title=\"proselint on pypi.org\" target=\"_blank\">proselint</a></b>",
"Linter used to generate English-language improvements (used to improve documentation)",
""
],
[
"<b><a href=\"https://pypi.org/project/yamllint/\" title=\"yamllint on pypi.org\" target=\"_blank\">yamllint</a></b>",
"Linter for YAML files that ensures proper syntax and styling is used",
""
]
],
"redditApplicationId": "O3UxD7HlPpcN88gpEkPIXQ",
"redditUsername": "tsgangster",
"repository": {
@ -565,9 +311,6 @@
}
},
"namespace": "",
"prefix": {
"github": "ansible-"
},
"project": {
"assets": "https://gitlab.com/megabyte-labs/assets/-/raw/master",
"autodoc": "https://github.com/AndresBott/ansible-autodoc",
@ -575,46 +318,13 @@
"wrangler": "https://gitlab.com/megabyte-labs/wrangler"
}
},
"saas_var_chart": [
["Service", "Description", "Price"],
[
"**[CloudFlare](https://www.cloudflare.com/)**",
"CloudFlare is a DNS provider, edge network, and much more. Some day it might be able to replace all the services in this list but until then CloudFlare is the preferred provider for anything it offers a product for. In our configurations, CloudFlare is used for DNS, encrypted tunnels via [cloudflared](https://github.com/cloudflare/cloudflared), [CloudFlare WARP](https://1.1.1.1/), and [CloudFlare Teams](https://blog.cloudflare.com/introducing-cloudflare-for-teams/). On top of that, CloudFlare provides some other great features that can be utilized to make lightning-fast web apps. (_[Documentation](https://developers.cloudflare.com/docs/)_)",
"**Free** for the services we integrate"
],
[
"**[Digital Ocean](https://m.do.co/c/751743d45e36)**",
"Digital Ocean is a cloud hosting provider. Anytime CloudFlare's offerings are not enough to satisfy requirements, Digital Ocean is used. The service has a clean and simple web UI, a wide variety of CLIs/SDKs available on GitHub, and the company has been around since 2011. Digital Ocean is primarily used by our stack to host Kubernetes, S3 buckets, and cheap virtual private servers. (_[Documentation](https://docs.digitalocean.com/)_)",
"**~$40/month** for a Kubernetes cluster, S3 bucket, and a general-purpose VPS"
],
[
"**[Wasabi](https://wasabi.com/)**",
"Wasabi is the cheapest S3 bucket provider available. It is used as a secondary backup for any data that is backed up / saved to an S3 bucket. (_[Documentation](https://wasabi.com/help/docs/)_)",
"**$5.99/month** for S3 bucket"
],
[
"**[Ory](https://www.ory.sh/)**",
"Ory is the only identity platform that can scale indefinitely and is based entirely on open source. Ory is leveraged to provide a feature-rich and programmable single sign-on platform. It includes support for hardware-based tokens. (_[Documentation](https://www.ory.sh/docs/welcome)_)",
"**Free** for the developer edition"
],
[
"**[Proton](https://proton.me/)**",
"Proton Mail is an end-to-end encrypted email service founded in 2013 in Geneva, Switzerland. Proton Mail and ProtonVPN are used in our stack to provide secure e-mail and configure VPN profiles using ProtonVPN's unique security features. With the Business plan, you can get custom domain branded e-mail and enough VPN connections to configure your router / VPN profiles on each of your devices. (_[Documentation](https://proton.me/support)_)",
"**$12.99/month** for the Business edition"
],
[
"**[GMail](https://mail.google.com)**",
"GMail is a free e-mail service offered by Google. In some cases, we leverage GMail's SMTP capabilities to send notification e-mails. (_[Documentation](https://support.google.com/mail/?hl=en#topic=7065107)_)",
"**Free**"
]
],
"scriptsBuild": "task ansible:build:none",
"scriptsBuild": "task npm:build:tsconfig",
"scriptsHelp": "task --menu",
"scriptsPrepare": "npm run start && (test -f Taskfile.yml && task common:husky) || true",
"scriptsReplaceThis": "\"",
"scriptsReplaceWith": "\\\"",
"scriptsStart": "bash start.sh",
"scriptsTest": "[ -z \"$PS1\" ] && task ansible:test:prompt || task ansible:test:default",
"scriptsTest": "task donothing",
"sharp_instructions": [],
"slackNotificationChannel": "#misc",
"slackNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
@ -623,7 +333,7 @@
"author": "Brian Zalewski",
"text": "I create open source projects out of love. Although I have a job, shelter, and as much fast food as I can handle, it would still be pretty cool to be appreciated by the community for something I have spent a lot of time and money on. Please consider sponsoring me! Who knows? Maybe I will be able to quit my job and publish open source full time."
},
"subgroup": "playbook",
"subgroup": "misc",
"teamsNotificationColor": "#1DA1F2",
"teamsNotificationIcon": "https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/megabytelabs-color-icon-350x350.png",
"title": "[[ package.json .blueprint.title - See CONTRIBUTING.md ]]",

View file

@ -1,13 +1,8 @@
{
"dockerFile": "Dockerfile",
"extensions": [
"Angular.ng-template",
"attilabuti.vscode-mjml",
"bierner.markdown-emoji",
"ChakrounAnas.turbo-console-log",
"ChFlick.firecode",
"chrmarti.regex",
"cweijan.vscode-mysql-client2",
"DavidAnson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"denoland.vscode-deno",
@ -21,31 +16,22 @@
"GitHub.vscode-pull-request-github",
"GitLab.gitlab-workflow",
"GoogleCloudTools.cloudcode",
"golang.Go",
"HashiCorp.terraform",
"hediet.vscode-drawio",
"IBM.output-colorizer",
"Kelvin.vscode-sshfs",
"mads-hartmann.bash-ide-vscode",
"ms-azuretools.vscode-docker",
"ms-kubernetes-tools.vscode-kubernetes-tools",
"ms-vscode-remote.remote-containers",
"ms-vscode-remote.remote-ssh",
"ms-vscode-remote.remote-wsl",
"ms-python.python",
"ms-vscode.PowerShell",
"MS-vsliveshare.vsliveshare",
"MS-vsliveshare.vsliveshare-audio",
"njpwerner.autodocstring",
"nrwl.angular-console",
"paulvarache.vscode-taskfile",
"philnash.ngrok-for-vscode",
"PKief.material-icon-theme",
"pnp.polacode",
"pranaygp.vscode-css-peek",
"quicktype.quicktype",
"rbbit.typescript-hero",
"redhat.ansible",
"redhat.vscode-yaml",
"richie5um2.vscode-sort-json",
"Rubymaniac.vscode-paste-and-indent",
@ -55,12 +41,10 @@
"steoates.autoimport",
"stylelint.vscode-stylelint",
"timonwong.shellcheck",
"toba.vsfire",
"tyriar.sort-lines",
"usernamehw.errorlens",
"valentjn.vscode-ltex",
"VisualStudioExptTeam.vscodeintellicode",
"vsciot-vscode.vscode-arduino",
"vsls-contrib.codetour",
"vsls-contrib.gistfs",
"wayou.vscode-todo-highlight",

View file

@ -1,5 +1,5 @@
---
name: '🐛 Bug Report'
name: 🐛 Bug Report
description: Stumbled upon an error? Submit a bug report.
labels: [question]
body:
@ -16,7 +16,7 @@ body:
- type: dropdown
id: type
attributes:
label: '❔ What are you experiencing an issue with?'
label: ❔ What are you experiencing an issue with?
options:
- Latest Release
- Prior Release
@ -29,16 +29,16 @@ body:
- type: input
id: version
attributes:
label: '❔ Version'
label: ❔ Version
description: Enter the version number, the commit ID, or a link to the release that has the issue.
placeholder: 'Version 2.4.0'
placeholder: Version 2.4.0
validations:
required: true
- type: textarea
id: description
attributes:
label: '🐞 Description'
label: 🐞 Description
description: Enter a clear and concise description of the problem.
validations:
required: true
@ -46,7 +46,7 @@ body:
- type: textarea
id: steps
attributes:
label: '⏺️ Steps To Reproduce'
label: ⏺️ Steps To Reproduce
description: '**Optional** Enter the steps required to reproduce the behavior. Be sure to include environment
information, as appropriate.'
placeholder: |
@ -60,7 +60,7 @@ body:
- type: textarea
id: logs
attributes:
label: '📒 Relevant Log Output'
label: 📒 Relevant Log Output
description: '**Optional** Please copy and paste any relevant log output. This will be automatically formatted into
code, so no need for backticks.'
render: shell
@ -70,7 +70,7 @@ body:
- type: textarea
id: solution
attributes:
label: '💡 Possible Solution'
label: 💡 Possible Solution
description: '**Optional** Enter suggestions on a fix/reason for the bug if you have any.'
validations:
required: false

View file

@ -1,5 +1,5 @@
---
name: '💡 Feature Request'
name: 💡 Feature Request
description: Request a new feature or an improvement to an existing one.
labels: [question]
body:
@ -15,7 +15,7 @@ body:
- type: textarea
id: description
attributes:
label: '💡 Feature/Idea'
label: 💡 Feature/Idea
description: Enter a clear and concise description of the feature request/improvement.
validations:
required: true

View file

@ -1,5 +1,5 @@
---
name: '⛑️ Support Request'
name: ⛑️ Support Request
description: Find out how to get answers and/or submit a support request.
labels: [question]
body:
@ -17,7 +17,7 @@ body:
- type: textarea
id: support
attributes:
label: '⛑️ Support Request'
label: ⛑️ Support Request
description: Add your support request here. Detail exactly what you need help with.
validations:
required: true
@ -25,21 +25,21 @@ body:
- type: input
id: contributor
attributes:
label: '😀 Are you interested in paid support?'
label: 😀 Are you interested in paid support?
description: '**Optional** For the fastest, most-effective support we offer paid services. If you are interested,
answer *Yes* and we will get in contact with you immediately.'
options:
# yamllint disable-line rule:truthy
- 'Yes'
- Yes
# yamllint disable-line rule:truthy
- 'No'
- No
validations:
required: false
- type: input
id: contributor
attributes:
label: '💬 How can we contact you?'
label: 💬 How can we contact you?
description: '**Optional** Add a way we can contact you here (especially if you want us to contact you immediately for paid support).'
placeholder: 'Twitter: @MegabyteLabs, E-mail: help@megabyte.space, etc.'
validations:

View file

@ -1,9 +1,9 @@
---
blank_issues_enabled: false
contact_links:
- name: '💬 Slack Channel'
- name: 💬 Slack Channel
url: 'https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/'
about: Join our community on Slack. Get answers and share ideas with kindreds.
- name: '📟 Paid Support'
- name: 📟 Paid Support
url: https://megabyte.space/commercial-support
about: For the fastest, most-thorough solutions we encourage you to consider paid support.

53
.vscode/extensions.json vendored Normal file
View file

@ -0,0 +1,53 @@
{
"recommendations": [
"ChakrounAnas.turbo-console-log",
"chrmarti.regex",
"DavidAnson.vscode-markdownlint",
"dbaeumer.vscode-eslint",
"denoland.vscode-deno",
"eamodio.gitlens",
"EditorConfig.EditorConfig",
"esbenp.prettier-vscode",
"ericadamski.carbon-now-sh",
"firsttris.vscode-jest-runner",
"formulahendry.auto-rename-tag",
"formulahendry.code-runner",
"GitHub.vscode-pull-request-github",
"GitLab.gitlab-workflow",
"GoogleCloudTools.cloudcode",
"hediet.vscode-drawio",
"IBM.output-colorizer",
"Kelvin.vscode-sshfs",
"mads-hartmann.bash-ide-vscode",
"ms-azuretools.vscode-docker",
"ms-vscode-remote.remote-containers",
"ms-vscode-remote.remote-ssh",
"ms-vscode-remote.remote-wsl",
"ms-vscode.PowerShell",
"MS-vsliveshare.vsliveshare",
"MS-vsliveshare.vsliveshare-audio",
"philnash.ngrok-for-vscode",
"PKief.material-icon-theme",
"pranaygp.vscode-css-peek",
"quicktype.quicktype",
"rbbit.typescript-hero",
"redhat.vscode-yaml",
"richie5um2.vscode-sort-json",
"Rubymaniac.vscode-paste-and-indent",
"salbert.comment-ts",
"shd101wyy.markdown-preview-enhanced",
"softwaredotcom.swdc-vscode",
"steoates.autoimport",
"stylelint.vscode-stylelint",
"timonwong.shellcheck",
"tyriar.sort-lines",
"usernamehw.errorlens",
"valentjn.vscode-ltex",
"VisualStudioExptTeam.vscodeintellicode",
"vsls-contrib.codetour",
"vsls-contrib.gistfs",
"wayou.vscode-todo-highlight",
"wix.vscode-import-cost",
"yatki.vscode-surround"
]
}

710
.vscode/tasks.json vendored Normal file
View file

@ -0,0 +1,710 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "(build): Build the project using the build script defined in `package.json`",
"type": "shell",
"command": "bash start.sh && task build"
},
{
"label": "(clean): Removes optional folders that are cached during various tasks",
"type": "shell",
"command": "bash start.sh && task clean"
},
{
"label": "(commit): Lint staged files, report spelling errors, and open a _required_ commit dialoge",
"type": "shell",
"command": "bash start.sh && task commit"
},
{
"label": "(fix): Run code auto-fixers / auto-formatters",
"type": "shell",
"command": "bash start.sh && task fix"
},
{
"label": "(init): Runs the initialization script",
"type": "shell",
"command": "bash start.sh && task init"
},
{
"label": "(jumpusb): Creates a JumpUSB (https://jumpusb.com)",
"type": "shell",
"command": "bash start.sh && task jumpusb"
},
{
"label": "(lint): Lints the project using all linters",
"type": "shell",
"command": "bash start.sh && task lint"
},
{
"label": "(livereload): Start the project with live-reloading (i.e. watch mode)",
"type": "shell",
"command": "bash start.sh && task livereload"
},
{
"label": "(preload): Set up your workstation in advance by installing commonly used programs",
"type": "shell",
"command": "bash start.sh && task preload"
},
{
"label": "(prepare): Prepares the project for the normal start command",
"type": "shell",
"command": "bash start.sh && task prepare"
},
{
"label": "(publish): Publish a semantic release via `semantic-release`",
"type": "shell",
"command": "bash start.sh && task publish"
},
{
"label": "(reset): Resets the project by removing all caches and then re-generating templated files",
"type": "shell",
"command": "bash start.sh && task reset"
},
{
"label": "(scripts): Run and view descriptions for `npm scripts` via an interactive dialog",
"type": "shell",
"command": "bash start.sh && task scripts"
},
{
"label": "(services): Update elements of the repository that require API access",
"type": "shell",
"command": "bash start.sh && task services"
},
{
"label": "(shell): Start a terminal session using Docker with any Linux operating system",
"type": "shell",
"command": "bash start.sh && task shell"
},
{
"label": "(start): Start the project by installing / updating dependencies, repairing issues, and opening a tutorial",
"type": "shell",
"command": "bash start.sh && task start"
},
{
"label": "(synchronize): Set up the project and refresh it with the latest changes",
"type": "shell",
"command": "bash start.sh && task synchronize"
},
{
"label": "(test): Open an interactive dialog to select and run a Molecule test",
"type": "shell",
"command": "bash start.sh && task test"
},
{
"label": "(update): Fully update the repository",
"type": "shell",
"command": "bash start.sh && task update"
},
{
"label": "(yubikey): Create an OpenGPG-enabled YubiKey",
"type": "shell",
"command": "bash start.sh && task yubikey"
},
{
"label": "(ansible:playbook:environment): Prompts for which environment to use and then symlinks to it",
"type": "shell",
"command": "bash start.sh && task ansible:playbook:environment"
},
{
"label": "(ansible:playbook:find-missing:files): Find roles that are missing files",
"type": "shell",
"command": "bash start.sh && task ansible:playbook:find-missing:files"
},
{
"label": "(ansible:populate:dependencies): Attempt to automatically populate `meta/main.yml` and `requirements.yml`",
"type": "shell",
"command": "bash start.sh && task ansible:populate:dependencies"
},
{
"label": "(ansible:test:local): Run the Ansible play on the local machine (or via WSL - see task summary)",
"type": "shell",
"command": "bash start.sh && task ansible:test:local"
},
{
"label": "(ansible:test:molecule:docker): Runs a Docker Molecule test",
"type": "shell",
"command": "bash start.sh && task ansible:test:molecule:docker"
},
{
"label": "(ansible:test:molecule:local): Runs a Molecule test on the localhost",
"type": "shell",
"command": "bash start.sh && task ansible:test:molecule:local"
},
{
"label": "(ansible:test:molecule:ssh): Runs a Molecule test over SSH",
"type": "shell",
"command": "bash start.sh && task ansible:test:molecule:ssh"
},
{
"label": "(ansible:test:molecule:virtualbox): Runs a full E2E Molecule test for all supported operating systems",
"type": "shell",
"command": "bash start.sh && task ansible:test:molecule:virtualbox"
},
{
"label": "(ansible:test:molecule:virtualbox:converge): Provisions a desktop VirtualBox VM and then runs a Molecule test",
"type": "shell",
"command": "bash start.sh && task ansible:test:molecule:virtualbox:converge"
},
{
"label": "(ansible:test:vagrant): Runs the playbook using Vagrant",
"type": "shell",
"command": "bash start.sh && task ansible:test:vagrant"
},
{
"label": "(ci:github:actions:test): Locally test the on-push GitHub Action event (only works for Linux containers)",
"type": "shell",
"command": "bash start.sh && task ci:github:actions:test"
},
{
"label": "(commit:all): Add all the untracked changes and commit the code",
"type": "shell",
"command": "bash start.sh && task commit:all"
},
{
"label": "(common:code:count): Display a chart detailing the lines of code for each language used",
"type": "shell",
"command": "bash start.sh && task common:code:count"
},
{
"label": "(common:code:find:todo): Scan code base for TODOs and FIXMEs",
"type": "shell",
"command": "bash start.sh && task common:code:find:todo"
},
{
"label": "(docker:build): Build a regular Docker image and then generate a slim build from it",
"type": "shell",
"command": "bash start.sh && task docker:build"
},
{
"label": "(docker:build:fat:build): Build a normal Docker container from the Dockerfile",
"type": "shell",
"command": "bash start.sh && task docker:build:fat:build"
},
{
"label": "(docker:build:slim): Build a slim version of the Docker image",
"type": "shell",
"command": "bash start.sh && task docker:build:slim"
},
{
"label": "(docker:publish): Publish the Docker images (using `Docker*.test.yml` files)",
"type": "shell",
"command": "bash start.sh && task docker:publish"
},
{
"label": "(docker:shell): Open the terminal of an existing Docker image",
"type": "shell",
"command": "bash start.sh && task docker:shell"
},
{
"label": "(docker:test): Perform all available tests on the Docker image",
"type": "shell",
"command": "bash start.sh && task docker:test"
},
{
"label": "(docker:test:container-structure-test): Runs ContainerStructureTest for Dockerfile build",
"type": "shell",
"command": "bash start.sh && task docker:test:container-structure-test"
},
{
"label": "(docker:test:output): For each folder matching `./test/output*`, ensure slim and latest output match with default command",
"type": "shell",
"command": "bash start.sh && task docker:test:output"
},
{
"label": "(fix:eslint): Fix ESLint errors automatically",
"type": "shell",
"command": "bash start.sh && task fix:eslint"
},
{
"label": "(fix:eslint:staged): Auto-fix only modified files with ESLint",
"type": "shell",
"command": "bash start.sh && task fix:eslint:staged"
},
{
"label": "(fix:go): Fix Go with all available Go fixers",
"type": "shell",
"command": "bash start.sh && task fix:go"
},
{
"label": "(fix:json): Format and sort JSON",
"type": "shell",
"command": "bash start.sh && task fix:json"
},
{
"label": "(fix:markdown): Auto-fixes markdown files",
"type": "shell",
"command": "bash start.sh && task fix:markdown"
},
{
"label": "(fix:packer): Automatically fix and format Packer templates",
"type": "shell",
"command": "bash start.sh && task fix:packer"
},
{
"label": "(fix:php): Fix PHP with all available PHP auto-fixers",
"type": "shell",
"command": "bash start.sh && task fix:php"
},
{
"label": "(fix:prettier): Automatically format most files using Prettier",
"type": "shell",
"command": "bash start.sh && task fix:prettier"
},
{
"label": "(fix:python): Automatically format Python files using Black",
"type": "shell",
"command": "bash start.sh && task fix:python"
},
{
"label": "(fix:shellcheck): Automatically apply fixes to `.sh` and `.sh.j2` files using Shellcheck",
"type": "shell",
"command": "bash start.sh && task fix:shellcheck"
},
{
"label": "(fix:spelling:markdown): Auto-fix spelling errors in markdown files using `misspell`",
"type": "shell",
"command": "bash start.sh && task fix:spelling:markdown"
},
{
"label": "(fix:toml): Format `.toml` files by alphabetizing and flattening",
"type": "shell",
"command": "bash start.sh && task fix:toml"
},
{
"label": "(fix:yaml): Auto-format and sort YML files",
"type": "shell",
"command": "bash start.sh && task fix:yaml"
},
{
"label": "(get:links): Log useful links such as the current project's git repository link",
"type": "shell",
"command": "bash start.sh && task get:links"
},
{
"label": "(git:filter): Remove large unnecessary and large files from the repository",
"type": "shell",
"command": "bash start.sh && task git:filter"
},
{
"label": "(git:remotes): Configure the the `origin`, `gitlab`, `github`, and `all` git remotes",
"type": "shell",
"command": "bash start.sh && task git:remotes"
},
{
"label": "(git:remove:submodules): Remove all submodules in the current directory and optionally filter by RegEx",
"type": "shell",
"command": "bash start.sh && task git:remove:submodules"
},
{
"label": "(go:test:convey): Run tests through the browser with GoConvey",
"type": "shell",
"command": "bash start.sh && task go:test:convey"
},
{
"label": "(group:exec): Execute group commands on any GitLab group (including repositories in sub-groups)",
"type": "shell",
"command": "bash start.sh && task group:exec"
},
{
"label": "(image:compress): Compress JPG/PNG images via TinyPNG",
"type": "shell",
"command": "bash start.sh && task image:compress"
},
{
"label": "(image:resize): Resize an image",
"type": "shell",
"command": "bash start.sh && task image:resize"
},
{
"label": "(install:ansible:role): Install an Ansible role by using Docker",
"type": "shell",
"command": "bash start.sh && task install:ansible:role"
},
{
"label": "(lint:ansible): Lint Ansible projects using Ansible Lint",
"type": "shell",
"command": "bash start.sh && task lint:ansible"
},
{
"label": "(lint:any): Generic linting of files for things like destroyed-symlinks, merge conflicts, etc.",
"type": "shell",
"command": "bash start.sh && task lint:any"
},
{
"label": "(lint:codeclimate): Run CodeClimate with all available linters",
"type": "shell",
"command": "bash start.sh && task lint:codeclimate"
},
{
"label": "(lint:docker): Lint Dockerfiles using Hadolint (requires Docker)",
"type": "shell",
"command": "bash start.sh && task lint:docker"
},
{
"label": "(lint:dockerfilelint): Lint a Dockerfile with `dockerfilelint`",
"type": "shell",
"command": "bash start.sh && task lint:dockerfilelint"
},
{
"label": "(lint:eslint): Lint with ESLint",
"type": "shell",
"command": "bash start.sh && task lint:eslint"
},
{
"label": "(lint:eslint:staged): Lint only modified files with ESLint",
"type": "shell",
"command": "bash start.sh && task lint:eslint:staged"
},
{
"label": "(lint:eslint:warn-all): Convert ESLint errors into warnings by saving the modified configuration inside `package.json`",
"type": "shell",
"command": "bash start.sh && task lint:eslint:warn-all"
},
{
"label": "(lint:go): Lint Go with `golangci-lint`",
"type": "shell",
"command": "bash start.sh && task lint:go"
},
{
"label": "(lint:markdown:markdown): Lint markdown files with `remark`",
"type": "shell",
"command": "bash start.sh && task lint:markdown:markdown"
},
{
"label": "(lint:markdown:markdown:links): Scan markdown files for broken links",
"type": "shell",
"command": "bash start.sh && task lint:markdown:markdown:links"
},
{
"label": "(lint:packer): Validate the Packer templates ending with `template.json`",
"type": "shell",
"command": "bash start.sh && task lint:packer"
},
{
"label": "(lint:php): Lint PHP with all available PHP linters",
"type": "shell",
"command": "bash start.sh && task lint:php"
},
{
"label": "(lint:prettier): Lint formatting using Prettier",
"type": "shell",
"command": "bash start.sh && task lint:prettier"
},
{
"label": "(lint:prose:prose): Lint text/markdown for English prose with `proselint`",
"type": "shell",
"command": "bash start.sh && task lint:prose:prose"
},
{
"label": "(lint:python): Lint Python files using Flake8",
"type": "shell",
"command": "bash start.sh && task lint:python"
},
{
"label": "(lint:shellcheck): Report possible errors in shell scripts",
"type": "shell",
"command": "bash start.sh && task lint:shellcheck"
},
{
"label": "(lint:spelling): Checks for spelling errors in staged files",
"type": "shell",
"command": "bash start.sh && task lint:spelling"
},
{
"label": "(lint:spelling:markdown): Run `misspell` (a spell-checker) on all markdown files",
"type": "shell",
"command": "bash start.sh && task lint:spelling:markdown"
},
{
"label": "(lint:vagrant): Validate the Vagrantfile",
"type": "shell",
"command": "bash start.sh && task lint:vagrant"
},
{
"label": "(lint:yaml): Lint `.yml` files using YAML Lint",
"type": "shell",
"command": "bash start.sh && task lint:yaml"
},
{
"label": "(nest:benchmark): Initiate a web server benchmarking session (with `clinic`)",
"type": "shell",
"command": "bash start.sh && task nest:benchmark"
},
{
"label": "(new:project): Create a new project",
"type": "shell",
"command": "bash start.sh && task new:project"
},
{
"label": "(npm:build): Build the application",
"type": "shell",
"command": "bash start.sh && task npm:build"
},
{
"label": "(npm:clean): Remove temporary folders that might conflicts with builds",
"type": "shell",
"command": "bash start.sh && task npm:clean"
},
{
"label": "(npm:cov:open): View the code coverage report in the browser",
"type": "shell",
"command": "bash start.sh && task npm:cov:open"
},
{
"label": "(npm:cov:upload): Upload code coverage report to `codecov.io`",
"type": "shell",
"command": "bash start.sh && task npm:cov:upload"
},
{
"label": "(npm:depcheck:dependencies): Remove unused dependencies",
"type": "shell",
"command": "bash start.sh && task npm:depcheck:dependencies"
},
{
"label": "(npm:doc:html): Generate TypeDoc HTML documentation",
"type": "shell",
"command": "bash start.sh && task npm:doc:html"
},
{
"label": "(npm:doc:json): Generate TypeDoc JSON documentation",
"type": "shell",
"command": "bash start.sh && task npm:doc:json"
},
{
"label": "(npm:start): Run the application",
"type": "shell",
"command": "bash start.sh && task npm:start"
},
{
"label": "(npm:start:inspect): Run the application in `watch` mode and open DevTools",
"type": "shell",
"command": "bash start.sh && task npm:start:inspect"
},
{
"label": "(npm:start:prod): Run the application in `production` mode",
"type": "shell",
"command": "bash start.sh && task npm:start:prod"
},
{
"label": "(npm:start:prod:inspect): Run the application in `production` and `watch` mode and open DevTools",
"type": "shell",
"command": "bash start.sh && task npm:start:prod:inspect"
},
{
"label": "(npm:test): Run the unit tests for an NPM project",
"type": "shell",
"command": "bash start.sh && task npm:test"
},
{
"label": "(npm:test:coverage): Generate code coverage assets",
"type": "shell",
"command": "bash start.sh && task npm:test:coverage"
},
{
"label": "(npm:test:dashboard): Run and manage test cases from a web interface (powered by `majestic`)",
"type": "shell",
"command": "bash start.sh && task npm:test:dashboard"
},
{
"label": "(npm:test:debug): Debug tests in `watch` mode",
"type": "shell",
"command": "bash start.sh && task npm:test:debug"
},
{
"label": "(npm:test:inspect): Debug tests with DevTools in `watch` mode",
"type": "shell",
"command": "bash start.sh && task npm:test:inspect"
},
{
"label": "(npm:typesync): Install missing type definitions",
"type": "shell",
"command": "bash start.sh && task npm:typesync"
},
{
"label": "(packer:build): Build Packer images for all available platforms",
"type": "shell",
"command": "bash start.sh && task packer:build"
},
{
"label": "(packer:build:kvm): Build a Packer image for KVM",
"type": "shell",
"command": "bash start.sh && task packer:build:kvm"
},
{
"label": "(packer:build:parallels): Build a Packer image for Parallels",
"type": "shell",
"command": "bash start.sh && task packer:build:parallels"
},
{
"label": "(packer:build:virtualbox): Build a Packer image for VirtualBox",
"type": "shell",
"command": "bash start.sh && task packer:build:virtualbox"
},
{
"label": "(packer:build:vmware): Build a Packer image for VMWare",
"type": "shell",
"command": "bash start.sh && task packer:build:vmware"
},
{
"label": "(packer:install:platforms): Install all available virtualization providers",
"type": "shell",
"command": "bash start.sh && task packer:install:platforms"
},
{
"label": "(publish:android:beta): Publishes Android app to Firebase beta channel",
"type": "shell",
"command": "bash start.sh && task publish:android:beta"
},
{
"label": "(publish:android:release): Publishes Android app to Google Play",
"type": "shell",
"command": "bash start.sh && task publish:android:release"
},
{
"label": "(publish:app:beta): Publish a beta release of all the release targets",
"type": "shell",
"command": "bash start.sh && task publish:app:beta"
},
{
"label": "(publish:app:release): Publish a production release of all the targets",
"type": "shell",
"command": "bash start.sh && task publish:app:release"
},
{
"label": "(publish:brew:cask): Publishes a Homebrew Cask",
"type": "shell",
"command": "bash start.sh && task publish:brew:cask"
},
{
"label": "(publish:brew:formula): Publishes a Homebrew Formulae",
"type": "shell",
"command": "bash start.sh && task publish:brew:formula"
},
{
"label": "(publish:chrome:release): Publishes Chrome extension",
"type": "shell",
"command": "bash start.sh && task publish:chrome:release"
},
{
"label": "(publish:force): Force a `semantic-release` even if there are no new eligible commits",
"type": "shell",
"command": "bash start.sh && task publish:force"
},
{
"label": "(publish:ios:beta): Publishes iOS app to Firebase beta channel",
"type": "shell",
"command": "bash start.sh && task publish:ios:beta"
},
{
"label": "(publish:ios:release): Publishes iOS app to iTunes",
"type": "shell",
"command": "bash start.sh && task publish:ios:release"
},
{
"label": "(publish:opera:release): Publishes Opera extension",
"type": "shell",
"command": "bash start.sh && task publish:opera:release"
},
{
"label": "(pull:upstream): Pull from upstream repositories",
"type": "shell",
"command": "bash start.sh && task pull:upstream"
},
{
"label": "(python:build): Build the project",
"type": "shell",
"command": "bash start.sh && task python:build"
},
{
"label": "(python:build:binary): Build standalone binary",
"type": "shell",
"command": "bash start.sh && task python:build:binary"
},
{
"label": "(python:publish): Publish the project to PyPi.org",
"type": "shell",
"command": "bash start.sh && task python:publish"
},
{
"label": "(python:requirementstxt): Generate the requirements.txt fallback file",
"type": "shell",
"command": "bash start.sh && task python:requirementstxt"
},
{
"label": "(python:run): Runs the project by calling `run.py`",
"type": "shell",
"command": "bash start.sh && task python:run"
},
{
"label": "(python:test): Runs tests with `pytest` after fixing and linting",
"type": "shell",
"command": "bash start.sh && task python:test"
},
{
"label": "(reset:force): Aggressively reset the project (**WARNING** This will wipe uncommitted work)",
"type": "shell",
"command": "bash start.sh && task reset:force"
},
{
"label": "(security:bandit): Check for Python code security issues",
"type": "shell",
"command": "bash start.sh && task security:bandit"
},
{
"label": "(security:dockle): Analyze and lint the Docker container using Dockle",
"type": "shell",
"command": "bash start.sh && task security:dockle"
},
{
"label": "(security:gitleaks): Scans repository (including git history) for possible leaked keys",
"type": "shell",
"command": "bash start.sh && task security:gitleaks"
},
{
"label": "(security:grype): Scan container images and file systems for security issues using Grype",
"type": "shell",
"command": "bash start.sh && task security:grype"
},
{
"label": "(security:private-keys): Scan for private keys",
"type": "shell",
"command": "bash start.sh && task security:private-keys"
},
{
"label": "(security:snyk): Analyze the Docker container for security vulnerabilities with Snyk (requires login)",
"type": "shell",
"command": "bash start.sh && task security:snyk"
},
{
"label": "(security:trivy): Analyze the Docker container for security vulnerabilities with Trivy",
"type": "shell",
"command": "bash start.sh && task security:trivy"
},
{
"label": "(security:yubikey:prepare): Prepares an environment by provisioning all the required software / preliminary steps",
"type": "shell",
"command": "bash start.sh && task security:yubikey:prepare"
},
{
"label": "(symlink:playbook): Symlink all the roles in the roles/ folder to ~/.ansible/roles",
"type": "shell",
"command": "bash start.sh && task symlink:playbook"
},
{
"label": "(symlink:role): Symlink the current role to ~/.ansible/roles/.",
"type": "shell",
"command": "bash start.sh && task symlink:role"
},
{
"label": "(tag:deps): Inject a new command in the `Taskfile.yml` that includes all tasks matching a given tag as deps",
"type": "shell",
"command": "bash start.sh && task tag:deps"
},
{
"label": "(vagrant:up): Select which virtualization platform to run the image on using an interactive prompt",
"type": "shell",
"command": "bash start.sh && task vagrant:up"
}
]
}

24
LICENSE Normal file
View file

@ -0,0 +1,24 @@
MIT License
Copyright (c) 2020-2021 Brian Zalewski, Megabyte LLC (https://megabyte.space)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
GitHub: https://github.com/megabyte-labs/hiawatha-dotfiles
GitLab: https://gitlab.com/megabyte-labs/hiawatha-dotfiles

114
README.md
View file

@ -1 +1,115 @@
<!-- ⚠️ This README has been generated from the file(s) ".config/docs/blueprint-readme-misc.md" ⚠️--><div align="center">
<center>
<a href="https://github.com/megabyte-labs/hiawatha-dotfiles">
<img width="148" height="148" alt="Hiawatha Dotfiles logo" src="https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/raw/master/logo.png" />
</a>
</center>
</div>
<div align="center">
<center><h1 align="center"><i></i>Hiawatha Dotfiles - The Spirit of GitHub<i></i></h1></center>
<center><h4 style="color: #18c3d1;">Maintained by <a href="https://megabyte.space" target="_blank">Megabyte Labs</a></h4><i></i></center>
</div>
<div align="center">
<a href="https://megabyte.space" title="Megabyte Labs homepage" target="_blank">
<img alt="Homepage" src="https://img.shields.io/website?down_color=%23FF4136&down_message=Down&label=Homepage&logo=home-assistant&logoColor=white&up_color=%232ECC40&up_message=Up&url=https%3A%2F%2Fmegabyte.space&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/hiawatha-dotfiles/blob/master/docs/CONTRIBUTING.md" title="Learn about contributing" target="_blank">
<img alt="Contributing" src="https://img.shields.io/badge/Contributing-Guide-0074D9?logo=github-sponsors&logoColor=white&style=for-the-badge" />
</a>
<a href="https://app.slack.com/client/T01ABCG4NK1/C01NN74H0LW/details/" title="Chat with us on Slack" target="_blank">
<img alt="Slack" src="https://img.shields.io/badge/Slack-Chat-e01e5a?logo=slack&logoColor=white&style=for-the-badge" />
</a>
<a href="https://gitter.im/megabyte-labs/community" title="Chat with the community on Gitter" target="_blank">
<img alt="Gitter" src="https://img.shields.io/gitter/room/megabyte-labs/community?logo=gitter&logoColor=white&style=for-the-badge" />
</a>
<a href="https://github.com/megabyte-labs/hiawatha-dotfiles" title="GitHub mirror" target="_blank">
<img alt="GitHub" src="https://img.shields.io/badge/Mirror-GitHub-333333?logo=github&style=for-the-badge" />
</a>
<a href="https://gitlab.com/megabyte-labs/hiawatha-dotfiles" title="GitLab repository" target="_blank">
<img alt="GitLab" src="https://img.shields.io/badge/Repo-GitLab-fc6d26?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAD///+l2Z/dAAAAAXRSTlMAQObYZgAAAHJJREFUCNdNxKENwzAQQNEfWU1ZPUF1cxR5lYxQqQMkLEsUdIxCM7PMkMgLGB6wopxkYvAeI0xdHkqXgCLL0Beiqy2CmUIdeYs+WioqVF9C6/RlZvblRNZD8etRuKe843KKkBPw2azX13r+rdvPctEaFi4NVzAN2FhJMQAAAABJRU5ErkJggg==&style=for-the-badge" />
</a>
</div>
> </br><h4 align="center">**A glorious combination of application settings, theme files, and a performant cross-platform, desktop-oriented software installer.**</h4></br>
<a href="#table-of-contents" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Table of Contents
* [Overview](#overview)
- [}Hiawatha](#hiawatha)
- [Contributing](#contributing)
- [Affiliates](#affiliates)
- [License](#license)
<a href="#overview" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Overview
Hiawatha Dotfiles is a glorious combination of application settings, theme files, and a performant yet flexible software installer written with [ZX](https://github.com/google/zx). The installer supports almost any operating system, just checkout the [software.yml file](https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/blob/master/software.yml). It uses [Chezmoi](https://github.com/twpayne/chezmoi) to apply file changes in an interactive way. It is not your typical Chezmoi project - it is built around the philosophy that you should be able to bash all your computers to bits with a hammer and then resurrect them the next day ✝️️ by storing stateful data to an S3 bucket and automating desktop configuration as much as possible.
<a href="#hiawatha" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
# }Hiawatha
This is a decked out dotfiles repository that leverages a handful of technologies including Chezmoi, Ansible, and ZX to provision computers. It is built to support Archlinux, Fedora, CentOS, Debian, Ubuntu, macOS, and Windows but you may see code that suggests other OSes will be supported as well. It includes themeing (most of the credit going to [Sweet](https://github.com/EliverLara/Sweet)) for KDE / GNOME / apps.
To use these dotfiles and provision your computer with prompts (which can be made headless with environment variables):
```
bash <(curl -sSL https://install.doctor/start)
```
All the source files are located in ~/.local/share/chezmoi/home for the dotfiles and ~/.local/share/chezmoi/system for the system files. The roles / playbooks from [Gas Station](https://gitlab.com/megabyte-labs/gas-station) are occasionally used to fill in gaps. The software installation (which happens when you run Chezmoi or the link above) determines which package manager to use to install the software using [this software map](https://gitlab.com/megabyte-labs/misc/dotfiles/-/blob/master/.local/share/chezmoi/software.yml).
Many of the dotfiles (and system files) are templated. Those ones you will have to look at ~/.local/share/chezmoi to take a peek at. The static files are at the root of this repository for easy viewing.
<a href="#contributing" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the [issues page](https://github.com/megabyte-labs/hiawatha-dotfiles/issues). If you would like to contribute, please take a look at the [contributing guide](https://github.com/megabyte-labs/hiawatha-dotfiles/blob/master/docs/CONTRIBUTING.md).
<details>
<summary><b>Sponsorship</b></summary>
<br/>
<blockquote>
<br/>
Dear Awesome Person,<br/><br/>
I create open source projects out of love. Although I have a job, shelter, and as much fast food as I can handle, it would still be pretty cool to be appreciated by the community for something I have spent a lot of time and money on. Please consider sponsoring me! Who knows? Maybe I will be able to quit my job and publish open source full time.
<br/><br/>Sincerely,<br/><br/>
**_Brian Zalewski_**<br/><br/>
</blockquote>
<a title="Support us on Open Collective" href="https://opencollective.com/megabytelabs" target="_blank">
<img alt="Open Collective sponsors" src="https://img.shields.io/opencollective/sponsors/megabytelabs?logo=opencollective&label=OpenCollective&logoColor=white&style=for-the-badge" />
</a>
<a title="Support us on GitHub" href="https://github.com/ProfessorManhattan" target="_blank">
<img alt="GitHub sponsors" src="https://img.shields.io/github/sponsors/ProfessorManhattan?label=GitHub%20sponsors&logo=github&style=for-the-badge" />
</a>
<a href="https://www.patreon.com/ProfessorManhattan" title="Support us on Patreon" target="_blank">
<img alt="Patreon" src="https://img.shields.io/badge/Patreon-Support-052d49?logo=patreon&logoColor=white&style=for-the-badge" />
</a>
### Affiliates
Below you will find a list of services we leverage that offer special incentives for signing up for their services through our special links:
<a href="http://eepurl.com/h3aEdX" title="Sign up for $30 in MailChimp credits" target="_blank">
<img alt="MailChimp" src="https://cdn-images.mailchimp.com/monkey_rewards/grow-business-banner-2.png" />
</a>
<a href="https://www.digitalocean.com/?refcode=751743d45e36&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge">
<img src="https://web-platforms.sfo2.digitaloceanspaces.com/WWW/Badge%203.svg" alt="DigitalOcean Referral Badge" />
</a>
</details>
<a href="#license" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## License
Copyright © 2020-2021 [Megabyte LLC](https://megabyte.space). This project is [MIT](https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/blob/master/LICENSE) licensed.

View file

@ -1,5 +1,6 @@
---
version: '3'
includes:
ansible:
taskfile: ./.config/taskfiles/ansible/Taskfile.yml
@ -40,6 +41,12 @@ includes:
cloud:
taskfile: ./.config/taskfiles/cloud/Taskfile.yml
optional: true
cloud:cloudflare:
taskfile: ./.config/taskfiles/cloud/Taskfile-cloudflare.yml
optional: true
cloud:dyno:
taskfile: ./.config/taskfiles/cloud/Taskfile-dyno.yml
optional: true
cloud:heroku:
taskfile: ./.config/taskfiles/cloud/Taskfile-heroku.yml
optional: true
@ -175,6 +182,10 @@ includes:
lint:prose:
taskfile: ./.config/taskfiles/lint/Taskfile-prose.yml
optional: true
localhost:
taskfile: ./../../Taskfile-localhost.yml
optional: true
log:
optional: true
taskfile: ./.config/taskfiles/log/Taskfile.yml
@ -304,13 +315,8 @@ includes:
web:profile:
taskfile: ./.config/taskfiles/web/Taskfile-profile.yml
optional: true
cloud:cloudflare:
taskfile: ./.config/taskfiles/cloud/Taskfile-cloudflare.yml
optional: true
cloud:dyno:
taskfile: ./.config/taskfiles/cloud/Taskfile-dyno.yml
optional: true
output: interleaved
vars:
DOCKERHUB_PROFILE:
sh: |
@ -363,7 +369,11 @@ vars:
GROUP_EXEC_ASYNC: 'false'
# yamllint disable rule:line-length
IGNORE_FOLDERS: >-
-path './.autodoc/*' -o -path './.cache/*' -o -path './.common*' -o -path './.config/*' -o -path './.git/*' -o -path './.modules/*' -o -path './.npm/*' -o -path './.pnpm-store/*' -o -path './.shared/*' -o -path './.task/*' -o -path './.venv/*' -o -path './.vscode/*' -o -path './build/*' -o -path './dist/*' -o -path './node_modules/*' -o -path './roles/*' -o -name pnpm-lock.yaml -o -name package-lock.json -o -name poetry.lock -o -name '.variables.json' -o -name '.git'
-path './.autodoc/*' -o -path './.cache/*' -o -path './.common*' -o -path './.config/*' -o -path './.git/*' -o
-path './.modules/*' -o -path './.npm/*' -o
-path './.pnpm-store/*' -o -path './.shared/*' -o -path './.task/*' -o -path './.venv/*' -o -path './.vscode/*' -o
-path './build/*' -o -path './dist/*' -o -path './node_modules/*' -o -path './roles/*' -o -name pnpm-lock.yaml -o
-name package-lock.json -o -name poetry.lock -o -name '.variables.json' -o -name '.git'
INIT_SCRIPT: https://gitlab.com/megabyte-labs/gitlab-ci/-/raw/master/scripts/update-init.sh
LOG_FIX:
sh: chmod +x .config/log
@ -395,13 +405,34 @@ vars:
fi
PYTHON_VIRTUALENV: true
REPOSITORY_SUBTYPE:
sh: if type jq &> /dev/null && [ -f package.json ]; then VER="$(jq -r .blueprint.subgroup package.json)"; if [ "$VER" == null ]; then echo "$REPOSITORY_TYPE"; else echo "$VER"; fi; else echo "$REPOSITORY_TYPE"; fi
sh: |
if [ -n "$REPOSITORY_TYPE" ]; then REPO_SUBTYPE="$REPOSITORY_TYPE"; fi
if type jq &> /dev/null && [ -f package.json ]; then
VER="$(jq -r '.blueprint.subgroup' package.json)"
if [ "$VER" == 'null' ]; then
if [ -n "$REPO_SUBTYPE" ]; then echo "$REPO_SUBTYPE"; else echo "misc"; fi
else
echo "$VER"
fi
else
if [ -n "$REPO_SUBTYPE" ]; then echo "$REPO_SUBTYPE"; else echo "misc"; fi
fi
REPOSITORY_TYPE:
sh: if type jq &> /dev/null && [ -f package.json ]; then VER="$(jq -r .blueprint.group package.json)"; if [ "$VER" == null ]; then echo "$GROUP_TYPE"; else echo "$VER"; fi; else echo "$GROUP_TYPE"; fi
sh: |
if [ -n "$GROUP_TYPE" ]; then REPO_TYPE="$GROUP_TYPE"; fi
if type jq &> /dev/null && [ -f package.json ]; then
VER="$(jq -r '.blueprint.group' package.json)"
if [ "$VER" == 'null' ]; then
if [ -n "$REPO_TYPE" ]; then echo "$REPO_TYPE"; else echo "misc"; fi
else
echo "$VER"
fi
else
if [ -n "$REPO_TYPE" ]; then echo "$REPO_TYPE"; else echo "misc"; fi
fi
SEMANTIC_CONFIG: semantic-release-config
TIMEZONE: America/New_York
includes:
common:start: ./.config/taskfiles/common/Taskfile-start.yml
env:
GOPATH:
sh: |
@ -434,6 +465,7 @@ env:
fi
VOLTA_HOME:
sh: echo "$HOME/.volta"
profile: |
if [[ "$OSTYPE" == 'linux-gnu'* ]] || [[ "$OSTYPE" == 'linux-musl'* ]]; then
if [ -f /home/linuxbrew/.linuxbrew/bin/brew ] && ! type brew > /dev/null; then
@ -452,6 +484,7 @@ profile: |
if [ -f .venv/bin/activate ]; then
. .venv/bin/activate
fi
tasks:
build:
deps:
@ -480,6 +513,7 @@ tasks:
else
[[ $- == *i* ]] && task prepare || (.config/log error '{{.NONINTERACTIVE_MISSING_BUILD_CMD}}' && exit 1)
fi
clean:
desc: Removes optional folders that are cached during various tasks
summary: |
@ -490,11 +524,13 @@ tasks:
which will re-generate the project from scratch. Ideally, this task and the reset task
should never be necessary. The `start` task should be used instead.
vars:
CLEAN_TARGETS: .autodoc .cache .task .venv node_modules tsconfig.tsbuildinfo venv .variables.json
CLEAN_TARGETS: .autodoc .cache .task .venv node_modules tsconfig.tsbuildinfo venv
.variables.json
cmds:
- task: common:clean
vars:
CLEAN_TARGETS: '{{.CLEAN_TARGETS}}'
commit:
desc: Lint staged files, report spelling errors, and open a _required_ commit dialoge
summary: |
@ -511,6 +547,7 @@ tasks:
to your regular `git commit -m` command to bypass the pre-commit hook.
cmds:
- task: common:commit
commit:all:
deps:
- install:software:git
@ -548,6 +585,7 @@ tasks:
git add --all
git commit
{{end}}
commit:quick:
deps:
- ci:commit:config
@ -555,13 +593,16 @@ tasks:
- |
task --list > /dev/null || (echo "ERROR: Invalid Taskfiles!" && exit 1)
git add --all
- "HUSKY=0 git commit -m '\U0001F527 chore(tweak)": quick minor update' --no-verify
- HUSKY=0 git commit -m '🔧 chore(tweak): quick minor update' --no-verify
- git push origin master
devcontainer:
deps:
- install:npm:devcontainer
- install:software:docker
donothing: 'true'
fix:
desc: Run code auto-fixers / auto-formatters
summary: |
@ -572,6 +613,7 @@ tasks:
an error so the auto-fixes still have to be validated.
cmds:
- task: fix:all
fresh:
summary: Initialize a new project with only the Taskfile.yml present
cmds:
@ -583,6 +625,7 @@ tasks:
- TMP="$(mktemp)" && jq -r 'del(.blueprint)' package.json > "$TMP" && mv "$TMP" package.json
- bash start.sh
- task: prepare
get:links:
deps:
- install:software:jq
@ -595,6 +638,7 @@ tasks:
cmds:
- .config/log info 'GitHub -----> `{{.GITHUB_URL}}`'
- .config/log info 'GitLab -----> `{{.GITLAB_URL}}`'
group:exec:
desc: Execute group commands on any GitLab group (including repositories in sub-groups)
summary: |
@ -615,6 +659,7 @@ tasks:
Be sure to wrap the command in quotes or you might observe some odd behavior.
cmds:
- task: git:gitlab:group:exec
init:
deps:
- install:software:jq
@ -647,10 +692,12 @@ tasks:
- git init
- task: repair
- task: prepare
jumpusb:
desc: Creates a JumpUSB (https://jumpusb.com)
cmds:
- task: install:ventoy
lint:
desc: Lints the project using all linters
summary: |
@ -664,6 +711,7 @@ tasks:
`task lint`
cmds:
- task: lint:all
livereload:
deps:
- install:npm:nodemon
@ -703,10 +751,12 @@ tasks:
.config/log error '`Taskfile-project.yml` must exist and have a `livereload` task to use with `nodemon`' && exit 1
fi
- nodemon --config {{if .CLI_ARGS}}{{.CLI_ARGS}}{{else}}.config/nodemon.json{{end}}
new:project:
desc: Create a new project
cmds:
- task: prepare
preload:
desc: Set up your workstation in advance by installing commonly used programs
summary: |
@ -749,6 +799,7 @@ tasks:
- task: install:pipx:bundle
- task: install:python:requirements
- task: install:modules:local
prepare:
desc: Prepares the project for the normal start command
summary: |
@ -765,6 +816,7 @@ tasks:
cmds:
- task: boilerplate:check:package
- task: boilerplate:clean
publish:
desc: Publish a semantic release via `semantic-release`
summary: |
@ -812,6 +864,7 @@ tasks:
success: Successfully ran `semantic-release` via `task publish`
cmds:
- task: publish:semantic-release
publish:force:
desc: Force a `semantic-release` even if there are no new eligible commits
summary: |
@ -837,8 +890,10 @@ tasks:
start: Publishing `semantic-release` update via `task publish:force`
success: Successfully published update via `task publish:force`
cmds:
- "HUSKY=0 git commit -a --allow-empty -m '\U0001F528 chore(bump): Forced semantic-release {{.UPDATE_LEVEL}}' -n\n"
- |
HUSKY=0 git commit -a --allow-empty -m '🔨 chore(bump): Forced semantic-release {{.UPDATE_LEVEL}}' -n
- task: publish
pull:upstream:
desc: Pull from upstream repositories
summary: |
@ -855,6 +910,7 @@ tasks:
success: Successfully pulled from `upstreamRemotes`
cmds:
- task: common:update:upstream:remotes:pull
repair:
cmds:
- task: common:repair
@ -865,6 +921,7 @@ tasks:
else
curl -sSL {{.INIT_SCRIPT}} > "$TMP" && bash "$TMP" && rm "$TMP"
fi
reset:
desc: Resets the project by removing all caches and then re-generating templated files
summary: |
@ -876,6 +933,7 @@ tasks:
updates, it re-generates any templated files.
cmds:
- task: common:reset
reset:force:
desc: 'Aggressively reset the project (**WARNING** This will wipe uncommitted work)'
summary: |
@ -894,6 +952,7 @@ tasks:
answer:
cmds:
- task: common:reset:force
scripts:
interactive: true
deps:
@ -911,6 +970,7 @@ tasks:
start: Running `NTL_RUNNER={{.NPM_PROGRAM}} ntl`
cmds:
- NTL_RUNNER={{.NPM_PROGRAM}} ntl
services:
desc: Update elements of the repository that require API access
summary: |
@ -923,6 +983,7 @@ tasks:
- task: common:update:services
status:
- '[ -n "$GITLAB_CI" ] && [ "$REPOSITORY_UPDATE" != "true" ]'
shell:
desc: Start a terminal session using Docker with any Linux operating system
compile: |
@ -956,11 +1017,13 @@ tasks:
* ubuntu-21.04
cmds:
- task: common:shell
ssh-keys:
deps:
- cloud:heroku:ssh-keys
- git:github:ssh-keys
- git:gitlab:ssh-keys
start:
desc: Start the project by installing / updating dependencies, repairing issues, and opening a tutorial
summary: |
@ -983,7 +1046,8 @@ tasks:
start: Starting the project..
success: Project started!
cmds:
- task: upstream:project
- task: common:start
synchronize:
desc: Set up the project and refresh it with the latest changes
summary: |
@ -1004,6 +1068,7 @@ tasks:
success: Successfully synchronized the project with upstream file changes and also bootstrapped the project
cmds:
- task: upstream:{{.PROJECT_TYPE}}
tag:deps:
desc: Inject a new command in the `Taskfile.yml` that includes all tasks matching a given tag as deps
summary: |
@ -1032,6 +1097,7 @@ tasks:
```
cmds:
- task: common:util:task:tag:deps
template:
deps:
- install:npm:liquidjs
@ -1053,6 +1119,7 @@ tasks:
preconditions:
- sh: test -f .variables.json
msg: This task requires that you have already spun up the project by running `task start`
test:
deps:
- install:software:jq
@ -1073,6 +1140,7 @@ tasks:
else
[[ $- == *i* ]] && task prepare || (.config/log error '{{.NONINTERACTIVE_MISSING_TEST_CMD}}' && exit 1)
fi
update:
desc: Fully update the repository
summary: |
@ -1099,7 +1167,9 @@ tasks:
cmds:
- task: common:start
env:
UPDATE_PROJECT: "true"
UPDATE_PROJECT: 'true'
- task: common:update:finish
yubikey:
desc: Create an OpenGPG-enabled YubiKey
summary: |

272
docs/CONTRIBUTING.md Normal file
View file

@ -0,0 +1,272 @@
<!-- ⚠️ This README has been generated from the file(s) ".config/docs/blueprint-contributing.md" ⚠️--><div align="center">
<center><h1 align="center">Contributing Guide</h1></center>
</div>
First of all, thanks for visiting this page 😊 ❤️ ! We are _stoked_ that you may be considering contributing to this project. You should read this guide if you are considering creating a pull request or plan to modify the code for your own purposes.
<a href="#table-of-contents" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Overview](#overview)
- [List Build Tool Commands](#list-build-tool-commands)
- [Dotfiles](#dotfiles)
- [Architecture](#architecture)
- [Preferred Libraries](#preferred-libraries)
- [Logger](#logger)
- [CLI / Help Menu](#cli--help-menu)
- [Interactive CLI Prompts](#interactive-cli-prompts)
- [Data Model Validation](#data-model-validation)
- [Update Notifier](#update-notifier)
- [Environment Variables](#environment-variables)
- [ESLint](#eslint)
- [Disabling ESLint Features](#disabling-eslint-features)
- [Testing](#testing)
- [Using `npm link`](#using-npm-link)
- [Pull Requests](#pull-requests)
- [How to Commit Code](#how-to-commit-code)
- [Pre-Commit Hook](#pre-commit-hook)
- [Style Guides](#style-guides)
- [Recommended Style Guides](#recommended-style-guides)
- [Strict Linting](#strict-linting)
- [Contributors](#contributors)
<a href="#code-of-conduct" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Code of Conduct
This project and everyone participating in it is governed by the [Code of Conduct](https://github.com/megabyte-labs/hiawatha-dotfiles/blob/master/docs/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [help@megabyte.space](mailto:help@megabyte.space).
<a href="#overview" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Overview
This repository uses a customized starting template that is inspired by the [TypeScript Starter](https://github.com/bitjson/typescript-starter) project on GitHub. It includes many different build tools and files meant to improve team efficiency. All of the code and assets are stored in the `src/` folder. All of our NPM packages should follow the same format and use the same design patterns so it is important to check out a few of [our NPM repositories](https://gitlab.com/megabyte-labs/npm) before diving into the code. Our [Buildr](repository.project.buildr) project is a great example of what we are looking for.
After you clone this repository, you can get started by running `npm i` (with [Node.js >9](repository.project.node) installed). This will install the dependencies as well as perform a few maintenance tasks such as synchronizing the common development-related dotfiles and re-generating the documentation.
### List Build Tool Commands
After you run `npm i`, you can view the available pre-defined build tool commands by running `npm run info`. A chart will be displayed in your terminal that looks something like this:
```
npm run info
> @mblabs/hiawatha-dotfiles@1.0.4 info
> npm-scripts-info
build:
Clean and rebuild the project
commit:
Automatically fix errors and guides you through the commit process
cov:
Rebuild, run tests, then create and open the coverage report
doc:json:
Generate API documentation in typedoc JSON format
doc:
Generate HTML API documentation and open it in a browser
fix:
Try to automatically fix any linting problems
info:
Display information about the package scripts
prepare-release:
One-step: clean, build, test, publish docs, and prep a release
reset:
Delete all untracked files and reset the repo to the last commit
test:
Lint and unit test the project
version:
Bump package.json version, update CHANGELOG.md, tag release
watch:
Watch and rebuild the project on save, then rerun relevant tests
```
You should then realize that you can build the project by running `npm run build` or test the project by running `npm run test`.
### Dotfiles
As you may have noticed, this project contains many files in the root directory. Many of these files are dotfiles. These files are intended to help our team of developers create code that is consistent and also compliant with industry best practices. Most of the dotfiles (and dot-folders) are synchronized across all of [our NPM packages](https://gitlab.com/megabyte-labs/npm). This means that any changes you make to the dotfiles will eventually be over-written. If you need to make a change to any of the dotfiles, you will have to open a pull request against our [common NPM files repository](https://gitlab.com/megabyte-labs/common/npm). Bear in mind that any changes you make to the common NPM files will be propagated to all of our NPM repositories.
<a href="#architecture" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Architecture
For the most part, when working on one of our NPM packages, all of the code should be placed in the `src/` folder. Usually, at the minimum, the `src/` folder will contain:
- **`app.ts`** - This is the main starting file for the project. This is the file that should house the main logic and any bootstrapping that needs to be done.
- **`cli.ts`** - Entry point for CLI commands. If the project supports CLI commands, then you should handle the logic for the CLI and help menu in this file.
- **`index.ts`** - Entry point to the package for other packages that are including it as a dependency. This is where you would export methods that you want to expose publicly.
We adhere to strict design-patterns across all of our NPM packages. In order for you to get a feel for what we are looking for, you should browse through our [`Buildr`](repository.project.buildr) project's files. After browsing through the Buildr project's source code, you will notice that we include other files/folders in the `src/` folder:
- `constants/` - This folder houses all the constant variables used in the project. The constants are generally seperated out into different files based on where they are being used in the application.
- `lib/` - This folder contains all the pieces of the app that would generally be utilized by the `app.ts` file.
- `models/` - This folder contains all of the data models that are used. Data models are important to use especially in larger projects because they provide type definitions and also open the door to data validation which is touched on in the [Preferred Libraries](#preferred-libraries) section.
- `tsconfig.json` - This file is included to address a Visual Studio Code bug that occurs if you open the `src/` directory and not the root folder
When building a new project, try to follow the same design patterns that are used by the [`Buildr`](repository.project.buildr) project. In most cases, all of the aforementioned files and folders should be part of the project.
<a href="#preferred-libraries" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Preferred Libraries
A lot of research has gone into determining what the best tool is for each common task that gets performed. These tasks can range from generating a CLI help menu to validating user inputs. You can browse through the dependencies in the `package.json` file of our [NPM package starting template](https://gitlab.com/megabyte-labs/templates/npm) to get a better idea of what we prefer.
### Logger
If you browsed through the `package.json` file mentioned above, you will see that we are including `pino` and `pino-pretty` as dependencies. Both should be used to handle all logging. There should be no `console.log` commands in the project. Instead, all of the logging should be handled by a Logger class. You can see an [example provided by the Buildr project here](https://gitlab.com/megabyte-labs/npm/buildr/-/blob/master/src/lib/log.ts). When creating a Logger class, feel free to copy and paste from the linked Buildr Logger class file.
### CLI / Help Menu
[Commander.js](https://www.npmjs.com/package/commander) is the leading solution for handling CLI commands and generating terminal help menus. The library is included in the aforementioned starting template and should be used in any project that includes CLI command capabilities or CLI help menus. Using this library is not a hard requirement but any deviations from it should be approved by the project's maintainer.
### Interactive CLI Prompts
[Inquirer.js](https://www.npmjs.com/package/inquirer) is our preferred library for providing enhanced CLI prompts. You might choose to use this library if part of the app includes prompting the user for different values. Browsing through the capabilities of Inquirer.js using the link provided is highly encouraged. If you are not utilizing this dependency then it should be removed from the `package.json`. The same goes for any package that is unused - if it is not being used then throw it out!
### Data Model Validation
One feature we like to include in all of our projects that rely on any input parameters is data validation. For instance, if one of the parameters that is passed in is supposed to be a FQDN and the user passes in a string that does not match the RegEx of a FQDN, then the user should be notified with a simple, well-formatted error message (which is generated by `pino`). We accomplish this by leveraging the [`class-validator`](https://www.npmjs.com/package/class-validator) library. There are tons of examples provided on their page and we highly encourage you to get comfortable using the library by checking out the link.
In order to utilize `class-validator`, you have to assign all input data to a model. The model is then set up to use `class-validator` decorators on each attribute. With the data model populated, you can use the `class-validator` library to validate the input. Take the following as an example:
```
import { validate, IsInt, IsFQDN, Min, Max } from 'class-validator';
export class Post {
@IsInt() // This is a decorator
@Min(0)
@Max(10)
rating: number;
@IsFQDN()
site: string;
}
let post = new Post();
post.rating = 11; // Should not pass validation
post.site = 'googlecom'; // Should not pass validation
validate(post).then(errors => {
// errors is an array of validation errors
if (errors.length > 0) {
console.log('validation failed. errors: ', errors);
} else {
console.log('validation succeed');
}
});
```
Using the library above can provide real value to our users. By validating the data before running any business logic, we can save the user time by taking out the guess work required for debugging. Please note that in practice, the `Post` model/class would be seperated into a file stored in `src/models/post.model.ts`.
**All data inputs should utilize this form of validation.** If the `class-validator` project does not provide a decorator that can properly validate the input data then you can extend the library by creating a custom validation decorator. There is an [example of how to create a custom validator in the Buildr project](https://gitlab.com/megabyte-labs/npm/buildr/-/blob/master/src/lib/validators/is-true.validator.ts).
### Update Notifier
As a feature meant to make our packages stand out from the crowd, we prefer that you incorporate [`update-notifier`](https://www.npmjs.com/package/update-notifier) in the project to notify users of any updates to the NPM package.
### Environment Variables
In some cases, a package might rely on sensitive data that should not be included in git repositories. In this case, you may choose to utilize environment variables. If that is the case, then please include support for [dotenv](https://www.npmjs.com/package/dotenv) which allows users to load environment variables by defining a `.env` file. The users can then add `.env` to their `.gitignore` file to keep the `.env` file out of their project's repository.
<a href="#eslint" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## ESLint
In the root of this project, you will see a file titled `.eslintrc`. This file controls how [ESLint](https://eslint.org/) works. As mentioned in the [Overview](#overview), our `.eslintrc` file is shared across all of [our NPM packages](https://gitlab.com/megabyte-labs/npm). If you make changes to the `.eslintrc` file then they will be overwritten. Instead, if you absolutely need to change the `.eslintrc` file's definitions, then you should open up a pull request against the repository that houses all of the [common NPM package files](https://gitlab.com/megabyte-labs/common/npm).
### Disabling ESLint Features
Instead of changing the `.eslintrc` file, we prefer that you instruct ESLint to disable checks for a specific rule on a specific line. For example, if you want to disable the `no-console` rule for one line of code, then you could accomplish this by modifying the code to follow the format below:
```
/* eslint-disable no-console */
console.log('foo');
/* eslint-enable no-console */
```
The above method is preferred over disabling all ESLint features. For example, we prefer that you never disable all checks on a line like this:
```
/* eslint-disable */
console.log('bar');
/* eslint-enable */
```
It is important that you include the second `/* eslint-enable */` line so that ESLint does not remain disabled for the rest of the file. Do not do this but, for your information, you can disable ESLint for an entire file by placing `/* eslint-disable */` at the top of the file.
**You should fix the lint error instead of using `/* eslint-disable */` whenever possible.**
For more details, see the [official ESLint docs](https://eslint.org/docs/2.13.1/user-guide/configuring#disabling-rules-with-inline-comments).
<a href="#testing" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Testing
For each feature in an NPM package, some basic unit tests should be added. Although it may seem trivial for a new project, the unit tests can be helpful for spotting regressions when the project grows or when it is refactored years down the line. You can check out some examples of unit tests by checking out the `*.spec.ts` files listed on [this TypeScript Starter page](https://github.com/bitjson/typescript-starter/tree/master/src/lib).
### Using `npm link`
If you are creating a CLI, it is possible to install the module for testing before you publish the module to npm. After running `npm i && npm run build`, you can then run `npm link` in the root of the project. You can then access the app from its' shortcut defined in `package.json` under the `"bin"` value.
Take the following as an example:
**package.json**
```
{
"name": "@megabytelabs/myapp",
"bin": {
"myclicommand": "bin/cli"
},
}
```
Running `npm link` with the `package.json` configuration listed above will install the app so that it is accessible by running `myclicommand`.
<a href="#pull-requests" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Pull Requests
All pull requests should be associated with issues. You can find the [issues board on GitLab](https://gitlab.com/megabyte-labs/docker/hiawatha-dotfiles/-/issues). The pull requests should be made to [the GitLab repository](https://gitlab.com/megabyte-labs/docker/hiawatha-dotfiles) instead of the [GitHub repository](ProfessorManhattan/npm-hiawatha-dotfiles). This is because we use GitLab as our primary repository and mirror the changes to GitHub for the community.
### How to Commit Code
Instead of using `git commit`, we prefer that you use `npm run commit`. You will understand why when you try it but basically it streamlines the commit process and helps us generate better CHANGELOG files.
### Pre-Commit Hook
Even if you decide not to use `npm run commit`, you will see that `git commit` behaves differently because there is a pre-commit hook that installs automatically after you run `npm i`. This pre-commit hook is there to test your code before committing and help you become a better coder. If you need to bypass the pre-commit hook, then you may add the `--no-verify` tag at the end of your `git commit` command (e.g. `git commit -m "Commit" --no-verify`).
<a href="#style-guides" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Style Guides
All code projects have their own style. Coding style will vary from coder to coder. Although we do not have a strict style guide for each project, we do require that you be well-versed in what coding style is most acceptable and _best_. To do this, you should read through style guides that are made available by organizations that have put a lot of effort into studying the reason for coding one way or another.
### Recommended Style Guides
Style guides are generally written for a specific language but a great place to start learning about the best coding practices is on [Google Style Guides](https://google.github.io/styleguide/). Follow the link and you will see style guides for most popular languages. We also recommend that you look through the following style guides, depending on what language you are coding with:
- [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript)
- [Angular Style Guide](https://angular.io/guide/styleguide)
- [Effective Go](https://go.dev/doc/effective_go)
- [PEP 8 Python Style Guide](https://www.python.org/dev/peps/pep-0008/)
- [Git Style Guide](https://github.com/agis/git-style-guide)
For more informative links, refer to the [GitHub Awesome Guidelines List](https://github.com/Kristories/awesome-guidelines).
### Strict Linting
One way we enforce code style is by including the best standard linters into our projects. We normally keep the settings pretty strict. Although it may seem pointless and annoying at first, these linters will make you a better coder since you will learn to adapt your style to the style of the group of people who spent countless hours creating the linter in the first place.
{{ load:.config/docs/common/contributing/troubleshooting.md }}
<a href="#contributors" style="width:100%"><img style="width:100%" src="https://gitlab.com/megabyte-labs/assets/-/raw/master/png/aqua-divider.png" /></a>
## Contributors
Thank you so much to our contributors!
contributors_list

View file

@ -7,7 +7,6 @@ version: '3'
# `task local:default` for example. You must keep all the tasks in this file without including other files
# because the main Taskfile.yml is a symlinked one. Anyway, try `task local:default`.
tasks:
default: echo "Get started on https://taskfile.dev"
bitwarden:
cmds:
- |
@ -67,6 +66,7 @@ tasks:
cmds:
- tar -czpf ~/brave-profile.tar.gz {{.BrowserProfile}}
default: echo "Get started on https://taskfile.dev"
font-test:
cmds:
- |
@ -98,6 +98,20 @@ tasks:
run localhost:provision:prompt
fi
provision:dev:
deps:
- :install:software:bundle
- provision:terminal
cmds:
- brew bundle --file "$HOME/.local/Brewfile.dev"
provision:full:
deps:
- :install:software:bundle
- provision:dev
cmds:
- brew bundle --file "$HOME/.local/Brewfile.full"
provision:prompt:
deps:
- :install:software:gum
@ -116,20 +130,6 @@ tasks:
run localhost:provision:full
fi
provision:dev:
deps:
- :install:software:bundle
- provision:terminal
cmds:
- brew bundle --file "$HOME/.local/Brewfile.dev"
provision:full:
deps:
- :install:software:bundle
- provision:dev
cmds:
- brew bundle --file "$HOME/.local/Brewfile.full"
provision:terminal:
deps:
- :install:software:bundle

View file

@ -3,86 +3,86 @@
schemes:
themer-dark: &dark
primary:
background: "#161925"
foreground: "#aaaeb8"
background: '#161925'
foreground: '#aaaeb8'
cursor:
text: "#161925"
cursor: "#c3c7d1"
text: '#161925'
cursor: '#c3c7d1'
selection:
text: "#161925"
background: "#7cb7ff"
text: '#161925'
background: '#7cb7ff'
normal:
black: "#474b56"
red: "#ed254e"
green: "#71f79f"
yellow: "#f9dc5c"
blue: "#7cb7ff"
magenta: "#c74d89"
cyan: "#00c1e4"
white: "#aaaeb8"
black: '#474b56'
red: '#ed254e'
green: '#71f79f'
yellow: '#f9dc5c'
blue: '#7cb7ff'
magenta: '#c74d89'
cyan: '#00c1e4'
white: '#aaaeb8'
bright:
black: "#60646f"
red: "#E54568"
green: "#81EDA9"
yellow: "#EED873"
blue: "#8ABAF6"
magenta: "#C66597"
cyan: "#27C2E0"
white: "#c3c7d1"
black: '#60646f'
red: '#E54568'
green: '#81EDA9'
yellow: '#EED873'
blue: '#8ABAF6'
magenta: '#C66597'
cyan: '#27C2E0'
white: '#c3c7d1'
dim:
black: "#2f323e"
red: "#C22346"
green: "#5FCB87"
yellow: "#CCB551"
blue: "#6897D3"
magenta: "#A44375"
cyan: "#049FBE"
white: "#9295a0"
black: '#2f323e'
red: '#C22346'
green: '#5FCB87'
yellow: '#CCB551'
blue: '#6897D3'
magenta: '#A44375'
cyan: '#049FBE'
white: '#9295a0'
themer-light: &light
primary:
background: "#ffffff"
foreground: "#666970"
background: '#ffffff'
foreground: '#666970'
cursor:
text: "#ffffff"
cursor: "#4c5058"
text: '#ffffff'
cursor: '#4c5058'
selection:
text: "#ffffff"
background: "#a0dbff"
text: '#ffffff'
background: '#a0dbff'
normal:
black: "#666970"
red: "#ff4972"
green: "#95ffc3"
yellow: "#ffff80"
blue: "#a0dbff"
magenta: "#eb71ad"
cyan: "#24e5ff"
white: "#cccdcf"
black: '#666970'
red: '#ff4972'
green: '#95ffc3'
yellow: '#ffff80'
blue: '#a0dbff'
magenta: '#eb71ad'
cyan: '#24e5ff'
white: '#cccdcf'
bright:
black: "#7f8288"
red: "#FF6D8E"
green: "#AAFFCF"
yellow: "#FFFF99"
blue: "#B3E2FF"
magenta: "#EF8DBD"
cyan: "#50EAFF"
white: "#e5e6e7"
black: '#7f8288'
red: '#FF6D8E'
green: '#AAFFCF'
yellow: '#FFFF99'
blue: '#B3E2FF'
magenta: '#EF8DBD'
cyan: '#50EAFF'
white: '#e5e6e7'
dim:
black: "#4c5058"
red: "#DB4A6D"
green: "#86DCAE"
yellow: "#DBDC78"
blue: "#8FBFDE"
magenta: "#CB6A9C"
cyan: "#2CC7DE"
white: "#b2b4b7"
black: '#4c5058'
red: '#DB4A6D'
green: '#86DCAE'
yellow: '#DBDC78'
blue: '#8FBFDE'
magenta: '#CB6A9C'
cyan: '#2CC7DE'
white: '#b2b4b7'

View file

@ -3,7 +3,7 @@ plugin:
dive:
shortCut: d
confirm: false
description: "Dive image"
description: Dive image
scopes:
- containers
command: dive
@ -21,11 +21,11 @@ plugin:
background: false
args:
- -c
- "kubectl get-all -n $NAMESPACE | less"
- 'kubectl get-all -n $NAMESPACE | less'
edit-secret:
shortCut: Ctrl-X
confirm: false
description: "Edit Decoded Secret"
description: Edit Decoded Secret
scopes:
- secrets
command: kubectl
@ -41,7 +41,7 @@ plugin:
stern:
shortCut: Ctrl-L
confirm: false
description: "Logs <Stern>"
description: Logs <Stern>
scopes:
- pods
command: stern
@ -67,4 +67,4 @@ plugin:
background: false
args:
- -c
- "watch -n 5 kubectl get events --context $CONTEXT --namespace $NAMESPACE --field-selector involvedObject.name=$NAME"
- watch -n 5 kubectl get events --context $CONTEXT --namespace $NAMESPACE --field-selector involvedObject.name=$NAME

View file

@ -1,23 +1,20 @@
{
"$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
"console_title_template": "{{if .Segments.Git.RepoName}} {{.Segments.Git.RepoName}} {{else}} {{.Folder}} {{end}}",
"blocks": [
{
"type": "prompt",
"alignment": "left",
"newline": true,
"segments": [
{
"type": "session",
"foreground": "#757575",
"properties": {
"display_host": true
},
"style": "plain",
"template": "\u250c {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}@{{ .HostName }} "
"template": "\u250c {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}@{{ .HostName }} ",
"type": "session"
},
{
"type": "path",
"background": "#91ddff",
"foreground": "#100e23",
"powerline_symbol": "\ue0b0",
@ -25,13 +22,10 @@
"style": "agnoster_full"
},
"style": "powerline",
"template": " {{ .Path }} "
"template": " {{ .Path }} ",
"type": "path"
},
{
"type": "git",
"style": "powerline",
"powerline_symbol": "\ue0b0",
"foreground": "#100e23",
"background": "#95ffa4",
"background_templates": [
"{{ if or (.Working.Changed) (.Staging.Changed) }}#ff9248{{ end }}",
@ -39,7 +33,8 @@
"{{ if gt .Ahead 0 }}#89d1dc{{ end }}",
"{{ if gt .Behind 0 }}#c5b6ad{{ end }}"
],
"template": " {{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} \u2502{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} {{ .StashCount }}{{ end }} ",
"foreground": "#100e23",
"powerline_symbol": "\ue0b0",
"properties": {
"branch_ahead_icon": "\u2191",
"branch_behind_icon": "\u2193",
@ -57,55 +52,60 @@
"untracked_modes": {
"/Users/user/Projects/oh-my-posh/": "no"
}
}
},
"style": "powerline",
"template": " {{ .HEAD }}{{if .BranchStatus }} {{ .BranchStatus }}{{ end }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} \u2502{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0 }} {{ .StashCount }}{{ end }} ",
"type": "git"
},
{
"type": "terraform",
"background": "#ffee58",
"foreground": "#100e23",
"powerline_symbol": "\ue0b0",
"style": "powerline",
"template": " {{ .WorkspaceName }}{{ if .Version }} {{ .Version }}{{ end }} "
"template": " {{ .WorkspaceName }}{{ if .Version }} {{ .Version }}{{ end }} ",
"type": "terraform"
},
{
"type": "exit",
"background": "#ff8080",
"foreground": "#ffffff",
"powerline_symbol": "\ue0b0",
"style": "powerline",
"template": " {{ if gt .Code 0 }}error{{ else }}\uf42e{{ end }} "
"template": " {{ if gt .Code 0 }}error{{ else }}\uf42e{{ end }} ",
"type": "exit"
},
{
"type": "time",
"foreground": "#689f38",
"properties": {
"time_format": "15:04:05"
},
"style": "plain",
"template": " <#757575,>|</> {{ .CurrentDate | date .Format }}"
"template": " <#757575,>|</> {{ .CurrentDate | date .Format }}",
"type": "time"
}
]
],
"type": "prompt"
},
{
"type": "prompt",
"alignment": "left",
"newline": true,
"segments": [
{
"type": "text",
"foreground": "#757575",
"style": "plain",
"template": "\u2514"
"template": "\u2514",
"type": "text"
},
{
"type": "text",
"foreground": "#ffffff",
"style": "plain",
"template": "$"
"template": "$",
"type": "text"
}
]
],
"type": "prompt"
}
],
"console_title_template": "{{if .Segments.Git.RepoName}} {{.Segments.Git.RepoName}} {{else}} {{.Folder}} {{end}}",
"final_space": true,
"version": 2
}

View file

@ -18,9 +18,9 @@
"foreground": "#ffffff",
"powerline_symbol": "\ue0b0",
"properties": {
"home_icon": "\uf46d",
"folder_separator_icon": " <transparent>\ue0b1</> ",
"folder_icon": "\uf115",
"folder_separator_icon": " <transparent>\ue0b1</> ",
"home_icon": "\uf46d",
"style": "agnoster"
},
"style": "powerline",
@ -86,10 +86,8 @@
},
{
"background": "#2e9599",
"background_templates": ["{{ if gt .Code 0 }}#D51111{{ end }}"],
"foreground": "#fff",
"background_templates": [
"{{ if gt .Code 0 }}#D51111{{ end }}"
],
"leading_diamond": "\ue0b6",
"properties": {
"time_format": "_2, 15:04:05"
@ -108,9 +106,7 @@
"segments": [
{
"foreground": "#FFF",
"foreground_templates": [
"{{ if gt .Code 0 }}#D51111{{ end }}"
],
"foreground_templates": ["{{ if gt .Code 0 }}#D51111{{ end }}"],
"style": "plain",
"template": " \uf0a4 ",
"type": "text"

View file

@ -1,16 +1,13 @@
{
"name": "betelgeuse-vscode",
"displayName": "Betelgeuse VS Code Theme",
"description": "Betelgeuse theme generated by Themer.dev",
"version": "2.4.0",
"publisher": "Megabyte Labs",
"description": "Betelgeuse theme generated by Themer.dev",
"engines": {
"vscode": "^1.14.0"
},
"categories": [
"Themes"
],
"icon": "icon.svg",
"contributes": {
"themes": [
{
@ -24,5 +21,8 @@
"path": "themes/themer-light-color-theme.json"
}
]
}
},
"displayName": "Betelgeuse VS Code Theme",
"icon": "icon.svg",
"publisher": "Megabyte Labs"
}

View file

@ -1,13 +1,148 @@
{
"name": "Betelgeuse Dark",
"type": "dark",
"colors": {
"activityBar.activeBackground": "#2f323e33",
"activityBar.activeBorder": "#aaaeb8",
"activityBar.activeFocusBorder": "#c3c7d1",
"activityBar.background": "#161925",
"activityBar.border": "#161925",
"activityBar.dropBorder": "#7cb7ff",
"activityBar.foreground": "#9295a0",
"activityBar.inactiveForeground": "#797c87",
"activityBarBadge.background": "#c3c7d1",
"activityBarBadge.foreground": "#161925",
"badge.background": "#c3c7d1",
"badge.foreground": "#161925",
"breadcrumb.activeSelectionForeground": "#c3c7d1",
"breadcrumb.background": "#161925",
"breadcrumb.focusForeground": "#aaaeb8",
"breadcrumb.foreground": "#9295a0",
"breadcrumbPicker.background": "#161925",
"button.background": "#7cb7ff",
"button.foreground": "#161925",
"button.hoverBackground": "#00c1e4",
"button.secondaryBackground": "#aaaeb8",
"button.secondaryForeground": "#161925",
"button.secondaryHoverBackground": "#9295a0",
"charts.blue": "#7cb7ff",
"charts.foreground": "#aaaeb8",
"charts.green": "#71f79f",
"charts.lines": "#60646f",
"charts.orange": "#dcdfe4",
"charts.purple": "#c3c7d1",
"charts.red": "#ed254e",
"charts.yellow": "#f9dc5c",
"checkbox.background": "#7cb7ff",
"checkbox.border": "#2f323e",
"checkbox.foreground": "#161925",
"debugConsole.errorForeground": "#ed254e",
"debugConsole.infoForeground": "#7cb7ff",
"debugConsole.sourceForeground": "#c3c7d1",
"debugConsole.warningForeground": "#dcdfe4",
"debugConsoleInputIcon.foreground": "#797c87",
"debugExceptionWidget.background": "#2f323e",
"debugExceptionWidget.border": "#2f323e",
"debugIcon.breakpointCurrentStackframeForeground": "#71f79f",
"debugIcon.breakpointDisabledForeground": "#797c87",
"debugIcon.breakpointForeground": "#ed254e",
"debugIcon.breakpointStackframeForeground": "#f9dc5c",
"debugIcon.breakpointUnverifiedForeground": "#9295a0",
"debugIcon.continueForeground": "#71f79f",
"debugIcon.disconnectForeground": "#dcdfe4",
"debugIcon.pauseForeground": "#7cb7ff",
"debugIcon.restartForeground": "#c74d89",
"debugIcon.startForeground": "#71f79f",
"debugIcon.stepBackForeground": "#c3c7d1",
"debugIcon.stepIntoForeground": "#c3c7d1",
"debugIcon.stepOutForeground": "#c3c7d1",
"debugIcon.stepOverForeground": "#c3c7d1",
"debugIcon.stopForeground": "#ed254e",
"debugTokenExpression.boolean": "#c3c7d1",
"debugTokenExpression.error": "#ed254e",
"debugTokenExpression.name": "#7cb7ff",
"debugTokenExpression.number": "#c74d89",
"debugTokenExpression.string": "#71f79f",
"debugTokenExpression.value": "#c3c7d1",
"debugToolBar.background": "#2f323e",
"debugToolBar.border": "#474b56",
"debugView.exceptionLabelBackground": "#2f323e",
"debugView.exceptionLabelForeground": "#f9dc5c",
"debugView.stateLabelBackground": "#2f323e",
"debugView.stateLabelForeground": "#7cb7ff",
"debugView.valueChangedHighlight": "#f9dc5c33",
"descriptionForeground": "#aaaeb8",
"diffEditor.border": "#2f323e",
"diffEditor.diagonalFill": "#2f323e7f",
"diffEditor.insertedTextBackground": "#71f79f20",
"diffEditor.removedTextBackground": "#ed254e20",
"dropdown.background": "#2f323e",
"dropdown.border": "#2f323e",
"dropdown.foreground": "#aaaeb8",
"dropdown.listBackground": "#2f323e",
"editor.background": "#161925",
"editor.findMatchBackground": "#f9dc5c3f",
"editor.findMatchHighlightBackground": "#f9dc5c33",
"editor.findRangeHighlightBackground": "#2f323e",
"editor.focusedStackFrameHighlightBackground": "#71f79f3f",
"editor.foldBackground": "#2f323e66",
"editor.foreground": "#c3c7d1",
"editor.hoverHighlightBackground": "#474b567f",
"editor.inactiveSelectionBackground": "#7cb7ff33",
"editor.lineHighlightBackground": "#161925",
"editor.lineHighlightBorder": "#2f323e",
"editor.rangeHighlightBackground": "#f9dc5c33",
"editor.selectionBackground": "#7cb7ff33",
"editor.selectionForeground": "#c3c7d1",
"editor.selectionHighlightBackground": "#2f323e",
"editor.snippetFinalTabstopHighlightBackground": "#474b567f",
"editor.snippetTabstopHighlightBackground": "#2f323e7f",
"editor.stackFrameHighlightBackground": "#00c1e43f",
"editor.symbolHighlightBackground": "#c3c7d133",
"editor.wordHighlightBackground": "#c3c7d133",
"editor.wordHighlightStrongBackground": "#c74d8933",
"editorBracketHighlight.foreground1": "#c3c7d1",
"editorBracketHighlight.foreground2": "#f9dc5c",
"editorBracketHighlight.foreground3": "#00c1e4",
"editorBracketHighlight.foreground4": "#c3c7d1",
"editorBracketHighlight.foreground5": "#71f79f",
"editorBracketHighlight.foreground6": "#7cb7ff",
"editorBracketHighlight.unexpectedBracket": "#ed254e",
"editorBracketMatch.background": "#2f323e",
"editorBracketMatch.border": "#474b56",
"editorCodeLens.foreground": "#9295a0",
"editorCursor.background": "#161925",
"editorCursor.foreground": "#c3c7d1",
"editorError.border": "#c3c7d1",
"editorError.foreground": "#ed254e",
"editorGroup.border": "#2f323e",
"editorGroup.dropBackground": "#474b567f",
"editorGroup.emptyBackground": "#161925",
"editorGroup.focusedEmptyBorder": "#2f323e",
"editorGroupHeader.border": "#161925",
"editorGroupHeader.noTabsBackground": "#161925",
"editorGroupHeader.tabsBackground": "#161925",
"editorGroupHeader.tabsBorder": "#161925",
"editorGutter.addedBackground": "#71f79f",
"editorGutter.background": "#161925",
"editorGutter.commentRangeForeground": "#60646f",
"editorGutter.deletedBackground": "#ed254e",
"editorGutter.foldingControlForeground": "#9295a0",
"editorGutter.modifiedBackground": "#f9dc5c",
"editorHint.border": "#797c87",
"editorHint.foreground": "#c74d89",
"editorHoverWidget.background": "#2f323e",
"editorHoverWidget.border": "#2f323e",
"editorHoverWidget.foreground": "#aaaeb8",
"editorHoverWidget.statusBarBackground": "#7cb7ff33",
"editorIndentGuide.activeBackground": "#474b56",
"editorIndentGuide.background": "#2f323e",
"editorInfo.border": "#9295a0",
"editorInfo.foreground": "#7cb7ff",
"editorLightBulb.foreground": "#f9dc5c",
"errorForeground": "#ed254e",
"focusBorder": "#c3c7d1",
"foreground": "#c3c7d1",
"widget.shadow": "#161925",
"selection.background": "#474b56",
"descriptionForeground": "#aaaeb8",
"errorForeground": "#ed254e",
"icon.foreground": "#aaaeb8",
"sash.hoverBorder": "#7cb7ff",
"textBlockQuote.background": "#2f323e",
@ -17,19 +152,19 @@
"textLink.foreground": "#7cb7ff",
"textPreformat.foreground": "#dcdfe4",
"textSeparator.foreground": "#797c87",
"button.background": "#7cb7ff",
"button.foreground": "#161925",
"button.hoverBackground": "#00c1e4",
"button.secondaryForeground": "#161925",
"button.secondaryBackground": "#aaaeb8",
"button.secondaryHoverBackground": "#9295a0",
"checkbox.background": "#7cb7ff",
"checkbox.foreground": "#161925",
"checkbox.border": "#2f323e",
"dropdown.background": "#2f323e",
"dropdown.listBackground": "#2f323e",
"dropdown.border": "#2f323e",
"dropdown.foreground": "#aaaeb8",
"editorLightBulbAutoFix.foreground": "#7cb7ff",
"editorLineNumber.activeForeground": "#797c87",
"editorLineNumber.foreground": "#474b56",
"editorLink.activeForeground": "#00c1e4",
"editorMarkerNavigation.background": "#2f323e",
"editorMarkerNavigationError.background": "#ed254e",
"editorMarkerNavigationInfo.background": "#7cb7ff",
"editorMarkerNavigationWarning.background": "#dcdfe4",
"editorOverviewRuler.addedForeground": "#71f79f7f",
"editorOverviewRuler.border": "#2f323e",
"editorOverviewRuler.bracketMatchForeground": "#60646f",
"editorOverviewRuler.commonContentForeground": "#c3c7d1",
"editorOverviewRuler.currentContentForeground": "#00c1e4",
"input.background": "#2f323e",
"input.border": "#2f323e",
"input.foreground": "#aaaeb8",
@ -38,24 +173,26 @@
"inputOption.activeBorder": "#00c1e4",
"inputOption.activeForeground": "#c3c7d1",
"inputValidation.errorBackground": "#2f323e",
"inputValidation.errorForeground": "#ed254e",
"inputValidation.errorBorder": "#ed254e",
"inputValidation.errorForeground": "#ed254e",
"inputValidation.infoBackground": "#2f323e",
"inputValidation.infoForeground": "#7cb7ff",
"inputValidation.infoBorder": "#7cb7ff",
"inputValidation.infoForeground": "#7cb7ff",
"inputValidation.warningBackground": "#2f323e",
"inputValidation.warningForeground": "#dcdfe4",
"inputValidation.warningBorder": "#dcdfe4",
"inputValidation.warningForeground": "#dcdfe4",
"scrollbar.shadow": "#161925",
"scrollbarSlider.activeBackground": "#9295a07f",
"scrollbarSlider.background": "#60646f7f",
"scrollbarSlider.hoverBackground": "#797c877f",
"badge.foreground": "#161925",
"badge.background": "#c3c7d1",
"progressBar.background": "#71f79f",
"list.activeSelectionBackground": "#c3c7d133",
"list.activeSelectionForeground": "#c3c7d1",
"list.deemphasizedForeground": "#797c87",
"list.dropBackground": "#2f323e",
"progressBar.background": "#71f79f",
"list.errorForeground": "#ed254e",
"list.filterMatchBackground": "#f9dc5c33",
"list.filterMatchBorder": "#f9dc5c33",
"list.focusBackground": "#60646f3f",
"list.focusForeground": "#c3c7d1",
"list.highlightForeground": "#f9dc5c",
@ -65,25 +202,25 @@
"list.inactiveSelectionForeground": "#aaaeb8",
"list.inactiveFocusBackground": "#2f323e3f",
"list.invalidItemForeground": "#ed254e",
"list.errorForeground": "#ed254e",
"list.warningForeground": "#f9dc5c",
"listFilterWidget.background": "#2f323e",
"listFilterWidget.outline": "#7cb7ff",
"listFilterWidget.noMatchesOutline": "#ed254e",
"list.filterMatchBackground": "#f9dc5c33",
"list.filterMatchBorder": "#f9dc5c33",
"listFilterWidget.outline": "#7cb7ff",
"tree.indentGuidesStroke": "#2f323e",
"list.deemphasizedForeground": "#797c87",
"activityBar.background": "#161925",
"activityBar.dropBorder": "#7cb7ff",
"activityBar.foreground": "#9295a0",
"activityBar.inactiveForeground": "#797c87",
"activityBar.border": "#161925",
"activityBarBadge.background": "#c3c7d1",
"activityBarBadge.foreground": "#161925",
"activityBar.activeBorder": "#aaaeb8",
"activityBar.activeBackground": "#2f323e33",
"activityBar.activeFocusBorder": "#c3c7d1",
"editorOverviewRuler.deletedForeground": "#ed254e7f",
"editorOverviewRuler.errorForeground": "#ed254e7f",
"editorOverviewRuler.findMatchForeground": "#f9dc5cbf",
"editorOverviewRuler.incomingContentForeground": "#7cb7ff",
"editorOverviewRuler.infoForeground": "#7cb7ff7f",
"editorOverviewRuler.modifiedForeground": "#f9dc5c7f",
"editorOverviewRuler.rangeHighlightForeground": "#474b56bf",
"editorOverviewRuler.selectionHighlightForeground": "#2f323ebf",
"editorOverviewRuler.warningForeground": "#dcdfe47f",
"editorOverviewRuler.wordHighlightForeground": "#474b56bf",
"editorOverviewRuler.wordHighlightStrongForeground": "#60646fbf",
"minimap.background": "#161925",
"minimap.errorHighlight": "#ed254e80",
"minimap.findMatchHighlight": "#f9dc5c",
"sideBar.background": "#161925",
"sideBar.foreground": "#aaaeb8",
"sideBar.border": "#2f323e",
@ -92,140 +229,125 @@
"sideBarSectionHeader.background": "#474b56",
"sideBarSectionHeader.foreground": "#aaaeb8",
"sideBarSectionHeader.border": "#161925",
"minimap.findMatchHighlight": "#f9dc5c",
"minimap.selectionHighlight": "#7cb7ff80",
"minimap.errorHighlight": "#ed254e80",
"minimap.warningHighlight": "#dcdfe480",
"minimap.background": "#161925",
"minimapGutter.addedBackground": "#71f79f80",
"minimapGutter.deletedBackground": "#ed254e80",
"minimapSlider.activeBackground": "#60646f33",
"minimapSlider.background": "#2f323e33",
"minimapSlider.hoverBackground": "#474b5633",
"minimapSlider.activeBackground": "#60646f33",
"minimapGutter.addedBackground": "#71f79f80",
"minimapGutter.modifiedBackground": "#f9dc5c80",
"minimapGutter.deletedBackground": "#ed254e80",
"editorGroup.border": "#2f323e",
"editorGroup.dropBackground": "#474b567f",
"editorGroupHeader.noTabsBackground": "#161925",
"editorGroupHeader.tabsBackground": "#161925",
"editorGroupHeader.tabsBorder": "#161925",
"editorGroupHeader.border": "#161925",
"editorGroup.emptyBackground": "#161925",
"editorGroup.focusedEmptyBorder": "#2f323e",
"tab.activeBackground": "#161925",
"tab.unfocusedActiveBackground": "#161925",
"tab.activeForeground": "#aaaeb8",
"tab.border": "#161925",
"tab.lastPinnedBorder": "#c74d89",
"tab.inactiveBackground": "#2f323e",
"tab.unfocusedInactiveBackground": "#2f323e",
"tab.inactiveForeground": "#60646f",
"tab.unfocusedActiveForeground": "#60646f",
"tab.unfocusedInactiveForeground": "#474b56",
"tab.hoverBackground": "#2f323e80",
"tab.unfocusedHoverBackground": "#2f323e80",
"tab.hoverForeground": "#9295a0",
"tab.unfocusedHoverForeground": "#797c87",
"tab.activeModifiedBorder": "#f9dc5c",
"tab.inactiveModifiedBorder": "#f9dc5c",
"tab.unfocusedActiveModifiedBorder": "#f9dc5c",
"tab.unfocusedInactiveModifiedBorder": "#f9dc5c",
"editorPane.background": "#161925",
"editor.background": "#161925",
"editor.foreground": "#c3c7d1",
"editorLineNumber.foreground": "#474b56",
"editorLineNumber.activeForeground": "#797c87",
"editorCursor.background": "#161925",
"editorCursor.foreground": "#c3c7d1",
"editor.selectionBackground": "#7cb7ff33",
"editor.selectionForeground": "#c3c7d1",
"editor.inactiveSelectionBackground": "#7cb7ff33",
"editor.selectionHighlightBackground": "#2f323e",
"editor.wordHighlightBackground": "#c3c7d133",
"editor.wordHighlightStrongBackground": "#c74d8933",
"editor.findMatchBackground": "#f9dc5c3f",
"editor.findMatchHighlightBackground": "#f9dc5c33",
"editor.findRangeHighlightBackground": "#2f323e",
"editor.hoverHighlightBackground": "#474b567f",
"editor.lineHighlightBackground": "#161925",
"editor.lineHighlightBorder": "#2f323e",
"editorLink.activeForeground": "#00c1e4",
"editor.rangeHighlightBackground": "#f9dc5c33",
"editor.symbolHighlightBackground": "#c3c7d133",
"editorWhitespace.foreground": "#2f323e",
"editorIndentGuide.background": "#2f323e",
"editorIndentGuide.activeBackground": "#474b56",
"editorRuler.foreground": "#2f323e",
"editorCodeLens.foreground": "#9295a0",
"editorLightBulb.foreground": "#f9dc5c",
"editorLightBulbAutoFix.foreground": "#7cb7ff",
"editorBracketMatch.background": "#2f323e",
"editorBracketMatch.border": "#474b56",
"editorBracketHighlight.foreground1": "#c3c7d1",
"editorBracketHighlight.foreground2": "#f9dc5c",
"editorBracketHighlight.foreground3": "#00c1e4",
"editorBracketHighlight.foreground4": "#c3c7d1",
"editorBracketHighlight.foreground5": "#71f79f",
"editorBracketHighlight.foreground6": "#7cb7ff",
"editorBracketHighlight.unexpectedBracket": "#ed254e",
"editor.foldBackground": "#2f323e66",
"editorOverviewRuler.border": "#2f323e",
"editorOverviewRuler.findMatchForeground": "#f9dc5cbf",
"editorOverviewRuler.rangeHighlightForeground": "#474b56bf",
"editorOverviewRuler.selectionHighlightForeground": "#2f323ebf",
"editorOverviewRuler.wordHighlightForeground": "#474b56bf",
"editorOverviewRuler.wordHighlightStrongForeground": "#60646fbf",
"editorOverviewRuler.modifiedForeground": "#f9dc5c7f",
"editorOverviewRuler.addedForeground": "#71f79f7f",
"editorOverviewRuler.deletedForeground": "#ed254e7f",
"editorOverviewRuler.errorForeground": "#ed254e7f",
"editorOverviewRuler.warningForeground": "#dcdfe47f",
"editorOverviewRuler.infoForeground": "#7cb7ff7f",
"editorOverviewRuler.bracketMatchForeground": "#60646f",
"editorError.foreground": "#ed254e",
"editorError.border": "#c3c7d1",
"editorWarning.foreground": "#dcdfe4",
"editorWarning.border": "#aaaeb8",
"editorInfo.foreground": "#7cb7ff",
"editorInfo.border": "#9295a0",
"editorHint.foreground": "#c74d89",
"editorHint.border": "#797c87",
"problemsErrorIcon.foreground": "#ed254e",
"problemsWarningIcon.foreground": "#dcdfe4",
"problemsInfoIcon.foreground": "#7cb7ff",
"editorUnnecessaryCode.opacity": "#0000007f",
"editorGutter.background": "#161925",
"editorGutter.modifiedBackground": "#f9dc5c",
"editorGutter.addedBackground": "#71f79f",
"editorGutter.deletedBackground": "#ed254e",
"editorGutter.commentRangeForeground": "#60646f",
"editorGutter.foldingControlForeground": "#9295a0",
"diffEditor.insertedTextBackground": "#71f79f20",
"diffEditor.removedTextBackground": "#ed254e20",
"diffEditor.border": "#2f323e",
"diffEditor.diagonalFill": "#2f323e7f",
"editorWidget.foreground": "#aaaeb8",
"editorWidget.background": "#2f323e",
"editorWidget.border": "#2f323e",
"editorWidget.resizeBorder": "#7cb7ff",
"editorSuggestWidget.background": "#2f323e",
"editorSuggestWidget.border": "#2f323e",
"editorSuggestWidget.foreground": "#aaaeb8",
"editorSuggestWidget.highlightForeground": "#c74d89",
"editorSuggestWidget.selectedBackground": "#474b56",
"editorHoverWidget.foreground": "#aaaeb8",
"editorHoverWidget.background": "#2f323e",
"editorHoverWidget.border": "#2f323e",
"editorHoverWidget.statusBarBackground": "#7cb7ff33",
"debugExceptionWidget.background": "#2f323e",
"debugExceptionWidget.border": "#2f323e",
"editorMarkerNavigation.background": "#2f323e",
"editorMarkerNavigationError.background": "#ed254e",
"editorMarkerNavigationWarning.background": "#dcdfe4",
"editorMarkerNavigationInfo.background": "#7cb7ff",
"editorUnnecessaryCode.opacity": "#0000007f",
"tab.activeBackground": "#161925",
"tab.activeForeground": "#aaaeb8",
"tab.activeModifiedBorder": "#f9dc5c",
"tab.border": "#161925",
"tab.unfocusedActiveBackground": "#161925",
"tab.inactiveBackground": "#2f323e",
"tab.inactiveForeground": "#60646f",
"tab.lastPinnedBorder": "#c74d89",
"tab.unfocusedInactiveBackground": "#2f323e",
"tab.unfocusedActiveForeground": "#60646f",
"tab.unfocusedInactiveForeground": "#474b56",
"tab.hoverBackground": "#2f323e80",
"tab.hoverForeground": "#9295a0",
"tab.unfocusedHoverBackground": "#2f323e80",
"tab.unfocusedHoverForeground": "#797c87",
"tab.inactiveModifiedBorder": "#f9dc5c",
"tab.unfocusedActiveModifiedBorder": "#f9dc5c",
"tab.unfocusedInactiveModifiedBorder": "#f9dc5c",
"editorWarning.border": "#aaaeb8",
"editorWarning.foreground": "#dcdfe4",
"editorWhitespace.foreground": "#2f323e",
"editorWidget.background": "#2f323e",
"editorWidget.border": "#2f323e",
"editorWidget.foreground": "#aaaeb8",
"editorWidget.resizeBorder": "#7cb7ff",
"extensionBadge.remoteBackground": "#c74d89",
"extensionBadge.remoteForeground": "#161925",
"extensionButton.prominentBackground": "#7cb7ff",
"extensionButton.prominentForeground": "#161925",
"extensionButton.prominentHoverBackground": "#00c1e4",
"gitDecoration.addedResourceForeground": "#71f79f",
"gitDecoration.conflictingResourceForeground": "#00c1e4",
"gitDecoration.deletedResourceForeground": "#ed254e",
"gitDecoration.ignoredResourceForeground": "#60646f",
"gitDecoration.modifiedResourceForeground": "#f9dc5c",
"gitDecoration.stageDeletedResourceForeground": "#ed254e",
"gitDecoration.stageModifiedResourceForeground": "#00c1e4",
"gitDecoration.submoduleResourceForeground": "#c74d89",
"gitDecoration.untrackedResourceForeground": "#c3c7d1",
"imagePreview.border": "#2f323e",
"menu.background": "#161925",
"menu.foreground": "#aaaeb8",
"menu.selectionBackground": "#2f323e",
"menu.selectionForeground": "#c3c7d1",
"menu.separatorBackground": "#474b56",
"menubar.selectionBackground": "#2f323e",
"menubar.selectionForeground": "#c3c7d1",
"merge.border": "#797c87",
"merge.commonContentBackground": "#c3c7d14c",
"merge.commonHeaderBackground": "#c3c7d14c",
"merge.currentContentBackground": "#00c1e44c",
"merge.currentHeaderBackground": "#00c1e44c",
"merge.incomingContentBackground": "#7cb7ff4c",
"merge.incomingHeaderBackground": "#7cb7ff4c",
"notebook.cellBorderColor": "#2f323e3f",
"notebook.cellHoverBackground": "#2f323e3f",
"notebook.cellInsertionIndicator": "#71f79f",
"notebook.cellStatusBarItemHoverBackground": "#2f323e3f",
"notebook.cellToolbarSeparator": "#2f323e3f",
"notebook.focusedCellBackground": "#2f323e7f",
"notebook.focusedCellBorder": "#c3c7d1",
"notebook.focusedCellShadow": "#0000003f",
"notebook.focusedEditorBorder": "#2f323e",
"notebook.focusedRowBorder": "#c3c7d1",
"notebook.inactiveFocusedCellBorder": "#9295a0",
"notebook.outputContainerBackgroundColor": "#161925",
"notebook.rowHoverBackground": "#2f323e7f",
"notebook.selectedCellBorder": "#797c87",
"notebook.symbolHighlightBackground": "#c3c7d13f",
"problemsErrorIcon.foreground": "#ed254e",
"problemsInfoIcon.foreground": "#7cb7ff",
"problemsWarningIcon.foreground": "#dcdfe4",
"notebookScrollbarSlider.activeBackground": "#9295a07f",
"notebookScrollbarSlider.background": "#60646f7f",
"notebookScrollbarSlider.hoverBackground": "#797c877f",
"notebookStatusErrorIcon.foreground": "#ed254e",
"notebookStatusRunningIcon.foreground": "#7cb7ff",
"notebookStatusSuccessIcon.foreground": "#71f79f",
"notificationCenterHeader.background": "#474b56",
"notificationCenterHeader.foreground": "#aaaeb8",
"notificationLink.foreground": "#7cb7ff",
"notificationToast.border": "#60646f",
"notifications.background": "#2f323e",
"notifications.border": "#60646f",
"notifications.foreground": "#c3c7d1",
"notificationsErrorIcon.foreground": "#ed254e",
"notificationsInfoIcon.foreground": "#7cb7ff",
"notificationsWarningIcon.foreground": "#dcdfe4",
"panel.background": "#161925",
"panel.border": "#2f323e",
"panel.dropBorder": "#7cb7ff",
"panelSection.border": "#2f323e",
"panelSection.dropBackground": "#2f323e3f",
"panelSectionHeader.background": "#474b56",
"panelSectionHeader.border": "#161925",
"panelSectionHeader.foreground": "#aaaeb8",
"panelTitle.activeBorder": "#60646f",
"panelTitle.activeForeground": "#aaaeb8",
"panelTitle.inactiveForeground": "#797c87",
"peekView.border": "#c74d89",
"peekViewEditor.background": "#2f323e7f",
"peekViewEditorGutter.background": "#2f323e7f",
"peekViewEditor.matchHighlightBackground": "#f9dc5c7f",
"peekViewEditorGutter.background": "#2f323e7f",
"peekViewResult.background": "#2f323e",
"peekViewResult.fileForeground": "#aaaeb8",
"peekViewResult.lineForeground": "#474b56",
@ -235,166 +357,42 @@
"peekViewTitle.background": "#2f323e",
"peekViewTitleDescription.foreground": "#9295a0",
"peekViewTitleLabel.foreground": "#c3c7d1",
"merge.currentHeaderBackground": "#00c1e44c",
"merge.currentContentBackground": "#00c1e44c",
"merge.incomingHeaderBackground": "#7cb7ff4c",
"merge.incomingContentBackground": "#7cb7ff4c",
"merge.border": "#797c87",
"merge.commonContentBackground": "#c3c7d14c",
"merge.commonHeaderBackground": "#c3c7d14c",
"editorOverviewRuler.currentContentForeground": "#00c1e4",
"editorOverviewRuler.incomingContentForeground": "#7cb7ff",
"editorOverviewRuler.commonContentForeground": "#c3c7d1",
"panel.background": "#161925",
"panel.border": "#2f323e",
"panel.dropBorder": "#7cb7ff",
"panelTitle.activeBorder": "#60646f",
"panelTitle.activeForeground": "#aaaeb8",
"panelTitle.inactiveForeground": "#797c87",
"panelSection.border": "#2f323e",
"panelSection.dropBackground": "#2f323e3f",
"panelSectionHeader.background": "#474b56",
"panelSectionHeader.foreground": "#aaaeb8",
"panelSectionHeader.border": "#161925",
"imagePreview.border": "#2f323e",
"statusBar.background": "#7cb7ff",
"statusBar.foreground": "#161925",
"statusBar.border": "#161925",
"statusBar.debuggingBackground": "#dcdfe4",
"statusBar.debuggingForeground": "#161925",
"statusBar.debuggingBorder": "#161925",
"statusBar.noFolderBackground": "#c3c7d1",
"statusBar.noFolderForeground": "#161925",
"statusBar.noFolderBorder": "#161925",
"statusBarItem.activeBackground": "#00c1e4",
"statusBarItem.hoverBackground": "#71f79f",
"statusBarItem.prominentBackground": "#00c1e4",
"statusBarItem.prominentHoverBackground": "#71f79f",
"statusBarItem.remoteBackground": "#00c1e4",
"statusBarItem.remoteForeground": "#161925",
"statusBarItem.errorBackground": "#ed254e",
"statusBarItem.errorForeground": "#161925",
"titleBar.activeBackground": "#161925",
"titleBar.activeForeground": "#9295a0",
"titleBar.inactiveBackground": "#161925",
"titleBar.inactiveForeground": "#60646f",
"menubar.selectionForeground": "#c3c7d1",
"menubar.selectionBackground": "#2f323e",
"menu.foreground": "#aaaeb8",
"menu.background": "#161925",
"menu.selectionForeground": "#c3c7d1",
"menu.selectionBackground": "#2f323e",
"menu.separatorBackground": "#474b56",
"notificationCenterHeader.foreground": "#aaaeb8",
"notificationCenterHeader.background": "#474b56",
"notificationToast.border": "#60646f",
"notifications.foreground": "#c3c7d1",
"notifications.background": "#2f323e",
"notifications.border": "#60646f",
"notificationLink.foreground": "#7cb7ff",
"notificationsErrorIcon.foreground": "#ed254e",
"notificationsWarningIcon.foreground": "#dcdfe4",
"notificationsInfoIcon.foreground": "#7cb7ff",
"extensionButton.prominentForeground": "#161925",
"extensionButton.prominentBackground": "#7cb7ff",
"extensionButton.prominentHoverBackground": "#00c1e4",
"extensionBadge.remoteBackground": "#c74d89",
"extensionBadge.remoteForeground": "#161925",
"pickerGroup.border": "#474b56",
"pickerGroup.foreground": "#797c87",
"quickInput.background": "#2f323e",
"quickInput.foreground": "#c3c7d1",
"quickInputTitle.background": "#474b56",
"terminal.background": "#161925",
"terminal.foreground": "#aaaeb8",
"terminal.ansiBlack": "#161925",
"terminal.ansiBlue": "#7cb7ff",
"terminal.ansiBrightBlack": "#2f323e",
"terminal.ansiBrightBlue": "#7cb7ff",
"terminal.ansiBrightCyan": "#00c1e4",
"terminal.ansiBrightGreen": "#00c1e4",
"terminal.ansiBrightMagenta": "#c74d89",
"terminal.ansiBrightRed": "#dcdfe4",
"terminal.ansiBrightWhite": "#c3c7d1",
"terminal.ansiBrightYellow": "#f9dc5c",
"terminal.ansiCyan": "#00c1e4",
"terminal.ansiGreen": "#71f79f",
"terminal.ansiMagenta": "#c74d89",
"terminal.ansiRed": "#ed254e",
"terminal.ansiWhite": "#aaaeb8",
"terminal.ansiYellow": "#f9dc5c",
"terminal.selectionBackground": "#7cb7ff7f",
"terminalCursor.background": "#2f323e",
"terminalCursor.foreground": "#9295a0",
"debugToolBar.background": "#2f323e",
"debugToolBar.border": "#474b56",
"editor.stackFrameHighlightBackground": "#00c1e43f",
"editor.focusedStackFrameHighlightBackground": "#71f79f3f",
"debugView.exceptionLabelForeground": "#f9dc5c",
"debugView.exceptionLabelBackground": "#2f323e",
"debugView.stateLabelForeground": "#7cb7ff",
"debugView.stateLabelBackground": "#2f323e",
"debugView.valueChangedHighlight": "#f9dc5c33",
"debugTokenExpression.name": "#7cb7ff",
"debugTokenExpression.value": "#c3c7d1",
"debugTokenExpression.string": "#71f79f",
"debugTokenExpression.boolean": "#c3c7d1",
"debugTokenExpression.number": "#c74d89",
"debugTokenExpression.error": "#ed254e",
"testing.iconFailed": "#dcdfe4",
"testing.iconErrored": "#ed254e",
"testing.iconPassed": "#71f79f",
"testing.runAction": "#7cb7ff",
"testing.iconQueued": "#00c1e4",
"testing.iconUnset": "#9295a0",
"testing.iconSkipped": "#797c87",
"testing.peekBorder": "#60646f",
"testing.message.error.decorationForeground": "#ed254e",
"testing.message.error.lineBackground": "#ed254e3f",
"testing.message.warning.decorationForeground": "#dcdfe4",
"testing.message.warning.lineBackground": "#dcdfe43f",
"testing.message.info.decorationForeground": "#7cb7ff",
"testing.message.info.lineBackground": "#7cb7ff3f",
"testing.message.hint.decorationForeground": "#c74d89",
"testing.message.hint.lineBackground": "#c74d893f",
"welcomePage.background": "#161925",
"welcomePage.buttonBackground": "#2f323e",
"welcomePage.buttonHoverBackground": "#474b56",
"welcomePage.progress.background": "#7cb7ff",
"welcomePage.progress.foreground": "#161925",
"walkThrough.embeddedEditorBackground": "#161925",
"scm.providerBorder": "#474b56",
"gitDecoration.addedResourceForeground": "#71f79f",
"gitDecoration.modifiedResourceForeground": "#f9dc5c",
"gitDecoration.stageModifiedResourceForeground": "#00c1e4",
"gitDecoration.deletedResourceForeground": "#ed254e",
"gitDecoration.stageDeletedResourceForeground": "#ed254e",
"gitDecoration.untrackedResourceForeground": "#c3c7d1",
"gitDecoration.ignoredResourceForeground": "#60646f",
"gitDecoration.conflictingResourceForeground": "#00c1e4",
"gitDecoration.submoduleResourceForeground": "#c74d89",
"settings.headerForeground": "#c3c7d1",
"settings.modifiedItemIndicator": "#00c1e4",
"settings.checkboxBackground": "#7cb7ff",
"settings.checkboxBorder": "#7cb7ff",
"settings.checkboxForeground": "#161925",
"settings.dropdownBackground": "#2f323e",
"settings.dropdownForeground": "#aaaeb8",
"settings.dropdownListBorder": "#474b56",
"settings.checkboxBackground": "#7cb7ff",
"settings.checkboxForeground": "#161925",
"settings.checkboxBorder": "#7cb7ff",
"settings.textInputBackground": "#2f323e",
"settings.textInputForeground": "#aaaeb8",
"settings.focusedRowBackground": "#161925",
"settings.headerForeground": "#c3c7d1",
"settings.modifiedItemIndicator": "#00c1e4",
"settings.numberInputBackground": "#2f323e",
"settings.numberInputForeground": "#aaaeb8",
"settings.focusedRowBackground": "#161925",
"notebook.focusedRowBorder": "#c3c7d1",
"notebook.rowHoverBackground": "#2f323e7f",
"breadcrumb.foreground": "#9295a0",
"breadcrumb.background": "#161925",
"breadcrumb.focusForeground": "#aaaeb8",
"breadcrumb.activeSelectionForeground": "#c3c7d1",
"breadcrumbPicker.background": "#161925",
"editor.snippetTabstopHighlightBackground": "#2f323e7f",
"editor.snippetFinalTabstopHighlightBackground": "#474b567f",
"settings.textInputBackground": "#2f323e",
"settings.textInputForeground": "#aaaeb8",
"statusBar.background": "#7cb7ff",
"statusBar.border": "#161925",
"statusBar.debuggingBackground": "#dcdfe4",
"statusBar.debuggingBorder": "#161925",
"statusBar.debuggingForeground": "#161925",
"statusBar.foreground": "#161925",
"statusBar.noFolderBackground": "#c3c7d1",
"statusBar.noFolderBorder": "#161925",
"statusBar.noFolderForeground": "#161925",
"statusBarItem.activeBackground": "#00c1e4",
"statusBarItem.errorBackground": "#ed254e",
"statusBarItem.errorForeground": "#161925",
"statusBarItem.hoverBackground": "#71f79f",
"statusBarItem.prominentBackground": "#00c1e4",
"statusBarItem.prominentHoverBackground": "#71f79f",
"statusBarItem.remoteBackground": "#00c1e4",
"statusBarItem.remoteForeground": "#161925",
"symbolIcon.arrayForeground": "#c74d89",
"symbolIcon.booleanForeground": "#c3c7d1",
"symbolIcon.classForeground": "#7cb7ff",
@ -411,6 +409,10 @@
"symbolIcon.interfaceForeground": "#ed254e",
"symbolIcon.keyForeground": "#f9dc5c",
"symbolIcon.keywordForeground": "#7cb7ff",
"titleBar.activeBackground": "#161925",
"titleBar.activeForeground": "#9295a0",
"titleBar.inactiveBackground": "#161925",
"titleBar.inactiveForeground": "#60646f",
"symbolIcon.methodForeground": "#00c1e4",
"symbolIcon.moduleForeground": "#00c1e4",
"symbolIcon.namespaceForeground": "#7cb7ff",
@ -428,66 +430,63 @@
"symbolIcon.typeParameterForeground": "#7cb7ff",
"symbolIcon.unitForeground": "#f9dc5c",
"symbolIcon.variableForeground": "#dcdfe4",
"debugIcon.breakpointForeground": "#ed254e",
"debugIcon.breakpointDisabledForeground": "#797c87",
"debugIcon.breakpointUnverifiedForeground": "#9295a0",
"debugIcon.breakpointCurrentStackframeForeground": "#71f79f",
"debugIcon.breakpointStackframeForeground": "#f9dc5c",
"debugIcon.startForeground": "#71f79f",
"debugIcon.pauseForeground": "#7cb7ff",
"debugIcon.stopForeground": "#ed254e",
"debugIcon.disconnectForeground": "#dcdfe4",
"debugIcon.restartForeground": "#c74d89",
"debugIcon.stepOverForeground": "#c3c7d1",
"debugIcon.stepIntoForeground": "#c3c7d1",
"debugIcon.stepOutForeground": "#c3c7d1",
"debugIcon.continueForeground": "#71f79f",
"debugIcon.stepBackForeground": "#c3c7d1",
"debugConsole.infoForeground": "#7cb7ff",
"debugConsole.warningForeground": "#dcdfe4",
"debugConsole.errorForeground": "#ed254e",
"debugConsole.sourceForeground": "#c3c7d1",
"debugConsoleInputIcon.foreground": "#797c87",
"notebook.cellBorderColor": "#2f323e3f",
"notebook.focusedEditorBorder": "#2f323e",
"notebookStatusSuccessIcon.foreground": "#71f79f",
"notebookStatusErrorIcon.foreground": "#ed254e",
"notebookStatusRunningIcon.foreground": "#7cb7ff",
"notebook.outputContainerBackgroundColor": "#161925",
"notebook.cellToolbarSeparator": "#2f323e3f",
"notebook.focusedCellBackground": "#2f323e7f",
"notebook.cellHoverBackground": "#2f323e3f",
"notebook.focusedCellBorder": "#c3c7d1",
"notebook.focusedCellShadow": "#0000003f",
"notebook.selectedCellBorder": "#797c87",
"notebook.cellStatusBarItemHoverBackground": "#2f323e3f",
"notebook.cellInsertionIndicator": "#71f79f",
"notebookScrollbarSlider.background": "#60646f7f",
"notebookScrollbarSlider.hoverBackground": "#797c877f",
"notebookScrollbarSlider.activeBackground": "#9295a07f",
"notebook.symbolHighlightBackground": "#c3c7d13f",
"notebook.inactiveFocusedCellBorder": "#9295a0",
"charts.foreground": "#aaaeb8",
"charts.lines": "#60646f",
"charts.red": "#ed254e",
"charts.blue": "#7cb7ff",
"charts.yellow": "#f9dc5c",
"charts.orange": "#dcdfe4",
"charts.green": "#71f79f",
"charts.purple": "#c3c7d1"
"terminal.ansiBlack": "#161925",
"terminal.ansiBlue": "#7cb7ff",
"terminal.ansiBrightBlack": "#2f323e",
"terminal.ansiBrightBlue": "#7cb7ff",
"terminal.ansiBrightCyan": "#00c1e4",
"terminal.ansiBrightGreen": "#00c1e4",
"terminal.ansiBrightMagenta": "#c74d89",
"terminal.ansiBrightRed": "#dcdfe4",
"terminal.ansiBrightWhite": "#c3c7d1",
"terminal.ansiBrightYellow": "#f9dc5c",
"terminal.ansiCyan": "#00c1e4",
"terminal.ansiGreen": "#71f79f",
"terminal.background": "#161925",
"terminal.foreground": "#aaaeb8",
"terminal.ansiMagenta": "#c74d89",
"terminal.ansiRed": "#ed254e",
"terminal.ansiWhite": "#aaaeb8",
"terminal.ansiYellow": "#f9dc5c",
"terminal.selectionBackground": "#7cb7ff7f",
"terminalCursor.background": "#2f323e",
"terminalCursor.foreground": "#9295a0",
"testing.iconErrored": "#ed254e",
"testing.iconFailed": "#dcdfe4",
"testing.iconPassed": "#71f79f",
"testing.iconQueued": "#00c1e4",
"testing.iconSkipped": "#797c87",
"testing.iconUnset": "#9295a0",
"testing.message.error.decorationForeground": "#ed254e",
"testing.message.error.lineBackground": "#ed254e3f",
"testing.message.hint.decorationForeground": "#c74d89",
"testing.message.hint.lineBackground": "#c74d893f",
"testing.message.info.decorationForeground": "#7cb7ff",
"testing.message.info.lineBackground": "#7cb7ff3f",
"testing.message.warning.decorationForeground": "#dcdfe4",
"testing.message.warning.lineBackground": "#dcdfe43f",
"testing.peekBorder": "#60646f",
"testing.runAction": "#7cb7ff",
"walkThrough.embeddedEditorBackground": "#161925",
"welcomePage.background": "#161925",
"welcomePage.buttonBackground": "#2f323e",
"welcomePage.buttonHoverBackground": "#474b56",
"welcomePage.progress.background": "#7cb7ff",
"welcomePage.progress.foreground": "#161925"
},
"name": "Betelgeuse Dark",
"tokenColors": [
{
"settings": {
"background": "#161925",
"foreground": "#aaaeb8",
"selectionBorder": "#9295a0",
"findHighlight": "#f9dc5c",
"findHighlightForeground": "#161925",
"activeGuide": "#dcdfe4",
"background": "#161925",
"bracketsContentsForeground": "#aaaeb87F",
"bracketsForeground": "#aaaeb87F",
"bracketsOptions": "stippled_underline",
"bracketsContentsForeground": "#aaaeb87F",
"findHighlight": "#f9dc5c",
"findHighlightForeground": "#161925",
"foreground": "#aaaeb8",
"selectionBorder": "#9295a0",
"tagsOptions": "stippled_underline"
}
},
@ -610,5 +609,6 @@
"foreground": "#c74d89"
}
}
]
],
"type": "dark"
}

View file

@ -1,13 +1,148 @@
{
"name": "Betelgeuse Light",
"type": "light",
"colors": {
"activityBar.activeBackground": "#e5e6e733",
"activityBar.activeBorder": "#666970",
"activityBar.activeFocusBorder": "#4c5058",
"activityBar.background": "#ffffff",
"activityBar.border": "#ffffff",
"activityBar.dropBorder": "#a0dbff",
"activityBar.foreground": "#7f8288",
"activityBar.inactiveForeground": "#999ba0",
"activityBarBadge.background": "#4c5058",
"activityBarBadge.foreground": "#ffffff",
"badge.background": "#4c5058",
"badge.foreground": "#ffffff",
"breadcrumb.activeSelectionForeground": "#4c5058",
"breadcrumb.background": "#ffffff",
"breadcrumb.focusForeground": "#666970",
"breadcrumb.foreground": "#7f8288",
"breadcrumbPicker.background": "#ffffff",
"button.background": "#a0dbff",
"button.foreground": "#ffffff",
"button.hoverBackground": "#24e5ff",
"button.secondaryBackground": "#666970",
"button.secondaryForeground": "#ffffff",
"button.secondaryHoverBackground": "#7f8288",
"charts.blue": "#a0dbff",
"charts.foreground": "#666970",
"charts.green": "#95ffc3",
"charts.lines": "#b2b4b7",
"charts.orange": "#dcdfe4",
"charts.purple": "#4c5058",
"charts.red": "#ff4972",
"charts.yellow": "#ffff80",
"checkbox.background": "#a0dbff",
"checkbox.border": "#e5e6e7",
"checkbox.foreground": "#ffffff",
"debugConsole.errorForeground": "#ff4972",
"debugConsole.infoForeground": "#a0dbff",
"debugConsole.sourceForeground": "#4c5058",
"debugConsole.warningForeground": "#dcdfe4",
"debugConsoleInputIcon.foreground": "#999ba0",
"debugExceptionWidget.background": "#e5e6e7",
"debugExceptionWidget.border": "#e5e6e7",
"debugIcon.breakpointCurrentStackframeForeground": "#95ffc3",
"debugIcon.breakpointDisabledForeground": "#999ba0",
"debugIcon.breakpointForeground": "#ff4972",
"debugIcon.breakpointStackframeForeground": "#ffff80",
"debugIcon.breakpointUnverifiedForeground": "#7f8288",
"debugIcon.continueForeground": "#95ffc3",
"debugIcon.disconnectForeground": "#dcdfe4",
"debugIcon.pauseForeground": "#a0dbff",
"debugIcon.restartForeground": "#eb71ad",
"debugIcon.startForeground": "#95ffc3",
"debugIcon.stepBackForeground": "#4c5058",
"debugIcon.stepIntoForeground": "#4c5058",
"debugIcon.stepOutForeground": "#4c5058",
"debugIcon.stepOverForeground": "#4c5058",
"debugIcon.stopForeground": "#ff4972",
"debugTokenExpression.boolean": "#4c5058",
"debugTokenExpression.error": "#ff4972",
"debugTokenExpression.name": "#a0dbff",
"debugTokenExpression.number": "#eb71ad",
"debugTokenExpression.string": "#95ffc3",
"debugTokenExpression.value": "#4c5058",
"debugToolBar.background": "#e5e6e7",
"debugToolBar.border": "#cccdcf",
"debugView.exceptionLabelBackground": "#e5e6e7",
"debugView.exceptionLabelForeground": "#ffff80",
"debugView.stateLabelBackground": "#e5e6e7",
"debugView.stateLabelForeground": "#a0dbff",
"debugView.valueChangedHighlight": "#ffff8033",
"descriptionForeground": "#666970",
"diffEditor.border": "#e5e6e7",
"diffEditor.diagonalFill": "#e5e6e77f",
"diffEditor.insertedTextBackground": "#95ffc320",
"diffEditor.removedTextBackground": "#ff497220",
"dropdown.background": "#e5e6e7",
"dropdown.border": "#e5e6e7",
"dropdown.foreground": "#666970",
"dropdown.listBackground": "#e5e6e7",
"editor.background": "#ffffff",
"editor.findMatchBackground": "#ffff803f",
"editor.findMatchHighlightBackground": "#ffff8033",
"editor.findRangeHighlightBackground": "#e5e6e7",
"editor.focusedStackFrameHighlightBackground": "#95ffc33f",
"editor.foldBackground": "#e5e6e766",
"editor.foreground": "#4c5058",
"editor.hoverHighlightBackground": "#cccdcf7f",
"editor.inactiveSelectionBackground": "#a0dbff33",
"editor.lineHighlightBackground": "#ffffff",
"editor.lineHighlightBorder": "#e5e6e7",
"editor.rangeHighlightBackground": "#ffff8033",
"editor.selectionBackground": "#a0dbff33",
"editor.selectionForeground": "#4c5058",
"editor.selectionHighlightBackground": "#e5e6e7",
"editor.snippetFinalTabstopHighlightBackground": "#cccdcf7f",
"editor.snippetTabstopHighlightBackground": "#e5e6e77f",
"editor.stackFrameHighlightBackground": "#24e5ff3f",
"editor.symbolHighlightBackground": "#4c505833",
"editor.wordHighlightBackground": "#4c505833",
"editor.wordHighlightStrongBackground": "#eb71ad33",
"editorBracketHighlight.foreground1": "#4c5058",
"editorBracketHighlight.foreground2": "#ffff80",
"editorBracketHighlight.foreground3": "#24e5ff",
"editorBracketHighlight.foreground4": "#4c5058",
"editorBracketHighlight.foreground5": "#95ffc3",
"editorBracketHighlight.foreground6": "#a0dbff",
"editorBracketHighlight.unexpectedBracket": "#ff4972",
"editorBracketMatch.background": "#e5e6e7",
"editorBracketMatch.border": "#cccdcf",
"editorCodeLens.foreground": "#7f8288",
"editorCursor.background": "#ffffff",
"editorCursor.foreground": "#4c5058",
"editorError.border": "#4c5058",
"editorError.foreground": "#ff4972",
"editorGroup.border": "#e5e6e7",
"editorGroup.dropBackground": "#cccdcf7f",
"editorGroup.emptyBackground": "#ffffff",
"editorGroup.focusedEmptyBorder": "#e5e6e7",
"editorGroupHeader.border": "#ffffff",
"editorGroupHeader.noTabsBackground": "#ffffff",
"editorGroupHeader.tabsBackground": "#ffffff",
"editorGroupHeader.tabsBorder": "#ffffff",
"editorGutter.addedBackground": "#95ffc3",
"editorGutter.background": "#ffffff",
"editorGutter.commentRangeForeground": "#b2b4b7",
"editorGutter.deletedBackground": "#ff4972",
"editorGutter.foldingControlForeground": "#7f8288",
"editorGutter.modifiedBackground": "#ffff80",
"editorHint.border": "#999ba0",
"editorHint.foreground": "#eb71ad",
"editorHoverWidget.background": "#e5e6e7",
"editorHoverWidget.border": "#e5e6e7",
"editorHoverWidget.foreground": "#666970",
"editorHoverWidget.statusBarBackground": "#a0dbff33",
"editorIndentGuide.activeBackground": "#cccdcf",
"editorIndentGuide.background": "#e5e6e7",
"editorInfo.border": "#7f8288",
"editorInfo.foreground": "#a0dbff",
"editorLightBulb.foreground": "#ffff80",
"errorForeground": "#ff4972",
"focusBorder": "#4c5058",
"foreground": "#4c5058",
"widget.shadow": "#4c505866",
"selection.background": "#cccdcf",
"descriptionForeground": "#666970",
"errorForeground": "#ff4972",
"icon.foreground": "#666970",
"sash.hoverBorder": "#a0dbff",
"textBlockQuote.background": "#e5e6e7",
@ -17,19 +152,19 @@
"textLink.foreground": "#a0dbff",
"textPreformat.foreground": "#dcdfe4",
"textSeparator.foreground": "#999ba0",
"button.background": "#a0dbff",
"button.foreground": "#ffffff",
"button.hoverBackground": "#24e5ff",
"button.secondaryForeground": "#ffffff",
"button.secondaryBackground": "#666970",
"button.secondaryHoverBackground": "#7f8288",
"checkbox.background": "#a0dbff",
"checkbox.foreground": "#ffffff",
"checkbox.border": "#e5e6e7",
"dropdown.background": "#e5e6e7",
"dropdown.listBackground": "#e5e6e7",
"dropdown.border": "#e5e6e7",
"dropdown.foreground": "#666970",
"editorLightBulbAutoFix.foreground": "#a0dbff",
"editorLineNumber.activeForeground": "#999ba0",
"editorLineNumber.foreground": "#cccdcf",
"editorLink.activeForeground": "#24e5ff",
"editorMarkerNavigation.background": "#e5e6e7",
"editorMarkerNavigationError.background": "#ff4972",
"editorMarkerNavigationInfo.background": "#a0dbff",
"editorMarkerNavigationWarning.background": "#dcdfe4",
"editorOverviewRuler.addedForeground": "#95ffc37f",
"editorOverviewRuler.border": "#e5e6e7",
"editorOverviewRuler.bracketMatchForeground": "#b2b4b7",
"editorOverviewRuler.commonContentForeground": "#4c5058",
"editorOverviewRuler.currentContentForeground": "#24e5ff",
"input.background": "#e5e6e7",
"input.border": "#e5e6e7",
"input.foreground": "#666970",
@ -38,24 +173,26 @@
"inputOption.activeBorder": "#24e5ff",
"inputOption.activeForeground": "#4c5058",
"inputValidation.errorBackground": "#e5e6e7",
"inputValidation.errorForeground": "#ff4972",
"inputValidation.errorBorder": "#ff4972",
"inputValidation.errorForeground": "#ff4972",
"inputValidation.infoBackground": "#e5e6e7",
"inputValidation.infoForeground": "#a0dbff",
"inputValidation.infoBorder": "#a0dbff",
"inputValidation.infoForeground": "#a0dbff",
"inputValidation.warningBackground": "#e5e6e7",
"inputValidation.warningForeground": "#dcdfe4",
"inputValidation.warningBorder": "#dcdfe4",
"inputValidation.warningForeground": "#dcdfe4",
"scrollbar.shadow": "#4c505866",
"scrollbarSlider.activeBackground": "#7f82887f",
"scrollbarSlider.background": "#b2b4b77f",
"scrollbarSlider.hoverBackground": "#999ba07f",
"badge.foreground": "#ffffff",
"badge.background": "#4c5058",
"progressBar.background": "#95ffc3",
"list.activeSelectionBackground": "#4c505833",
"list.activeSelectionForeground": "#4c5058",
"list.deemphasizedForeground": "#999ba0",
"list.dropBackground": "#e5e6e7",
"progressBar.background": "#95ffc3",
"list.errorForeground": "#ff4972",
"list.filterMatchBackground": "#ffff8033",
"list.filterMatchBorder": "#ffff8033",
"list.focusBackground": "#b2b4b73f",
"list.focusForeground": "#4c5058",
"list.highlightForeground": "#ffff80",
@ -65,25 +202,25 @@
"list.inactiveSelectionForeground": "#666970",
"list.inactiveFocusBackground": "#e5e6e73f",
"list.invalidItemForeground": "#ff4972",
"list.errorForeground": "#ff4972",
"list.warningForeground": "#ffff80",
"listFilterWidget.background": "#e5e6e7",
"listFilterWidget.outline": "#a0dbff",
"listFilterWidget.noMatchesOutline": "#ff4972",
"list.filterMatchBackground": "#ffff8033",
"list.filterMatchBorder": "#ffff8033",
"listFilterWidget.outline": "#a0dbff",
"tree.indentGuidesStroke": "#e5e6e7",
"list.deemphasizedForeground": "#999ba0",
"activityBar.background": "#ffffff",
"activityBar.dropBorder": "#a0dbff",
"activityBar.foreground": "#7f8288",
"activityBar.inactiveForeground": "#999ba0",
"activityBar.border": "#ffffff",
"activityBarBadge.background": "#4c5058",
"activityBarBadge.foreground": "#ffffff",
"activityBar.activeBorder": "#666970",
"activityBar.activeBackground": "#e5e6e733",
"activityBar.activeFocusBorder": "#4c5058",
"editorOverviewRuler.deletedForeground": "#ff49727f",
"editorOverviewRuler.errorForeground": "#ff49727f",
"editorOverviewRuler.findMatchForeground": "#ffff80bf",
"editorOverviewRuler.incomingContentForeground": "#a0dbff",
"editorOverviewRuler.infoForeground": "#a0dbff7f",
"editorOverviewRuler.modifiedForeground": "#ffff807f",
"editorOverviewRuler.rangeHighlightForeground": "#cccdcfbf",
"editorOverviewRuler.selectionHighlightForeground": "#e5e6e7bf",
"editorOverviewRuler.warningForeground": "#dcdfe47f",
"editorOverviewRuler.wordHighlightForeground": "#cccdcfbf",
"editorOverviewRuler.wordHighlightStrongForeground": "#b2b4b7bf",
"minimap.background": "#ffffff",
"minimap.errorHighlight": "#ff497280",
"minimap.findMatchHighlight": "#ffff80",
"sideBar.background": "#ffffff",
"sideBar.foreground": "#666970",
"sideBar.border": "#e5e6e7",
@ -92,140 +229,125 @@
"sideBarSectionHeader.background": "#cccdcf",
"sideBarSectionHeader.foreground": "#666970",
"sideBarSectionHeader.border": "#ffffff",
"minimap.findMatchHighlight": "#ffff80",
"minimap.selectionHighlight": "#a0dbff80",
"minimap.errorHighlight": "#ff497280",
"minimap.warningHighlight": "#dcdfe480",
"minimap.background": "#ffffff",
"minimapGutter.addedBackground": "#95ffc380",
"minimapGutter.deletedBackground": "#ff497280",
"minimapSlider.activeBackground": "#b2b4b733",
"minimapSlider.background": "#e5e6e733",
"minimapSlider.hoverBackground": "#cccdcf33",
"minimapSlider.activeBackground": "#b2b4b733",
"minimapGutter.addedBackground": "#95ffc380",
"minimapGutter.modifiedBackground": "#ffff8080",
"minimapGutter.deletedBackground": "#ff497280",
"editorGroup.border": "#e5e6e7",
"editorGroup.dropBackground": "#cccdcf7f",
"editorGroupHeader.noTabsBackground": "#ffffff",
"editorGroupHeader.tabsBackground": "#ffffff",
"editorGroupHeader.tabsBorder": "#ffffff",
"editorGroupHeader.border": "#ffffff",
"editorGroup.emptyBackground": "#ffffff",
"editorGroup.focusedEmptyBorder": "#e5e6e7",
"tab.activeBackground": "#ffffff",
"tab.unfocusedActiveBackground": "#ffffff",
"tab.activeForeground": "#666970",
"tab.border": "#ffffff",
"tab.lastPinnedBorder": "#eb71ad",
"tab.inactiveBackground": "#e5e6e7",
"tab.unfocusedInactiveBackground": "#e5e6e7",
"tab.inactiveForeground": "#b2b4b7",
"tab.unfocusedActiveForeground": "#b2b4b7",
"tab.unfocusedInactiveForeground": "#cccdcf",
"tab.hoverBackground": "#e5e6e780",
"tab.unfocusedHoverBackground": "#e5e6e780",
"tab.hoverForeground": "#7f8288",
"tab.unfocusedHoverForeground": "#999ba0",
"tab.activeModifiedBorder": "#ffff80",
"tab.inactiveModifiedBorder": "#ffff80",
"tab.unfocusedActiveModifiedBorder": "#ffff80",
"tab.unfocusedInactiveModifiedBorder": "#ffff80",
"editorPane.background": "#ffffff",
"editor.background": "#ffffff",
"editor.foreground": "#4c5058",
"editorLineNumber.foreground": "#cccdcf",
"editorLineNumber.activeForeground": "#999ba0",
"editorCursor.background": "#ffffff",
"editorCursor.foreground": "#4c5058",
"editor.selectionBackground": "#a0dbff33",
"editor.selectionForeground": "#4c5058",
"editor.inactiveSelectionBackground": "#a0dbff33",
"editor.selectionHighlightBackground": "#e5e6e7",
"editor.wordHighlightBackground": "#4c505833",
"editor.wordHighlightStrongBackground": "#eb71ad33",
"editor.findMatchBackground": "#ffff803f",
"editor.findMatchHighlightBackground": "#ffff8033",
"editor.findRangeHighlightBackground": "#e5e6e7",
"editor.hoverHighlightBackground": "#cccdcf7f",
"editor.lineHighlightBackground": "#ffffff",
"editor.lineHighlightBorder": "#e5e6e7",
"editorLink.activeForeground": "#24e5ff",
"editor.rangeHighlightBackground": "#ffff8033",
"editor.symbolHighlightBackground": "#4c505833",
"editorWhitespace.foreground": "#e5e6e7",
"editorIndentGuide.background": "#e5e6e7",
"editorIndentGuide.activeBackground": "#cccdcf",
"editorRuler.foreground": "#e5e6e7",
"editorCodeLens.foreground": "#7f8288",
"editorLightBulb.foreground": "#ffff80",
"editorLightBulbAutoFix.foreground": "#a0dbff",
"editorBracketMatch.background": "#e5e6e7",
"editorBracketMatch.border": "#cccdcf",
"editorBracketHighlight.foreground1": "#4c5058",
"editorBracketHighlight.foreground2": "#ffff80",
"editorBracketHighlight.foreground3": "#24e5ff",
"editorBracketHighlight.foreground4": "#4c5058",
"editorBracketHighlight.foreground5": "#95ffc3",
"editorBracketHighlight.foreground6": "#a0dbff",
"editorBracketHighlight.unexpectedBracket": "#ff4972",
"editor.foldBackground": "#e5e6e766",
"editorOverviewRuler.border": "#e5e6e7",
"editorOverviewRuler.findMatchForeground": "#ffff80bf",
"editorOverviewRuler.rangeHighlightForeground": "#cccdcfbf",
"editorOverviewRuler.selectionHighlightForeground": "#e5e6e7bf",
"editorOverviewRuler.wordHighlightForeground": "#cccdcfbf",
"editorOverviewRuler.wordHighlightStrongForeground": "#b2b4b7bf",
"editorOverviewRuler.modifiedForeground": "#ffff807f",
"editorOverviewRuler.addedForeground": "#95ffc37f",
"editorOverviewRuler.deletedForeground": "#ff49727f",
"editorOverviewRuler.errorForeground": "#ff49727f",
"editorOverviewRuler.warningForeground": "#dcdfe47f",
"editorOverviewRuler.infoForeground": "#a0dbff7f",
"editorOverviewRuler.bracketMatchForeground": "#b2b4b7",
"editorError.foreground": "#ff4972",
"editorError.border": "#4c5058",
"editorWarning.foreground": "#dcdfe4",
"editorWarning.border": "#666970",
"editorInfo.foreground": "#a0dbff",
"editorInfo.border": "#7f8288",
"editorHint.foreground": "#eb71ad",
"editorHint.border": "#999ba0",
"problemsErrorIcon.foreground": "#ff4972",
"problemsWarningIcon.foreground": "#dcdfe4",
"problemsInfoIcon.foreground": "#a0dbff",
"editorUnnecessaryCode.opacity": "#0000007f",
"editorGutter.background": "#ffffff",
"editorGutter.modifiedBackground": "#ffff80",
"editorGutter.addedBackground": "#95ffc3",
"editorGutter.deletedBackground": "#ff4972",
"editorGutter.commentRangeForeground": "#b2b4b7",
"editorGutter.foldingControlForeground": "#7f8288",
"diffEditor.insertedTextBackground": "#95ffc320",
"diffEditor.removedTextBackground": "#ff497220",
"diffEditor.border": "#e5e6e7",
"diffEditor.diagonalFill": "#e5e6e77f",
"editorWidget.foreground": "#666970",
"editorWidget.background": "#e5e6e7",
"editorWidget.border": "#e5e6e7",
"editorWidget.resizeBorder": "#a0dbff",
"editorSuggestWidget.background": "#e5e6e7",
"editorSuggestWidget.border": "#e5e6e7",
"editorSuggestWidget.foreground": "#666970",
"editorSuggestWidget.highlightForeground": "#eb71ad",
"editorSuggestWidget.selectedBackground": "#cccdcf",
"editorHoverWidget.foreground": "#666970",
"editorHoverWidget.background": "#e5e6e7",
"editorHoverWidget.border": "#e5e6e7",
"editorHoverWidget.statusBarBackground": "#a0dbff33",
"debugExceptionWidget.background": "#e5e6e7",
"debugExceptionWidget.border": "#e5e6e7",
"editorMarkerNavigation.background": "#e5e6e7",
"editorMarkerNavigationError.background": "#ff4972",
"editorMarkerNavigationWarning.background": "#dcdfe4",
"editorMarkerNavigationInfo.background": "#a0dbff",
"editorUnnecessaryCode.opacity": "#0000007f",
"tab.activeBackground": "#ffffff",
"tab.activeForeground": "#666970",
"tab.activeModifiedBorder": "#ffff80",
"tab.border": "#ffffff",
"tab.unfocusedActiveBackground": "#ffffff",
"tab.inactiveBackground": "#e5e6e7",
"tab.inactiveForeground": "#b2b4b7",
"tab.lastPinnedBorder": "#eb71ad",
"tab.unfocusedInactiveBackground": "#e5e6e7",
"tab.unfocusedActiveForeground": "#b2b4b7",
"tab.unfocusedInactiveForeground": "#cccdcf",
"tab.hoverBackground": "#e5e6e780",
"tab.hoverForeground": "#7f8288",
"tab.unfocusedHoverBackground": "#e5e6e780",
"tab.unfocusedHoverForeground": "#999ba0",
"tab.inactiveModifiedBorder": "#ffff80",
"tab.unfocusedActiveModifiedBorder": "#ffff80",
"tab.unfocusedInactiveModifiedBorder": "#ffff80",
"editorWarning.border": "#666970",
"editorWarning.foreground": "#dcdfe4",
"editorWhitespace.foreground": "#e5e6e7",
"editorWidget.background": "#e5e6e7",
"editorWidget.border": "#e5e6e7",
"editorWidget.foreground": "#666970",
"editorWidget.resizeBorder": "#a0dbff",
"extensionBadge.remoteBackground": "#eb71ad",
"extensionBadge.remoteForeground": "#ffffff",
"extensionButton.prominentBackground": "#a0dbff",
"extensionButton.prominentForeground": "#ffffff",
"extensionButton.prominentHoverBackground": "#24e5ff",
"gitDecoration.addedResourceForeground": "#95ffc3",
"gitDecoration.conflictingResourceForeground": "#24e5ff",
"gitDecoration.deletedResourceForeground": "#ff4972",
"gitDecoration.ignoredResourceForeground": "#b2b4b7",
"gitDecoration.modifiedResourceForeground": "#ffff80",
"gitDecoration.stageDeletedResourceForeground": "#ff4972",
"gitDecoration.stageModifiedResourceForeground": "#24e5ff",
"gitDecoration.submoduleResourceForeground": "#eb71ad",
"gitDecoration.untrackedResourceForeground": "#4c5058",
"imagePreview.border": "#e5e6e7",
"menu.background": "#ffffff",
"menu.foreground": "#666970",
"menu.selectionBackground": "#e5e6e7",
"menu.selectionForeground": "#4c5058",
"menu.separatorBackground": "#cccdcf",
"menubar.selectionBackground": "#e5e6e7",
"menubar.selectionForeground": "#4c5058",
"merge.border": "#999ba0",
"merge.commonContentBackground": "#4c50584c",
"merge.commonHeaderBackground": "#4c50584c",
"merge.currentContentBackground": "#24e5ff4c",
"merge.currentHeaderBackground": "#24e5ff4c",
"merge.incomingContentBackground": "#a0dbff4c",
"merge.incomingHeaderBackground": "#a0dbff4c",
"notebook.cellBorderColor": "#e5e6e73f",
"notebook.cellHoverBackground": "#e5e6e73f",
"notebook.cellInsertionIndicator": "#95ffc3",
"notebook.cellStatusBarItemHoverBackground": "#e5e6e73f",
"notebook.cellToolbarSeparator": "#e5e6e73f",
"notebook.focusedCellBackground": "#e5e6e77f",
"notebook.focusedCellBorder": "#4c5058",
"notebook.focusedCellShadow": "#0000003f",
"notebook.focusedEditorBorder": "#e5e6e7",
"notebook.focusedRowBorder": "#4c5058",
"notebook.inactiveFocusedCellBorder": "#7f8288",
"notebook.outputContainerBackgroundColor": "#ffffff",
"notebook.rowHoverBackground": "#e5e6e77f",
"notebook.selectedCellBorder": "#999ba0",
"notebook.symbolHighlightBackground": "#4c50583f",
"problemsErrorIcon.foreground": "#ff4972",
"problemsInfoIcon.foreground": "#a0dbff",
"problemsWarningIcon.foreground": "#dcdfe4",
"notebookScrollbarSlider.activeBackground": "#7f82887f",
"notebookScrollbarSlider.background": "#b2b4b77f",
"notebookScrollbarSlider.hoverBackground": "#999ba07f",
"notebookStatusErrorIcon.foreground": "#ff4972",
"notebookStatusRunningIcon.foreground": "#a0dbff",
"notebookStatusSuccessIcon.foreground": "#95ffc3",
"notificationCenterHeader.background": "#cccdcf",
"notificationCenterHeader.foreground": "#666970",
"notificationLink.foreground": "#a0dbff",
"notificationToast.border": "#b2b4b7",
"notifications.background": "#e5e6e7",
"notifications.border": "#b2b4b7",
"notifications.foreground": "#4c5058",
"notificationsErrorIcon.foreground": "#ff4972",
"notificationsInfoIcon.foreground": "#a0dbff",
"notificationsWarningIcon.foreground": "#dcdfe4",
"panel.background": "#ffffff",
"panel.border": "#e5e6e7",
"panel.dropBorder": "#a0dbff",
"panelSection.border": "#e5e6e7",
"panelSection.dropBackground": "#e5e6e73f",
"panelSectionHeader.background": "#cccdcf",
"panelSectionHeader.border": "#ffffff",
"panelSectionHeader.foreground": "#666970",
"panelTitle.activeBorder": "#b2b4b7",
"panelTitle.activeForeground": "#666970",
"panelTitle.inactiveForeground": "#999ba0",
"peekView.border": "#eb71ad",
"peekViewEditor.background": "#e5e6e77f",
"peekViewEditorGutter.background": "#e5e6e77f",
"peekViewEditor.matchHighlightBackground": "#ffff807f",
"peekViewEditorGutter.background": "#e5e6e77f",
"peekViewResult.background": "#e5e6e7",
"peekViewResult.fileForeground": "#666970",
"peekViewResult.lineForeground": "#cccdcf",
@ -235,166 +357,42 @@
"peekViewTitle.background": "#e5e6e7",
"peekViewTitleDescription.foreground": "#7f8288",
"peekViewTitleLabel.foreground": "#4c5058",
"merge.currentHeaderBackground": "#24e5ff4c",
"merge.currentContentBackground": "#24e5ff4c",
"merge.incomingHeaderBackground": "#a0dbff4c",
"merge.incomingContentBackground": "#a0dbff4c",
"merge.border": "#999ba0",
"merge.commonContentBackground": "#4c50584c",
"merge.commonHeaderBackground": "#4c50584c",
"editorOverviewRuler.currentContentForeground": "#24e5ff",
"editorOverviewRuler.incomingContentForeground": "#a0dbff",
"editorOverviewRuler.commonContentForeground": "#4c5058",
"panel.background": "#ffffff",
"panel.border": "#e5e6e7",
"panel.dropBorder": "#a0dbff",
"panelTitle.activeBorder": "#b2b4b7",
"panelTitle.activeForeground": "#666970",
"panelTitle.inactiveForeground": "#999ba0",
"panelSection.border": "#e5e6e7",
"panelSection.dropBackground": "#e5e6e73f",
"panelSectionHeader.background": "#cccdcf",
"panelSectionHeader.foreground": "#666970",
"panelSectionHeader.border": "#ffffff",
"imagePreview.border": "#e5e6e7",
"statusBar.background": "#a0dbff",
"statusBar.foreground": "#ffffff",
"statusBar.border": "#ffffff",
"statusBar.debuggingBackground": "#dcdfe4",
"statusBar.debuggingForeground": "#ffffff",
"statusBar.debuggingBorder": "#ffffff",
"statusBar.noFolderBackground": "#4c5058",
"statusBar.noFolderForeground": "#ffffff",
"statusBar.noFolderBorder": "#ffffff",
"statusBarItem.activeBackground": "#24e5ff",
"statusBarItem.hoverBackground": "#95ffc3",
"statusBarItem.prominentBackground": "#24e5ff",
"statusBarItem.prominentHoverBackground": "#95ffc3",
"statusBarItem.remoteBackground": "#24e5ff",
"statusBarItem.remoteForeground": "#ffffff",
"statusBarItem.errorBackground": "#ff4972",
"statusBarItem.errorForeground": "#ffffff",
"titleBar.activeBackground": "#ffffff",
"titleBar.activeForeground": "#7f8288",
"titleBar.inactiveBackground": "#ffffff",
"titleBar.inactiveForeground": "#b2b4b7",
"menubar.selectionForeground": "#4c5058",
"menubar.selectionBackground": "#e5e6e7",
"menu.foreground": "#666970",
"menu.background": "#ffffff",
"menu.selectionForeground": "#4c5058",
"menu.selectionBackground": "#e5e6e7",
"menu.separatorBackground": "#cccdcf",
"notificationCenterHeader.foreground": "#666970",
"notificationCenterHeader.background": "#cccdcf",
"notificationToast.border": "#b2b4b7",
"notifications.foreground": "#4c5058",
"notifications.background": "#e5e6e7",
"notifications.border": "#b2b4b7",
"notificationLink.foreground": "#a0dbff",
"notificationsErrorIcon.foreground": "#ff4972",
"notificationsWarningIcon.foreground": "#dcdfe4",
"notificationsInfoIcon.foreground": "#a0dbff",
"extensionButton.prominentForeground": "#ffffff",
"extensionButton.prominentBackground": "#a0dbff",
"extensionButton.prominentHoverBackground": "#24e5ff",
"extensionBadge.remoteBackground": "#eb71ad",
"extensionBadge.remoteForeground": "#ffffff",
"pickerGroup.border": "#cccdcf",
"pickerGroup.foreground": "#999ba0",
"quickInput.background": "#e5e6e7",
"quickInput.foreground": "#4c5058",
"quickInputTitle.background": "#cccdcf",
"terminal.background": "#ffffff",
"terminal.foreground": "#666970",
"terminal.ansiBlack": "#ffffff",
"terminal.ansiBlue": "#a0dbff",
"terminal.ansiBrightBlack": "#e5e6e7",
"terminal.ansiBrightBlue": "#a0dbff",
"terminal.ansiBrightCyan": "#24e5ff",
"terminal.ansiBrightGreen": "#24e5ff",
"terminal.ansiBrightMagenta": "#eb71ad",
"terminal.ansiBrightRed": "#dcdfe4",
"terminal.ansiBrightWhite": "#4c5058",
"terminal.ansiBrightYellow": "#ffff80",
"terminal.ansiCyan": "#24e5ff",
"terminal.ansiGreen": "#95ffc3",
"terminal.ansiMagenta": "#eb71ad",
"terminal.ansiRed": "#ff4972",
"terminal.ansiWhite": "#666970",
"terminal.ansiYellow": "#ffff80",
"terminal.selectionBackground": "#a0dbff7f",
"terminalCursor.background": "#e5e6e7",
"terminalCursor.foreground": "#7f8288",
"debugToolBar.background": "#e5e6e7",
"debugToolBar.border": "#cccdcf",
"editor.stackFrameHighlightBackground": "#24e5ff3f",
"editor.focusedStackFrameHighlightBackground": "#95ffc33f",
"debugView.exceptionLabelForeground": "#ffff80",
"debugView.exceptionLabelBackground": "#e5e6e7",
"debugView.stateLabelForeground": "#a0dbff",
"debugView.stateLabelBackground": "#e5e6e7",
"debugView.valueChangedHighlight": "#ffff8033",
"debugTokenExpression.name": "#a0dbff",
"debugTokenExpression.value": "#4c5058",
"debugTokenExpression.string": "#95ffc3",
"debugTokenExpression.boolean": "#4c5058",
"debugTokenExpression.number": "#eb71ad",
"debugTokenExpression.error": "#ff4972",
"testing.iconFailed": "#dcdfe4",
"testing.iconErrored": "#ff4972",
"testing.iconPassed": "#95ffc3",
"testing.runAction": "#a0dbff",
"testing.iconQueued": "#24e5ff",
"testing.iconUnset": "#7f8288",
"testing.iconSkipped": "#999ba0",
"testing.peekBorder": "#b2b4b7",
"testing.message.error.decorationForeground": "#ff4972",
"testing.message.error.lineBackground": "#ff49723f",
"testing.message.warning.decorationForeground": "#dcdfe4",
"testing.message.warning.lineBackground": "#dcdfe43f",
"testing.message.info.decorationForeground": "#a0dbff",
"testing.message.info.lineBackground": "#a0dbff3f",
"testing.message.hint.decorationForeground": "#eb71ad",
"testing.message.hint.lineBackground": "#eb71ad3f",
"welcomePage.background": "#ffffff",
"welcomePage.buttonBackground": "#e5e6e7",
"welcomePage.buttonHoverBackground": "#cccdcf",
"welcomePage.progress.background": "#a0dbff",
"welcomePage.progress.foreground": "#ffffff",
"walkThrough.embeddedEditorBackground": "#ffffff",
"scm.providerBorder": "#cccdcf",
"gitDecoration.addedResourceForeground": "#95ffc3",
"gitDecoration.modifiedResourceForeground": "#ffff80",
"gitDecoration.stageModifiedResourceForeground": "#24e5ff",
"gitDecoration.deletedResourceForeground": "#ff4972",
"gitDecoration.stageDeletedResourceForeground": "#ff4972",
"gitDecoration.untrackedResourceForeground": "#4c5058",
"gitDecoration.ignoredResourceForeground": "#b2b4b7",
"gitDecoration.conflictingResourceForeground": "#24e5ff",
"gitDecoration.submoduleResourceForeground": "#eb71ad",
"settings.headerForeground": "#4c5058",
"settings.modifiedItemIndicator": "#24e5ff",
"settings.checkboxBackground": "#a0dbff",
"settings.checkboxBorder": "#a0dbff",
"settings.checkboxForeground": "#ffffff",
"settings.dropdownBackground": "#e5e6e7",
"settings.dropdownForeground": "#666970",
"settings.dropdownListBorder": "#cccdcf",
"settings.checkboxBackground": "#a0dbff",
"settings.checkboxForeground": "#ffffff",
"settings.checkboxBorder": "#a0dbff",
"settings.textInputBackground": "#e5e6e7",
"settings.textInputForeground": "#666970",
"settings.focusedRowBackground": "#ffffff",
"settings.headerForeground": "#4c5058",
"settings.modifiedItemIndicator": "#24e5ff",
"settings.numberInputBackground": "#e5e6e7",
"settings.numberInputForeground": "#666970",
"settings.focusedRowBackground": "#ffffff",
"notebook.focusedRowBorder": "#4c5058",
"notebook.rowHoverBackground": "#e5e6e77f",
"breadcrumb.foreground": "#7f8288",
"breadcrumb.background": "#ffffff",
"breadcrumb.focusForeground": "#666970",
"breadcrumb.activeSelectionForeground": "#4c5058",
"breadcrumbPicker.background": "#ffffff",
"editor.snippetTabstopHighlightBackground": "#e5e6e77f",
"editor.snippetFinalTabstopHighlightBackground": "#cccdcf7f",
"settings.textInputBackground": "#e5e6e7",
"settings.textInputForeground": "#666970",
"statusBar.background": "#a0dbff",
"statusBar.border": "#ffffff",
"statusBar.debuggingBackground": "#dcdfe4",
"statusBar.debuggingBorder": "#ffffff",
"statusBar.debuggingForeground": "#ffffff",
"statusBar.foreground": "#ffffff",
"statusBar.noFolderBackground": "#4c5058",
"statusBar.noFolderBorder": "#ffffff",
"statusBar.noFolderForeground": "#ffffff",
"statusBarItem.activeBackground": "#24e5ff",
"statusBarItem.errorBackground": "#ff4972",
"statusBarItem.errorForeground": "#ffffff",
"statusBarItem.hoverBackground": "#95ffc3",
"statusBarItem.prominentBackground": "#24e5ff",
"statusBarItem.prominentHoverBackground": "#95ffc3",
"statusBarItem.remoteBackground": "#24e5ff",
"statusBarItem.remoteForeground": "#ffffff",
"symbolIcon.arrayForeground": "#eb71ad",
"symbolIcon.booleanForeground": "#4c5058",
"symbolIcon.classForeground": "#a0dbff",
@ -411,6 +409,10 @@
"symbolIcon.interfaceForeground": "#ff4972",
"symbolIcon.keyForeground": "#ffff80",
"symbolIcon.keywordForeground": "#a0dbff",
"titleBar.activeBackground": "#ffffff",
"titleBar.activeForeground": "#7f8288",
"titleBar.inactiveBackground": "#ffffff",
"titleBar.inactiveForeground": "#b2b4b7",
"symbolIcon.methodForeground": "#24e5ff",
"symbolIcon.moduleForeground": "#24e5ff",
"symbolIcon.namespaceForeground": "#a0dbff",
@ -428,66 +430,63 @@
"symbolIcon.typeParameterForeground": "#a0dbff",
"symbolIcon.unitForeground": "#ffff80",
"symbolIcon.variableForeground": "#dcdfe4",
"debugIcon.breakpointForeground": "#ff4972",
"debugIcon.breakpointDisabledForeground": "#999ba0",
"debugIcon.breakpointUnverifiedForeground": "#7f8288",
"debugIcon.breakpointCurrentStackframeForeground": "#95ffc3",
"debugIcon.breakpointStackframeForeground": "#ffff80",
"debugIcon.startForeground": "#95ffc3",
"debugIcon.pauseForeground": "#a0dbff",
"debugIcon.stopForeground": "#ff4972",
"debugIcon.disconnectForeground": "#dcdfe4",
"debugIcon.restartForeground": "#eb71ad",
"debugIcon.stepOverForeground": "#4c5058",
"debugIcon.stepIntoForeground": "#4c5058",
"debugIcon.stepOutForeground": "#4c5058",
"debugIcon.continueForeground": "#95ffc3",
"debugIcon.stepBackForeground": "#4c5058",
"debugConsole.infoForeground": "#a0dbff",
"debugConsole.warningForeground": "#dcdfe4",
"debugConsole.errorForeground": "#ff4972",
"debugConsole.sourceForeground": "#4c5058",
"debugConsoleInputIcon.foreground": "#999ba0",
"notebook.cellBorderColor": "#e5e6e73f",
"notebook.focusedEditorBorder": "#e5e6e7",
"notebookStatusSuccessIcon.foreground": "#95ffc3",
"notebookStatusErrorIcon.foreground": "#ff4972",
"notebookStatusRunningIcon.foreground": "#a0dbff",
"notebook.outputContainerBackgroundColor": "#ffffff",
"notebook.cellToolbarSeparator": "#e5e6e73f",
"notebook.focusedCellBackground": "#e5e6e77f",
"notebook.cellHoverBackground": "#e5e6e73f",
"notebook.focusedCellBorder": "#4c5058",
"notebook.focusedCellShadow": "#0000003f",
"notebook.selectedCellBorder": "#999ba0",
"notebook.cellStatusBarItemHoverBackground": "#e5e6e73f",
"notebook.cellInsertionIndicator": "#95ffc3",
"notebookScrollbarSlider.background": "#b2b4b77f",
"notebookScrollbarSlider.hoverBackground": "#999ba07f",
"notebookScrollbarSlider.activeBackground": "#7f82887f",
"notebook.symbolHighlightBackground": "#4c50583f",
"notebook.inactiveFocusedCellBorder": "#7f8288",
"charts.foreground": "#666970",
"charts.lines": "#b2b4b7",
"charts.red": "#ff4972",
"charts.blue": "#a0dbff",
"charts.yellow": "#ffff80",
"charts.orange": "#dcdfe4",
"charts.green": "#95ffc3",
"charts.purple": "#4c5058"
"terminal.ansiBlack": "#ffffff",
"terminal.ansiBlue": "#a0dbff",
"terminal.ansiBrightBlack": "#e5e6e7",
"terminal.ansiBrightBlue": "#a0dbff",
"terminal.ansiBrightCyan": "#24e5ff",
"terminal.ansiBrightGreen": "#24e5ff",
"terminal.ansiBrightMagenta": "#eb71ad",
"terminal.ansiBrightRed": "#dcdfe4",
"terminal.ansiBrightWhite": "#4c5058",
"terminal.ansiBrightYellow": "#ffff80",
"terminal.ansiCyan": "#24e5ff",
"terminal.ansiGreen": "#95ffc3",
"terminal.background": "#ffffff",
"terminal.foreground": "#666970",
"terminal.ansiMagenta": "#eb71ad",
"terminal.ansiRed": "#ff4972",
"terminal.ansiWhite": "#666970",
"terminal.ansiYellow": "#ffff80",
"terminal.selectionBackground": "#a0dbff7f",
"terminalCursor.background": "#e5e6e7",
"terminalCursor.foreground": "#7f8288",
"testing.iconErrored": "#ff4972",
"testing.iconFailed": "#dcdfe4",
"testing.iconPassed": "#95ffc3",
"testing.iconQueued": "#24e5ff",
"testing.iconSkipped": "#999ba0",
"testing.iconUnset": "#7f8288",
"testing.message.error.decorationForeground": "#ff4972",
"testing.message.error.lineBackground": "#ff49723f",
"testing.message.hint.decorationForeground": "#eb71ad",
"testing.message.hint.lineBackground": "#eb71ad3f",
"testing.message.info.decorationForeground": "#a0dbff",
"testing.message.info.lineBackground": "#a0dbff3f",
"testing.message.warning.decorationForeground": "#dcdfe4",
"testing.message.warning.lineBackground": "#dcdfe43f",
"testing.peekBorder": "#b2b4b7",
"testing.runAction": "#a0dbff",
"walkThrough.embeddedEditorBackground": "#ffffff",
"welcomePage.background": "#ffffff",
"welcomePage.buttonBackground": "#e5e6e7",
"welcomePage.buttonHoverBackground": "#cccdcf",
"welcomePage.progress.background": "#a0dbff",
"welcomePage.progress.foreground": "#ffffff"
},
"name": "Betelgeuse Light",
"tokenColors": [
{
"settings": {
"background": "#ffffff",
"foreground": "#666970",
"selectionBorder": "#7f8288",
"findHighlight": "#ffff80",
"findHighlightForeground": "#ffffff",
"activeGuide": "#dcdfe4",
"background": "#ffffff",
"bracketsContentsForeground": "#6669707F",
"bracketsForeground": "#6669707F",
"bracketsOptions": "stippled_underline",
"bracketsContentsForeground": "#6669707F",
"findHighlight": "#ffff80",
"findHighlightForeground": "#ffffff",
"foreground": "#666970",
"selectionBorder": "#7f8288",
"tagsOptions": "stippled_underline"
}
},
@ -610,5 +609,6 @@
"foreground": "#eb71ad"
}
}
]
],
"type": "light"
}

View file

@ -1,48 +1,48 @@
[
{
"key": "tab",
"command": "selectNextQuickFix",
"key": "tab",
"when": "editorFocus && quickFixWidgetVisible"
},
{
"key": "shift+tab",
"command": "selectPrevQuickFix",
"key": "shift+tab",
"when": "editorFocus && quickFixWidgetVisible"
},
{
"key": "tab",
"command": "selectNextSuggestion",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"key": "shift+tab",
"command": "selectPrevSuggestion",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"key": "ctrl+j",
"command": "editor.action.inlineSuggest.commit",
"when": "inlineSuggestionHasIndentationLessThanTabSize && inlineSuggestionVisible && !editorTabMovesFocus"
},
{
"key": "tab",
"command": "-editor.action.inlineSuggest.commit",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"command": "selectPrevSuggestion",
"key": "shift+tab",
"when": "editorTextFocus && suggestWidgetMultipleSuggestions && suggestWidgetVisible"
},
{
"command": "editor.action.inlineSuggest.commit",
"key": "ctrl+j",
"when": "inlineSuggestionHasIndentationLessThanTabSize && inlineSuggestionVisible && !editorTabMovesFocus"
},
{
"key": "alt+right",
"command": "workbench.action.nextEditor"
"command": "-editor.action.inlineSuggest.commit",
"key": "tab",
"when": "inlineSuggestionHasIndentationLessThanTabSize && inlineSuggestionVisible && !editorTabMovesFocus"
},
{
"key": "ctrl+pagedown",
"command": "-workbench.action.nextEditor"
"command": "workbench.action.nextEditor",
"key": "alt+right"
},
{
"key": "alt+left",
"command": "workbench.action.previousEditor"
"command": "-workbench.action.nextEditor",
"key": "ctrl+pagedown"
},
{
"key": "ctrl+pageup",
"command": "-workbench.action.previousEditor"
"command": "workbench.action.previousEditor",
"key": "alt+left"
},
{
"command": "-workbench.action.previousEditor",
"key": "ctrl+pageup"
}
]
]

View file

@ -65,8 +65,8 @@
"explorer.confirmDelete": false,
"extensions.ignoreRecommendations": true,
"files.trimTrailingWhitespace": true,
"git.autofetch": true,
"git.autoStash": true,
"git.autofetch": true,
"github.codespaces.showPerformanceExplorer": true,
"gitlab.showPipelineUpdateNotifications": true,
"gitlens.showWelcomeOnInstall": false,
@ -140,16 +140,8 @@
"vsicons.dontShowNewVersionMessage": true,
"window.menuBarVisibility": "toggle",
"workbench.colorCustomizations": {
"terminal.foreground": "#708284",
"terminal.background": "#001e27",
"terminal.ansiBlack": "#002831",
"terminal.ansiBlue": "#2176c7",
"terminal.ansiCyan": "#259286",
"terminal.ansiGreen": "#738a05",
"terminal.ansiMagenta": "#c61c6f",
"terminal.ansiRed": "#d11c24",
"terminal.ansiWhite": "#eae3cb",
"terminal.ansiYellow": "#a57706",
"terminal.ansiBrightBlack": "#475b62",
"terminal.ansiBrightBlue": "#708284",
"terminal.ansiBrightCyan": "#819090",
@ -158,6 +150,14 @@
"terminal.ansiBrightRed": "#bd3613",
"terminal.ansiBrightWhite": "#fcf4dc",
"terminal.ansiBrightYellow": "#536870",
"terminal.ansiCyan": "#259286",
"terminal.ansiGreen": "#738a05",
"terminal.ansiMagenta": "#c61c6f",
"terminal.ansiRed": "#d11c24",
"terminal.ansiWhite": "#eae3cb",
"terminal.ansiYellow": "#a57706",
"terminal.background": "#001e27",
"terminal.foreground": "#708284",
"terminal.selectionBackground": "#002831",
"terminalCursor.foreground": "#708284"
},

1
local/package-lock.json generated Normal file

File diff suppressed because one or more lines are too long

3022
local/yarn.lock Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,219 +1,320 @@
{
"private": false,
"name": "@tainted/hiawatha",
"version": "0.0.1",
"description": "Scripts, files, and assets used to build a JumpUSB (https://jumpusb.com)",
"license": "MIT",
"author": "Brian Zalewski <brian@megabyte.space> (https://megabyte.space)",
"homepage": "https://megabyte.space",
"repository": {
"type": "git",
"url": "git+https://github.com/megabyte-labs/jumpusb.git"
},
"bugs": {
"email": "help@megabyte.space",
"url": "https://gitlab.com/megabyte-labs/jumpusb/-/issues"
},
"type": "commonjs",
"main": "dist/main.js",
"files": [
"dist",
"lib"
],
"scripts": {
"build": "bash start.sh && task npm:build:tsconfig",
"bump": "npm run build && npm version patch --no-scripts --no-commit-hooks --no-git-tag-version --force && SKIP_PREPUB=true npm publish",
"commit": "bash start.sh && task commit",
"fix": "bash start.sh && task fix",
"help": "bash start.sh && task --menu",
"lint": "bash start.sh && task lint",
"preload": "bash start.sh && task preload",
"prepare": "bash start.sh && (test -f Taskfile.yml && task npm:prepare) || true",
"release": "bash start.sh && task publish:semantic-release",
"repair": "bash <(curl -sS https://install.doctor/repair)",
"start": "test -z $SKIP_NPM_START && bash start.sh || true",
"test": "bash start.sh && task donothing",
"unpack": "bash start.sh && task npm:bundle:unpack",
"update": "bash start.sh && task update",
"vscode": "bash start.sh && task vscode"
},
"config": {
"commitizen": {
"path": "node_modules/git-cz-emoji"
}
},
"dependencies": {
"tslib": "latest"
},
"peerDependenciesMeta": {
"eslint": {
"optional": true
}
},
"optionalDependencies": {},
"devDependencies": {
"@types/node": "^16.11.52",
"esbuild": "^0.12.29",
"esbuild-node-externals": "^1.4.1",
"eslint-config-strict-mode": "latest",
"git-cz-emoji": "latest",
"jest-preset-ts": "latest",
"prettier": "^2.7.1",
"prettier-config-sexy-mode": "latest",
"semantic-release-config": "latest",
"typescript": "^4.7.4",
"@commitlint/config-conventional": "latest",
"handlebars-helpers": "latest"
},
"keywords": [
"common",
"configurations",
"files",
"gitlab-ci",
"mblabs",
"megabytelabs",
"miscellaneous",
"npm",
"other",
"package",
"professormanhattan",
"shared",
"supporting",
"taskfiles",
"washingtondc"
],
"engines": {
"node": ">=14.18.0"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/",
"tag": "edge"
},
"blueprint": {
"description": "A glorious combination of application settings, theme files, and a performant cross-platform, desktop-oriented software installer.",
"group": "npm",
"name": "Hiawatha Dotfiles",
"overview": "Hiawatha Dotfiles is a glorious combination of application settings, theme files, and a performant yet flexible software installer written with [ZX](https://github.com/google/zx). The installer supports almost any operating system, just checkout the [software.yml file](https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/blob/master/software.yml). It uses [Chezmoi](https://github.com/twpayne/chezmoi) to apply file changes in an interactive way. It is not your typical Chezmoi project - it is built around the philosophy that you should be able to bash all your computers to bits with a hammer and then resurrect them the next day ✝️️ by storing stateful data to an S3 bucket and automating desktop configuration as much as possible.",
"repository": {
"github": "https://github.com/megabyte-labs/hiawatha-dotfiles",
"gitlab": "https://gitlab.com/megabyte-labs/hiawatha-dotfiles"
},
"slug": "hiawatha-dotfiles",
"subgroup": "misc",
"title": "Hiawatha Dotfiles - The Spirit of GitHub"
},
"changelog": {
"displayTypes": [
"feat",
"fix",
"perf",
"refactor",
"revert"
],
"showAuthor": true
},
"commitlint": {
"extends": [],
"helpUrl": "https://megabyte.space/docs/contributing/commits"
},
"eslintConfig": {
"extends": "eslint-config-strict-mode"
},
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/megabytelabs"
},
{
"type": "patreon",
"url": "https://www.patreon.com/ProfessorManhattan"
}
],
"jest": {
"preset": "jest-preset-ts",
"reporters": [
"default",
[
"jest-html-reporters",
{
"filename": "index.html",
"logoImgPath": "./.config/assets/logo-jest-report.png",
"openReport": true,
"pageTitle": "Code Coverage Report",
"publicPath": "./coverage"
}
]
]
},
"jscpd": {
"gitignore": true,
"threshold": 0.1
},
"nodemonConfig": {
"exec": "tsc -p . && node --inspect-brk dist/main",
"ext": "js,jsx,json,ts,tsx,yml",
"ignore": [
"src/**/*.spec.ts"
],
"watch": [
".env",
"src"
]
},
"ntl": {
"descriptions": {
"build": "Builds the project using the build command specified under scripts in package.json",
"bump": "Used to quickly build, increase the package.json version, and publish the package",
"commit": "If unsure, use this task to commit your code so that it adheres to our commit rules",
"fix": "Run auto-fixing with all available auto-fixers",
"help": "Display the Bodega Taskfile.yml interactive help menu",
"lint": "Lint the project with all available linters",
"preload": "Preload the operating system with commonly used libraries and tools",
"prepare": "A hook triggered by running npm install that runs logic such as installing pre-commit hooks",
"release": "Publish the software to all supported channels using semantic-release",
"repair": "Fixes basic issues in projects that are having trouble running basic commands like 'task start'",
"start": "Entrypoint for new developers that installs requirements and then runs 'task start'",
"test": "Runs the appropriate test logic by running the test command defined under scripts in package.json",
"unpack": "Populates production node_modules from compressed copies saved in the .modules/ folder",
"update": "Update and refresh the repository with upstream changes and templated parts"
}
},
"pnpm": {
"allowedVersions": {
"@typescript-eslint/eslint-plugin": "5",
"eslint": "8",
"typescript": "4"
},
"neverBuiltDependencies": [
"core-js",
"core-js-pure",
"highlight.js"
],
"peerDependencyRules": {
"ignoreMissing": [
"eslint",
"prettier",
"puppeteer"
]
}
},
"prettier": "prettier-config-sexy-mode",
"release": {
"branches": [
"main",
"master",
"next",
{
"name": "beta",
"prerelease": true
}
],
"extends": "semantic-release-config"
},
"volta": {
"node": "18.4.0",
"yarn": "1.22.19"
"private": false,
"name": "@mblabs/hiawatha-dotfiles",
"version": "0.0.1",
"description": "A glorious combination of application settings, theme files, and a performant cross-platform, desktop-oriented software installer.",
"license": "MIT",
"author": "Brian Zalewski <brian@megabyte.space> (https://megabyte.space)",
"homepage": "https://megabyte.space",
"repository": {
"type": "git",
"url": "git+https://github.com/megabyte-labs/hiawatha-dotfiles.git"
},
"bugs": {
"email": "help@megabyte.space",
"url": "https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/issues"
},
"type": "commonjs",
"main": "dist/main.js",
"files": [
"dist",
"lib"
],
"scripts": {
"build": "bash start.sh && task npm:build:tsconfig",
"bump": "bash start.sh && task npm:bump",
"commit": "bash start.sh && task commit",
"fix": "bash start.sh && task fix",
"help": "bash start.sh && task --menu",
"lint": "bash start.sh && task lint",
"preload": "bash start.sh && task preload",
"prepare": "bash start.sh && (test -f Taskfile.yml && task npm:prepare) || true",
"release": "bash start.sh && task publish:semantic-release",
"repair": "bash <(curl -sS https://install.doctor/repair)",
"start": "test -z $SKIP_NPM_START && bash start.sh || true",
"test": "bash start.sh && task donothing",
"unpack": "bash start.sh && task npm:bundle:unpack",
"update": "bash start.sh && task update",
"vscode": "bash start.sh && task vscode"
},
"config": {
"commitizen": {
"path": "node_modules/git-cz-emoji"
}
},
"typings": "dist/main.d.ts",
"dependencies": {
"tslib": "latest"
},
"peerDependenciesMeta": {
"eslint": {
"optional": true
}
},
"optionalDependencies": {},
"devDependencies": {
"@commitlint/config-conventional": "latest",
"@types/node": "^16.11.6",
"esbuild": "^0.12.29",
"esbuild-node-externals": "^1.3.0",
"eslint-config-strict-mode": "latest",
"git-cz-emoji": "latest",
"handlebars-helpers": "latest",
"jest-preset-ts": "latest",
"prettier": "^2.4.1",
"prettier-config-sexy-mode": "latest",
"semantic-release-config": "latest",
"typescript": "^4.5.5"
},
"keywords": [
"common",
"configurations",
"files",
"gitlab-ci",
"mblabs",
"megabytelabs",
"miscellaneous",
"npm",
"other",
"package",
"professormanhattan",
"shared",
"supporting",
"taskfiles",
"washingtondc"
],
"engines": {
"node": ">=18.4.0"
},
"publishConfig": {
"@gitlab:registry": "https://gitlab.com/api/v4/projects//packages/npm/",
"access": "public",
"registry": "https://registry.npmjs.org/",
"tag": "edge"
},
"blueprint": {
"description": "A glorious combination of application settings, theme files, and a performant cross-platform, desktop-oriented software installer.",
"group": "npm",
"name": "Hiawatha Dotfiles",
"overview": "Hiawatha Dotfiles is a glorious combination of application settings, theme files, and a performant yet flexible software installer written with [ZX](https://github.com/google/zx). The installer supports almost any operating system, just checkout the [software.yml file](https://gitlab.com/megabyte-labs/hiawatha-dotfiles/-/blob/master/software.yml). It uses [Chezmoi](https://github.com/twpayne/chezmoi) to apply file changes in an interactive way. It is not your typical Chezmoi project - it is built around the philosophy that you should be able to bash all your computers to bits with a hammer and then resurrect them the next day ✝️️ by storing stateful data to an S3 bucket and automating desktop configuration as much as possible.",
"repository": {
"github": "https://github.com/megabyte-labs/hiawatha-dotfiles",
"gitlab": "https://gitlab.com/megabyte-labs/hiawatha-dotfiles"
},
"slug": "hiawatha-dotfiles",
"subgroup": "misc",
"title": "Hiawatha Dotfiles - The Spirit of GitHub"
},
"changelog": {
"displayTypes": [
"feat",
"fix",
"perf",
"refactor",
"revert"
],
"showAuthor": true
},
"commitlint": {
"extends": [
"@commitlint/config-conventional"
],
"helpUrl": "https://megabyte.space/docs/contributing/commits"
},
"eslintConfig": {
"extends": "eslint-config-strict-mode"
},
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/megabytelabs"
},
{
"type": "patreon",
"url": "https://www.patreon.com/ProfessorManhattan"
}
],
"jest": {
"preset": "jest-preset-ts",
"reporters": [
"default",
[
"jest-html-reporters",
{
"filename": "index.html",
"logoImgPath": "./.config/assets/logo-jest-report.png",
"openReport": true,
"pageTitle": "Code Coverage Report",
"publicPath": "./coverage"
}
]
]
},
"jscpd": {
"absolute": true,
"gitignore": true,
"ignore": [
"!**/.devcontainer/**/*",
"!**/.config/**/*",
"!**/.git/**/*",
"!**/.github/**/*",
"!**/.gitlab/**/*",
"!**/.vscode/**/*",
"!**/common/.config/taskfiles/**/*",
"!**/docs/**/*",
"!**/.editorconfig",
"!**/.gitignore",
"!**/.npmrc",
"!**/.gitlab-ci.yml",
"!**/README.md",
"!**/LICENSE",
"!**/Taskfile.yml",
"!**/logo.png",
"!**/package.json",
"!**/start.sh",
"!**/pnpm-lock.yaml",
"!**/package-lock.json",
"!**/poetry.lock",
"!**/pyproject.toml",
"!**/requirements.yml",
"!**/yarn.lock",
"!**/deprecated/**/*"
],
"threshold": 14
},
"lint-staged": {
"(Brewfile|composer.lock|Gemfile|Gopkg.lock|Pipfile.lock)": [
"task fix:prettier --"
],
"**/!(logo).(jpg|png)": [
"task image:compress --"
],
"**/*": [
"task lint:any --"
],
"**/*!(template).(json|webapp|webmanifest)": [
"task fix:json --"
],
"**/*.(bash|cfg|cgi|command|css|env|env.*|handlebars|hbs|html|less|fcgi|java|md|mdx|mjml|php|phtml|properties|reg|scss|tmpl|tmux|tool|tpl|zsh)": [
"task fix:prettier --"
],
"**/*.(cjs|js|jsx|mjs|ts|tsx)": [
"task fix:js --",
"task lint:js --"
],
"**/*.(yml|yaml)": [
"task fix:yaml --",
"task lint:yaml --"
],
"**/*.go": [
"task fix:go --",
"task lint:go --"
],
"**/*.md": [
"task fix:markdown --",
"task lint:spelling:markdown --"
],
"**/*.php": [
"task fix:php --",
"task lint:php --"
],
"**/*.py": [
"task fix:python --",
"task lint:python --"
],
"**/*.sh": [
"task fix:prettier --",
"task fix:shell --",
"task lint:shell --"
],
"**/*.toml": [
"task fix:toml --",
"task fix:prettier --",
"task lint:toml --"
],
"**/*.xml": [
"task fix:xml --",
"task lint:xml --"
],
"Dockerfile": [
"task fix:prettier --",
"task lint:docker --"
],
"Vagrantfile": [
"task fix:prettier --",
"task lint:vagrant"
],
"logo.(gif|jpg|jpeg|webp)": [
"task image:convert:logo --"
],
"logo.png": [
"task image:resize -- 200 200",
"task image:compress --"
]
},
"nodemonConfig": {
"exec": "tsc -p . && node --inspect-brk dist/main",
"ext": "js,jsx,json,ts,tsx,yml",
"ignore": [
"src/**/*.spec.ts"
],
"watch": [
".env",
"src"
]
},
"ntl": {
"descriptions": {
"build": "Builds the project using the build command specified under scripts in package.json",
"bump": "Used to quickly build, increase the package.json version, and publish the package",
"commit": "If unsure, use this task to commit your code so that it adheres to our commit rules",
"fix": "Run auto-fixing with all available auto-fixers",
"help": "Display the Bodega Taskfile.yml interactive help menu",
"lint": "Lint the project with all available linters",
"preload": "Preload the operating system with commonly used libraries and tools",
"prepare": "A hook triggered by running npm install that runs logic such as installing pre-commit hooks",
"release": "Publish the software to all supported channels using semantic-release",
"repair": "Fixes basic issues in projects that are having trouble running basic commands like 'task start'",
"start": "Entrypoint for new developers that installs requirements and then runs 'task start'",
"test": "Runs the appropriate test logic by running the test command defined under scripts in package.json",
"unpack": "Populates production node_modules from compressed copies saved in the .modules/ folder",
"update": "Update and refresh the repository with upstream changes and templated parts"
}
},
"pnpm": {
"allowedVersions": {
"@typescript-eslint/eslint-plugin": "5",
"eslint": "8",
"typescript": "4"
},
"neverBuiltDependencies": [
"core-js",
"core-js-pure",
"highlight.js"
],
"peerDependencyRules": {
"ignoreMissing": [
"eslint",
"prettier",
"puppeteer"
]
}
},
"prettier": "prettier-config-sexy-mode",
"release": {
"branches": [
"main",
"master",
"next",
{
"name": "beta",
"prerelease": true
}
],
"extends": "semantic-release-config"
},
"volta": {
"node": "18.4.0",
"yarn": "1.22.19"
}
}

View file

@ -7,18 +7,18 @@ neverBuiltDependencies:
specifiers:
'@commitlint/config-conventional': latest
'@types/node': ^16.11.52
'@types/node': ^16.11.6
esbuild: ^0.12.29
esbuild-node-externals: ^1.4.1
esbuild-node-externals: ^1.3.0
eslint-config-strict-mode: latest
git-cz-emoji: latest
handlebars-helpers: latest
jest-preset-ts: latest
prettier: ^2.7.1
prettier: ^2.4.1
prettier-config-sexy-mode: latest
semantic-release-config: latest
tslib: latest
typescript: ^4.7.4
typescript: ^4.5.5
dependencies:
tslib: 2.4.1
@ -565,7 +565,7 @@ packages:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.12.9
'@babel/helper-plugin-utils': 7.10.4
'@babel/helper-plugin-utils': 7.20.2
'@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.12.9
'@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.12.9
dev: true
@ -3829,7 +3829,7 @@ packages:
/@types/jest-specific-snapshot/0.5.6:
resolution: {integrity: sha512-AQdUbEyTwO6JR2yZK7PTXDzK32AlkviDZJZEukZnrZtBjITYBtExFh59HTNTZeFSs+k1b1bqCHmWUwj3VHeh/A==}
dependencies:
'@types/jest': 26.0.24
'@types/jest': 29.2.4
dev: true
/@types/jest/26.0.24:
@ -15990,7 +15990,7 @@ packages:
react: ^16.0.0 || ^17.0.0 || ^18.0.0
dependencies:
object-assign: 4.1.1
react-is: 17.0.2
react-is: 18.2.0
dev: true
/react-test-renderer/17.0.2:

View file

@ -201,7 +201,8 @@ softwarePackages:
_post:binary:windows: |
# TODO
_service: false
binary: https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.20.1/allure-commandline-2.20.1.zip
binary:
https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.20.1/allure-commandline-2.20.1.zip
# TODO: Find latest version from https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/maven-metadata.xml and use it in the _binary_ URL
brew: allure
scoop: allure
@ -1464,7 +1465,7 @@ softwarePackages:
# pacman: docker
docker-slim:
_bin: docker-slim
_desc: '[DockerSlim](https://dockersl.im/) will optimize and secure your containers by understanding your application and what it needs using various analysis techniques. It will throw away what you don''t need, reducing the attack surface of your container. What if you need some of those extra things to debug your container? You can use dedicated debugging side-car containers for that.'
_desc: "[DockerSlim](https://dockersl.im/) will optimize and secure your containers by understanding your application and what it needs using various analysis techniques. It will throw away what you don't need, reducing the attack surface of your container. What if you need some of those extra things to debug your container? You can use dedicated debugging side-car containers for that."
_docs: https://github.com/docker-slim/docker-slim#basic-usage-info
_github: https://github.com/docker-slim/docker-slim
_home: https://dockersl.im/
@ -1587,7 +1588,7 @@ softwarePackages:
ansible: professormanhattan.droplets
duf:
_bin: duf
_desc: '[duf](https://github.com/muesli/duf) is a Disk Usage/Free Utility - a better ''df'' alternative. It displays a chart within your terminal that gives you an overview of hard-drive usage statistics.'
_desc: "[duf](https://github.com/muesli/duf) is a Disk Usage/Free Utility - a better 'df' alternative. It displays a chart within your terminal that gives you an overview of hard-drive usage statistics."
_docs: https://github.com/muesli/duf#usage
_github: https://github.com/muesli/duf
_home: https://github.com/muesli/duf
@ -1619,7 +1620,7 @@ softwarePackages:
pacman: dust
easyengine:
_bin: ee
_desc: '[EasyEngine](https://easyengine.io/) is a command-line control panel for Nginx to manage WordPress sites running on Nginx, PHP, MySQL, and Let''s Encrypt.'
_desc: "[EasyEngine](https://easyengine.io/) is a command-line control panel for Nginx to manage WordPress sites running on Nginx, PHP, MySQL, and Let's Encrypt."
_docs: https://easyengine.io/handbook/
_github: https://github.com/EasyEngine/easyengine
_home: https://easyengine.io/
@ -1852,7 +1853,7 @@ softwarePackages:
nix: unstable.fcp
fd:
_bin: fd
_desc: '[fd](https://github.com/sharkdp/fd) is a program that can search for files on your filesystem. It is a simple, fast, and user-friendly alternative to find. While it does not aim to support all of find''s powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases.'
_desc: "[fd](https://github.com/sharkdp/fd) is a program that can search for files on your filesystem. It is a simple, fast, and user-friendly alternative to find. While it does not aim to support all of find's powerful functionality, it provides sensible (opinionated) defaults for a majority of use cases."
_docs: null
_github: https://github.com/sharkdp/fd
_home: null
@ -2164,7 +2165,7 @@ softwarePackages:
snap: fx
fzf:
_bin: fzf
_desc: '[fzf](https://github.com/junegunn/fzf) is a general-purpose command-line fuzzy finder. It''s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.'
_desc: "[fzf](https://github.com/junegunn/fzf) is a general-purpose command-line fuzzy finder. It's an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc."
_docs: https://github.com/junegunn/fzf#usage
_github: https://github.com/junegunn/fzf
_home: https://github.com/junegunn/fzf
@ -2303,7 +2304,7 @@ softwarePackages:
winget: GitHub.cli
ghorg:
_bin: ghorg
_desc: '[ghorg](https://github.com/gabrie30/ghorg) allows you to quickly clone all of an org''s, or user''s repositories into a single directory.'
_desc: "[ghorg](https://github.com/gabrie30/ghorg) allows you to quickly clone all of an org's, or user's repositories into a single directory."
_docs: null
_github: https://github.com/gabrie30/ghorg
_home: null
@ -3624,7 +3625,7 @@ softwarePackages:
scoop: lazygit
xbps: lazygit
ledger-live:
_appimageName: 'Ledger Live.AppImage'
_appimageName: Ledger Live.AppImage
_bin: null
_desc: '[Ledger Live](https://www.ledger.com/ledger-live) is a new generation wallet desktop application providing a unique interface to maintain multiple cryptocurrencies for your Ledger Nano S / Blue. Manage your device, create accounts, receive and send cryptoassets and many more.'
_docs: null
@ -3944,7 +3945,7 @@ softwarePackages:
go: github.com/minio/mc@latest
mcfly:
_bin: mcfly
_desc: '[McFly](https://github.com/cantino/mcfly) replaces your default CTRL-r shell history search with an intelligent search engine that takes into account your working directory and the context of recently executed commands. McFly''s suggestions are prioritized in real time with a small neural network.'
_desc: "[McFly](https://github.com/cantino/mcfly) replaces your default CTRL-r shell history search with an intelligent search engine that takes into account your working directory and the context of recently executed commands. McFly's suggestions are prioritized in real time with a small neural network."
_docs: null
_github: null
_home: null
@ -4986,7 +4987,7 @@ softwarePackages:
go: github.com/jessfraz/pony@latest
portmaster:
_bin: null
_desc: '[portmaster](https://safing.io/portmaster/) is a free and open-source application that puts you back in charge over all your computer''s network connections.'
_desc: "[portmaster](https://safing.io/portmaster/) is a free and open-source application that puts you back in charge over all your computer's network connections."
_docs: https://docs.safing.io/portmaster/architecture/overview
_github: https://github.com/safing/portmaster
_home: https://safing.io/
@ -4996,7 +4997,7 @@ softwarePackages:
ansible:windows: professormanhattan.portmaster
postman:
_bin: null
_desc: '[Postman](https://www.postman.com/) is a collaboration platform for API development. Postman''s features simplify each step of building an API and streamline collaboration so you can create better APIs — faster.'
_desc: "[Postman](https://www.postman.com/) is a collaboration platform for API development. Postman's features simplify each step of building an API and streamline collaboration so you can create better APIs — faster."
_docs: https://learning.postman.com/docs/getting-started/introduction/
_github: Not open-source
_home: https://www.postman.com/
@ -6449,7 +6450,8 @@ softwarePackages:
_name: Termius
_post:binary:windows: |
# TODO
_service: null
_service:
null
# TODO
ansible: professormanhattan.termius
binary:windows: https://autoupdate.termius.com/windows/Termius.exe
@ -6583,7 +6585,7 @@ softwarePackages:
scoop: tokei
tor:
_bin: toron
_desc: '[Tor](https://www.torproject.org/) is free and open-source software for enabling anonymous communication by directing Internet traffic through a free, worldwide, volunteer overlay network consisting of more than seven thousand relays in order to conceal a user''s location and usage from anyone conducting network surveillance or traffic analysis. On Linux you can combine Tor with [Privoxy](https://www.privoxy.org/) which allows you to tunnel all of your traffic through the Tor network.'
_desc: "[Tor](https://www.torproject.org/) is free and open-source software for enabling anonymous communication by directing Internet traffic through a free, worldwide, volunteer overlay network consisting of more than seven thousand relays in order to conceal a user's location and usage from anyone conducting network surveillance or traffic analysis. On Linux you can combine Tor with [Privoxy](https://www.privoxy.org/) which allows you to tunnel all of your traffic through the Tor network."
_docs: https://tb-manual.torproject.org/
_github: https://github.com/TheTorProject
_home: https://www.torproject.org/
@ -7210,7 +7212,7 @@ softwarePackages:
ansible: professormanhattan.wsl
xcode:
_bin: xcodebuild
_desc: '[Xcode](https://developer.apple.com/xcode/) is Apple''s integrated development environment for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS.'
_desc: "[Xcode](https://developer.apple.com/xcode/) is Apple's integrated development environment for macOS, used to develop software for macOS, iOS, iPadOS, watchOS, and tvOS."
_docs: https://developer.apple.com/documentation/xcode
_github: false
_home: https://developer.apple.com/xcode/
@ -7260,7 +7262,7 @@ softwarePackages:
zypper: yank
yarn:
_bin: yarn
_desc: '[Yarn](https://yarnpkg.com/) is a relatively new and open source JavaScript package manager developed by Facebook. Yarn is fully compatible with the npm registry (i.e. [npmjs.com](https://www.npmjs.com/)) and can work alongside npm, but it''s aim it to be a safer, more secure and more reliable alternative.'
_desc: "[Yarn](https://yarnpkg.com/) is a relatively new and open source JavaScript package manager developed by Facebook. Yarn is fully compatible with the npm registry (i.e. [npmjs.com](https://www.npmjs.com/)) and can work alongside npm, but it's aim it to be a safer, more secure and more reliable alternative."
_docs: https://yarnpkg.com/getting-started
_github: https://github.com/yarnpkg/berry
_home: https://yarnpkg.com/

View file

@ -3,15 +3,15 @@
"DisableTelemetry": true,
"DontCheckDefaultBrowser": true,
"EnableTrackingProtection": {
"Value": true,
"Locked": false,
"Cryptomining": true,
"Fingerprinting": true
"Fingerprinting": true,
"Locked": false,
"Value": true
},
"Homepage": {
"URL": "http://betelgeuse.home",
"Locked": false,
"StartPage": "previous-session"
"StartPage": "previous-session",
"URL": "http://betelgeuse.home"
},
"NoDefaultBookmarks": true,
"OfferToSaveLogins": false,

View file

@ -1,3 +1,3 @@
{
"disable-root-redirector": true
}
}

View file

@ -1,24 +1,22 @@
{
"backup_device_uuid" : "",
"parent_device_uuid" : "",
"do_first_run" : "true",
"btrfs_mode" : "true",
"include_btrfs_home" : "false",
"stop_cron_emails" : "true",
"schedule_monthly" : "false",
"schedule_weekly" : "false",
"schedule_daily" : "false",
"schedule_hourly" : "false",
"schedule_boot" : "false",
"count_monthly" : "0",
"count_weekly" : "2",
"count_daily" : "4",
"count_hourly" : "8",
"count_boot" : "0",
"snapshot_size" : "0",
"snapshot_count" : "0",
"exclude" : [
],
"exclude-apps" : [
]
"backup_device_uuid": "",
"btrfs_mode": "true",
"count_boot": "0",
"count_daily": "4",
"count_hourly": "8",
"count_monthly": "0",
"count_weekly": "2",
"do_first_run": "true",
"exclude": [],
"exclude-apps": [],
"include_btrfs_home": "false",
"parent_device_uuid": "",
"schedule_boot": "false",
"schedule_daily": "false",
"schedule_hourly": "false",
"schedule_monthly": "false",
"schedule_weekly": "false",
"snapshot_count": "0",
"snapshot_size": "0",
"stop_cron_emails": "true"
}

View file

@ -3,15 +3,15 @@
"DisableTelemetry": true,
"DontCheckDefaultBrowser": true,
"EnableTrackingProtection": {
"Value": true,
"Locked": false,
"Cryptomining": true,
"Fingerprinting": true
"Fingerprinting": true,
"Locked": false,
"Value": true
},
"Homepage": {
"URL": "http://betelgeuse.home",
"Locked": false,
"StartPage": "previous-session"
"StartPage": "previous-session",
"URL": "http://betelgeuse.home"
},
"NoDefaultBookmarks": true,
"OfferToSaveLogins": false,

View file

@ -3,15 +3,15 @@
"DisableTelemetry": true,
"DontCheckDefaultBrowser": true,
"EnableTrackingProtection": {
"Value": true,
"Locked": false,
"Cryptomining": true,
"Fingerprinting": true
"Fingerprinting": true,
"Locked": false,
"Value": true
},
"Homepage": {
"URL": "http://betelgeuse.home",
"Locked": false,
"StartPage": "previous-session"
"StartPage": "previous-session",
"URL": "http://betelgeuse.home"
},
"NoDefaultBookmarks": true,
"OfferToSaveLogins": false,