Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
AleksandrTabolin authored Jul 4, 2024
0 parents commit d2a1ec5
Show file tree
Hide file tree
Showing 32 changed files with 2,015 additions and 0 deletions.
233 changes: 233 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
max_line_length = 120
# Uncomment if you want to show non-strict recommended guideline
#ij_visual_guides = 100

# General
ij_continuation_indent_size = 8
ij_smart_tabs = false
ij_wrap_on_typing = false
ij_any_keep_indents_on_empty_lines = false

# Formatter
ij_formatter_tags_enabled = true
ij_formatter_on_tag = @formatter:on
ij_formatter_off_tag = @formatter:off

[{*.kt,*.kts}]
# Tabs and Indents
# continuation_indent_size = 4 to match ktlint settings
ij_kotlin_continuation_indent_size = 4
ij_kotlin_keep_indents_on_empty_lines = unset

# Spaces
## Before parentheses
ij_kotlin_space_before_if_parentheses = true
ij_kotlin_space_before_for_parentheses = true
ij_kotlin_space_before_while_parentheses = true
ij_kotlin_space_before_catch_parentheses = true
ij_kotlin_space_before_when_parentheses = true
## Around operators
ij_kotlin_spaces_around_assignment_operators = true
ij_kotlin_spaces_around_logical_operators = true
ij_kotlin_spaces_around_equality_operators = true
ij_kotlin_spaces_around_relational_operators = true
ij_kotlin_spaces_around_additive_operators = true
ij_kotlin_spaces_around_multiplicative_operators = true
ij_kotlin_spaces_around_unary_operator = false
ij_kotlin_spaces_around_range = false
## Other
ij_kotlin_space_before_comma = false
ij_kotlin_space_after_comma = true
ij_kotlin_space_before_type_colon = false
ij_kotlin_space_after_type_colon = true
ij_kotlin_space_before_extend_colon = true
ij_kotlin_space_after_extend_colon = true
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
ij_kotlin_spaces_around_function_type_arrow = true
ij_kotlin_spaces_around_when_arrow = true
ij_kotlin_space_before_lambda_arrow = true

# Wrapping and Braces
## Keep when reformatting
ij_kotlin_keep_line_breaks = true
ij_kotlin_keep_first_column_comment = true
## Extends/implements list
ij_kotlin_extends_list_wrap = normal
ij_kotlin_align_multiline_extends_list = false
ij_kotlin_continuation_indent_in_supertype_lists = false
## Function declaration parameters
ij_kotlin_method_parameters_wrap = on_every_item
ij_kotlin_align_multiline_parameters = true
ij_kotlin_method_parameters_new_line_after_left_paren = true
ij_kotlin_method_parameters_right_paren_on_new_line = true
ij_kotlin_continuation_indent_in_parameter_lists = false
## Function call arguments
ij_kotlin_call_parameters_wrap = on_every_item
ij_kotlin_align_multiline_parameters_in_calls = false
ij_kotlin_call_parameters_new_line_after_left_paren = true
ij_kotlin_call_parameters_right_paren_on_new_line = true
ij_kotlin_continuation_indent_in_argument_lists = false
## Function parentheses
ij_kotlin_align_multiline_method_parentheses = false
## Chained function calls
ij_kotlin_method_call_chain_wrap = normal
ij_kotlin_wrap_first_method_in_call_chain = false
ij_kotlin_continuation_indent_for_chained_calls = false
## 'if()' statement
ij_kotlin_else_on_new_line = false
ij_kotlin_if_rparen_on_new_line = true
ij_kotlin_continuation_indent_in_if_conditions = false
## 'do ... while()' statement
ij_kotlin_while_on_new_line = false
## 'try' statement
ij_kotlin_catch_on_new_line = false
ij_kotlin_finally_on_new_line = false
## Binary expressions
ij_kotlin_align_multiline_binary_operation = false
## Wraps
ij_kotlin_assignment_wrap = normal
ij_kotlin_enum_constants_wrap = off
ij_kotlin_class_annotation_wrap = split_into_lines
ij_kotlin_method_annotation_wrap = split_into_lines
ij_kotlin_field_annotation_wrap = split_into_lines
ij_kotlin_parameter_annotation_wrap = off
ij_kotlin_variable_annotation_wrap = off
## 'when' statements
ij_kotlin_align_in_columns_case_branch = false
ij_kotlin_line_break_after_multiline_when_entry = true
## Braces placement
ij_kotlin_lbrace_on_next_line = false
## Expression body functions
ij_kotlin_wrap_expression_body_functions = 1
ij_kotlin_continuation_indent_for_expression_bodies = false
## Elvis expressions
ij_kotlin_wrap_elvis_expressions = 1
ij_kotlin_continuation_indent_in_elvis = false

# Blank Lines
## Keep maximum blank lines
ij_kotlin_keep_blank_lines_in_declarations = 1
ij_kotlin_keep_blank_lines_in_code = 1
ij_kotlin_keep_blank_lines_before_right_brace = 0
## Minimum blank lines
ij_kotlin_blank_lines_after_class_header = 0
ij_kotlin_blank_lines_around_block_when_branches = 1
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1

# Imports
ij_kotlin_name_count_to_use_star_import = 5
ij_kotlin_name_count_to_use_star_import_for_members = 3
ij_kotlin_import_nested_classes = false
ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^

