@ -0,0 +1,4 @@ |
|||||||
|
{ |
||||||
|
"flutterSdkVersion": "3.0.4@stable", |
||||||
|
"flavors": {} |
||||||
|
} |
@ -0,0 +1,273 @@ |
|||||||
|
# Created with package:mono_repo v6.3.0 |
||||||
|
name: Dart CI |
||||||
|
on: |
||||||
|
push: |
||||||
|
branches: |
||||||
|
- main |
||||||
|
pull_request: |
||||||
|
defaults: |
||||||
|
run: |
||||||
|
shell: bash |
||||||
|
env: |
||||||
|
PUB_ENVIRONMENT: bot.github |
||||||
|
permissions: read-all |
||||||
|
|
||||||
|
jobs: |
||||||
|
job_001: |
||||||
|
name: mono_repo self validate |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d |
||||||
|
with: |
||||||
|
sdk: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- name: mono_repo self validate |
||||||
|
run: dart pub global activate mono_repo 6.3.0 |
||||||
|
- name: mono_repo self validate |
||||||
|
run: dart pub global run mono_repo generate --validate |
||||||
|
job_002: |
||||||
|
name: "analyze; PKGS: packages/file_icons, packages/harbour, packages/nextcloud, packages/settings, packages/sort_box, packages/spec_templates; `dart format --output=none --set-exit-if-changed --line-length 120 .`" |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/file_icons-packages/harbour-packages/nextcloud-packages/settings-packages/sort_box-packages/spec_templates;commands:format" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/file_icons-packages/harbour-packages/nextcloud-packages/settings-packages/sort_box-packages/spec_templates |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: subosito/flutter-action@2fb73e25c9488eb544b9b14b2ce00c4c2baf789e |
||||||
|
with: |
||||||
|
channel: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- id: packages_file_icons_pub_upgrade |
||||||
|
name: packages/file_icons; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/file_icons |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/file_icons; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_file_icons_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/file_icons |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
- id: packages_harbour_pub_upgrade |
||||||
|
name: packages/harbour; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/harbour |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/harbour; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_harbour_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/harbour |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
- id: packages_nextcloud_pub_upgrade |
||||||
|
name: packages/nextcloud; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/nextcloud; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_nextcloud_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
- id: packages_settings_pub_upgrade |
||||||
|
name: packages/settings; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/settings |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/settings; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_settings_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/settings |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
- id: packages_sort_box_pub_upgrade |
||||||
|
name: packages/sort_box; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/sort_box; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_sort_box_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
- id: packages_spec_templates_pub_upgrade |
||||||
|
name: packages/spec_templates; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/spec_templates |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: "packages/spec_templates; dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
if: "always() && steps.packages_spec_templates_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/spec_templates |
||||||
|
run: "dart format --output=none --set-exit-if-changed --line-length 120 ." |
||||||
|
needs: |
||||||
|
- job_001 |
||||||
|
job_003: |
||||||
|
name: "analyze; PKGS: packages/file_icons, packages/harbour, packages/settings; `flutter analyze`" |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/file_icons-packages/harbour-packages/settings;commands:analyze_0" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/file_icons-packages/harbour-packages/settings |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: subosito/flutter-action@2fb73e25c9488eb544b9b14b2ce00c4c2baf789e |
||||||
|
with: |
||||||
|
channel: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- id: packages_file_icons_pub_upgrade |
||||||
|
name: packages/file_icons; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/file_icons |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: packages/file_icons; flutter analyze |
||||||
|
if: "always() && steps.packages_file_icons_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/file_icons |
||||||
|
run: flutter analyze |
||||||
|
- id: packages_harbour_pub_upgrade |
||||||
|
name: packages/harbour; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/harbour |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: packages/harbour; flutter analyze |
||||||
|
if: "always() && steps.packages_harbour_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/harbour |
||||||
|
run: flutter analyze |
||||||
|
- id: packages_settings_pub_upgrade |
||||||
|
name: packages/settings; flutter pub pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/settings |
||||||
|
run: flutter pub pub upgrade |
||||||
|
- name: packages/settings; flutter analyze |
||||||
|
if: "always() && steps.packages_settings_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/settings |
||||||
|
run: flutter analyze |
||||||
|
needs: |
||||||
|
- job_001 |
||||||
|
job_004: |
||||||
|
name: "analyze; PKGS: packages/nextcloud, packages/sort_box, packages/spec_templates; `dart analyze`" |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/nextcloud-packages/sort_box-packages/spec_templates;commands:analyze_1" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/nextcloud-packages/sort_box-packages/spec_templates |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d |
||||||
|
with: |
||||||
|
sdk: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- id: packages_nextcloud_pub_upgrade |
||||||
|
name: packages/nextcloud; dart pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: dart pub upgrade |
||||||
|
- name: packages/nextcloud; dart analyze |
||||||
|
if: "always() && steps.packages_nextcloud_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: dart analyze |
||||||
|
- id: packages_sort_box_pub_upgrade |
||||||
|
name: packages/sort_box; dart pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: dart pub upgrade |
||||||
|
- name: packages/sort_box; dart analyze |
||||||
|
if: "always() && steps.packages_sort_box_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: dart analyze |
||||||
|
- id: packages_spec_templates_pub_upgrade |
||||||
|
name: packages/spec_templates; dart pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/spec_templates |
||||||
|
run: dart pub upgrade |
||||||
|
- name: packages/spec_templates; dart analyze |
||||||
|
if: "always() && steps.packages_spec_templates_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/spec_templates |
||||||
|
run: dart analyze |
||||||
|
needs: |
||||||
|
- job_001 |
||||||
|
job_005: |
||||||
|
name: "unit_test; PKG: packages/nextcloud; `dart test`" |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/nextcloud;commands:test" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/nextcloud |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d |
||||||
|
with: |
||||||
|
sdk: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- id: packages_nextcloud_pub_upgrade |
||||||
|
name: packages/nextcloud; dart pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: dart pub upgrade |
||||||
|
- name: packages/nextcloud; dart test |
||||||
|
if: "always() && steps.packages_nextcloud_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/nextcloud |
||||||
|
run: dart test |
||||||
|
needs: |
||||||
|
- job_001 |
||||||
|
- job_002 |
||||||
|
- job_003 |
||||||
|
- job_004 |
||||||
|
job_006: |
||||||
|
name: "unit_test; PKG: packages/sort_box; `dart test`" |
||||||
|
runs-on: ubuntu-latest |
||||||
|
steps: |
||||||
|
- name: Cache Pub hosted dependencies |
||||||
|
uses: actions/cache@4504faf7e9bcf8f3ed0bc863c4e1d21499ab8ef8 |
||||||
|
with: |
||||||
|
path: "~/.pub-cache/hosted" |
||||||
|
key: "os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/sort_box;commands:test" |
||||||
|
restore-keys: | |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable;packages:packages/sort_box |
||||||
|
os:ubuntu-latest;pub-cache-hosted;sdk:stable |
||||||
|
os:ubuntu-latest;pub-cache-hosted |
||||||
|
os:ubuntu-latest |
||||||
|
- uses: dart-lang/setup-dart@6a218f2413a3e78e9087f638a238f6b40893203d |
||||||
|
with: |
||||||
|
sdk: stable |
||||||
|
- id: checkout |
||||||
|
uses: actions/checkout@d0651293c4a5a52e711f25b41b05b2212f385d28 |
||||||
|
- id: packages_sort_box_pub_upgrade |
||||||
|
name: packages/sort_box; dart pub upgrade |
||||||
|
if: "always() && steps.checkout.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: dart pub upgrade |
||||||
|
- name: packages/sort_box; dart test |
||||||
|
if: "always() && steps.packages_sort_box_pub_upgrade.conclusion == 'success'" |
||||||
|
working-directory: packages/sort_box |
||||||
|
run: dart test |
||||||
|
needs: |
||||||
|
- job_001 |
||||||
|
- job_002 |
||||||
|
- job_003 |
||||||
|
- job_004 |
@ -0,0 +1,15 @@ |
|||||||
|
[submodule "external/nextcloud-server"] |
||||||
|
path = external/nextcloud-server |
||||||
|
url = https://github.com/nextcloud/server |
||||||
|
[submodule "external/nextcloud-news"] |
||||||
|
path = external/nextcloud-news |
||||||
|
url = https://github.com/nextcloud/news |
||||||
|
[submodule "external/openapi-generator"] |
||||||
|
path = external/openapi-generator |
||||||
|
url = https://github.com/OpenAPITools/openapi-generator |
||||||
|
[submodule "external/seti-ui"] |
||||||
|
path = external/seti-ui |
||||||
|
url = https://github.com/jesseweed/seti-ui |
||||||
|
[submodule "external/nextcloud-notes"] |
||||||
|
path = external/nextcloud-notes |
||||||
|
url = https://github.com/nextcloud/notes |
@ -0,0 +1,10 @@ |
|||||||
|
# Default ignored files |
||||||
|
/shelf/ |
||||||
|
/workspace.xml |
||||||
|
# Editor-based HTTP Client requests |
||||||
|
/httpRequests/ |
||||||
|
# Datasource local storage ignored files |
||||||
|
/dataSources/ |
||||||
|
/dataSources.local.xml |
||||||
|
/libraries |
||||||
|
*.iml |
@ -0,0 +1,7 @@ |
|||||||
|
<component name="ProjectCodeStyleConfiguration"> |
||||||
|
<code_scheme name="Project" version="173"> |
||||||
|
<codeStyleSettings language="Dart"> |
||||||
|
<option name="RIGHT_MARGIN" value="120" /> |
||||||
|
</codeStyleSettings> |
||||||
|
</code_scheme> |
||||||
|
</component> |
@ -0,0 +1,5 @@ |
|||||||
|
<component name="ProjectCodeStyleConfiguration"> |
||||||
|
<state> |
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" /> |
||||||
|
</state> |
||||||
|
</component> |
@ -0,0 +1,9 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="Android API 32 Platform" project-jdk-type="Android SDK"> |
||||||
|
<output url="file://$PROJECT_DIR$/out" /> |
||||||
|
</component> |
||||||
|
<component name="SuppressKotlinCodeStyleNotification"> |
||||||
|
<option name="disableForAll" value="true" /> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,8 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="ProjectModuleManager"> |
||||||
|
<modules> |
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/nextcloud-harbour.iml" filepath="$PROJECT_DIR$/.idea/nextcloud-harbour.iml" /> |
||||||
|
</modules> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,4 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="PhpProjectSharedConfiguration" php_language_level="8.1" /> |
||||||
|
</project> |
@ -0,0 +1,6 @@ |
|||||||
|
<component name="ProjectRunConfigurationManager"> |
||||||
|
<configuration default="false" name="Debug" type="FlutterRunConfigurationType" factoryName="Flutter"> |
||||||
|
<option name="filePath" value="$PROJECT_DIR$/packages/harbour/lib/main.dart" /> |
||||||
|
<method v="2" /> |
||||||
|
</configuration> |
||||||
|
</component> |
@ -0,0 +1,7 @@ |
|||||||
|
<component name="ProjectRunConfigurationManager"> |
||||||
|
<configuration default="false" name="Release" type="FlutterRunConfigurationType" factoryName="Flutter"> |
||||||
|
<option name="additionalArgs" value="--release" /> |
||||||
|
<option name="filePath" value="$PROJECT_DIR$/packages/harbour/lib/main.dart" /> |
||||||
|
<method v="2" /> |
||||||
|
</configuration> |
||||||
|
</component> |
@ -0,0 +1,11 @@ |
|||||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||||
|
<project version="4"> |
||||||
|
<component name="VcsDirectoryMappings"> |
||||||
|
<mapping directory="" vcs="Git" /> |
||||||
|
<mapping directory="$PROJECT_DIR$/external/nextcloud-news" vcs="Git" /> |
||||||
|
<mapping directory="$PROJECT_DIR$/external/nextcloud-notes" vcs="Git" /> |
||||||
|
<mapping directory="$PROJECT_DIR$/external/nextcloud-server" vcs="Git" /> |
||||||
|
<mapping directory="$PROJECT_DIR$/external/openapi-generator" vcs="Git" /> |
||||||
|
<mapping directory="$PROJECT_DIR$/external/seti-ui" vcs="Git" /> |
||||||
|
</component> |
||||||
|
</project> |
@ -0,0 +1,12 @@ |
|||||||
|
Copyright (c) 2022, jld3103 |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,40 @@ |
|||||||
|
# nextcloud-harbour |
||||||
|
|
||||||
|
A beautiful convergent cross-platform client for Nextcloud written in Flutter. |
||||||
|
|
||||||
|
See [here](./packages/harbour/README.md) for screenshots and other material regarding the app. |
||||||
|
|
||||||
|
This repository not only contains the Harbour app, but also a Nextcloud client written in Dart. |
||||||
|
The client will replace https://github.com/jld3103/dart-nextcloud which is an older unmaintained client I wrote some time ago. |
||||||
|
|
||||||
|
The development of this app and client just started, there will be a lot of changes and new features coming soon. |
||||||
|
|
||||||
|
Additional documentation is very much appreciated. If you find something that you think should be documented, please open an issue or pull request. |
||||||
|
|
||||||
|
## Features |
||||||
|
|
||||||
|
There are a lot of planned features that still need help. Go [here](https://github.com/jld3103/nextcloud-harbour/issues?q=is%3Aopen+is%3Aissue+label%3Afeature) and grab an issue to work on. |
||||||
|
Even if a new feature is not listed yet, please open an issue. |
||||||
|
|
||||||
|
- :heavy_check_mark: Fully supported |
||||||
|
- :white_check_mark: Fully supported, but new features planned |
||||||
|
- :warning: Partially supported |
||||||
|
- :rocket: Planned |
||||||
|
|
||||||
|
| App | Status | |
||||||
|
|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------| |
||||||
|
| Files | :white_check_mark: [See here](https://github.com/jld3103/nextcloud-harbour/issues?q=is%3Aopen+is%3Aissue+label%3A%22harbour%3A+files%22+label%3Afeature) | |
||||||
|
| Notes | :heavy_check_mark: | |
||||||
|
| News | :white_check_mark: [See here](https://github.com/jld3103/nextcloud-harbour/issues?q=is%3Aopen+is%3Aissue+label%3Afeature+label%3A%22harbour%3A+news%22) | |
||||||
|
| Contacts | :rocket: | |
||||||
|
| Calendar | :rocket: | |
||||||
|
| Tasks | :rocket: | |
||||||
|
| Cookbook | :rocket: | |
||||||
|
|
||||||
|
|
||||||
|
## Platform support |
||||||
|
|
||||||
|
Except for web, Harbour should run on all supported Flutter platforms in the future. |
||||||
|
Right now this is not the case, only Android and Linux are supported and tested, but this can easily be extended to other platforms. |
||||||
|
|
||||||
|
The features and problems of all platforms should be considered when implementing new features. |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit 01e4adfee2307a7a4c51b1f793e50d7d4f9325b8 |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit e7e9ea03c714198a7dada6494d51e77baa747812 |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit 2764c381a054ca8284975e70037e96411d2ce8f8 |
@ -0,0 +1 @@ |
|||||||
|
Subproject commit 69f79fb7892948590a9ffe46754c47ddd2634be1 |
@ -0,0 +1,11 @@ |
|||||||
|
github: |
||||||
|
on: |
||||||
|
push: |
||||||
|
branches: |
||||||
|
- main |
||||||
|
pull_request: |
||||||
|
|
||||||
|
self_validate: true |
||||||
|
|
||||||
|
merge_stages: |
||||||
|
- analyze |
@ -0,0 +1,12 @@ |
|||||||
|
# Files and directories created by pub. |
||||||
|
.dart_tool/ |
||||||
|
.packages |
||||||
|
|
||||||
|
# Conventional directory for build outputs. |
||||||
|
build/ |
||||||
|
|
||||||
|
# Omit committing pubspec.lock for library packages; see |
||||||
|
# https://dart.dev/guides/libraries/private-files#pubspeclock. |
||||||
|
pubspec.lock |
||||||
|
|
||||||
|
fonts/ |
@ -0,0 +1,12 @@ |
|||||||
|
Copyright (c) 2022, jld3103 |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,6 @@ |
|||||||
|
# file_icons |
||||||
|
|
||||||
|
This is loosely ported from https://github.com/git-touch/file-icon. |
||||||
|
I rewrote the script for generating the code in dart, improved the script and fixed some issues with the resulting output. |
||||||
|
|
||||||
|
To regenerate the data run `fvm dart run`. |
@ -0,0 +1,5 @@ |
|||||||
|
include: package:nit_picking/dart.yaml |
||||||
|
|
||||||
|
linter: |
||||||
|
rules: |
||||||
|
prefer_final_parameters: false # Disabled until super.X is no longer complained about in constructors |
@ -0,0 +1,159 @@ |
|||||||
|
// This script was ported from https://github.com/git-touch/file-icon/blob/master/tool/gulpfile.esm.js and improved in many ways |
||||||
|
|
||||||
|
import 'dart:io'; |
||||||
|
|
||||||
|
import 'package:path/path.dart' as p; |
||||||
|
|
||||||
|
final setiUIPath = p.join( |
||||||
|
'..', |
||||||
|
'..', |
||||||
|
'external', |
||||||
|
'seti-ui', |
||||||
|
); |
||||||
|
|
||||||
|
void main() { |
||||||
|
copyFont(); |
||||||
|
generateData(); |
||||||
|
} |
||||||
|
|
||||||
|
void copyFont() { |
||||||
|
final fontsDir = Directory('fonts'); |
||||||
|
if (!fontsDir.existsSync()) { |
||||||
|
fontsDir.createSync(); |
||||||
|
} |
||||||
|
File( |
||||||
|
p.join( |
||||||
|
setiUIPath, |
||||||
|
'styles', |
||||||
|
'_fonts', |
||||||
|
'seti', |
||||||
|
'seti.ttf', |
||||||
|
), |
||||||
|
).copySync(p.join('fonts', 'seti.ttf')); |
||||||
|
} |
||||||
|
|
||||||
|
void generateData() { |
||||||
|
final mappingLess = File( |
||||||
|
p.join( |
||||||
|
setiUIPath, |
||||||
|
'styles', |
||||||
|
'components', |
||||||
|
'icons', |
||||||
|
'mapping.less', |
||||||
|
), |
||||||
|
).readAsStringSync(); |
||||||
|
final setiLess = File( |
||||||
|
p.join( |
||||||
|
setiUIPath, |
||||||
|
'styles', |
||||||
|
'_fonts', |
||||||
|
'seti.less', |
||||||
|
), |
||||||
|
).readAsStringSync(); |
||||||
|
final uiVariablesLess = File( |
||||||
|
p.join( |
||||||
|
setiUIPath, |
||||||
|
'styles', |
||||||
|
'ui-variables.less', |
||||||
|
), |
||||||
|
).readAsStringSync(); |
||||||
|
|
||||||
|
final colors = <String, String>{'@seti-primary': '_blue'}; |
||||||
|
final iconSet = <String, List<String>>{}; |
||||||
|
final codePoints = <String, String>{}; |
||||||
|
|
||||||
|
// https://github.com/microsoft/vscode/blob/554182620f43390075d8c7e7fa36634288ef4e2d/extensions/theme-seti/build/update-icon-theme.js#L345 |
||||||
|
for (final match |
||||||
|
in RegExp('\\.icon-(?:set|partial)\\([\'"]([\\w-.+]+)[\'"],\\s*[\'"]([\\w-]+)[\'"],\\s*(@[\\w-]+)\\)') |
||||||
|
.allMatches(mappingLess)) { |
||||||
|
final pattern = match.group(1)!.toLowerCase(); |
||||||
|
final type = match.group(2)!; |
||||||
|
final colorName = match.group(3)!; |
||||||
|
|
||||||
|
if (colorName != '@seti-primary') { |
||||||
|
colors[colorName] = ''; |
||||||
|
} |
||||||
|
|
||||||
|
if (iconSet[pattern] == null) { |
||||||
|
iconSet[pattern] = [type, colorName]; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
for (final match in RegExp("^\t@([a-zA-Z0-9-_]+): '\\\\([A-Z0-9]+)';\$", multiLine: true).allMatches(setiLess)) { |
||||||
|
codePoints[match.group(1)!] = '0x${match.group(2)!}'; |
||||||
|
} |
||||||
|
|
||||||
|
for (final match |
||||||
|
in RegExp('^(${colors.keys.join('|')}): #([a-f0-9]+);\$', multiLine: true).allMatches(uiVariablesLess)) { |
||||||
|
final colorName = match.group(1)!; |
||||||
|
final hexCode = match.group(2)!; |
||||||
|
assert(hexCode.length == 6, 'CSS hex color needs to be six characters long'); |
||||||
|
colors[colorName] = '0xff$hexCode'; |
||||||
|
} |
||||||
|
|
||||||
|
final code = <String>[ |
||||||
|
'// THIS CODE IS GENERATED - DO NOT EDIT MANUALLY', |
||||||
|
'', |
||||||
|
"import 'package:file_icons/src/meta.dart';", |
||||||
|
'', |
||||||
|
'// Code points', |
||||||
|
// This filters unused codepoints. |
||||||
|
for (final type in codePoints.keys |
||||||
|
.where((final type) => iconSet.keys.map((final pattern) => iconSet[pattern]![0] == type).contains(true))) ...[ |
||||||
|
'const ${_toVariableName(type)} = ${codePoints[type]};', |
||||||
|
], |
||||||
|
'', |
||||||
|
'// Colors', |
||||||
|
for (final colorName in colors.keys) ...[ |
||||||
|
'const ${_toVariableName(colorName)} = ${colors[colorName]};', |
||||||
|
], |
||||||
|
'', |
||||||
|
'/// Mapping between file extensions and code points and colors', |
||||||
|
'const iconSetMap = {', |
||||||
|
// This filters icons where the code points are missing. That indicates the fonts in seti-ui are not up-to-date. |
||||||
|
// Run `gulp icons` in the seti-ui repository and everything should be there. |
||||||
|
// Please submit the changes upstream if you can. |
||||||
|
for (final pattern in iconSet.keys.where((final pattern) => codePoints.keys.contains(iconSet[pattern]![0]))) ...[ |
||||||
|
" '$pattern': SetiMeta(${_toVariableName(iconSet[pattern]![0])}, ${_toVariableName(iconSet[pattern]![1])}),", |
||||||
|
], |
||||||
|
'};', |
||||||
|
'', |
||||||
|
]; |
||||||
|
|
||||||
|
final missingCodePoints = iconSet.keys.where((final pattern) => !codePoints.keys.contains(iconSet[pattern]![0])); |
||||||
|
if (missingCodePoints.isNotEmpty) { |
||||||
|
print( |
||||||
|
'WARNING: Missing code points for ${missingCodePoints.map((final pattern) => iconSet[pattern]![0]).toSet().join(', ')}', |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
File( |
||||||
|
p.join( |
||||||
|
'lib', |
||||||
|
'src', |
||||||
|
'data.dart', |
||||||
|
), |
||||||
|
).writeAsStringSync(code.join('\n')); |
||||||
|
} |
||||||
|
|
||||||
|
String _toVariableName(final String key) { |
||||||
|
final result = StringBuffer('_'); |
||||||
|
|
||||||
|
final parts = key.split(''); |
||||||
|
for (var i = 0; i < parts.length; i++) { |
||||||
|
var char = parts[i]; |
||||||
|
final prevChar = i > 0 ? parts[i - 1] : null; |
||||||
|
if (char == '@' || char == '-' || char == '_') { |
||||||
|
continue; |
||||||
|
} |
||||||
|
if (prevChar == '-' || prevChar == '_') { |
||||||
|
char = char.toUpperCase(); |
||||||
|
} |
||||||
|
if (i == 0) { |
||||||
|
char = char.toLowerCase(); |
||||||
|
} |
||||||
|
result.write(char); |
||||||
|
} |
||||||
|
|
||||||
|
return result.toString(); |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
import 'package:file_icons/src/data.dart'; |
||||||
|
import 'package:flutter/widgets.dart'; |
||||||
|
|
||||||
|
// ignore: public_member_api_docs |
||||||
|
class FileIcon extends StatelessWidget { |
||||||
|
// ignore: public_member_api_docs |
||||||
|
FileIcon( |
||||||
|
final String fileName, { |
||||||
|
this.size, |
||||||
|
this.color, |
||||||
|
super.key, |
||||||
|
}) : fileName = fileName.toLowerCase(); |
||||||
|
|
||||||
|
/// Name of the file |
||||||
|
final String fileName; |
||||||
|
|
||||||
|
/// Size of the icon |
||||||
|
final double? size; |
||||||
|
|
||||||
|
/// This color will override the color provided from Seti icons |
||||||
|
final Color? color; |
||||||
|
|
||||||
|
@override |
||||||
|
Widget build(final BuildContext context) { |
||||||
|
String? key; |
||||||
|
|
||||||
|
if (iconSetMap.containsKey(fileName)) { |
||||||
|
key = fileName; |
||||||
|
} else { |
||||||
|
var chunks = fileName.split('.').sublist(1); |
||||||
|
while (chunks.isNotEmpty) { |
||||||
|
final k = '.${chunks.join()}'; |
||||||
|
if (iconSetMap.containsKey(k)) { |
||||||
|
key = k; |
||||||
|
break; |
||||||
|
} |
||||||
|
chunks = chunks.sublist(1); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
final meta = iconSetMap[key ?? '.txt']!; |
||||||
|
return Icon( |
||||||
|
IconData( |
||||||
|
meta.codePoint, |
||||||
|
fontFamily: 'Seti', |
||||||
|
fontPackage: 'file_icons', |
||||||
|
), |
||||||
|
color: color ?? Color(meta.color), |
||||||
|
size: size, |
||||||
|
); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,558 @@ |
|||||||
|
// THIS CODE IS GENERATED - DO NOT EDIT MANUALLY |
||||||
|
|
||||||
|
import 'package:file_icons/src/meta.dart'; |
||||||
|
|
||||||
|
// Code points |
||||||
|
const _r = 0xE001; |
||||||
|
const _argdown = 0xE003; |
||||||
|
const _asm = 0xE004; |
||||||
|
const _audio = 0xE005; |
||||||
|
const _babel = 0xE006; |
||||||
|
const _bazel = 0xE007; |
||||||
|
const _bicep = 0xE008; |
||||||
|
const _bower = 0xE009; |
||||||
|
const _bsl = 0xE00A; |
||||||
|
const _cSharp = 0xE00B; |
||||||
|
const _c = 0xE00C; |
||||||
|
const _cake = 0xE00D; |
||||||
|
const _cakePhp = 0xE00E; |
||||||
|
const _clock = 0xE012; |
||||||
|
const _clojure = 0xE013; |
||||||
|
const _codeClimate = 0xE014; |
||||||
|
const _codeSearch = 0xE015; |
||||||
|
const _coffee = 0xE016; |
||||||
|
const _coldfusion = 0xE018; |
||||||
|
const _config = 0xE019; |
||||||
|
const _cpp = 0xE01A; |
||||||
|
const _crystal = 0xE01B; |
||||||
|
const _crystalEmbedded = 0xE01C; |
||||||
|
const _css = 0xE01D; |
||||||
|
const _csv = 0xE01E; |
||||||
|
const _cu = 0xE01F; |
||||||
|
const _d = 0xE020; |
||||||
|
const _dart = 0xE021; |
||||||
|
const _db = 0xE022; |
||||||
|
const _default = 0xE023; |
||||||
|
const _docker = 0xE025; |
||||||
|
const _ejs = 0xE027; |
||||||
|
const _elixir = 0xE028; |
||||||
|
const _elixirScript = 0xE029; |
||||||
|
const _elm = 0xE02A; |
||||||
|
const _eslint = 0xE02C; |
||||||
|
const _ethereum = 0xE02D; |
||||||
|
const _fSharp = 0xE02E; |
||||||
|
const _favicon = 0xE02F; |
||||||
|
const _firebase = 0xE030; |
||||||
|
const _firefox = 0xE031; |
||||||
|
const _font = 0xE033; |
||||||
|
const _git = 0xE034; |
||||||
|
const _github = 0xE037; |
||||||
|
const _gitlab = 0xE038; |
||||||
|
const _go = 0xE039; |
||||||
|
const _go2 = 0xE03A; |
||||||
|
const _godot = 0xE03B; |
||||||
|
const _gradle = 0xE03C; |
||||||
|
const _grails = 0xE03D; |
||||||
|
const _graphql = 0xE03E; |
||||||
|
const _grunt = 0xE03F; |
||||||
|
const _gulp = 0xE040; |
||||||
|
const _hacklang = 0xE041; |
||||||
|
const _haml = 0xE042; |
||||||
|
const _happenings = 0xE043; |
||||||
|
const _haskell = 0xE044; |
||||||
|
const _haxe = 0xE045; |
||||||
|
const _heroku = 0xE046; |
||||||
|
const _hex = 0xE047; |
||||||
|
const _html = 0xE048; |
||||||
|
const _htmlErb = 0xE049; |
||||||
|
const _ignored = 0xE04A; |
||||||
|
const _illustrator = 0xE04B; |
||||||
|
const _image = 0xE04C; |
||||||
|
const _info = 0xE04D; |
||||||
|
const _ionic = 0xE04E; |
||||||
|
const _jade = 0xE04F; |
||||||
|
const _java = 0xE050; |
||||||
|
const _javascript = 0xE051; |
||||||
|
const _jenkins = 0xE052; |
||||||
|
const _jinja = 0xE053; |
||||||
|
const _json = 0xE055; |
||||||
|
const _julia = 0xE056; |
||||||
|
const _karma = 0xE057; |
||||||
|
const _kotlin = 0xE058; |
||||||
|
const _less = 0xE059; |
||||||
|
const _license = 0xE05A; |
||||||
|
const _liquid = 0xE05B; |
||||||
|
const _livescript = 0xE05C; |
||||||
|
const _lock = 0xE05D; |
||||||
|
const _lua = 0xE05E; |
||||||
|
const _makefile = 0xE05F; |
||||||
|
const _markdown = 0xE060; |
||||||
|
const _maven = 0xE061; |
||||||
|
const _mdo = 0xE062; |
||||||
|
const _mustache = 0xE063; |
||||||
|
const _nim = 0xE065; |
||||||
|
const _notebook = 0xE066; |
||||||
|
const _npm = 0xE067; |
||||||
|
const _npmIgnored = 0xE068; |
||||||
|
const _nunjucks = 0xE069; |
||||||
|
const _ocaml = 0xE06A; |
||||||
|
const _odata = 0xE06B; |
||||||
|
const _pddl = 0xE06C; |
||||||
|
const _pdf = 0xE06D; |
||||||
|
const _perl = 0xE06E; |
||||||
|
const _photoshop = 0xE06F; |
||||||
|
const _php = 0xE070; |
||||||
|
const _pipeline = 0xE071; |
||||||
|
const _plan = 0xE072; |
||||||
|
const _platformio = 0xE073; |
||||||
|
const _powershell = 0xE074; |
||||||
|
const _prisma = 0xE075; |
||||||
|
const _prolog = 0xE077; |
||||||
|
const _pug = 0xE078; |
||||||
|
const _puppet = 0xE079; |
||||||
|
const _purescript = 0xE07A; |
||||||
|
const _python = 0xE07B; |
||||||
|
const _react = 0xE07D; |
||||||
|
const _reasonml = 0xE07E; |
||||||
|
const _rescript = 0xE07F; |
||||||
|
const _rollup = 0xE080; |
||||||
|
const _ruby = 0xE081; |
||||||
|
const _rust = 0xE082; |
||||||
|
const _salesforce = 0xE083; |
||||||
|
const _sass = 0xE084; |
||||||
|
const _sbt = 0xE085; |
||||||
|
const _scala = 0xE086; |
||||||
|
const _shell = 0xE089; |
||||||
|
const _slim = 0xE08A; |
||||||
|
const _smarty = 0xE08B; |
||||||
|
const _spring = 0xE08C; |
||||||
|
const _stylelint = 0xE08D; |
||||||
|
const _stylus = 0xE08E; |
||||||
|
const _sublime = 0xE08F; |
||||||
|
const _svelte = 0xE090; |
||||||
|
const _svg = 0xE091; |
||||||
|
const _swift = 0xE092; |
||||||
|
const _terraform = 0xE093; |
||||||
|
const _tex = 0xE094; |
||||||
|
const _todo = 0xE096; |
||||||
|
const _tsconfig = 0xE097; |
||||||
|
const _twig = 0xE098; |
||||||
|
const _typescript = 0xE099; |
||||||
|
const _vala = 0xE09A; |
||||||
|
const _video = 0xE09B; |
||||||
|
const _vue = 0xE09C; |
||||||
|
const _wasm = 0xE09D; |
||||||
|
const _wat = 0xE09E; |
||||||
|
const _webpack = 0xE09F; |
||||||
|
const _wgt = 0xE0A0; |
||||||
|
const _windows = 0xE0A1; |
||||||
|
const _word = 0xE0A2; |
||||||
|
const _xls = 0xE0A3; |
||||||
|
const _xml = 0xE0A4; |
||||||
|
const _yarn = 0xE0A5; |
||||||
|
const _yml = 0xE0A6; |
||||||
|
const _zig = 0xE0A7; |
||||||
|
const _zip = 0xE0A8; |
||||||
|
|
||||||
|
// Colors |
||||||
|
const _setiPrimary = _blue; |
||||||
|
const _red = 0xffcc3e44; |
||||||
|
const _blue = 0xff519aba; |
||||||
|
const _green = 0xff8dc149; |
||||||
|
const _purple = 0xffa074c4; |
||||||
|
const _yellow = 0xffcbcb41; |
||||||
|
const _greyLight = 0xff6d8086; |
||||||
|
const _white = 0xffd4d7d6; |
||||||
|
const _ignore = 0xff41535b; |
||||||
|
const _pink = 0xfff55385; |
||||||
|
const _orange = 0xffe37933; |
||||||
|
const _grey = 0xff4d5a5e; |
||||||
|
|
||||||
|
/// Mapping between file extensions and code points and colors |
||||||
|
const iconSetMap = { |
||||||
|
'.bsl': SetiMeta(_bsl, _red), |
||||||
|
'.mdo': SetiMeta(_mdo, _red), |
||||||
|
'.cls': SetiMeta(_salesforce, _blue), |
||||||
|
'.apex': SetiMeta(_salesforce, _blue), |
||||||
|
'.asm': SetiMeta(_asm, _red), |
||||||
|
'.s': SetiMeta(_asm, _red), |
||||||
|
'.bicep': SetiMeta(_bicep, _blue), |
||||||
|
'.bzl': SetiMeta(_bazel, _green), |
||||||
|
'.bazel': SetiMeta(_bazel, _green), |
||||||
|
'.build': SetiMeta(_bazel, _green), |
||||||
|
'.workspace': SetiMeta(_bazel, _green), |
||||||
|
'.bazelignore': SetiMeta(_bazel, _green), |
||||||
|
'.bazelversion': SetiMeta(_bazel, _green), |
||||||
|
'.c': SetiMeta(_c, _blue), |
||||||
|
'.h': SetiMeta(_c, _purple), |
||||||
|
'.m': SetiMeta(_c, _yellow), |
||||||
|
'.cs': SetiMeta(_cSharp, _blue), |
||||||
|
'.cshtml': SetiMeta(_html, _blue), |
||||||
|
'.aspx': SetiMeta(_html, _blue), |
||||||
|
'.ascx': SetiMeta(_html, _green), |
||||||
|
'.asax': SetiMeta(_html, _yellow), |
||||||
|
'.master': SetiMeta(_html, _yellow), |
||||||
|
'.cc': SetiMeta(_cpp, _blue), |
||||||
|
'.cpp': SetiMeta(_cpp, _blue), |
||||||
|
'.cxx': SetiMeta(_cpp, _blue), |
||||||
|
'.c++': SetiMeta(_cpp, _blue), |
||||||
|
'.hh': SetiMeta(_cpp, _purple), |
||||||
|
'.hpp': SetiMeta(_cpp, _purple), |
||||||
|
'.hxx': SetiMeta(_cpp, _purple), |
||||||
|
'.h++': SetiMeta(_cpp, _purple), |
||||||
|
'.mm': SetiMeta(_cpp, _yellow), |
||||||
|
'.clj': SetiMeta(_clojure, _green), |
||||||
|
'.cljs': SetiMeta(_clojure, _green), |
||||||
|
'.cljc': SetiMeta(_clojure, _green), |
||||||
|
'.edn': SetiMeta(_clojure, _blue), |
||||||
|
'.cfc': SetiMeta(_coldfusion, _blue), |
||||||
|
'.cfm': SetiMeta(_coldfusion, _blue), |
||||||
|
'.coffee': SetiMeta(_coffee, _yellow), |
||||||
|
'.litcoffee': SetiMeta(_coffee, _yellow), |
||||||
|
'.config': SetiMeta(_config, _greyLight), |
||||||
|
'.cfg': SetiMeta(_config, _greyLight), |
||||||
|
'.conf': SetiMeta(_config, _greyLight), |
||||||
|
'.cr': SetiMeta(_crystal, _white), |
||||||
|
'.ecr': SetiMeta(_crystalEmbedded, _white), |
||||||
|
'.slang': SetiMeta(_crystalEmbedded, _white), |
||||||
|
'.cson': SetiMeta(_json, _yellow), |
||||||
|
'.css': SetiMeta(_css, _blue), |
||||||
|
'.css.map': SetiMeta(_css, _blue), |
||||||
|
'.sss': SetiMeta(_css, _blue), |
||||||
|
'.csv': SetiMeta(_csv, _green), |
||||||
|
'.xls': SetiMeta(_xls, _green), |
||||||
|
'.xlsx': SetiMeta(_xls, _green), |
||||||
|
'.cu': SetiMeta(_cu, _green), |
||||||
|
'.cuh': SetiMeta(_cu, _purple), |
||||||
|
'.hu': SetiMeta(_cu, _purple), |
||||||
|
'.cake': SetiMeta(_cake, _red), |
||||||
|
'.ctp': SetiMeta(_cakePhp, _red), |
||||||
|
'.d': SetiMeta(_d, _red), |
||||||
|
'.doc': SetiMeta(_word, _blue), |
||||||
|
'.docx': SetiMeta(_word, _blue), |
||||||
|
'.ejs': SetiMeta(_ejs, _yellow), |
||||||
|
'.ex': SetiMeta(_elixir, _purple), |
||||||
|
'.exs': SetiMeta(_elixirScript, _purple), |
||||||
|
'mix': SetiMeta(_hex, _red), |
||||||
|
'.elm': SetiMeta(_elm, _blue), |
||||||
|
'.ico': SetiMeta(_favicon, _yellow), |
||||||
|
'.fs': SetiMeta(_fSharp, _blue), |
||||||
|
'.fsx': SetiMeta(_fSharp, _blue), |
||||||
|
'.gitignore': SetiMeta(_git, _ignore), |
||||||
|
'.gitconfig': SetiMeta(_git, _ignore), |
||||||
|
'.gitkeep': SetiMeta(_git, _ignore), |
||||||
|
'.gitattributes': SetiMeta(_git, _ignore), |
||||||
|
'.gitmodules': SetiMeta(_git, _ignore), |
||||||
|
'.go': SetiMeta(_go2, _blue), |
||||||
|
'.slide': SetiMeta(_go, _blue), |
||||||
|
'.article': SetiMeta(_go, _blue), |
||||||
|
'.gd': SetiMeta(_godot, _blue), |
||||||
|
'.godot': SetiMeta(_godot, _red), |
||||||
|
'.tres': SetiMeta(_godot, _yellow), |
||||||
|
'.tscn': SetiMeta(_godot, _purple), |
||||||
|
'.gradle': SetiMeta(_gradle, _blue), |
||||||
|
'.groovy': SetiMeta(_grails, _green), |
||||||
|
'.gsp': SetiMeta(_grails, _green), |
||||||
|
'.gql': SetiMeta(_graphql, _pink), |
||||||
|
'.graphql': SetiMeta(_graphql, _pink), |
||||||
|
'.graphqls': SetiMeta(_graphql, _pink), |
||||||
|
'.hack': SetiMeta(_hacklang, _orange), |
||||||
|
'.haml': SetiMeta(_haml, _red), |
||||||
|
'.handlebars': SetiMeta(_mustache, _orange), |
||||||
|
'.hbs': SetiMeta(_mustache, _orange), |
||||||
|
'.hjs': SetiMeta(_mustache, _orange), |
||||||
|
'.hs': SetiMeta(_haskell, _purple), |
||||||
|
'.lhs': SetiMeta(_haskell, _purple), |
||||||
|
'.hx': SetiMeta(_haxe, _orange), |
||||||
|
'.hxs': SetiMeta(_haxe, _yellow), |
||||||
|
'.hxp': SetiMeta(_haxe, _blue), |
||||||
|
'.hxml': SetiMeta(_haxe, _purple), |
||||||
|
'.html': SetiMeta(_html, _orange), |
||||||
|
'.jade': SetiMeta(_jade, _red), |
||||||
|
'.java': SetiMeta(_java, _red), |
||||||
|
'.class': SetiMeta(_java, _blue), |
||||||
|
'.classpath': SetiMeta(_java, _red), |
||||||
|
'.properties': SetiMeta(_java, _red), |
||||||
|
'.js': SetiMeta(_javascript, _yellow), |
||||||
|
'.js.map': SetiMeta(_javascript, _yellow), |
||||||
|
'.spec.js': SetiMeta(_javascript, _orange), |
||||||
|
'.test.js': SetiMeta(_javascript, _orange), |
||||||
|
'.es': SetiMeta(_javascript, _yellow), |
||||||
|
'.es5': SetiMeta(_javascript, _yellow), |
||||||
|
'.es6': SetiMeta(_javascript, _yellow), |
||||||
|
'.es7': SetiMeta(_javascript, _yellow), |
||||||
|
'.jinja': SetiMeta(_jinja, _red), |
||||||
|
'.jinja2': SetiMeta(_jinja, _red), |
||||||
|
'.json': SetiMeta(_json, _yellow), |
||||||
|
'.jl': SetiMeta(_julia, _purple), |
||||||
|
'karma.conf.js': SetiMeta(_karma, _green), |
||||||
|
'karma.conf.coffee': SetiMeta(_karma, _green), |
||||||
|
'.kt': SetiMeta(_kotlin, _orange), |
||||||
|
'.kts': SetiMeta(_kotlin, _orange), |
||||||
|
'.dart': SetiMeta(_dart, _blue), |
||||||
|
'.less': SetiMeta(_less, _blue), |
||||||
|
'.liquid': SetiMeta(_liquid, _green), |
||||||
|
'.ls': SetiMeta(_livescript, _blue), |
||||||
|
'.lua': SetiMeta(_lua, _blue), |
||||||
|
'.markdown': SetiMeta(_markdown, _blue), |
||||||
|
'.md': SetiMeta(_markdown, _blue), |
||||||
|
'.argdown': SetiMeta(_argdown, _blue), |
||||||
|
'.ad': SetiMeta(_argdown, _blue), |
||||||
|
'readme.md': SetiMeta(_info, _blue), |
||||||
|
'readme.txt': SetiMeta(_info, _blue), |
||||||
|
'readme': SetiMeta(_info, _blue), |
||||||
|
'changelog.md': SetiMeta(_clock, _blue), |
||||||
|
'changelog.txt': SetiMeta(_clock, _blue), |
||||||
|
'changelog': SetiMeta(_clock, _blue), |
||||||
|
'changes.md': SetiMeta(_clock, _blue), |
||||||
|
'changes.txt': SetiMeta(_clock, _blue), |
||||||
|
'changes': SetiMeta(_clock, _blue), |
||||||
|
'version.md': SetiMeta(_clock, _blue), |
||||||
|
'version.txt': SetiMeta(_clock, _blue), |
||||||
|
'version': SetiMeta(_clock, _blue), |
||||||
|
'mvnw': SetiMeta(_maven, _red), |
||||||
|
'.mustache': SetiMeta(_mustache, _orange), |
||||||
|
'.stache': SetiMeta(_mustache, _orange), |
||||||
|
'.nim': SetiMeta(_nim, _yellow), |
||||||
|
'.nims': SetiMeta(_nim, _yellow), |
||||||
|
'.github-issues': SetiMeta(_github, _white), |
||||||
|
'.ipynb': SetiMeta(_notebook, _blue), |
||||||
|
'.njk': SetiMeta(_nunjucks, _green), |
||||||
|
'.nunjucks': SetiMeta(_nunjucks, _green), |
||||||
|
'.nunjs': SetiMeta(_nunjucks, _green), |
||||||
|
'.nunj': SetiMeta(_nunjucks, _green), |
||||||
|
'.njs': SetiMeta(_nunjucks, _green), |
||||||
|
'.nj': SetiMeta(_nunjucks, _green), |
||||||
|
'.npm-debug.log': SetiMeta(_npm, _ignore), |
||||||
|
'.npmignore': SetiMeta(_npm, _red), |
||||||
|
'.npmrc': SetiMeta(_npm, _red), |
||||||
|
'.ml': SetiMeta(_ocaml, _orange), |
||||||
|
'.mli': SetiMeta(_ocaml, _orange), |
||||||
|
'.cmx': SetiMeta(_ocaml, _orange), |
||||||
|
'.cmxa': SetiMeta(_ocaml, _orange), |
||||||
|
'.odata': SetiMeta(_odata, _orange), |
||||||
|
'.pl': SetiMeta(_perl, _blue), |
||||||
|
'.php': SetiMeta(_php, _purple), |
||||||
|
'.php.inc': SetiMeta(_php, _purple), |
||||||
|
'.pipeline': SetiMeta(_pipeline, _orange), |
||||||
|
'.pddl': SetiMeta(_pddl, _purple), |
||||||
|
'.plan': SetiMeta(_plan, _green), |
||||||
|
'.happenings': SetiMeta(_happenings, _blue), |
||||||
|
'.ps1': SetiMeta(_powershell, _blue), |
||||||
|
'.psd1': SetiMeta(_powershell, _blue), |
||||||
|
'.psm1': SetiMeta(_powershell, _blue), |
||||||
|
'.prisma': SetiMeta(_prisma, _blue), |
||||||
|
'.pug': SetiMeta(_pug, _red), |
||||||
|
'.pp': SetiMeta(_puppet, _yellow), |
||||||
|
'.epp': SetiMeta(_puppet, _yellow), |
||||||
|
'.purs': SetiMeta(_purescript, _white), |
||||||
|
'.py': SetiMeta(_python, _blue), |
||||||
|
'.jsx': SetiMeta(_react, _blue), |
||||||
|
'.spec.jsx': SetiMeta(_react, _orange), |
||||||
|
'.test.jsx': SetiMeta(_react, _orange), |
||||||
|
'.cjsx': SetiMeta(_react, _blue), |
||||||
|
'.spec.tsx': SetiMeta(_react, _orange), |
||||||
|
'.test.tsx': SetiMeta(_react, _orange), |
||||||
|
'.re': SetiMeta(_reasonml, _red), |
||||||
|
'.res': SetiMeta(_rescript, _red), |
||||||
|
'.resi': SetiMeta(_rescript, _pink), |
||||||
|
'.r': SetiMeta(_r, _blue), |
||||||
|
'.rmd': SetiMeta(_r, _blue), |
||||||
|
'.rb': SetiMeta(_ruby, _red), |
||||||
|
'gemfile': SetiMeta(_ruby, _red), |
||||||
|
'.erb': SetiMeta(_htmlErb, _red), |
||||||
|
'.erb.html': SetiMeta(_htmlErb, _red), |
||||||
|
'.html.erb': SetiMeta(_htmlErb, _red), |
||||||
|
'.rs': SetiMeta(_rust, _greyLight), |
||||||
|
'.sass': SetiMeta(_sass, _pink), |
||||||
|
'.scss': SetiMeta(_sass, _pink), |
||||||
|
'.springbeans': SetiMeta(_spring, _green), |
||||||
|
'.slim': SetiMeta(_slim, _orange), |
||||||
|
'.smarty.tpl': SetiMeta(_smarty, _yellow), |
||||||
|
'.tpl': SetiMeta(_smarty, _yellow), |
||||||
|
'.sbt': SetiMeta(_sbt, _blue), |
||||||
|
'.scala': SetiMeta(_scala, _red), |
||||||
|
'.sol': SetiMeta(_ethereum, _blue), |
||||||
|
'.styl': SetiMeta(_stylus, _green), |
||||||
|
'.svelte': SetiMeta(_svelte, _red), |
||||||
|
'.swift': SetiMeta(_swift, _orange), |
||||||
|
'.sql': SetiMeta(_db, _pink), |
||||||
|
'.soql': SetiMeta(_db, _blue), |
||||||
|
'.tf': SetiMeta(_terraform, _purple), |
||||||
|
'.tf.json': SetiMeta(_terraform, _purple), |
||||||
|
'.tfvars': SetiMeta(_terraform, _purple), |
||||||
|
'.tex': SetiMeta(_tex, _blue), |
||||||
|
'.sty': SetiMeta(_tex, _yellow), |
||||||
|
'.dtx': SetiMeta(_tex, _orange), |
||||||
|
'.ins': SetiMeta(_tex, _white), |
||||||
|
'.txt': SetiMeta(_default, _white), |
||||||
|
'.toml': SetiMeta(_config, _greyLight), |
||||||
|
'.twig': SetiMeta(_twig, _green), |
||||||
|
'.ts': SetiMeta(_typescript, _blue), |
||||||
|
'.tsx': SetiMeta(_typescript, _blue), |
||||||
|
'.spec.ts': SetiMeta(_typescript, _orange), |
||||||
|
'.test.ts': SetiMeta(_typescript, _orange), |
||||||
|
'tsconfig.json': SetiMeta(_tsconfig, _blue), |
||||||
|
'.vala': SetiMeta(_vala, _greyLight), |
||||||
|
'.vapi': SetiMeta(_vala, _greyLight), |
||||||
|
'.component': SetiMeta(_html, _orange), |
||||||
|
'.vue': SetiMeta(_vue, _green), |
||||||
|
'.wasm': SetiMeta(_wasm, _purple), |
||||||
|
'.wat': SetiMeta(_wat, _purple), |
||||||
|
'.xml': SetiMeta(_xml, _orange), |
||||||
|
'.yml': SetiMeta(_yml, _purple), |
||||||
|
'.yaml': SetiMeta(_yml, _purple), |
||||||
|
'swagger.json': SetiMeta(_json, _green), |
||||||
|
'swagger.yml': SetiMeta(_json, _green), |
||||||
|
'swagger.yaml': SetiMeta(_json, _green), |
||||||
|
'.pro': SetiMeta(_prolog, _orange), |
||||||
|
'.zig': SetiMeta(_zig, _orange), |
||||||
|
'.jar': SetiMeta(_zip, _red), |
||||||
|
'.zip': SetiMeta(_zip, _greyLight), |
||||||
|
'.wgt': SetiMeta(_wgt, _blue), |
||||||
|
'.ai': SetiMeta(_illustrator, _yellow), |
||||||
|
'.psd': SetiMeta(_photoshop, _blue), |
||||||
|
'.pdf': SetiMeta(_pdf, _red), |
||||||
|
'.eot': SetiMeta(_font, _red), |
||||||
|
'.ttf': SetiMeta(_font, _red), |
||||||
|
'.woff': SetiMeta(_font, _red), |
||||||
|
'.woff2': SetiMeta(_font, _red), |
||||||
|
'.avif': SetiMeta(_image, _purple), |
||||||
|
'.gif': SetiMeta(_image, _purple), |
||||||
|
'.jpg': SetiMeta(_image, _purple), |
||||||
|
'.jpeg': SetiMeta(_image, _purple), |
||||||
|
'.png': SetiMeta(_image, _purple), |
||||||
|
'.pxm': SetiMeta(_image, _purple), |
||||||
|
'.svg': SetiMeta(_svg, _purple), |
||||||
|
'.svgx': SetiMeta(_image, _purple), |
||||||
|
'.tiff': SetiMeta(_image, _purple), |
||||||
|
'.webp': SetiMeta(_image, _purple), |
||||||
|
'.sublime-project': SetiMeta(_sublime, _orange), |
||||||
|
'.sublime-workspace': SetiMeta(_sublime, _orange), |
||||||
|
'.code-search': SetiMeta(_codeSearch, _purple), |
||||||
|
'.sh': SetiMeta(_shell, _green), |
||||||
|
'.zsh': SetiMeta(_shell, _green), |
||||||
|
'.fish': SetiMeta(_shell, _green), |
||||||
|
'.zshrc': SetiMeta(_shell, _green), |
||||||
|
'.bashrc': SetiMeta(_shell, _green), |
||||||
|
'.mov': SetiMeta(_video, _pink), |
||||||
|
'.ogv': SetiMeta(_video, _pink), |
||||||
|
'.webm': SetiMeta(_video, _pink), |
||||||
|
'.avi': SetiMeta(_video, _pink), |
||||||
|
'.mpg': SetiMeta(_video, _pink), |
||||||
|
'.mp4': SetiMeta(_video, _pink), |
||||||
|
'.mp3': SetiMeta(_audio, _purple), |
||||||
|
'.ogg': SetiMeta(_audio, _purple), |
||||||
|
'.wav': SetiMeta(_audio, _purple), |
||||||
|
'.flac': SetiMeta(_audio, _purple), |
||||||
|
'.3ds': SetiMeta(_svg, _blue), |
||||||
|
'.3dm': SetiMeta(_svg, _blue), |
||||||
|
'.stl': SetiMeta(_svg, _blue), |
||||||
|
'.obj': SetiMeta(_svg, _blue), |
||||||
|
'.dae': SetiMeta(_svg, _blue), |
||||||
|
'.bat': SetiMeta(_windows, _blue), |
||||||
|
'.cmd': SetiMeta(_windows, _blue), |
||||||
|
'mime.types': SetiMeta(_config, _greyLight), |
||||||
|
'jenkinsfile': SetiMeta(_jenkins, _red), |
||||||
|
'.babelrc': SetiMeta(_babel, _yellow), |
||||||
|
'.babelrc.js': SetiMeta(_babel, _yellow), |
||||||
|
'.babelrc.cjs': SetiMeta(_babel, _yellow), |
||||||
|
'babel.config.js': SetiMeta(_babel, _yellow), |
||||||
|
'babel.config.json': SetiMeta(_babel, _yellow), |
||||||
|
'babel.config.cjs': SetiMeta(_babel, _yellow), |
||||||
|
'build': SetiMeta(_bazel, _green), |
||||||
|
'build.bazel': SetiMeta(_bazel, _green), |
||||||
|
'workspace': SetiMeta(_bazel, _green), |
||||||
|
'workspace.bazel': SetiMeta(_bazel, _green), |
||||||
|
'.bazelrc': SetiMeta(_bazel, _grey), |
||||||
|
'bower.json': SetiMeta(_bower, _orange), |
||||||
|
'.bowerrc': SetiMeta(_bower, _orange), |
||||||
|
'dockerfile': SetiMeta(_docker, _blue), |
||||||
|
'.dockerignore': SetiMeta(_docker, _grey), |
||||||
|
'docker-healthcheck': SetiMeta(_docker, _green), |
||||||
|
'docker-compose.yml': SetiMeta(_docker, _pink), |
||||||
|
'docker-compose.yaml': SetiMeta(_docker, _pink), |
||||||
|
'docker-compose.override.yml': SetiMeta(_docker, _pink), |
||||||
|
'docker-compose.override.yaml': SetiMeta(_docker, _pink), |
||||||
|
'.codeclimate.yml': SetiMeta(_codeClimate, _green), |
||||||
|
'.eslintrc': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintrc.js': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintrc.cjs': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintrc.yaml': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintrc.yml': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintrc.json': SetiMeta(_eslint, _purple), |
||||||
|
'.eslintignore': SetiMeta(_eslint, _grey), |
||||||
|
'.firebaserc': SetiMeta(_firebase, _orange), |
||||||
|
'firebase.json': SetiMeta(_firebase, _orange), |
||||||
|
'geckodriver': SetiMeta(_firefox, _orange), |
||||||
|
'.gitlab-ci.yml': SetiMeta(_gitlab, _orange), |
||||||
|
'gruntfile.js': SetiMeta(_grunt, _orange), |
||||||
|
'gruntfile.babel.js': SetiMeta(_grunt, _orange), |
||||||
|
'gruntfile.coffee': SetiMeta(_grunt, _orange), |
||||||
|
'gulpfile': SetiMeta(_gulp, _red), |
||||||
|
'gulpfile.js': SetiMeta(_gulp, _red), |
||||||
|
'ionic.config.json': SetiMeta(_ionic, _blue), |
||||||
|
'ionic.project': SetiMeta(_ionic, _blue), |
||||||
|
'.jshintrc': SetiMeta(_javascript, _blue), |
||||||
|
'.jscsrc': SetiMeta(_javascript, _blue), |
||||||
|
'platformio.ini': SetiMeta(_platformio, _orange), |
||||||
|
'rollup.config.js': SetiMeta(_rollup, _red), |
||||||
|
'sass-lint.yml': SetiMeta(_sass, _pink), |
||||||
|
'.stylelintrc': SetiMeta(_stylelint, _white), |
||||||
|
'.stylelintrc.json': SetiMeta(_stylelint, _white), |
||||||
|
'.stylelintrc.yaml': SetiMeta(_stylelint, _white), |
||||||
|
'.stylelintrc.yml': SetiMeta(_stylelint, _white), |
||||||
|
'.stylelintrc.js': SetiMeta(_stylelint, _white), |
||||||
|
'.stylelintignore': SetiMeta(_stylelint, _grey), |
||||||
|
'stylelint.config.js': SetiMeta(_stylelint, _white), |
||||||
|
'stylelint.config.cjs': SetiMeta(_stylelint, _white), |
||||||
|
'yarn.clean': SetiMeta(_yarn, _blue), |
||||||
|
'yarn.lock': SetiMeta(_yarn, _blue), |
||||||
|
'webpack.config.js': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.config.cjs': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.config.build.js': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.config.build.cjs': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.common.js': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.common.cjs': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.dev.js': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.dev.cjs': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.prod.js': SetiMeta(_webpack, _blue), |
||||||
|
'webpack.prod.cjs': SetiMeta(_webpack, _blue), |
||||||
|
'.direnv': SetiMeta(_config, _greyLight), |
||||||
|
'.env': SetiMeta(_config, _greyLight), |
||||||
|
'.static': SetiMeta(_config, _greyLight), |
||||||
|
'.editorconfig': SetiMeta(_config, _greyLight), |
||||||
|
'.slugignore': SetiMeta(_config, _greyLight), |
||||||
|
'.tmp': SetiMeta(_clock, _greyLight), |
||||||
|
'.htaccess': SetiMeta(_config, _greyLight), |
||||||
|
'.key': SetiMeta(_lock, _green), |
||||||
|
'.cert': SetiMeta(_lock, _green), |
||||||
|
'.cer': SetiMeta(_lock, _green), |
||||||
|
'.crt': SetiMeta(_lock, _green), |
||||||
|
'.pem': SetiMeta(_lock, _green), |
||||||
|
'license': SetiMeta(_license, _yellow), |
||||||
|
'licence': SetiMeta(_license, _yellow), |
||||||
|
'license.txt': SetiMeta(_license, _yellow), |
||||||
|
'licence.txt': SetiMeta(_license, _yellow), |
||||||
|
'license.md': SetiMeta(_license, _yellow), |
||||||
|
'licence.md': SetiMeta(_license, _yellow), |
||||||
|
'copying': SetiMeta(_license, _yellow), |
||||||
|
'copying.txt': SetiMeta(_license, _yellow), |
||||||
|
'copying.md': SetiMeta(_license, _yellow), |
||||||
|
'compiling': SetiMeta(_license, _orange), |
||||||
|
'compiling.txt': SetiMeta(_license, _orange), |
||||||
|
'compiling.md': SetiMeta(_license, _orange), |
||||||
|
'contributing': SetiMeta(_license, _red), |
||||||
|
'contributing.txt': SetiMeta(_license, _red), |
||||||
|
'contributing.md': SetiMeta(_license, _red), |
||||||
|
'makefile': SetiMeta(_makefile, _orange), |
||||||
|
'qmakefile': SetiMeta(_makefile, _purple), |
||||||
|
'omakefile': SetiMeta(_makefile, _greyLight), |
||||||
|
'cmakelists.txt': SetiMeta(_makefile, _blue), |
||||||
|
'procfile': SetiMeta(_heroku, _purple), |
||||||
|
'todo': SetiMeta(_todo, _setiPrimary), |
||||||
|
'todo.txt': SetiMeta(_todo, _setiPrimary), |
||||||
|
'todo.md': SetiMeta(_todo, _setiPrimary), |
||||||
|
'npm-debug.log': SetiMeta(_npmIgnored, _ignore), |
||||||
|
'.ds_store': SetiMeta(_ignored, _ignore), |
||||||
|
}; |
@ -0,0 +1,9 @@ |
|||||||
|
// ignore: public_member_api_docs |
||||||
|
class SetiMeta { |
||||||
|
// ignore: public_member_api_docs |
||||||
|
const SetiMeta(this.codePoint, this.color); |
||||||
|
// ignore: public_member_api_docs |
||||||
|
final int codePoint; |
||||||
|
// ignore: public_member_api_docs |
||||||
|
final int color; |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
sdk: |
||||||
|
- stable |
||||||
|
|
||||||
|
stages: |
||||||
|
- analyze: |
||||||
|
- analyze |
||||||
|
- format: --output=none --set-exit-if-changed --line-length 120 . |
@ -0,0 +1,23 @@ |
|||||||
|
name: file_icons |
||||||
|
version: 1.0.0 |
||||||
|
|
||||||
|
environment: |
||||||
|
sdk: '>=2.17.0 <3.0.0' |
||||||
|
flutter: '>=3.0.0' |
||||||
|
|
||||||
|
dependencies: |
||||||
|
flutter: |
||||||
|
sdk: flutter |
||||||
|
path: ^1.8.1 |
||||||
|
|
||||||
|
dev_dependencies: |
||||||
|
nit_picking: |
||||||
|
git: |
||||||
|
url: https://github.com/stack11/dart_nit_picking |
||||||
|
ref: f29382f |
||||||
|
|
||||||
|
flutter: |
||||||
|
fonts: |
||||||
|
- family: Seti |
||||||
|
fonts: |
||||||
|
- asset: fonts/seti.ttf |
@ -0,0 +1,46 @@ |
|||||||
|
# Miscellaneous |
||||||
|
*.class |
||||||
|
*.log |
||||||
|
*.pyc |
||||||
|
*.swp |
||||||
|
.DS_Store |
||||||
|
.atom/ |
||||||
|
.buildlog/ |
||||||
|
.history |
||||||
|
.svn/ |
||||||
|
|
||||||
|
# IntelliJ related |
||||||
|
*.iml |
||||||
|
*.ipr |
||||||
|
*.iws |
||||||
|
.idea/ |
||||||
|
|
||||||
|
# The .vscode folder contains launch configuration and tasks you configure in |
||||||
|
# VS Code which you may wish to be included in version control, so this line |
||||||
|
# is commented out by default. |
||||||
|
#.vscode/ |
||||||
|
|
||||||
|
# Flutter/Dart/Pub related |
||||||
|
**/doc/api/ |
||||||
|
**/ios/Flutter/.last_build_id |
||||||
|
.dart_tool/ |
||||||
|
.flutter-plugins |
||||||
|
.flutter-plugins-dependencies |
||||||
|
.packages |
||||||
|
.pub-cache/ |
||||||
|
.pub/ |
||||||
|
/build/ |
||||||
|
|
||||||
|
# Web related |
||||||
|
lib/generated_plugin_registrant.dart |
||||||
|
|
||||||
|
# Symbolication related |
||||||
|
app.*.symbols |
||||||
|
|
||||||
|
# Obfuscation related |
||||||
|
app.*.map.json |
||||||
|
|
||||||
|
# Android Studio will place build artifacts here |
||||||
|
/android/app/debug |
||||||
|
/android/app/profile |
||||||
|
/android/app/release |
@ -0,0 +1,10 @@ |
|||||||
|
# This file tracks properties of this Flutter project. |
||||||
|
# Used by Flutter tool to assess capabilities and perform upgrades etc. |
||||||
|
# |
||||||
|
# This file should be version controlled and should not be manually edited. |
||||||
|
|
||||||
|
version: |
||||||
|
revision: 657830b4c77aecfd0e32ec6504c859213dded97a |
||||||
|
channel: master |
||||||
|
|
||||||
|
project_type: app |
@ -0,0 +1,12 @@ |
|||||||
|
Copyright (c) 2022, jld3103 |
||||||
|
All rights reserved. |
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: |
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. |
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. |
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. |
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,11 @@ |
|||||||
|
# harbour |
||||||
|
|
||||||
|
A beautiful convergent cross-platform client for Nextcloud written in Flutter. |
||||||
|
|
||||||
|
## Screenshots |
||||||
|
|
||||||
|
For more screenshots see `./screenshots/`. |
||||||
|
|
||||||
|
| ![](screenshots/login_server_selection.png) | ![](screenshots/settings_oled.png) | ![](screenshots/settings_news.png) | |
||||||
|
|------------------------------------------------|------------------------------------|------------------------------------| |
||||||
|
| ![](screenshots/news_articles_unread_list.png) | ![](screenshots/files_photos.png) | ![](screenshots/notes_edit.png) | |
@ -0,0 +1,9 @@ |
|||||||
|
include: package:nit_picking/flutter.yaml |
||||||
|
|
||||||
|
linter: |
||||||
|
rules: |
||||||
|
prefer_final_parameters: false # Disabled until super.X is no longer complained about in constructors |
||||||
|
|
||||||
|
analyzer: |
||||||
|
exclude: |
||||||
|
- lib/src/l10n/** |
@ -0,0 +1,13 @@ |
|||||||
|
gradle-wrapper.jar |
||||||
|
/.gradle |
||||||
|
/captures/ |
||||||
|
/gradlew |
||||||
|
/gradlew.bat |
||||||
|
/local.properties |
||||||
|
GeneratedPluginRegistrant.java |
||||||
|
|
||||||
|
# Remember to never publicly share your keystore. |
||||||
|
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app |
||||||
|
key.properties |
||||||
|
**/*.keystore |
||||||
|
**/*.jks |
@ -0,0 +1,67 @@ |
|||||||
|
def localProperties = new Properties() |
||||||
|
def localPropertiesFile = rootProject.file('local.properties') |
||||||
|
if (localPropertiesFile.exists()) { |
||||||
|
localPropertiesFile.withReader('UTF-8') { reader -> |
||||||
|
localProperties.load(reader) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
def flutterRoot = localProperties.getProperty('flutter.sdk') |
||||||
|
if (flutterRoot == null) { |
||||||
|
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") |
||||||
|
} |
||||||
|
|
||||||
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode') |
||||||
|
if (flutterVersionCode == null) { |
||||||
|
flutterVersionCode = '1' |
||||||
|
} |
||||||
|
|
||||||
|
def flutterVersionName = localProperties.getProperty('flutter.versionName') |
||||||
|
if (flutterVersionName == null) { |
||||||
|
flutterVersionName = '1.0' |
||||||
|
} |
||||||
|
|
||||||
|
apply plugin: 'com.android.application' |
||||||
|
apply plugin: 'kotlin-android' |
||||||
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" |
||||||
|
|
||||||
|
android { |
||||||
|
compileSdkVersion 33 |
||||||
|
|
||||||
|
compileOptions { |
||||||
|
sourceCompatibility JavaVersion.VERSION_1_8 |
||||||
|
targetCompatibility JavaVersion.VERSION_1_8 |
||||||
|
} |
||||||
|
|
||||||
|
kotlinOptions { |
||||||
|
jvmTarget = '1.8' |
||||||
|
} |
||||||
|
|
||||||
|
sourceSets { |
||||||
|
main.java.srcDirs += 'news/main/kotlin' |
||||||
|
} |
||||||
|
|
||||||
|
defaultConfig { |
||||||
|
applicationId "de.provokateurin.harbour" |
||||||
|
minSdkVersion 19 |
||||||
|
targetSdkVersion flutter.targetSdkVersion |
||||||
|
versionCode flutterVersionCode.toInteger() |
||||||
|
versionName flutterVersionName |
||||||
|
} |
||||||
|
|
||||||
|
buildTypes { |
||||||
|
release { |
||||||
|
// TODO: Add your own signing config for the release build. |
||||||
|
// Signing with the debug keys for now, so `flutter run --release` works. |
||||||
|
signingConfig signingConfigs.debug |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
flutter { |
||||||
|
source '../..' |
||||||
|
} |
||||||
|
|
||||||
|
dependencies { |
||||||
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" |
||||||
|
} |
@ -0,0 +1 @@ |
|||||||
|
-keep class androidx.lifecycle.DefaultLifecycleObserver |
@ -0,0 +1,7 @@ |
|||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
package="de.provokateurin.harbour"> |
||||||
|
<!-- Flutter needs it to communicate with the running application |
||||||
|
to allow setting breakpoints, to provide hot reload, etc. |
||||||
|
--> |
||||||
|
<uses-permission android:name="android.permission.INTERNET"/> |
||||||
|
</manifest> |
@ -0,0 +1,34 @@ |
|||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
package="de.provokateurin.harbour"> |
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.INTERNET"/> |
||||||
|
|
||||||
|
<application |
||||||
|
android:label="Harbour" |
||||||
|
android:name="${applicationName}" |
||||||
|
android:icon="@mipmap/ic_launcher" |
||||||
|
android:usesCleartextTraffic="true"> |
||||||
|
<activity |
||||||
|
android:name=".MainActivity" |
||||||
|
android:exported="true" |
||||||
|
android:launchMode="singleTop" |
||||||
|
android:theme="@style/LaunchTheme" |
||||||
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" |
||||||
|
android:hardwareAccelerated="true" |
||||||
|
android:windowSoftInputMode="adjustResize"> |
||||||
|
<meta-data |
||||||
|
android:name="io.flutter.embedding.android.NormalTheme" |
||||||
|
android:resource="@style/NormalTheme" |
||||||
|
/> |
||||||
|
<intent-filter> |
||||||
|
<action android:name="android.intent.action.MAIN"/> |
||||||
|
<category android:name="android.intent.category.LAUNCHER"/> |
||||||
|
</intent-filter> |
||||||
|
</activity> |
||||||
|
<!-- Don't delete the meta-data below. |
||||||
|
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> |
||||||
|
<meta-data |
||||||
|
android:name="flutterEmbedding" |
||||||
|
android:value="2" /> |
||||||
|
</application> |
||||||
|
</manifest> |
@ -0,0 +1,6 @@ |
|||||||
|
package de.provokateurin.harbour |
||||||
|
|
||||||
|
import io.flutter.embedding.android.FlutterActivity |
||||||
|
|
||||||
|
class MainActivity: FlutterActivity() { |
||||||
|
} |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 70 B |
@ -0,0 +1,9 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/> |
||||||
|
</item> |
||||||
|
</layer-list> |
After Width: | Height: | Size: 70 B |
@ -0,0 +1,9 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/> |
||||||
|
</item> |
||||||
|
</layer-list> |
After Width: | Height: | Size: 68 B |
@ -0,0 +1,9 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/> |
||||||
|
</item> |
||||||
|
</layer-list> |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 68 B |
@ -0,0 +1,9 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="fill" android:src="@drawable/background"/> |
||||||
|
</item> |
||||||
|
<item> |
||||||
|
<bitmap android:gravity="center" android:src="@drawable/splash"/> |
||||||
|
</item> |
||||||
|
</layer-list> |
After Width: | Height: | Size: 499 B |
After Width: | Height: | Size: 602 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 337 B |
After Width: | Height: | Size: 377 B |
After Width: | Height: | Size: 939 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 583 B |
After Width: | Height: | Size: 624 B |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 843 B |
After Width: | Height: | Size: 910 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 4.5 KiB |
@ -0,0 +1,3 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<resources xmlns:tools="http://schemas.android.com/tools" |
||||||
|
tools:keep="@mipmap/app_*"/> |
@ -0,0 +1,20 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<resources> |
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> |
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<item name="android:forceDarkAllowed">false</item> |
||||||
|
<item name="android:windowFullscreen">false</item> |
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> |
||||||
|
<item name="android:windowSplashScreenBackground">#202020</item> |
||||||
|
<item name="android:windowSplashScreenIconBackgroundColor">#202020</item> |
||||||
|
</style> |
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started. |
||||||
|
This theme determines the color of the Android Window while your |
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its |
||||||
|
running. |
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. --> |
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<item name="android:windowBackground">?android:colorBackground</item> |
||||||
|
</style> |
||||||
|
</resources> |
@ -0,0 +1,21 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<resources> |
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on --> |
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when |
||||||
|
Flutter draws its first frame --> |
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item> |
||||||
|
<item name="android:forceDarkAllowed">false</item> |
||||||
|
<item name="android:windowFullscreen">false</item> |
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> |
||||||
|
</style> |
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started. |
||||||
|
This theme determines the color of the Android Window while your |
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its |
||||||
|
running. |
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. --> |
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<item name="android:windowBackground">?android:colorBackground</item> |
||||||
|
</style> |
||||||
|
</resources> |
@ -0,0 +1,21 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<resources> |
||||||
|
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off --> |
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> |
||||||
|
<item name="android:forceDarkAllowed">false</item> |
||||||
|
<item name="android:windowFullscreen">false</item> |
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> |
||||||
|
<item name="android:windowSplashScreenBackground">#ffffff</item> |
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item> |
||||||
|
<item name="android:windowSplashScreenIconBackgroundColor">#ffffff</item> |
||||||
|
</style> |
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started. |
||||||
|
This theme determines the color of the Android Window while your |
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its |
||||||
|
running. |
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. --> |
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar"> |
||||||
|
<item name="android:windowBackground">?android:colorBackground</item> |
||||||
|
</style> |
||||||
|
</resources> |
@ -0,0 +1,21 @@ |
|||||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||||
|
<resources> |
||||||
|
<!-- Theme applied to the Android Window while the process is starting --> |
||||||
|
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<!-- Show a splash screen on the activity. Automatically removed when |
||||||
|
Flutter draws its first frame --> |
||||||
|
<item name="android:windowBackground">@drawable/launch_background</item> |
||||||
|
<item name="android:forceDarkAllowed">false</item> |
||||||
|
<item name="android:windowFullscreen">false</item> |
||||||
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> |
||||||
|
</style> |
||||||
|
<!-- Theme applied to the Android Window as soon as the process has started. |
||||||
|
This theme determines the color of the Android Window while your |
||||||
|
Flutter UI initializes, as well as behind your Flutter UI while its |
||||||
|
running. |
||||||
|
|
||||||
|
This Theme is only used starting with V2 of Flutter's Android embedding. --> |
||||||
|
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar"> |
||||||
|
<item name="android:windowBackground">@android:color/white</item> |
||||||
|
</style> |
||||||
|
</resources> |
@ -0,0 +1,7 @@ |
|||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
||||||
|
package="de.provokateurin.harbour"> |
||||||
|
<!-- Flutter needs it to communicate with the running application |
||||||
|
to allow setting breakpoints, to provide hot reload, etc. |
||||||
|
--> |
||||||
|
<uses-permission android:name="android.permission.INTERNET"/> |
||||||
|
</manifest> |
@ -0,0 +1,31 @@ |
|||||||
|
buildscript { |
||||||
|
ext.kotlin_version = '1.7.0' |
||||||
|
repositories { |
||||||
|
google() |
||||||
|
mavenCentral() |
||||||
|
} |
||||||
|
|
||||||
|
dependencies { |
||||||
|
classpath 'com.android.tools.build:gradle:7.0.4' |
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
allprojects { |
||||||
|
repositories { |
||||||
|
google() |
||||||
|
mavenCentral() |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
rootProject.buildDir = '../build' |
||||||
|
subprojects { |
||||||
|
project.buildDir = "${rootProject.buildDir}/${project.name}" |
||||||
|
} |
||||||
|
subprojects { |
||||||
|
project.evaluationDependsOn(':app') |
||||||
|
} |
||||||
|
|
||||||
|
task clean(type: Delete) { |
||||||
|
delete rootProject.buildDir |
||||||
|
} |
@ -0,0 +1,3 @@ |
|||||||
|
org.gradle.jvmargs=-Xmx1536M |
||||||
|
android.useAndroidX=true |
||||||
|
android.enableJetifier=true |
@ -0,0 +1,6 @@ |
|||||||
|
#Fri Jun 23 08:50:38 CEST 2017 |
||||||
|
distributionBase=GRADLE_USER_HOME |
||||||
|
distributionPath=wrapper/dists |
||||||
|
zipStoreBase=GRADLE_USER_HOME |
||||||
|
zipStorePath=wrapper/dists |
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip |
@ -0,0 +1,11 @@ |
|||||||
|
include ':app' |
||||||
|
|
||||||
|
def localPropertiesFile = new File(rootProject.projectDir, "local.properties") |
||||||
|
def properties = new Properties() |
||||||
|
|
||||||
|
assert localPropertiesFile.exists() |
||||||
|
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } |
||||||
|
|
||||||
|
def flutterSdkPath = properties.getProperty("flutter.sdk") |
||||||
|
assert flutterSdkPath != null, "flutter.sdk not set in local.properties" |
||||||
|
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" |
@ -0,0 +1,2 @@ |
|||||||
|
Copyright © 2022, Kate Döen |
||||||
|
Under BSD-3 license |
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,10 @@ |
|||||||
|
flutter_native_splash: |
||||||
|
color: "#ffffff" |
||||||
|
color_dark: "#202020" |
||||||
|
image: assets/splash_icon.png |
||||||
|
android_12: |
||||||
|
image: assets/splash_icon_android_12.png |
||||||
|
icon_background_color: "#ffffff" |
||||||
|
icon_background_color_dark: "#202020" |
||||||
|
ios: false |
||||||
|
web: false |