Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
228 commits
Select commit Hold shift + click to select a range
b46493c
Create the initial functionality for a Web Services module that will …
ReplicaObscura Dec 12, 2022
506950e
Ignore task output on build-includes task in vscode
ReplicaObscura Dec 12, 2022
50c6038
Add a ParameterState state class that loads and saves from temporary …
ReplicaObscura Dec 12, 2022
ad7ff99
Save the container in StateBase
ReplicaObscura Dec 12, 2022
1fd3968
Move entity icon retrieval to a separate method in ManageEntitiesWindow
ReplicaObscura Dec 12, 2022
b8521c2
Make API integration optional in AppEntityBase
ReplicaObscura Dec 12, 2022
73d168f
Fix icon references in web services manager window
ReplicaObscura Dec 12, 2022
92ab4ad
Remove old API fields from web services entities
ReplicaObscura Dec 12, 2022
b840870
Fix bugs with WebServiceEntity and make the fields not editable if th…
ReplicaObscura Dec 12, 2022
ffd8b48
Fixes to WebServices module file
ReplicaObscura Dec 12, 2022
7a11449
Fix logo icon reference for launchpad web service provider
ReplicaObscura Dec 12, 2022
e2461aa
Make Provider field never editable after creating a Web Service entity
ReplicaObscura Dec 12, 2022
286624c
Allow runtime config storage entities (entities that don't save data …
ReplicaObscura Dec 12, 2022
d94ce49
Make web_service_provider entity type store its data in runtime confi…
ReplicaObscura Dec 12, 2022
6977913
Add helper methods Login, Logout, and IsAuthenticated to WebServiceEn…
ReplicaObscura Dec 12, 2022
6e296b9
Store the request object in WebServiceResponseEvent as well
ReplicaObscura Dec 12, 2022
e5b16fd
Add Login or Logout context menu item to Web Services
ReplicaObscura Dec 12, 2022
6481fd4
Add missing cache assignment
ReplicaObscura Dec 12, 2022
35cdf82
Support passing UrlObj objects into the "path" parameter of WebServic…
ReplicaObscura Dec 12, 2022
ceccd66
Add entityObj parameter to GetContextMenuItems method in ManageEntiti…
ReplicaObscura Dec 12, 2022
4a50a00
Fix regex definition in UrlObj
ReplicaObscura Dec 12, 2022
bbf5517
Fix reference to PlatformsWindow
ReplicaObscura Dec 12, 2022
6352c4b
Hide Basic platform from Platforms window
ReplicaObscura Dec 12, 2022
8a1279c
Standardize module versions for display
ReplicaObscura Dec 12, 2022
9adba30
Pass isCore value in to each module constructor for safety
ReplicaObscura Dec 12, 2022
ab8d1a5
Replace "Build-in" version string with "Core"
ReplicaObscura Dec 12, 2022
591c10a
Add category, source, and better module version strings to module man…
ReplicaObscura Dec 12, 2022
b72c3ba
Standardize all graphics resources to lower-case
ReplicaObscura Dec 12, 2022
41faf6e
Fix spinner filename
ReplicaObscura Dec 12, 2022
ec9ba3d
Fix reg lookup key for Epic Games platform
ReplicaObscura Dec 12, 2022
8946e32
Filter keys in DetectedGame objects more thoroughly, allow detecting …
ReplicaObscura Dec 12, 2022
b5b650d
Fix saving existing entities during game detection
ReplicaObscura Dec 12, 2022
2dcb43d
Show username for each auth service if available
ReplicaObscura Dec 12, 2022
0caa0c9
Standardize how window and control resizing cascades
ReplicaObscura Dec 12, 2022
9680f3c
Fix missing refresh path for Launchpad API provider
ReplicaObscura Dec 12, 2022
2c3496d
Simplify access to AuthData and resolve data-related login issues
ReplicaObscura Dec 12, 2022
7c268aa
Add Auto Login option to web services and show it in the manager wind…
ReplicaObscura Dec 12, 2022
176e2ca
Add missing file from last change
ReplicaObscura Dec 12, 2022
971c3fc
Remove previous auto-login functionality
ReplicaObscura Dec 12, 2022
0d8de85
Always pass container into event subscribers
ReplicaObscura Dec 12, 2022
a59b4ed
Move APP_POST_STARTUP event to after the RunApp method has run
ReplicaObscura Dec 12, 2022
2c82a37
Add Enabled field to WebService entities
ReplicaObscura Dec 12, 2022
d8561c6
Query(Create a WebServicesEventSubscriber that handles auto-login ser…
ReplicaObscura Dec 12, 2022
358ae49
Allow canceling authentication GUI without retrying
ReplicaObscura Dec 12, 2022
dba5a62
Show a normal dialog message after exceeding the max login retries in…
ReplicaObscura Dec 12, 2022
22386c0
Allow overriding which default context menu buttons show in entity ed…
ReplicaObscura Dec 12, 2022
650f2cb
Update MainWindow to use new API web service
ReplicaObscura Dec 12, 2022
0ec7b0c
Update LaunchpadBuilder to use new API web service
ReplicaObscura Dec 12, 2022
c8e272a
Update LaunchpadApi module to depend on WebServices module, and remov…
ReplicaObscura Dec 12, 2022
c39399d
Remove unused AuthInfo tests
ReplicaObscura Dec 12, 2022
1567435
Standardize AlterRequest parameters
ReplicaObscura Dec 12, 2022
5b2b4dc
Add GetStatusInfo to WebServiceEntity (but it isn't finished yet)
ReplicaObscura Dec 12, 2022
c9b41a6
Update ApiDataSource to get data through the API web service
ReplicaObscura Dec 12, 2022
343e133
Update account info window to use API web service
ReplicaObscura Dec 12, 2022
23ec7a9
Remove unused Auth module
ReplicaObscura Dec 12, 2022
981d402
Refactor status indicators to show one per account, work in progress
ReplicaObscura Dec 12, 2022
9fd1e78
Remove player_name setting
ReplicaObscura Dec 13, 2022
b87c2c9
Move callbacks for status indicators into the StatusIndicator control…
ReplicaObscura Dec 13, 2022
dd9dba1
Change "email" to "account" in authentication data so it is more generic
ReplicaObscura Dec 13, 2022
383d2e2
Committing WebServiceLayerSource for posterity because I'm about to r…
ReplicaObscura Dec 13, 2022
f10500f
Rename "api" services to "launchpad_api"
ReplicaObscura Dec 13, 2022
a882b8c
Add WebServiceAdapter entity types, the concept of web service data t…
ReplicaObscura Dec 13, 2022
65af969
Fix extra function in TabsControl
ReplicaObscura Dec 13, 2022
e33084f
Fix include
ReplicaObscura Dec 13, 2022
44759b2
Replace WebServiceLayerSource with WebServiceAdapterLayerSource to si…
ReplicaObscura Dec 13, 2022
4f1bf74
Missing change from last commit
ReplicaObscura Dec 13, 2022
0cb1bed
Remove the concept of a "local" data source for now
ReplicaObscura Dec 13, 2022
a6f746c
Remove old api_endpoint config value
ReplicaObscura Dec 13, 2022
d4530c3
Allow generically making requests to web service adapters based on fi…
ReplicaObscura Dec 13, 2022
744bd9b
Move main menu definitions to the main app class, and use a series of…
ReplicaObscura Dec 13, 2022
7e45a12
Turn update checks into an event which is subscribed from the Launchp…
ReplicaObscura Dec 13, 2022
b31c437
Only enable app.supports_update_check if the LaunchpadApi module is e…
ReplicaObscura Dec 13, 2022
ecc6e2e
Rename and add to entity data events
ReplicaObscura Dec 14, 2022
e4d0db8
wording change
ReplicaObscura Dec 14, 2022
3eb32cc
Remove api_authentication and data_source_key config parameters
ReplicaObscura Dec 14, 2022
db232b1
Remove unused dataSource assignments
ReplicaObscura Dec 14, 2022
484b200
Add entity_lookup data type to WebServices module
ReplicaObscura Dec 14, 2022
8cc332f
Lots of interconnected changes to replace DataSource and DSItem conce…
ReplicaObscura Dec 14, 2022
ca26128
Rename DataLookupKey to LaunchpadApiRef
ReplicaObscura Dec 14, 2022
e908cc9
Rename LauncherSpecificId to PlatformRef
ReplicaObscura Dec 14, 2022
cbd8a79
Fix 0 array index in VersionChecker
ReplicaObscura Dec 17, 2022
85ffdca
Throw an exception if unable to delete include file
ReplicaObscura Dec 17, 2022
bd08d3d
Add NullEntityStorage class for use if you don't want any backend
ReplicaObscura Dec 17, 2022
303f405
Update WebService module events
ReplicaObscura Dec 17, 2022
e0c2b7e
Add an availability_check web service data type
ReplicaObscura Dec 17, 2022
b7e6f7c
Return this from EntityStorageLayerSource DeleteData method
ReplicaObscura Dec 17, 2022
a91c24c
Simple language update
ReplicaObscura Dec 17, 2022
94d327e
Define a WebServiceAdapter service
ReplicaObscura Dec 17, 2022
284c38f
Add an option to store child entity data inside the parent's entity s…
ReplicaObscura Dec 17, 2022
17ce18a
Add an event that can be fired to determine an entity's parent entity
ReplicaObscura Dec 17, 2022
78b14b4
Refactor EntityData so that passing in layer names and layer sources …
ReplicaObscura Dec 17, 2022
b12a217
Fix entity constructors (Except Managed entities because they will be…
ReplicaObscura Dec 17, 2022
760826d
Change ManagedEntityBase into LaunchProcessEntity, ManagedLauncherEnt…
ReplicaObscura Dec 17, 2022
c92e332
Update field types to support cardinality options better
ReplicaObscura Dec 17, 2022
fd110be
Return this from set functions
ReplicaObscura Dec 17, 2022
25804aa
Fire the new EntityParentEvent from EntityBase to determine the parent
ReplicaObscura Dec 17, 2022
ad8e56d
Only create EntityDat automatically if dataLoaded = false, and set it…
ReplicaObscura Dec 17, 2022
7215fa3
Remove ConfigPrefix and update additionalManagedLauncherDefaults to a…
ReplicaObscura Dec 17, 2022
bf7e213
Don't pass LauncherType or GameType in during detected game creation …
ReplicaObscura Dec 17, 2022
d4aa481
Remove recursive options from AutoDetectValues and InitializeDefaults…
ReplicaObscura Dec 17, 2022
1eae187
Rename recursive option to recurse in DiffChanges method
ReplicaObscura Dec 17, 2022
a7f0d9d
Make layerNames and layerSources optional in LayeredDataBase
ReplicaObscura Dec 17, 2022
0399fb1
Define parent entity storage on game_process and launcher_process ent…
ReplicaObscura Dec 17, 2022
f2f7b05
Missing change from last commit
ReplicaObscura Dec 17, 2022
90b452b
Temporarily add single cardinality options to some Launcher fields un…
ReplicaObscura Dec 17, 2022
4ed87e1
Always set cache object in CachedWebServiceResponseBase
ReplicaObscura Dec 17, 2022
3444470
Simplify event dispatch call
ReplicaObscura Dec 17, 2022
ee45219
Change how CloneLayers works in LayeredDataBase so it only clones use…
ReplicaObscura Dec 17, 2022
079fc79
Update GamePlatformBase to make a web service call to look up a game'…
ReplicaObscura Dec 17, 2022
f0b0274
Update the error dialog and feedback window to send data via WebServi…
ReplicaObscura Dec 17, 2022
35aefe2
Remove LauncherType and GameType handling from DetectedGameEditor
ReplicaObscura Dec 17, 2022
75c3d7d
Subscribe to events to automatically make API requests on behalf of e…
ReplicaObscura Dec 17, 2022
23c3865
Add a recurse option, defaulting to false, when calling DeleteEntity
ReplicaObscura Dec 17, 2022
d63f348
Move SaveData and CreateSnapshot to below the recursive saving loop i…
ReplicaObscura Dec 17, 2022
2399922
Remove duplicate event subscriber definitions from LaunchpadApiSubscr…
ReplicaObscura Dec 17, 2022
af33820
Add an additional check to ensure that the referenced Platform exists…
ReplicaObscura Dec 17, 2022
fd74dd6
Fix adapter definitions and organize parameters in LaunchpadApi.modul…
ReplicaObscura Dec 17, 2022
8a0ff45
Add ReferencedEntities, ChildEntities, and ChildEntityData properties…
ReplicaObscura Dec 17, 2022
2b74d94
Update handling of parent entity discover in EntityBase
ReplicaObscura Dec 17, 2022
744038e
Add missing merger attribute
ReplicaObscura Dec 17, 2022
4dd1034
Refactor entity loading slightly, and use a "loading" parameter to tr…
ReplicaObscura Dec 17, 2022
04e7f67
Update recursive handling of snapshots in EntityBase
ReplicaObscura Dec 17, 2022
b026b19
Update _getLayerSources in EntityBase to use parent entity storage wh…
ReplicaObscura Dec 17, 2022
cb23292
Add UpdateDefaults method to EntityBase
ReplicaObscura Dec 17, 2022
124c6cb
Fix event class name and event name references
ReplicaObscura Dec 17, 2022
322f190
Add missing argument to event_subscriber.web_services
ReplicaObscura Dec 17, 2022
a6bbd3e
Change dataType property to dataClass on adapters
ReplicaObscura Dec 17, 2022
9e3a09e
Enhance WebServiceAdapterBase code
ReplicaObscura Dec 17, 2022
e051208
Use web service calls in DetectedGameEditor and refactor a bit of the…
ReplicaObscura Dec 17, 2022
6a27ffd
Add isWebServiceEntity to web service entities, and remove old adapte…
ReplicaObscura Dec 17, 2022
1cef906
Add CacheResponses and DefaultResponseCacheExpiration fields to WebSe…
ReplicaObscura Dec 17, 2022
bd64d5b
Rename new web service fields to ResponseCache and ResponseCacheDefau…
ReplicaObscura Dec 17, 2022
9ca8909
Missing comma
ReplicaObscura Dec 17, 2022
8b90b24
Fix parent entity assignment
ReplicaObscura Dec 17, 2022
5f02482
Remove test code
ReplicaObscura Dec 17, 2022
113b167
Change extra key in data storage from "extra" to "_extra"
ReplicaObscura Dec 17, 2022
e8d9c08
Fix child entity data storage
ReplicaObscura Dec 17, 2022
0e7c3d6
Fix web service ref discovery in the case of the wrong data type bein…
ReplicaObscura Dec 17, 2022
34fed83
Create a devcontainer that can be used to generate linux builds
ReplicaObscura Dec 17, 2022
9970c41
Add launch configuration for testing the flutter app
ReplicaObscura Dec 17, 2022
1616be7
Platform files for launchpad_app
ReplicaObscura Dec 17, 2022
c93878a
Basic readme
ReplicaObscura Dec 17, 2022
b419d99
Create a Sponsors model based on fluent_ui's example
ReplicaObscura Dec 17, 2022
34aac56
Initial widgets copied from fluent_ui example
ReplicaObscura Dec 17, 2022
d0a824a
Copy theme file from fluent_ui
ReplicaObscura Dec 17, 2022
a5954fe
Commit entire rest of sample project from fluent_ui as a starting point
ReplicaObscura Dec 17, 2022
a6702eb
Merge branch 'web-services' into flutter
ReplicaObscura Dec 17, 2022
d97c2b9
Update the menu, logo, and clean up the initial dashboard a bit
ReplicaObscura Dec 18, 2022
b2ba85d
Update launch and tasks
ReplicaObscura Dec 19, 2022
3f752b7
Random app setup stuff
ReplicaObscura Dec 19, 2022
8b96b9a
Rebuild app fully, update menu slightly
ReplicaObscura Dec 19, 2022
a5a3347
Add a Taskfile for future use
ReplicaObscura Dec 19, 2022
7f43730
Set default cwd for vscode to the launchpad_app folder
ReplicaObscura Dec 19, 2022
79b682c
Tweak tasks.json
ReplicaObscura Dec 19, 2022
39542af
Copy BlizzardProductDb.proto into launchpad_app for future use
ReplicaObscura Dec 19, 2022
9438fb3
Tweak tasks
ReplicaObscura Dec 19, 2022
b18ae4f
Remove nested, add http and intl
ReplicaObscura Dec 19, 2022
25ac8d4
Switch existing state and widget code to use riverpod
ReplicaObscura Dec 19, 2022
260a920
Generated assets, generated theme provider, replace home with dashboard
ReplicaObscura Dec 20, 2022
f635980
More reorganization
ReplicaObscura Dec 20, 2022
cda557c
Create an isar instance provider and define a launcher repository wit…
ReplicaObscura Dec 20, 2022
b609bac
Misc refactorings
ReplicaObscura Dec 20, 2022
115f1d1
Adding linux, ios, and android folders for future use
ReplicaObscura Dec 20, 2022
f4ae4de
Add linux dependencies to Dockerfile in devcontainer
ReplicaObscura Dec 20, 2022
9889d5a
pubspec updarte
ReplicaObscura Dec 20, 2022
badc84d
Update gorouter
ReplicaObscura Dec 20, 2022
88eb61c
Fix routes definition
ReplicaObscura Dec 20, 2022
3f08136
Remove alice
ReplicaObscura Dec 20, 2022
08ed9bb
Auto-built code related to launchpad_api openapi file
ReplicaObscura Dec 20, 2022
adb6064
FInish splitting out the router and the main window container
ReplicaObscura Dec 21, 2022
16ddfde
Updated some versions
ReplicaObscura Dec 21, 2022
f81f4cf
Generated code
ReplicaObscura Dec 21, 2022
a67fa43
Implemented Catcher
ReplicaObscura Dec 21, 2022
349e48b
Add rudimentary version of update checker for future expansion
ReplicaObscura Dec 21, 2022
37a8ba0
Remove all provider deps, remove provider, install a few other deps, …
ReplicaObscura Dec 21, 2022
bc37729
Tweak code
ReplicaObscura Dec 21, 2022
8a58c03
Refactoring code
ReplicaObscura Dec 22, 2022
6337ce2
Simplify some list initialization
ReplicaObscura Dec 22, 2022
d5f4e7f
vscode settings
ReplicaObscura Dec 22, 2022
ac4e2b4
Update .env defaults
ReplicaObscura Dec 22, 2022
9e2f34e
Update (but comment out until tested) distributor settings
ReplicaObscura Dec 22, 2022
2511f20
Refactorings
ReplicaObscura Dec 22, 2022
c341cab
repositories and models for some basic types
ReplicaObscura Dec 22, 2022
6e3974e
Tweak tasks
ReplicaObscura Dec 22, 2022
6bafbf9
Add image and shimmer
ReplicaObscura Dec 22, 2022
6198661
Set up protocol_handler to handle launchpad links
ReplicaObscura Dec 22, 2022
5315e17
Enforce single app instance and pass URI arguments to the router
ReplicaObscura Dec 22, 2022
f37fd16
Add some new requirements
ReplicaObscura Dec 22, 2022
73fab04
Forgot to commit pubspex.yaml
ReplicaObscura Dec 22, 2022
437432d
Plugin files
ReplicaObscura Dec 22, 2022
1936b80
Support dropping files (although it does nothing yet)
ReplicaObscura Dec 22, 2022
3b46f1d
Clean up pubspec
ReplicaObscura Dec 22, 2022
7e6bad5
Dependencies
ReplicaObscura Dec 23, 2022
1722cdb
Lots of changes for the dashboard
ReplicaObscura Dec 23, 2022
d3126b9
Dashboard tweaks
ReplicaObscura Dec 23, 2022
f03059b
Dashboard tweaks
ReplicaObscura Dec 23, 2022
e057668
Increase both the default size and the minimum size of the Launchpad …
ReplicaObscura Dec 23, 2022
e6699c7
Add a grid for the All Games list to be populated later
ReplicaObscura Dec 23, 2022
86f5133
Tweak scrolling of the games view
ReplicaObscura Dec 23, 2022
ff137dc
Fix C++ include paths in vscode (for my local system at least)
ReplicaObscura Dec 23, 2022
3fc4beb
Package tweaks
ReplicaObscura Dec 23, 2022
49b2759
Remove unused dependency
ReplicaObscura Dec 23, 2022
b796566
Remove unused import and add Help item to bottom of menu
ReplicaObscura Dec 23, 2022
8e76a89
Update plugin generated code
ReplicaObscura Dec 23, 2022
346b713
Add app_links code to win_32_window.cpp and win_32_window.h
ReplicaObscura Dec 23, 2022
ea14eb8
Update isar repositories and init code
ReplicaObscura Dec 23, 2022
41cc5c6
Fix scroll issue on All Games list by removing the content below the …
ReplicaObscura Dec 23, 2022
30cca16
Lots of changes, committing them before I mess something up
ReplicaObscura Dec 25, 2022
bdd2759
Add platform icons and update packages
ReplicaObscura Dec 26, 2022
5d2b1a8
Update vscode settings
ReplicaObscura Dec 26, 2022
a61ca07
Generated code
ReplicaObscura Dec 26, 2022
507c185
Basic platforms and platform types implementation
ReplicaObscura Dec 26, 2022
09dac7e
Update gitignore files to be safe before moving things around
ReplicaObscura Dec 26, 2022
80140d4
Move LaunchpadOVerlay to launchpad_overlay to standardize dir names
ReplicaObscura Dec 26, 2022
dc4f6cf
Move entire AHK application into launchpad_ahk to keep things more or…
ReplicaObscura Dec 26, 2022
37a8642
Update Launchpad.sln to point to new overlay folder
ReplicaObscura Dec 26, 2022
be509ca
Dictionary update
ReplicaObscura Dec 26, 2022
798be83
Fixes for RegistryLocator
ReplicaObscura Dec 26, 2022
7fd8c4a
Add launchpad_dotnet library and csharp project that generates a dll
ReplicaObscura Dec 29, 2022
d2ac1d2
Get icon extraction working for platforms
ReplicaObscura Dec 29, 2022
9cd15c9
Ad All Platforms menu item back because I think it's going to be requ…
ReplicaObscura Dec 29, 2022
ba1e8d4
Clean up unused files, update game listings with some test data (requ…
ReplicaObscura Dec 29, 2022
5be8999
Detect games via library folders or a callback
ReplicaObscura Mar 10, 2023
44009de
Refactor game platforms
ReplicaObscura Mar 10, 2023
ca5addf
Update LaunchpadDotNet library dependencies
ReplicaObscura Mar 10, 2023
9f2895a
Update the path of my hardcoded temporary image
ReplicaObscura Mar 10, 2023
ba39e78
Install jwt_decoder
ReplicaObscura Mar 14, 2023
531c33d
Initial code for future web services functionality
ReplicaObscura Mar 14, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
83 changes: 83 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# Update VARIANT in devcontainer.json to pick a Dart version
ARG VARIANT=2
FROM dart:${VARIANT}

# [Option] Install zsh
ARG INSTALL_ZSH="true"
# [Option] Upgrade OS packages to their latest versions
ARG UPGRADE_PACKAGES="true"

# Install needed packages and setup non-root user. Use a separate RUN statement to add your own dependencies.
ARG USERNAME=vscode
ARG USER_HOME=/home/${USERNAME}
ARG USER_UID=1000
ARG USER_GID=$USER_UID
COPY library-scripts/*.sh /tmp/library-scripts/
RUN apt-get update && /bin/bash /tmp/library-scripts/common-debian.sh "${INSTALL_ZSH}" "${USERNAME}" "${USER_UID}" "${USER_GID}" "${UPGRADE_PACKAGES}" "true" "true"

# Add bin location to path
ENV PUB_CACHE="/usr/local/share/pub-cache"
ENV PATH="${PUB_CACHE}/bin:${PATH}"
RUN if ! cat /etc/group | grep -e "^pub-cache:" > /dev/null 2>&1; then groupadd -r pub-cache; fi \
&& usermod -a -G pub-cache ${USERNAME} \
&& umask 0002 \
&& mkdir -p ${PUB_CACHE} \
&& chown :pub-cache ${PUB_CACHE} \
&& sed -i -e "s/export PATH=/export PATH=\/usr\/local\/share\/pub-cache:/" /etc/profile.d/00-restore-env.sh \
#
# Fix incorrect privs if present on directories - https://github.com/dart-lang/dart-docker/issues/62, https://github.com/dart-lang/sdk/issues/47093
&& chmod 755 "$DART_SDK" "$DART_SDK/bin"

# Install additional OS packages.
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
&& apt-get -y install --no-install-recommends \
openjdk-11-jdk-headless wget curl git xz-utils zip unzip \
clang cmake ninja-build pkg-config libgtk-3-dev \
libwebkit2gtk-4.0-dev libkeybinder-3.0-dev libayatana-appindicator3-dev
# Clean up packages
RUN apt-get autoremove -y && apt-get clean -y && rm -rf /var/lib/apt/lists/* /tmp/library-scripts

# Switch to non-root user
USER ${USERNAME}
WORKDIR ${USER_HOME}

#
# Android SDK
# https://developer.android.com/studio#downloads
# ENV ANDROID_SDK_TOOLS_VERSION=8512546
# ENV ANDROID_PLATFORM_VERSION=33
# ENV ANDROID_BUILD_TOOLS_VERSION=33.0.0
# ENV ANDROID_HOME=~/android-sdk-linux
# ENV ANDROID_SDK_ROOT="$ANDROID_HOME"
# ENV PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/cmdline-tools/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/emulator

# RUN curl -C - --output android-sdk-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS_VERSION}_latest.zip \
# && mkdir -p ${ANDROID_HOME}/ \
# && unzip -q android-sdk-tools.zip -d ${ANDROID_HOME}/cmdline-tools/ \
# && rm android-sdk-tools.zip \
# && yes | sdkmanager --licenses \
# && touch $HOME/.android/repositories.cfg \
# && sdkmanager platform-tools \
# && sdkmanager emulator \
# && sdkmanager "platforms;android-${ANDROID_PLATFORM_VERSION}" "build-tools;$ANDROID_BUILD_TOOLS_VERSION" \
# && sdkmanager --install "cmdline-tools;latest"
# # create emulator android
# RUN sdkmanager "system-images;android-${ANDROID_PLATFORM_VERSION};google_apis;x86_64" \
# && avdmanager create avd -n Android${ANDROID_PLATFORM_VERSION} -k "system-images;android-${ANDROID_PLATFORM_VERSION};google_apis;x86_64"

#
# Flutter SDK
# https://flutter.dev/docs/development/tools/sdk/releases?tab=linux
ENV FLUTTER_CHANNEL="stable"
ENV FLUTTER_VERSION="3.3.10"
# Make sure to use the needed channel and version for this.
ENV FLUTTER_HOME=${USER_HOME}/flutter
ENV PATH=${PATH}:${FLUTTER_HOME}/bin

RUN curl -C - --output flutter.tar.xz https://storage.googleapis.com/flutter_infra_release/releases/${FLUTTER_CHANNEL}/linux/flutter_linux_${FLUTTER_VERSION}-${FLUTTER_CHANNEL}.tar.xz \
&& tar -xf flutter.tar.xz -C ~ \
&& rm flutter.tar.xz \
&& flutter config --android-sdk "${ANDROID_SDK_ROOT}" \
&& yes | flutter doctor --android-licenses \
&& flutter config --no-analytics \
&& flutter update-packages
38 changes: 38 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{
"name": "Dart (Community)",
"build": {
"dockerfile": "Dockerfile",
// Update VARIANT to pick a Dart version
"args": { "VARIANT": "2" }
},

// Configure tool-specific properties.
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"dart-code.dart-code",
"dart-code.flutter"
]
}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "uname -a",
// "postCreateCommand": "flutter create test_project",

// Set `remoteUser` to `root` to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode",
"features": {
"ghcr.io/devcontainers/features/common-utils:2": {},
"ghcr.io/devcontainers-contrib/features/cue-asdf:1": {},
"ghcr.io/devcontainers-contrib/features/svu-asdf:1": {},
"ghcr.io/eitsupi/devcontainer-features/go-task:1": {},
"ghcr.io/dhoeric/features/google-cloud-cli:1": {},
"ghcr.io/warrenbuckley/codespace-features/sqlite:1": {}
}
}
Loading