diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..b1613bcee --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + - package-ecosystem: "pub" + directory: "/" # Directory of pubspec.yaml + target-branch: "dev" + schedule: + interval: "weekly" # daily, weekly, monthly diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index b7636353f..6d4b8fbdd 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -8,30 +8,25 @@ jobs: run_unit_tests: if: github.event.pull_request.draft == false - runs-on: ubuntu-22.04 - + runs-on: ubuntu-latest steps: - - name: Setup Dart SDK Step 1 - run: sudo apt-get update - - name: Setup Dart SDK Step 2 - run: sudo apt-get install apt-transport-https - - name: Setup Dart SDK Step 3 - run: sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' - - name: Setup Dart SDK Step 4 - run: sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' - - name: Setup Dart SDK Step 5 - run: wget -O /tmp/dart_3.5.4-1_amd64.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.4/linux_packages/dart_3.5.4-1_amd64.deb - - name: Setup Dart SDK Step 6 - run: sudo apt install /tmp/dart_3.5.4-1_amd64.deb - - uses: actions/checkout@v4 + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup Dart SDK # Using Dart 3.8 to match pubspec.yaml constraint + uses: dart-lang/setup-dart@v1 # https://github.com/dart-lang/setup-dart + with: + sdk: 3.8 + - name: Install dependencies - run: PATH="$PATH:/usr/lib/dart/bin" dart pub get - - name: Run tests - run: PATH="$PATH:/usr/lib/dart/bin" dart run build_runner test + run: dart pub get + + - name: Run Tests + run: dart run build_runner test fail_if_pull_request_is_draft: if: github.event.pull_request.draft == true - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Fails in order to indicate that pull request needs to be marked as ready to review and unit tests workflow needs to pass. run: exit 1 diff --git a/.github/workflows/dart_formatting.yml b/.github/workflows/dart_formatting.yml index 7bfe78e28..632424b77 100644 --- a/.github/workflows/dart_formatting.yml +++ b/.github/workflows/dart_formatting.yml @@ -8,30 +8,25 @@ jobs: check_formatting: if: github.event.pull_request.draft == false - runs-on: ubuntu-22.04 - + runs-on: ubuntu-latest steps: - - name: Setup Dart SDK Step 1 - run: sudo apt-get update - - name: Setup Dart SDK Step 2 - run: sudo apt-get install apt-transport-https - - name: Setup Dart SDK Step 3 - run: sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' - - name: Setup Dart SDK Step 4 - run: sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' - - name: Setup Dart SDK Step 5 - run: wget -O /tmp/dart_3.5.4-1_amd64.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.4/linux_packages/dart_3.5.4-1_amd64.deb - - name: Setup Dart SDK Step 6 - run: sudo apt install /tmp/dart_3.5.4-1_amd64.deb - - uses: actions/checkout@v4 + - name: Checkout branch + uses: actions/checkout@v4 + + - name: Setup Dart SDK # Using Dart 3.8 to match pubspec.yaml constraint + uses: dart-lang/setup-dart@v1 # https://github.com/dart-lang/setup-dart + with: + sdk: 3.8 + - name: Install dependencies - run: PATH="$PATH:/usr/lib/dart/bin" dart pub get + run: dart pub get + - name: Verify formatting - run: PATH="$PATH:/usr/lib/dart/bin" dart format -l 110 --output=none --set-exit-if-changed . + run: dart format -l 110 --output=none --set-exit-if-changed . fail_if_pull_request_is_draft: if: github.event.pull_request.draft == true - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest steps: - name: Fails in order to indicate that pull request needs to be marked as ready to review and formatting workflow needs to pass. run: exit 1 diff --git a/.github/workflows/gh-pages-dev.yml b/.github/workflows/gh-pages-dev.yml index 054dcbdb4..dee1ac028 100644 --- a/.github/workflows/gh-pages-dev.yml +++ b/.github/workflows/gh-pages-dev.yml @@ -7,44 +7,32 @@ on: jobs: deploy: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - name: Checkout dev branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: dev - name: Checkout gh-pages branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: gh-pages path: gh-pages-repo - - - - name: Setup Dart SDK Step 1 - run: sudo apt-get update - - name: Setup Dart SDK Step 2 - run: sudo apt-get install apt-transport-https - - name: Setup Dart SDK Step 3 - run: sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' - - name: Setup Dart SDK Step 4 - run: sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' - - name: Setup Dart SDK Step 5 - run: wget -O /tmp/dart_3.5.4-1_amd64.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.4/linux_packages/dart_3.5.4-1_amd64.deb - - name: Setup Dart SDK Step 6 - run: sudo apt install /tmp/dart_3.5.4-1_amd64.deb + - name: Setup Dart SDK # Using Dart 3.8 to match pubspec.yaml constraint + uses: dart-lang/setup-dart@v1 # https://github.com/dart-lang/setup-dart + with: + sdk: 3.8 - name: Install dependencies - run: PATH="$PATH:/usr/lib/dart/bin" dart pub get + run: dart pub get - name: Install webdev - run: PATH="$PATH:/usr/lib/dart/bin" dart pub global activate webdev - + run: dart pub global activate webdev - name: Build into gh-pages repo - run: PATH="$PATH:/usr/lib/dart/bin" dart pub global run webdev build -o web:gh-pages-repo/dev - + run: dart pub global run webdev build -o web:gh-pages-repo/dev - name: Deploy uses: peaceiris/actions-gh-pages@v3 diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index ef23e3589..620251dbc 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -7,46 +7,39 @@ on: jobs: deploy: - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest + steps: - name: Checkout main branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Checkout gh-pages branch - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: ref: gh-pages path: gh-pages-repo + - name: Setup Dart SDK # Using Dart 3.8 to match pubspec.yaml constraint + uses: dart-lang/setup-dart@v1 # https://github.com/dart-lang/setup-dart + with: + sdk: 3.8 - - - name: Setup Dart SDK Step 1 - run: sudo apt-get update - - name: Setup Dart SDK Step 2 - run: sudo apt-get install apt-transport-https - - name: Setup Dart SDK Step 3 - run: sudo sh -c 'wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -' - - name: Setup Dart SDK Step 4 - run: sudo sh -c 'wget -qO- https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list' - - name: Setup Dart SDK Step 5 - run: wget -O /tmp/dart_3.5.4-1_amd64.deb https://storage.googleapis.com/dart-archive/channels/stable/release/3.5.4/linux_packages/dart_3.5.4-1_amd64.deb - - name: Setup Dart SDK Step 6 - run: sudo apt install /tmp/dart_3.5.4-1_amd64.deb - name: Install dependencies - run: PATH="$PATH:/usr/lib/dart/bin" dart pub get - - - name: Install webdev - run: PATH="$PATH:/usr/lib/dart/bin" dart pub global activate webdev + run: dart pub get + - name: Activate webdev + run: dart pub global activate webdev - name: Build into gh-pages repo - run: PATH="$PATH:/usr/lib/dart/bin" dart pub global run webdev build -o web:/tmp/scadnano ; cp -r /tmp/scadnano/* gh-pages-repo + run: dart pub global run webdev build -o web:/tmp/scadnano ; cp -r /tmp/scadnano/* gh-pages-repo + - name: Retrieve version - run: echo "VERSION=$(cat lib/src/constants.dart | grep 'const String CURRENT_VERSION = .*' | grep -oP '\d+\.\d+\.\d+')" >> $GITHUB_ENV + run: echo "VERSION=$(cat lib/src/constants.dart | grep 'const String CURRENT_VERSION = .*' | grep -oP '\d+\.\d+\.\d+')" >> $GITHUB_ENV + - name: Build into gh-pages-repo/VERSION run: | if [ "$VERSION" != "" ]; then - PATH="$PATH:/usr/lib/dart/bin" dart pub global run webdev build -o web:gh-pages-repo/v$VERSION + dart pub global run webdev build -o web:gh-pages-repo/v$VERSION else echo "::warning deploying VERSION skipped because VERSION number could not be found" fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 19b8f3aac..f0dcd7f5c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -8,7 +8,7 @@ on: jobs: release: name: "Release" - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: # ... diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ce9749ab2..48c1379bf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -241,23 +241,17 @@ git checkout dev ### Installing Dart -This project requires using Dart version **3.5.4**, not the latest version. Click on a dropdown below for installation instructions for your operating system. +This project requires using the latest Dart version. Click on a dropdown below for installation instructions for your operating system.
Windows First, install Chocolatey if you haven't already. If choco help shows a help menu for using Chocolatey, then you've set it up correctly. -Then, open a shell (cmd/Powershell) with Administrative privileges (go to Start type `cmd`, right-click on "Command Prompt", or type Powershell and right-click on "Powershell"; in both cases pick "Run as administrator") and install Dart 3.5.4: +Then, open a shell (cmd/Powershell) with Administrative privileges (go to Start type `cmd`, right-click on "Command Prompt", or type Powershell and right-click on "Powershell"; in both cases pick "Run as administrator") and install Dart:
-choco install dart-sdk --version 3.5.4
-
- -To stop Chocolatey from automatically updating Dart to the latest version, pin it: - -
-choco pin --name="'dart-sdk'" --version="'3.5.4'"
+choco install dart-sdk
 