# Other
## Trailing comma
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = false

# Code generation
## Comment code
ij_kotlin_line_comment_at_first_column = true
ij_kotlin_line_comment_add_space = false
ij_kotlin_line_comment_add_space_on_reformat = false
ij_kotlin_block_comment_at_first_column = true
ij_kotlin_block_comment_add_space = false

# Compose
ij_kotlin_use_custom_formatting_for_modifiers = true

# Load/Save
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL

[*.kts]
# Always use wildcard imports in scripts
ij_kotlin_name_count_to_use_star_import = 2

# EditorConfig can not set some of XML code style options.
# Remember to set default Android XML code style: Editor > Code Style > XML > Set from... -> Android
[{**/res/**.xml,**/AndroidManifest.xml}]
# Tabs and Indents
ij_xml_continuation_indent_size = 4
ij_xml_keep_indents_on_empty_lines = unset

# Other
ij_xml_keep_line_breaks = false
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_blank_lines = 2
ij_xml_attribute_wrap = normal
ij_xml_text_wrap = normal
ij_xml_align_text = false
ij_xml_align_attributes = false
ij_xml_keep_whitespaces = false
## Spaces
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_after_tag_name = false
ij_xml_space_inside_empty_tag = true
## CDATA
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false

# Code Generation
ij_xml_line_comment_at_first_column = true
ij_xml_block_comment_at_first_column = true
ij_xml_block_comment_add_space = false

# Android
ij_xml_use_custom_settings = true

[*.md]
trim_trailing_whitespace = false

# Wrapping and Braces
ij_markdown_wrap_text_if_long = false
ij_markdown_wrap_text_inside_blockquotes = false
## When reformatting
ij_markdown_keep_line_breaks_inside_text_blocks = true
ij_markdown_insert_quote_arrows_on_wrap = true
ij_markdown_format_tables = true

# Tabs and Indents
ij_markdown_keep_indents_on_empty_lines = unset

# Blank Lines
## Keep maximum blank lines
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_between_paragraphs = 1
## Minimum blank lines
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_between_paragraphs = 1

# Spaces
## Force one space
ij_markdown_force_one_space_between_words = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_after_blockquote_symbol = true

[{*.yaml,*.yml}]
indent_size = 2
ij_yaml_keep_indents_on_empty_lines = unset
ij_yaml_keep_line_breaks = true
ij_yaml_spaces_within_brackets = false

[{*.bash,*.sh,*.zsh}]
indent_size = 2
tab_width = 2

[*.bat]
end_of_line = crlf

[*.properties]
ij_properties_keep_blank_lines = true
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#
# https://help.github.com/articles/dealing-with-line-endings/
#
# These are explicitly windows files and should use crlf
*.bat text eol=crlf

41 changes: 41 additions & 0 deletions .github/workflows/cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# GitHub Actions Workflow responsible for cleaning up the Template repository from
# the template-specific files and configurations. This workflow is supposed to be triggered automatically
# when a new template-based repository has been created.

name: Template Cleanup
on:
push:
branches: [main]

jobs:
# Run cleaning process only if workflow is triggered by the non-"android-library-template" repository.
template-cleanup:
name: Template Cleanup
runs-on: ubuntu-latest
if: github.event.repository.name != 'android-library-template'
permissions:
contents: write
steps:
# Check out current repository
- name: Fetch Sources
uses: actions/checkout@v4

# Cleanup project
- name: Cleanup
run: |
./cleanup.sh "${GITHUB_REPOSITORY##*/}"
# Commit modified files
- name: Commit files
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add .
git commit -m "Template cleanup"
# Push changes
- name: Push changes
uses: ad-m/github-push-action@master
with:
branch: main
github_token: ${{ secrets.GITHUB_TOKEN }}
63 changes: 63 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: CI

on:
push:
branches: [main]
# Release tag format is v[version]
# For example: v1.3.5
tags: ["v*"]
pull_request:
branches: [main]

jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Cleanup project
run: ./cleanup.sh TestTemplate
- name: Run Check
run: ./gradlew check detektAll detektReleaseAll

publish:
name: Publish
needs: check
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') }}

steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
- name: Run Publish
run: ./gradlew publish
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
ORG_GRADLE_PROJECT_githubPackagesUsername: ${{ github.actor }}
ORG_GRADLE_PROJECT_githubPackagesPassword: ${{ secrets.GITHUB_TOKEN }}
- name: Extract release notes
uses: ffurrer2/extract-release-notes@v2
with:
release_notes_file: RELEASE_NOTES.md
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
body_path: RELEASE_NOTES.md
25 changes: 25 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
.DS_Store

## JetBrains IDEs
/.idea/**
*.iml

# Keep required plugins
!.idea/externalDependencies.xml

# Keep detekt plugin config
!.idea/detekt.xml

# Keep VCS config
!.idea/vcs.xml

## Gradle
# Ignore Gradle project-specific cache directory
.gradle

# Ignore Gradle build output directory
**/build/
!**/src/**/build/

# Ignore local properties
local.properties
12 changes: 12 additions & 0 deletions .idea/detekt.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/externalDependencies.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit d2a1ec5

Please sign in to comment.