-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Create the initial project's structure * Update `Package.swift` * Implement `Atomic` property wrapper * Update `README.md`
- Loading branch information
1 parent
7aae705
commit c99f771
Showing
11 changed files
with
430 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
name: "atomic" | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
- dev | ||
pull_request: | ||
branches: [ main ] | ||
|
||
concurrency: | ||
group: ci | ||
cancel-in-progress: true | ||
|
||
jobs: | ||
Latest: | ||
name: Test Latest (iOS, macOS, tvOS, watchOS) | ||
runs-on: macOS-12 | ||
env: | ||
DEVELOPER_DIR: "/Applications/Xcode_14.1.app/Contents/Developer" | ||
timeout-minutes: 10 | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
include: | ||
- destination: "OS=16.1,name=iPhone 14 Pro" | ||
name: "iOS" | ||
scheme: "Atomic" | ||
- destination: "OS=16.1,name=Apple TV" | ||
name: "tvOS" | ||
scheme: "Atomic" | ||
- destination: "OS=9.1,name=Apple Watch Series 8 (45mm)" | ||
name: "watchOS" | ||
scheme: "Atomic" | ||
- destination: "platform=macOS" | ||
name: "macOS" | ||
scheme: "Atomic" | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: ${{ matrix.name }} | ||
run: xcodebuild test -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" clean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Stream rules | ||
|
||
--swiftversion 5.3 | ||
|
||
# Use 'swiftformat --options' to list all of the possible options | ||
|
||
--header "\nConcurrency\nCopyright © {created.year} Space Code. All rights reserved.\n//" | ||
|
||
--enable blankLinesBetweenScopes | ||
--enable blankLinesAtStartOfScope | ||
--enable blankLinesAtEndOfScope | ||
--enable blankLinesAroundMark | ||
--enable anyObjectProtocol | ||
--enable consecutiveBlankLines | ||
--enable consecutiveSpaces | ||
--enable duplicateImports | ||
--enable elseOnSameLine | ||
--enable emptyBraces | ||
--enable initCoderUnavailable | ||
--enable leadingDelimiters | ||
--enable numberFormatting | ||
--enable preferKeyPath | ||
--enable redundantBreak | ||
--enable redundantExtensionACL | ||
--enable redundantFileprivate | ||
--enable redundantGet | ||
--enable redundantInit | ||
--enable redundantLet | ||
--enable redundantLetError | ||
--enable redundantNilInit | ||
--enable redundantObjc | ||
--enable redundantParens | ||
--enable redundantPattern | ||
--enable redundantRawValues | ||
--enable redundantReturn | ||
--enable redundantSelf | ||
--enable redundantVoidReturnType | ||
--enable semicolons | ||
--enable sortedImports | ||
--enable sortedSwitchCases | ||
--enable spaceAroundBraces | ||
--enable spaceAroundBrackets | ||
--enable spaceAroundComments | ||
--enable spaceAroundGenerics | ||
--enable spaceAroundOperators | ||
--enable spaceInsideBraces | ||
--enable spaceInsideBrackets | ||
--enable spaceInsideComments | ||
--enable spaceInsideGenerics | ||
--enable spaceInsideParens | ||
--enable strongOutlets | ||
--enable strongifiedSelf | ||
--enable todos | ||
--enable trailingClosures | ||
--enable unusedArguments | ||
--enable void | ||
--enable markTypes | ||
--enable isEmpty | ||
|
||
# format options | ||
|
||
--wraparguments before-first | ||
--wrapcollections before-first | ||
--maxwidth 140 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,135 @@ | ||
excluded: | ||
- Tests | ||
- Package.swift | ||
- .build | ||
|
||
# Rules | ||
|
||
disabled_rules: | ||
- trailing_comma | ||
- todo | ||
- opening_brace | ||
|
||
opt_in_rules: # some rules are only opt-in | ||
- anyobject_protocol | ||
- array_init | ||
- attributes | ||
- closure_body_length | ||
- closure_end_indentation | ||
- closure_spacing | ||
- collection_alignment | ||
- conditional_returns_on_newline | ||
- contains_over_filter_count | ||
- contains_over_filter_is_empty | ||
- contains_over_first_not_nil | ||
- contains_over_range_nil_comparison | ||
- convenience_type | ||
- discouraged_object_literal | ||
- discouraged_optional_boolean | ||
- empty_collection_literal | ||
- empty_count | ||
- empty_string | ||
- empty_xctest_method | ||
- enum_case_associated_values_count | ||
- explicit_init | ||
- fallthrough | ||
- fatal_error_message | ||
- file_name | ||
- file_types_order | ||
- first_where | ||
- flatmap_over_map_reduce | ||
- force_unwrapping | ||
- ibinspectable_in_extension | ||
- identical_operands | ||
- implicit_return | ||
- inert_defer | ||
- joined_default_parameter | ||
- last_where | ||
- legacy_multiple | ||
- legacy_random | ||
- literal_expression_end_indentation | ||
- lower_acl_than_parent | ||
- multiline_arguments | ||
- multiline_function_chains | ||
- multiline_literal_brackets | ||
- multiline_parameters | ||
- multiline_parameters_brackets | ||
- no_space_in_method_call | ||
- operator_usage_whitespace | ||
- optional_enum_case_matching | ||
- orphaned_doc_comment | ||
- overridden_super_call | ||
- override_in_extension | ||
- pattern_matching_keywords | ||
- prefer_self_type_over_type_of_self | ||
- prefer_zero_over_explicit_init | ||
- prefixed_toplevel_constant | ||
- private_action | ||
- prohibited_super_call | ||
- quick_discouraged_call | ||
- quick_discouraged_focused_test | ||
- quick_discouraged_pending_test | ||
- reduce_into | ||
- redundant_nil_coalescing | ||
- redundant_objc_attribute | ||
- redundant_type_annotation | ||
- required_enum_case | ||
- single_test_class | ||
- sorted_first_last | ||
- sorted_imports | ||
- static_operator | ||
- strict_fileprivate | ||
- switch_case_on_newline | ||
- toggle_bool | ||
- unavailable_function | ||
- unneeded_parentheses_in_closure_argument | ||
- unowned_variable_capture | ||
- untyped_error_in_catch | ||
- vertical_parameter_alignment_on_call | ||
- vertical_whitespace_closing_braces | ||
- vertical_whitespace_opening_braces | ||
- xct_specific_matcher | ||
- yoda_condition | ||
|
||
force_cast: warning | ||
force_try: warning | ||
|
||
identifier_name: | ||
excluded: | ||
- id | ||
- URL | ||
|
||
analyzer_rules: | ||
- unused_import | ||
- unused_declaration | ||
|
||
line_length: | ||
warning: 130 | ||
error: 200 | ||
|
||
type_body_length: | ||
warning: 300 | ||
error: 400 | ||
|
||
file_length: | ||
warning: 500 | ||
error: 1200 | ||
|
||
function_body_length: | ||
warning: 30 | ||
error: 50 | ||
|
||
large_tuple: | ||
error: 3 | ||
|
||
nesting: | ||
type_level: | ||
warning: 2 | ||
statement_level: | ||
warning: 10 | ||
|
||
|
||
type_name: | ||
max_length: | ||
warning: 40 | ||
error: 50 |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
nicklockwood/[email protected] | ||
realm/[email protected] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
all: bootstrap | ||
|
||
bootstrap: hook | ||
mint bootstrap | ||
|
||
hook: | ||
ln -sf ../../hooks/pre-commit .git/hooks/pre-commit | ||
chmod +x .git/hooks/pre-commit | ||
|
||
mint: | ||
mint bootstrap | ||
|
||
lint: | ||
mint run swiftlint | ||
|
||
fmt: | ||
mint run swiftformat Sources Tests | ||
|
||
.PHONY: all bootstrap hook mint lint fmt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// swift-tools-version: 5.5 | ||
// The swift-tools-version declares the minimum version of Swift required to build this package. | ||
|
||
import PackageDescription | ||
|
||
let package = Package( | ||
name: "Atomic", | ||
platforms: [ | ||
.macOS(.v10_15), | ||
.iOS(.v13), | ||
.watchOS(.v6), | ||
.tvOS(.v11), | ||
], | ||
products: [ | ||
.library(name: "Atomic", targets: ["Atomic"]), | ||
], | ||
dependencies: [], | ||
targets: [ | ||
.target( | ||
name: "Atomic", | ||
dependencies: [] | ||
), | ||
.testTarget( | ||
name: "AtomicTests", | ||
dependencies: ["Atomic"] | ||
), | ||
] | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,62 @@ | ||
# atomic | ||
<h1 align="center" style="margin-top: 0px;">atomic</h1> | ||
|
||
<p align="center"> | ||
<a href="https://github.com/space-code/atomic/blob/main/LICENSE"><img alt="License" src="https://img.shields.io/github/license/space-code/atomic?style=flat"></a> | ||
<a href="https://developer.apple.com/"><img alt="Platform" src="https://img.shields.io/badge/platform-ios%20%7C%20osx%20%7C%20watchos%20%7C%20tvos-%23989898"/></a> | ||
<a href="https://developer.apple.com/swift"><img alt="Swift5.5" src="https://img.shields.io/badge/language-Swift5.5-orange.svg"/></a> | ||
<a href="https://github.com/space-code/atomic"><img alt="CI" src="https://github.com/space-code/atomic/actions/workflows/ci.yml/badge.svg?branch=main"></a> | ||
<a href="https://github.com/apple/swift-package-manager" alt="RxSwift on Swift Package Manager" title="RxSwift on Swift Package Manager"><img src="https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg" /></a> | ||
</p> | ||
|
||
## Description | ||
`atomic` is a fast, safe class for making values thread-safe in Swift. | ||
|
||
- [Usage](#usage) | ||
- [Requirements](#requirements) | ||
- [Installation](#installation) | ||
- [Communication](#communication) | ||
- [Contributing](#contributing) | ||
- [Author](#author) | ||
- [License](#license) | ||
|
||
## Usage | ||
|
||
```swift | ||
import Atomic | ||
|
||
/// Creates an `Atomic` property. | ||
@Atomic var value = 5 | ||
``` | ||
|
||
## Installation | ||
### Swift Package Manager | ||
|
||
The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but `atomic` does support its use on supported platforms. | ||
|
||
Once you have your Swift package set up, adding `atomic` as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. | ||
|
||
```swift | ||
dependencies: [ | ||
.package(url: "https://github.com/space-code/atomic.git", .upToNextMajor(from: "0.0.1")) | ||
] | ||
``` | ||
|
||
## Communication | ||
- If you **found a bug**, open an issue. | ||
- If you **have a feature request**, open an issue. | ||
- If you **want to contribute**, submit a pull request. | ||
|
||
## Contributing | ||
Bootstrapping development environment | ||
|
||
``` | ||
make bootstrap | ||
``` | ||
|
||
Please feel free to help out with this project! If you see something that could be made better or want a new feature, open up an issue or send a Pull Request! | ||
|
||
## Author | ||
Nikita Vasilev, [email protected] | ||
|
||
## License | ||
atomic is available under the MIT license. See the LICENSE file for more info. |
Oops, something went wrong.