@@ -267,16 +261,10 @@ First, install Homebrew if you haven't already. I It may help to run `brew tap dart-lang/dart` first. -Then, install Dart 3.5.4: - -
-brew install dart@3.5.4
-
- -To stop Homebrew from automatically updating Dart to the latest version, pin it: +Then, install Dart:
-brew pin dart@3.5.4
+brew install dart
 
If running `dart` in a terminal now does not work, you may need to follow these instructions. @@ -292,17 +280,11 @@ wget -qO- https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dea echo 'deb [signed-by=/usr/share/keyrings/dart.gpg arch=amd64] https://storage.googleapis.com/download.dartlang.org/linux/debian stable main' | sudo tee /etc/apt/sources.list.d/dart_stable.list -Then, install Dart 3.5.4: +Then, install Dart:
 sudo apt-get update
-sudo apt-get install dart=3.5.4
-
- -To stop apt from automatically updating Dart to the latest version, hold it: - -
-sudo apt-mark hold dart=3.5.4
+sudo apt-get install dart
 
diff --git a/lib/src/actions/actions.dart b/lib/src/actions/actions.dart index 67c6fe205..46e6c49f8 100644 --- a/lib/src/actions/actions.dart +++ b/lib/src/actions/actions.dart @@ -163,10 +163,12 @@ abstract class BatchAction with UndoableAction implements Built actions, String short_description_value) => - BatchAction.from((b) => b - ..actions.replace(actions) - ..short_description_value = short_description_value); + factory BatchAction(Iterable actions, String short_description_value) => BatchAction.from( + (b) => + b + ..actions.replace(actions) + ..short_description_value = short_description_value, + ); factory BatchAction.from([void Function(BatchActionBuilder) updates]) = _$BatchAction; @@ -204,9 +206,12 @@ abstract class ThrottledActionFast double get interval_sec; /************************ begin BuiltValue boilerplate ************************/ - factory ThrottledActionFast(Action action, double interval_sec) => ThrottledActionFast.from((b) => b - ..action = action - ..interval_sec = interval_sec); + factory ThrottledActionFast(Action action, double interval_sec) => ThrottledActionFast.from( + (b) => + b + ..action = action + ..interval_sec = interval_sec, + ); factory ThrottledActionFast.from([void Function(ThrottledActionFastBuilder) updates]) = _$ThrottledActionFast; @@ -224,9 +229,12 @@ abstract class ThrottledActionNonFast double get interval_sec; /************************ begin BuiltValue boilerplate ************************/ - factory ThrottledActionNonFast(Action action, double interval_sec) => ThrottledActionNonFast.from((b) => b - ..action = action - ..interval_sec = interval_sec); + factory ThrottledActionNonFast(Action action, double interval_sec) => ThrottledActionNonFast.from( + (b) => + b + ..action = action + ..interval_sec = interval_sec, + ); factory ThrottledActionNonFast.from([void Function(ThrottledActionNonFastBuilder) updates]) = _$ThrottledActionNonFast; @@ -690,8 +698,9 @@ abstract class SetModificationDisplayConnector SetModificationDisplayConnector.from((b) => b..show = show); /************************ begin BuiltValue boilerplate ************************/ - factory SetModificationDisplayConnector.from( - [void Function(SetModificationDisplayConnectorBuilder) updates]) = _$SetModificationDisplayConnector; + factory SetModificationDisplayConnector.from([ + void Function(SetModificationDisplayConnectorBuilder) updates, + ]) = _$SetModificationDisplayConnector; SetModificationDisplayConnector._(); @@ -738,12 +747,13 @@ abstract class ShowUnpairedInsertionDeletionsSet factory ShowUnpairedInsertionDeletionsSet(bool show_unpaired_insertion_deletions) => ShowUnpairedInsertionDeletionsSet.from( - (b) => b..show_unpaired_insertion_deletions = show_unpaired_insertion_deletions); + (b) => b..show_unpaired_insertion_deletions = show_unpaired_insertion_deletions, + ); /************************ begin BuiltValue boilerplate ************************/ - factory ShowUnpairedInsertionDeletionsSet.from( - [void Function(ShowUnpairedInsertionDeletionsSetBuilder) updates]) = - _$ShowUnpairedInsertionDeletionsSet; + factory ShowUnpairedInsertionDeletionsSet.from([ + void Function(ShowUnpairedInsertionDeletionsSetBuilder) updates, + ]) = _$ShowUnpairedInsertionDeletionsSet; ShowUnpairedInsertionDeletionsSet._(); @@ -767,21 +777,22 @@ abstract class OxviewShowSet } abstract class SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix - with - BuiltJsonSerializable + with BuiltJsonSerializable implements Action, - Built { + Built< + SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix, + SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelixBuilder + > { bool get show; factory SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix(bool show) => SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix.from((b) => b..show = show); /************************ begin BuiltValue boilerplate ************************/ - factory SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix.from( - [void Function(SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelixBuilder) updates]) = - _$SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix; + factory SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix.from([ + void Function(SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelixBuilder) updates, + ]) = _$SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix; SetDisplayBaseOffsetsOfMajorTicksOnlyFirstHelix._(); @@ -816,9 +827,9 @@ abstract class SetDisplayMajorTickWidthsAllHelices SetDisplayMajorTickWidthsAllHelices.from((b) => b..show = show); /************************ begin BuiltValue boilerplate ************************/ - factory SetDisplayMajorTickWidthsAllHelices.from( - [void Function(SetDisplayMajorTickWidthsAllHelicesBuilder) updates]) = - _$SetDisplayMajorTickWidthsAllHelices; + factory SetDisplayMajorTickWidthsAllHelices.from([ + void Function(SetDisplayMajorTickWidthsAllHelicesBuilder) updates, + ]) = _$SetDisplayMajorTickWidthsAllHelices; SetDisplayMajorTickWidthsAllHelices._(); @@ -852,7 +863,8 @@ abstract class SetOnlyDisplaySelectedHelices factory SetOnlyDisplaySelectedHelices(bool only_display_selected_helices) => SetOnlyDisplaySelectedHelices.from( - (b) => b..only_display_selected_helices = only_display_selected_helices); + (b) => b..only_display_selected_helices = only_display_selected_helices, + ); /************************ begin BuiltValue boilerplate ************************/ factory SetOnlyDisplaySelectedHelices.from([void Function(SetOnlyDisplaySelectedHelicesBuilder) updates]) = @@ -947,9 +959,9 @@ abstract class CopySelectedStandsToClipboardImage with BuiltJsonSerializable implements Action, Built { /************************ begin BuiltValue boilerplate ************************/ - factory CopySelectedStandsToClipboardImage( - [void Function(CopySelectedStandsToClipboardImageBuilder) updates]) = - _$CopySelectedStandsToClipboardImage; + factory CopySelectedStandsToClipboardImage([ + void Function(CopySelectedStandsToClipboardImageBuilder) updates, + ]) = _$CopySelectedStandsToClipboardImage; CopySelectedStandsToClipboardImage._(); @@ -986,18 +998,22 @@ abstract class LoadDNAFile String? get filename; /************************ begin BuiltValue boilerplate ************************/ - factory LoadDNAFile( - {required String content, - String? filename, - bool write_local_storage = true, - bool unit_testing = false, - DNAFileType dna_file_type = DNAFileType.scadnano_file}) { - return LoadDNAFile.from((b) => b - ..content = content - ..filename = filename - ..write_local_storage = write_local_storage - ..unit_testing = unit_testing - ..dna_file_type = dna_file_type); + factory LoadDNAFile({ + required String content, + String? filename, + bool write_local_storage = true, + bool unit_testing = false, + DNAFileType dna_file_type = DNAFileType.scadnano_file, + }) { + return LoadDNAFile.from( + (b) => + b + ..content = content + ..filename = filename + ..write_local_storage = write_local_storage + ..unit_testing = unit_testing + ..dna_file_type = dna_file_type, + ); } factory LoadDNAFile.from([void Function(LoadDNAFileBuilder) updates]) = _$LoadDNAFile; @@ -1029,12 +1045,15 @@ abstract class PrepareToLoadDNAFile bool unit_testing = false, DNAFileType dna_file_type = DNAFileType.scadnano_file, }) { - return PrepareToLoadDNAFile.from((b) => b - ..content = content - ..filename = filename - ..write_local_storage = write_local_storage - ..unit_testing = unit_testing - ..dna_file_type = dna_file_type); + return PrepareToLoadDNAFile.from( + (b) => + b + ..content = content + ..filename = filename + ..write_local_storage = write_local_storage + ..unit_testing = unit_testing + ..dna_file_type = dna_file_type, + ); } factory PrepareToLoadDNAFile.from([void Function(PrepareToLoadDNAFileBuilder) updates]) = @@ -1054,9 +1073,12 @@ abstract class NewDesignSet /************************ begin BuiltValue boilerplate ************************/ factory NewDesignSet(Design design, String short_description_value) { - return NewDesignSet.from((b) => b - ..design.replace(design) - ..short_description_value = short_description_value); + return NewDesignSet.from( + (b) => + b + ..design.replace(design) + ..short_description_value = short_description_value, + ); } factory NewDesignSet.from([void Function(NewDesignSetBuilder) updates]) = _$NewDesignSet; @@ -1178,11 +1200,14 @@ abstract class HelixRollSetAtOther /************************ begin BuiltValue boilerplate ************************/ factory HelixRollSetAtOther(int helix_idx, int helix_other_idx, bool forward, int anchor) => - HelixRollSetAtOther.from((b) => b - ..helix_idx = helix_idx - ..helix_other_idx = helix_other_idx - ..forward = forward - ..anchor = anchor); + HelixRollSetAtOther.from( + (b) => + b + ..helix_idx = helix_idx + ..helix_other_idx = helix_other_idx + ..forward = forward + ..anchor = anchor, + ); factory HelixRollSetAtOther.from([void Function(HelixRollSetAtOtherBuilder) updates]) = _$HelixRollSetAtOther; @@ -1250,11 +1275,13 @@ abstract class SelectionBoxCreate bool get is_main; /************************ begin BuiltValue boilerplate ************************/ - factory SelectionBoxCreate(Point point, bool toggle, bool is_main) => - SelectionBoxCreate.from((b) => b - ..point = point - ..toggle = toggle - ..is_main = is_main); + factory SelectionBoxCreate(Point point, bool toggle, bool is_main) => SelectionBoxCreate.from( + (b) => + b + ..point = point + ..toggle = toggle + ..is_main = is_main, + ); factory SelectionBoxCreate.from([void Function(SelectionBoxCreateBuilder) updates]) = _$SelectionBoxCreate; @@ -1271,9 +1298,12 @@ abstract class SelectionBoxSizeChange bool get is_main; /************************ begin BuiltValue boilerplate ************************/ - factory SelectionBoxSizeChange(Point point, bool is_main) => SelectionBoxSizeChange.from((b) => b - ..point = point - ..is_main = is_main); + factory SelectionBoxSizeChange(Point point, bool is_main) => SelectionBoxSizeChange.from( + (b) => + b + ..point = point + ..is_main = is_main, + ); factory SelectionBoxSizeChange.from([void Function(SelectionBoxSizeChangeBuilder) updates]) = _$SelectionBoxSizeChange; @@ -1501,10 +1531,13 @@ abstract class Select with BuiltJsonSerializable implements Action, Built