Compare commits
No commits in common. "master" and "bug-fix/deprecated" have entirely different histories.
master
...
bug-fix/de
18 changed files with 81 additions and 202 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -7,7 +7,6 @@
|
||||||
|
|
||||||
## File-based project format:
|
## File-based project format:
|
||||||
*.iws
|
*.iws
|
||||||
.DS_Store
|
|
||||||
|
|
||||||
## Plugin-specific files:
|
## Plugin-specific files:
|
||||||
|
|
||||||
|
|
42
CHANGELOG.md
42
CHANGELOG.md
|
@ -1,35 +1,27 @@
|
||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
## 8.2.0
|
## 7.1.0
|
||||||
|
|
||||||
* Updated to `analyzer` 6.3.x
|
* Required Dart >= 2.18.x
|
||||||
* Updated repository link
|
* Updated `analyzer` to 5.x.x
|
||||||
* Updated `lints` to 3.0.0
|
|
||||||
|
|
||||||
## 8.1.1
|
|
||||||
|
|
||||||
* Updated README
|
|
||||||
* Updated to logo
|
|
||||||
|
|
||||||
## 8.1.0
|
|
||||||
|
|
||||||
* Updated README
|
|
||||||
* Updated to logo
|
|
||||||
* Updated to `analyzer` 6.2.x
|
|
||||||
* Updated to support Dart SDK 3.1.x
|
|
||||||
|
|
||||||
## 8.0.0
|
|
||||||
|
|
||||||
* Required Dart SDK > 3.0.x
|
|
||||||
* Updated to `analyzer` 5.0.x
|
|
||||||
|
|
||||||
## 7.0.0
|
## 7.0.0
|
||||||
|
|
||||||
* Skipped release
|
* Required Dart >= 2.17.x
|
||||||
|
* Updated packages versions
|
||||||
|
|
||||||
|
## 6.1.0
|
||||||
|
|
||||||
|
* Updated to `analyzer` 4.x.x
|
||||||
|
* Updated to `lints` 2.x.x
|
||||||
|
|
||||||
|
## 6.0.1
|
||||||
|
|
||||||
|
* Added `angel3-orm-mysql` template for ORM support for MariaDB and MySQL
|
||||||
|
|
||||||
## 6.0.0
|
## 6.0.0
|
||||||
|
|
||||||
* Updated Dart SDK to 2.16.x
|
* Required Dart >= 2.16.x
|
||||||
|
|
||||||
## 5.0.0
|
## 5.0.0
|
||||||
|
|
||||||
|
@ -39,7 +31,7 @@
|
||||||
|
|
||||||
* Changed `pub` to `dart pub`
|
* Changed `pub` to `dart pub`
|
||||||
* Changed `pub build` to `dart build`
|
* Changed `pub build` to `dart build`
|
||||||
* Updated Dart SDK to 2.14.0
|
* Updated SDK to 2.14.0
|
||||||
|
|
||||||
## 3.2.0
|
## 3.2.0
|
||||||
|
|
||||||
|
@ -51,7 +43,7 @@
|
||||||
|
|
||||||
## 3.1.0
|
## 3.1.0
|
||||||
|
|
||||||
* Upgraded to support `analyzer` 2.0.0
|
* Upgraded to support `analyzer` 2.0.0 major release
|
||||||
|
|
||||||
## 3.0.1
|
## 3.0.1
|
||||||
|
|
||||||
|
|
16
README.md
16
README.md
|
@ -1,13 +1,13 @@
|
||||||
# Angel3 CLI
|
# Angel3 CLI
|
||||||
|
|
||||||
[![Angel3 Logo](angel3_logo.png)](https://github.com/dart-backend/angel3-cli)
|
[![Screenshot of Terminal](screenshots/angel3-screenshot.png)](https://github.com/dukefirehawk/angel3-cli)
|
||||||
|
|
||||||
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_cli?include_prereleases)
|
![Pub Version (including pre-releases)](https://img.shields.io/pub/v/angel3_cli?include_prereleases)
|
||||||
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
|
[![Null Safety](https://img.shields.io/badge/null-safety-brightgreen)](https://dart.dev/null-safety)
|
||||||
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
|
[![Gitter](https://img.shields.io/gitter/room/angel_dart/discussion)](https://gitter.im/angel_dart/discussion)
|
||||||
[![License](https://img.shields.io/github/license/dart-backend/angel3-cli)](https://github.com/dart-backend/angel3-cli/blob/master/LICENSE)
|
[![License](https://img.shields.io/github/license/dukefirehawk/angel3-cli)](https://github.com/dukefirehawk/angel3-cli/blob/master/LICENSE)
|
||||||
|
|
||||||
The command line interface for buidling dart backend in [Angel3 framework](https://pub.dev/packages/angel3_framework) that provides the following functionalities:
|
Command-line tools for the [Angel3 framework](https://pub.dev/packages/angel3_framework) that provides the following functionalities:
|
||||||
|
|
||||||
* Project scaffolding
|
* Project scaffolding
|
||||||
* Generating service models, plugins, tests and more
|
* Generating service models, plugins, tests and more
|
||||||
|
@ -16,10 +16,18 @@ The command line interface for buidling dart backend in [Angel3 framework](https
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
Release version:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
dart pub global activate angel3_cli
|
dart pub global activate angel3_cli
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Development version:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dart pub global activate --source git https://github.com/dukefirehawk/angel3-cli
|
||||||
|
```
|
||||||
|
|
||||||
## Help
|
## Help
|
||||||
|
|
||||||
For information on the available options:
|
For information on the available options:
|
||||||
|
@ -27,5 +35,3 @@ For information on the available options:
|
||||||
```bash
|
```bash
|
||||||
angel3 help
|
angel3 help
|
||||||
```
|
```
|
||||||
|
|
||||||
[![Screenshot of Terminal](screenshots/angel3-screenshot.png)](https://github.com/dart-backend/angel3-cli)
|
|
||||||
|
|
7
TODO.md
Normal file
7
TODO.md
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# Todo
|
||||||
|
|
||||||
|
* `service`
|
||||||
|
* Add tests
|
||||||
|
* `migration`
|
||||||
|
* `deploy`
|
||||||
|
* Call these from Grinder script
|
BIN
angel3_logo.png
BIN
angel3_logo.png
Binary file not shown.
Before Width: | Height: | Size: 4.8 KiB |
|
@ -1,135 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
|
||||||
width="128"
|
|
||||||
height="128"
|
|
||||||
viewBox="0 0 128 128"
|
|
||||||
version="1.1"
|
|
||||||
id="svg1"
|
|
||||||
inkscape:version="1.3 (0e150ed, 2023-07-21)"
|
|
||||||
sodipodi:docname="logo128.svg"
|
|
||||||
inkscape:export-filename="logo_icon_128.png"
|
|
||||||
inkscape:export-xdpi="96"
|
|
||||||
inkscape:export-ydpi="96"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg">
|
|
||||||
<sodipodi:namedview
|
|
||||||
id="namedview1"
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#000000"
|
|
||||||
borderopacity="0.25"
|
|
||||||
inkscape:showpageshadow="2"
|
|
||||||
inkscape:pageopacity="0.0"
|
|
||||||
inkscape:pagecheckerboard="0"
|
|
||||||
inkscape:deskcolor="#d1d1d1"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
showgrid="true"
|
|
||||||
inkscape:zoom="1.5862247"
|
|
||||||
inkscape:cx="58.629776"
|
|
||||||
inkscape:cy="90.466375"
|
|
||||||
inkscape:window-width="1312"
|
|
||||||
inkscape:window-height="738"
|
|
||||||
inkscape:window-x="128"
|
|
||||||
inkscape:window-y="111"
|
|
||||||
inkscape:window-maximized="0"
|
|
||||||
inkscape:current-layer="layer1">
|
|
||||||
<inkscape:grid
|
|
||||||
id="grid1"
|
|
||||||
units="px"
|
|
||||||
originx="0"
|
|
||||||
originy="0"
|
|
||||||
spacingx="1"
|
|
||||||
spacingy="1"
|
|
||||||
empcolor="#0099e5"
|
|
||||||
empopacity="0.30196078"
|
|
||||||
color="#0099e5"
|
|
||||||
opacity="0.14901961"
|
|
||||||
empspacing="5"
|
|
||||||
dotted="false"
|
|
||||||
gridanglex="30"
|
|
||||||
gridanglez="30"
|
|
||||||
visible="true" />
|
|
||||||
</sodipodi:namedview>
|
|
||||||
<defs
|
|
||||||
id="defs1">
|
|
||||||
<linearGradient
|
|
||||||
id="linearGradient15"
|
|
||||||
inkscape:collect="always">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#d81c1c;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop15" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#d81c1c;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop16" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch13"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#d81c1c;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop14" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
id="swatch7"
|
|
||||||
inkscape:swatch="solid">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#d81c1c;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop7" />
|
|
||||||
</linearGradient>
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#swatch13"
|
|
||||||
id="linearGradient14"
|
|
||||||
x1="76.307388"
|
|
||||||
y1="264.40897"
|
|
||||||
x2="425.84061"
|
|
||||||
y2="264.40897"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient15"
|
|
||||||
id="linearGradient16"
|
|
||||||
x1="185.07693"
|
|
||||||
y1="354.51111"
|
|
||||||
x2="296.18161"
|
|
||||||
y2="354.51111"
|
|
||||||
gradientUnits="userSpaceOnUse" />
|
|
||||||
</defs>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1">
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:137.557px;font-family:'Comic Sans MS';-inkscape-font-specification:'Comic Sans MS, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;opacity:1;fill:#d81c1c;fill-opacity:1;stroke-width:0.716443"
|
|
||||||
x="13.382875"
|
|
||||||
y="114.63321"
|
|
||||||
id="text1"
|
|
||||||
transform="scale(1.0161156,0.98414)"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan1"
|
|
||||||
x="13.382875"
|
|
||||||
y="114.63321"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:137.557px;font-family:'Comic Sans MS';-inkscape-font-specification:'Comic Sans MS, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#d81c1c;fill-opacity:1;stroke-width:0.716443">A</tspan></text>
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:54.9757px;font-family:'Comic Sans MS';-inkscape-font-specification:'Comic Sans MS, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;opacity:1;fill:#d81c1c;fill-opacity:1;stroke:#ffffff;stroke-width:0.725;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
x="44.028919"
|
|
||||||
y="108.3848"
|
|
||||||
id="text2"
|
|
||||||
transform="scale(1.1577238,0.86376387)"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan2"
|
|
||||||
x="44.028919"
|
|
||||||
y="108.3848"
|
|
||||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:54.9757px;font-family:'Comic Sans MS';-inkscape-font-specification:'Comic Sans MS, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#d81c1c;fill-opacity:1;stroke:#ffffff;stroke-width:0.725;stroke-dasharray:none;stroke-opacity:1">3</tspan></text>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 4.9 KiB |
Binary file not shown.
|
@ -7,6 +7,8 @@ import 'package:args/command_runner.dart';
|
||||||
import 'package:angel3_cli/angel3_cli.dart';
|
import 'package:angel3_cli/angel3_cli.dart';
|
||||||
import 'package:io/ansi.dart';
|
import 'package:io/ansi.dart';
|
||||||
|
|
||||||
|
//const String doctor = 'doctor';
|
||||||
|
|
||||||
void main(List<String> args) async {
|
void main(List<String> args) async {
|
||||||
var runner = CommandRunner('angel3',
|
var runner = CommandRunner('angel3',
|
||||||
'$asciiArt\n\nCommand-line tools for the Angel3 framework.\n\nhttps://angel3-framework.web.app');
|
'$asciiArt\n\nCommand-line tools for the Angel3 framework.\n\nhttps://angel3-framework.web.app');
|
||||||
|
|
|
@ -243,10 +243,9 @@ class InitCommand extends Command {
|
||||||
var gitDir = Directory.fromUri(projectDir.uri.resolve('.git'));
|
var gitDir = Directory.fromUri(projectDir.uri.resolve('.git'));
|
||||||
if (await gitDir.exists()) await gitDir.delete(recursive: true);
|
if (await gitDir.exists()) await gitDir.delete(recursive: true);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
await boilerplateDir.delete(recursive: true);
|
await boilerplateDir.delete(recursive: true).catchError((e) {
|
||||||
//await boilerplateDir.delete(recursive: true).catchError((e) {
|
print('Got error: ${e.error}');
|
||||||
// print('Got error: ${e.error}');
|
});
|
||||||
//});
|
|
||||||
|
|
||||||
if (e is! String) {
|
if (e is! String) {
|
||||||
print(red.wrap('$ballot Could not initialize Angel3 project.'));
|
print(red.wrap('$ballot Could not initialize Angel3 project.'));
|
||||||
|
@ -281,7 +280,7 @@ Future preBuild(Directory projectDir) async {
|
||||||
if (buildCode != 0) throw Exception('Failed to pre-build resources.');
|
if (buildCode != 0) throw Exception('Failed to pre-build resources.');
|
||||||
}
|
}
|
||||||
|
|
||||||
const repoLocation = 'https://github.com/dart-backend';
|
const repoLocation = 'https://github.com/dukefirehawk';
|
||||||
|
|
||||||
const BoilerplateInfo graphQLBoilerplate = BoilerplateInfo(
|
const BoilerplateInfo graphQLBoilerplate = BoilerplateInfo(
|
||||||
'GraphQL',
|
'GraphQL',
|
||||||
|
|
|
@ -225,11 +225,13 @@ class RenamingVisitor extends RecursiveAstVisitor {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void visitLibraryDirective(LibraryDirective node) {
|
void visitLibraryDirective(LibraryDirective node) {
|
||||||
var name = node.name2?.name ?? '';
|
var name = node.name2?.name;
|
||||||
|
|
||||||
if (name.startsWith(oldName)) {
|
if (name != null) {
|
||||||
replace[[node.offset, node.end]] =
|
if (name.startsWith(oldName)) {
|
||||||
'library ${name.replaceFirst(oldName, newName)};';
|
replace[[node.offset, node.end]] =
|
||||||
|
'library ${name.replaceFirst(oldName, newName)};';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,6 @@ import 'package:code_builder/code_builder.dart';
|
||||||
import 'generator.dart';
|
import 'generator.dart';
|
||||||
|
|
||||||
class CustomServiceGenerator extends ServiceGenerator {
|
class CustomServiceGenerator extends ServiceGenerator {
|
||||||
bool get createsModel => false;
|
|
||||||
|
|
||||||
bool get createsValidator => false;
|
|
||||||
|
|
||||||
const CustomServiceGenerator() : super('Custom');
|
const CustomServiceGenerator() : super('Custom');
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
|
@ -8,6 +8,23 @@ class ServiceGenerator {
|
||||||
|
|
||||||
List<MakerDependency> get dependencies => [];
|
List<MakerDependency> get dependencies => [];
|
||||||
|
|
||||||
|
/*
|
||||||
|
@deprecated
|
||||||
|
bool get createsModel => true;
|
||||||
|
|
||||||
|
@deprecated
|
||||||
|
bool get createsValidator => true;
|
||||||
|
|
||||||
|
@deprecated
|
||||||
|
bool get exportedInServiceLibrary => true;
|
||||||
|
|
||||||
|
@deprecated
|
||||||
|
bool get injectsSingleton => false;
|
||||||
|
|
||||||
|
@deprecated
|
||||||
|
bool get shouldRunBuild => false;
|
||||||
|
*/
|
||||||
|
|
||||||
bool get goesFirst => false;
|
bool get goesFirst => false;
|
||||||
|
|
||||||
void applyToLibrary(LibraryBuilder library, String name, String lower) {}
|
void applyToLibrary(LibraryBuilder library, String name, String lower) {}
|
||||||
|
|
|
@ -4,8 +4,6 @@ import 'package:code_builder/code_builder.dart';
|
||||||
class MapServiceGenerator extends ServiceGenerator {
|
class MapServiceGenerator extends ServiceGenerator {
|
||||||
const MapServiceGenerator() : super('In-Memory');
|
const MapServiceGenerator() : super('In-Memory');
|
||||||
|
|
||||||
bool get createsModel => false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Expression createInstance(LibraryBuilder library, MethodBuilder methodBuilder,
|
Expression createInstance(LibraryBuilder library, MethodBuilder methodBuilder,
|
||||||
String name, String lower) {
|
String name, String lower) {
|
||||||
|
|
|
@ -8,9 +8,7 @@ class MongoServiceGenerator extends ServiceGenerator {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<MakerDependency> get dependencies =>
|
List<MakerDependency> get dependencies =>
|
||||||
const [MakerDependency('angel3_mongo', '^4.0.0')];
|
const [MakerDependency('angel3_mongo', '^7.0.0')];
|
||||||
|
|
||||||
bool get createsModel => false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void applyToConfigureServer(
|
void applyToConfigureServer(
|
||||||
|
|
|
@ -10,8 +10,6 @@ class RethinkServiceGenerator extends ServiceGenerator {
|
||||||
List<MakerDependency> get dependencies =>
|
List<MakerDependency> get dependencies =>
|
||||||
const [MakerDependency('angel3_rethink', '^4.0.0')];
|
const [MakerDependency('angel3_rethink', '^4.0.0')];
|
||||||
|
|
||||||
bool get createsModel => false;
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void applyToConfigureServer(
|
void applyToConfigureServer(
|
||||||
LibraryBuilder library,
|
LibraryBuilder library,
|
||||||
|
|
32
pubspec.yaml
32
pubspec.yaml
|
@ -1,29 +1,29 @@
|
||||||
name: angel3_cli
|
name: angel3_cli
|
||||||
version: 8.2.0
|
version: 7.1.0
|
||||||
description: The command line interface for building dart backend in Angel3 framework.
|
description: Command line tools for the Angel3 framework, including scaffolding.
|
||||||
homepage: https://angel3-framework.web.app/
|
homepage: https://angel3-framework.web.app/
|
||||||
repository: https://github.com/dart-backend/angel3-cli
|
repository: https://github.com/dukefirehawk/angel3-cli
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
sdk: '>=2.18.0 <3.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
analyzer: ^6.3.0
|
analyzer: ^5.2.0
|
||||||
args: ^2.4.0
|
args: ^2.1.1
|
||||||
code_builder: ^4.5.0
|
code_builder: ^4.0.0
|
||||||
dart_style: ^2.3.0
|
dart_style: ^2.0.1
|
||||||
glob: ^2.1.0
|
glob: ^2.0.1
|
||||||
http: ^1.0.0
|
http: ^0.13.3
|
||||||
io: ^1.0.0
|
io: ^1.0.0
|
||||||
inflection3: ^0.5.3+2
|
inflection3: ^0.5.3+2
|
||||||
mustache_template: ^2.0.0
|
mustache_template: ^2.0.0
|
||||||
path: ^1.9.0
|
path: ^1.8.0
|
||||||
prompts: ^2.0.0
|
prompts: ^2.0.0
|
||||||
pubspec_parse: ^1.2.0
|
pubspec_parse: ^1.0.0
|
||||||
quiver: ^3.2.0
|
quiver: ^3.0.1
|
||||||
recase: ^4.1.0
|
recase: ^4.0.0
|
||||||
shutdown: ^0.4.3
|
shutdown: ^0.4.3
|
||||||
watcher: ^1.1.0
|
watcher: ^1.0.0
|
||||||
yaml: ^3.1.0
|
yaml: ^3.1.0
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
lints: ^3.0.0
|
lints: ^2.0.0
|
||||||
executables:
|
executables:
|
||||||
angel3: angel3
|
angel3: angel3
|
||||||
|
|
BIN
screenshots/screenshot.png
Normal file
BIN
screenshots/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 83 KiB |
Loading…
Reference in a new issue