-
Notifications
You must be signed in to change notification settings - Fork 125
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: runnable exec + CLI args via yargs + install docs
- add "bin" to package.json to support running git-proxy as an executable. Largely taken from #184 and fixes #183 - added --config and --validate command line flags via yargs. These will allow custom user configurations with a default behaviour of loading from the current working dir and/or default settings. --validate uses JSON Schema to validate the config. - update docs to reflect new CLI args and additional details of running the app via npx - load default settings from a module instead of explicit file path - add test for default & user setting merging - bump @finos/git-proxy to 1.1.0 - Remove old X.509 certificate and private key, which I assume was included previously to run git-proxy with TLS enabled via a demo. Can be re-added as needed but probably shouldn't be included in src (even if its for demo only).
- Loading branch information
1 parent
f75f3c5
commit dca4fa4
Showing
12 changed files
with
326 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -45,16 +45,46 @@ Git Proxy is built with a developer-first mindset. By presenting simple-to-follo | |
|
||
## Installation | ||
|
||
To install Git Proxy, use the [npm](https://www.npmjs.com/) package manager: | ||
To install Git Proxy, you must have [Node.js 16 or later](https://nodejs.org/en/download) installed. Use [npm](https://www.npmjs.com) to install the package: | ||
|
||
```bash | ||
$ npm install @finos/git-proxy | ||
$ npm install -g @finos/git-proxy | ||
``` | ||
|
||
To install a specific version of Git Proxy, append the version to the end of the `install` command: | ||
|
||
```bash | ||
$ npm install @finos/[email protected] | ||
$ npm install -g @finos/[email protected] | ||
``` | ||
|
||
To start the server, run `git-proxy`. Alternatively, you can also install & run git-proxy directly using `npx`: | ||
|
||
```bash | ||
$ git-proxy | ||
# Running with npx - if the package isn't already installed, npx will prompt you to confirm installation | ||
$ npx --package=@finos/[email protected] -- git-proxy | ||
``` | ||
|
||
## Configuration | ||
By default, git-proxy ships with a [default configuration](./proxy.config.json) for demonstration purposes. In most environments, this should be overridden by your user-specific values. | ||
|
||
To set your own values, create a `proxy.config.json` in the current working directory. This will be loaded when you execute `git-proxy` if present. | ||
|
||
If you wish to specify a different file location to use as configuration, use the `-c/--config` command-line argument: | ||
|
||
```bash | ||
$ git-proxy --config /etc/gitproxy/config.json | ||
# With npx | ||
$ npx -- @finos/git-proxy --config /etc/gitproxy/config.json | ||
``` | ||
|
||
### Validation | ||
To validate your configuration against the [included schema](config.schema.json), use the following included script: | ||
|
||
```bash | ||
$ git-proxy --validate | ||
# Run validation against a configuration at a custom file location | ||
$ git-proxy --validate --config /etc/gitproxy/config.json | ||
``` | ||
|
||
## Contributing | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
{ | ||
"$schema": "https://json-schema.org/draft/2020-12/schema", | ||
"$id": "https://git-proxy.finos.org/config.schema.json", | ||
"title": "Git Proxy", | ||
"description": "Configuration file for modifying the behaviour of git-proxy", | ||
"type": "object", | ||
"properties": { | ||
"authorisedList": { | ||
"description": "List of repositories that are authorised to be pushed to through the proxy.", | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/authorisedRepo" | ||
} | ||
}, | ||
"sink": { | ||
"description": "List of database sources. The first source in the configuration with enabled=true will be used.", | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/database" | ||
} | ||
}, | ||
"authentication": { | ||
"description": "List of authentication sources. The first source in the configuration with enabled=true will be used.", | ||
"type": "array", | ||
"items": { | ||
"$ref": "#/$defs/authentication" | ||
} | ||
}, | ||
"tempPassword": { | ||
"description": "Toggle the generation of temporary password for git-proxy admin user", | ||
"type": "object", | ||
"properties": { | ||
"sendEmail": { "type": "boolean" }, | ||
"emailConfig": { | ||
"description": "Generic object to configure nodemailer. For full type information, please see https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/nodemailer", | ||
"type": "object" | ||
} | ||
} | ||
} | ||
}, | ||
"additionalProperties": false, | ||
"anyOf": [ | ||
{ "required": "authorisedList" }, | ||
{ "required": "sink" }, | ||
{ "required": "authentication" }, | ||
{ "required": "tempPassword" } | ||
], | ||
"$defs": { | ||
"authorisedRepo": { | ||
"type": "object", | ||
"properties": { | ||
"project": { "type": "string" }, | ||
"name": { "type": "string" }, | ||
"url": { "type": "string" } | ||
}, | ||
"required": [ "project", "name", "url" ] | ||
}, | ||
"database": { | ||
"type": "object", | ||
"properties": { | ||
"type": { "type": "string" }, | ||
"enabled": { "type": "boolean" }, | ||
"connectionString": { "type": "string" }, | ||
"options": { "type": "object" }, | ||
"params": { "type": "object" } | ||
}, | ||
"required": [ "type", "enabled" ] | ||
}, | ||
"authentication": { | ||
"type": "object", | ||
"properties": { | ||
"type": { "type": "string" }, | ||
"enabled": { "type": "boolean" }, | ||
"options": { "type": "object" } | ||
}, | ||
"required": [ "type", "enabled" ] | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
const path = require('path'); | ||
// eslint-disable-next-line prefer-const | ||
let configFile = undefined; | ||
|
||
module.exports = { | ||
get configFile() { | ||
return configFile | ||
? configFile | ||
: path.join(process.cwd(), 'proxy.config.json'); | ||
}, | ||
set configFile(file) { | ||
configFile = file; | ||
}, | ||
}; |
Oops, something went wrong.