├── LICENSE ├── .dart_tool ├── version ├── package_config_subset └── package_config.json ├── .gitignore ├── example └── example.dart ├── lib ├── osx_kvm_installer.dart └── src │ ├── version │ └── version.g.dart │ ├── package_managers │ ├── apt_package_manager.dart │ ├── unsupported_package_manager.dart │ ├── package_manager.dart │ └── pacman_package_manager.dart │ ├── windows_setup.dart │ ├── install.dart │ └── installation_preparation.dart ├── .github └── FUNDING.yml ├── bin └── osx_kvm_installer.dart ├── pubspec.yaml ├── .vscode └── launch.json ├── test └── fetch_edit_test.dart ├── README.md ├── CHANGELOG.md ├── .packages └── pubspec.lock /LICENSE: -------------------------------------------------------------------------------- 1 | Hi 2 | -------------------------------------------------------------------------------- /.dart_tool/version: -------------------------------------------------------------------------------- 1 | 1.26.0-17.6.pre -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .history 3 | -------------------------------------------------------------------------------- /example/example.dart: -------------------------------------------------------------------------------- 1 | //this is not an API 2 | -------------------------------------------------------------------------------- /lib/osx_kvm_installer.dart: -------------------------------------------------------------------------------- 1 | export 'src/install.dart'; 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: relf108 4 | -------------------------------------------------------------------------------- /lib/src/version/version.g.dart: -------------------------------------------------------------------------------- 1 | /// GENERATED BY pub_release do not modify. 2 | /// osx_kvm_installer version 3 | String packageVersion = '1.0.8'; 4 | -------------------------------------------------------------------------------- /bin/osx_kvm_installer.dart: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env dcli 2 | 3 | import 'package:osx_kvm_installer/osx_kvm_installer.dart'; 4 | 5 | ///Main entry point 6 | void main(List args) { 7 | install(args); 8 | } 9 | -------------------------------------------------------------------------------- /lib/src/package_managers/apt_package_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:osx_kvm_installer/src/package_managers/package_manager.dart'; 2 | import 'package:dcli/dcli.dart'; 3 | 4 | class AptPackageManger extends PackageManager { 5 | @override 6 | void installDependencies() { 7 | try { 8 | 'apt-get install python qemu uml-utilities virt-manager dmg2img git wget libguestfs-tools -y' 9 | .start(privileged: true); 10 | } on Exception catch (_) { 11 | rethrow; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: osx_kvm_installer 2 | version: 1.0.8 3 | homepage: https://github.com/relf108/OSX-KVM-installer 4 | description: A cli based application which automates the installation and installation preperation steps required for the OSX-KVM project. 5 | environment: 6 | sdk: '>=2.6.0 <3.0.0' 7 | dependencies: 8 | args: ^1.0.0 9 | dcli: ^0.24.0 10 | path: ^1.0.0 11 | meta: ^1.2.2 12 | dev_dependencies: 13 | test: ^1.16.5 14 | pedantic: ^1.0.0 15 | executables: 16 | osx_kvm_installer: 17 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "program": "dart OSX-KVM-installer/bin/osx-kvm-installer.dart", 9 | "name": "OSX-KVM-installer", 10 | "request": "launch", 11 | "type": "dart" 12 | } 13 | ] 14 | } -------------------------------------------------------------------------------- /test/fetch_edit_test.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:dcli/dcli.dart'; 4 | import 'package:test/test.dart'; 5 | import 'package:osx_kvm_installer/src/installation_preparation.dart'; 6 | 7 | void main() { 8 | test('fetch edit test', () { 9 | var name = 'test'; 10 | var fetcher = 11 | File('$HOME/OSX-KVM-installer-$name/OSX-KVM/fetch-macOS-v2.py'); 12 | InstallationPreparation.editFetcher(fetcher); 13 | }); 14 | 15 | test('setup quick networking', () { 16 | InstallationPreparation.setupQuickNetworking(0, name: 'test'); 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /lib/src/package_managers/unsupported_package_manager.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:dcli/dcli.dart'; 4 | import 'package:osx_kvm_installer/src/package_managers/package_manager.dart'; 5 | 6 | class UnsupportedPackageManager extends PackageManager { 7 | @override 8 | void installDependencies() { 9 | echo(red( 10 | 'Either the skip depencies flag was used or we can\'t find apt or pacman package manager.' 11 | ' you\'ll need to install the dependencies ' 12 | '[python qemu uml-utilities virt-manager dmg2img git wget libguestfs-tools] yourself\n')); 13 | var selfInsalled = ask( 14 | 'If you\'ve already installed the dependencies press [y(Y)] to continue. Press any button to stop'); 15 | if (selfInsalled.toLowerCase() != 'y') { 16 | echo(green('User will install depenendencies\n')); 17 | exit(1); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/package_managers/package_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:dcli/dcli.dart'; 2 | import 'package:osx_kvm_installer/src/package_managers/apt_package_manager.dart'; 3 | import 'package:osx_kvm_installer/src/package_managers/pacman_package_manager.dart'; 4 | import 'package:osx_kvm_installer/src/package_managers/unsupported_package_manager.dart'; 5 | 6 | abstract class PackageManager { 7 | ///overidden of a supported package manager is detected. 8 | void installDependencies(); 9 | 10 | ///Checks if pacman or apt are available on users system. 11 | static PackageManager detectPM(String flag) { 12 | if (flag == '-s') { 13 | PackageManager unsupported = UnsupportedPackageManager(); 14 | return unsupported; 15 | } 16 | var apt = which('apt').firstLine; 17 | var pacman = which('pacman').firstLine; 18 | if (apt != null) { 19 | PackageManager apt = AptPackageManger(); 20 | return apt; 21 | } else if (pacman != null) { 22 | PackageManager pacman = PacmanPackageManager(); 23 | return pacman; 24 | } else { 25 | PackageManager unsupported = UnsupportedPackageManager(); 26 | return unsupported; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/package_managers/pacman_package_manager.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package_manager.dart'; 4 | import 'package:dcli/dcli.dart'; 5 | 6 | class PacmanPackageManager extends PackageManager { 7 | @override 8 | void installDependencies() { 9 | var aur = ask( 10 | 'Pacman detected, if you do not have AUR packages enabled the installer will now do so. ' 11 | 'Press any button to continue or [n(N)] to stop'); 12 | if (aur.toLowerCase() != 'n') { 13 | try { 14 | 'pacman -Sy --noconfirm --needed base-devel'.start(privileged: true); 15 | 'pacman -Sy --noconfirm python qemu virt-manager dmg2img git wget libguestfs firewalld -y' 16 | .start(privileged: true); 17 | 'pacman -Syu --noconfirm pamac-gtk'.start(privileged: true); 18 | 19 | ///no-confirm is not a typo. The flag is different for pacman and pamac 20 | 'pamac build uml_utilities --no-confirm'.start(privileged: true); 21 | 'systemctl enable --now firewalld'.start(privileged: true); 22 | 'systemctl restart libvirtd'.start(privileged: true); 23 | } on Exception catch (_) { 24 | rethrow; 25 | } 26 | } else { 27 | echo(orange('Dissallowed, exiting installer\n')); 28 | exit(1); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /lib/src/windows_setup.dart: -------------------------------------------------------------------------------- 1 | import 'package:dcli/dcli.dart'; 2 | 3 | class WindowsSetup { 4 | static bool detectWSL() { 5 | if ('uname -a'.firstLine.contains('Microsoft')) { 6 | echo(green('WSL DETECTED\n')); 7 | return true; 8 | } 9 | return false; 10 | } 11 | 12 | static void wslX11Setup() { 13 | if (!exists('$HOME\\..\\..\\Downloads\\vcxsrv-64.1.20.9.0.installer.exe')) { 14 | fetch( 15 | url: 16 | 'https://downloads.sourceforge.net/project/vcxsrv/vcxsrv/1.20.9.0/vcxsrv-64.1.20.9.0.installer.exe?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Fvcxsrv%2Ffiles%2Flatest%2Fdownload&ts=1611373071', 17 | saveToPath: 18 | '$HOME\\..\\..\\Downloads\\vcxsrv-64.1.20.9.0.installer.exe'); 19 | } 20 | 21 | '.\\Downloads\\vcxsrv-64.1.20.9.0.installer.exe' 22 | .start(workingDirectory: '$HOME\\..\\..', privileged: true); 23 | try { 24 | //Older versions of dart have pub on the path directly 25 | 'wsl dart pub global activate osx_kvm_installer' 26 | .start(workingDirectory: '$HOME', privileged: true); 27 | } on Exception catch (_) { 28 | 'wsl pub global activate osx_kvm_installer' 29 | .start(workingDirectory: '$HOME', privileged: true); 30 | } 31 | 'wsl osx_kvm_installer'.start(workingDirectory: '$HOME', privileged: true); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Running 2 | ```bash 3 | wget https://github.com/relf108/OSX-KVM-installer/releases/download/1.0.3/osx_kvm_installer 4 | chmod +x osx_kvm_installer 5 | ./osx_kvm_installer 6 | ``` 7 | Thats it, you've just run the installer, now go to post installation for more info on setting up your install. 8 | 9 | # Building 10 | An automation of the cli based installation process for the kholia / OSX-KVM project. 11 | # Running the script form source 12 | In order to run this you will need to have dcli installed. Do so with these commands.
13 | wget https://github.com/bsutton/dcli/releases/download/latest-linux/dcli_install
14 | chmod +x dcli_install
15 | ./dcli_install
16 | Next, clone this code to your local device, navigate to OSX-KVM-installer and type ./installer.dart.
17 | Answer requested input as the program runs and you're done. 18 | 19 | # Post installation 20 | After the script has been run a qemu view will pop up with the osx installer.
21 | Select the base-osx drive with your keyboard, another window will pop up.
22 | Open the disk utility and select the drive with storage set to whatever you passed in (64 is the default).
23 | Select erase on this drive and once that process is finished close the window. You should be taken back to the program select screen.
24 | Select reinstall macOS and follow the installation process.
25 | To run your new macOS installation any time simply navigate to the OSX-KVM-runner directory created inside the OSX-KVM-installer directory.
26 | and run the osx_kvm_runner file with
27 | ```./osx_kvm_runner```
28 | You're good to go, chief. 29 | -------------------------------------------------------------------------------- /lib/src/install.dart: -------------------------------------------------------------------------------- 1 | import 'dart:io'; 2 | 3 | import 'package:dcli/dcli.dart'; 4 | import 'package:osx_kvm_installer/src/package_managers/package_manager.dart'; 5 | import 'package:osx_kvm_installer/src/windows_setup.dart'; 6 | import 'installation_preparation.dart'; 7 | 8 | ///Install OSX 9 | void install(List args) { 10 | //if flag -s is passed in skip dep install 11 | var flag = ''; 12 | var name; 13 | var size; 14 | var version; 15 | if (args.isNotEmpty) { 16 | flag = args[0].toString(); 17 | } 18 | if (flag == '-g') { 19 | name = args[1]; 20 | size = args[2]; 21 | version = args[3]; 22 | } 23 | 24 | if (flag != '-g') { 25 | if (!exists('$HOME/OSX-KVM-installer')) { 26 | createDir('$HOME/OSX-KVM-installer'); 27 | } 28 | } else { 29 | createDir('$HOME/OSX-KVM-installer-$name'); 30 | } 31 | 32 | if (Platform.isWindows) { 33 | WindowsSetup.wslX11Setup(); 34 | exit(0); 35 | } 36 | 37 | if (WindowsSetup.detectWSL()) { 38 | //This commands working directory may need to be hard coded as $HOME could pick up the windows %HOME 39 | 'echo \'export DISPLAY="`grep nameserver /etc/resolv.conf | sed \'s/nameserver //\'`:0\"\' >> .bashrc' 40 | .start(workingDirectory: '$HOME'); 41 | 'echo \'export DISPLAY="`grep nameserver /etc/resolv.conf | sed \'s/nameserver //\'`:0\"\' >> .zshrc' 42 | .start(workingDirectory: '$HOME'); 43 | } 44 | ///Install dependencies 45 | var pm = PackageManager.detectPM(flag); 46 | pm.installDependencies(); 47 | echo(green('Dependencies installed\n')); 48 | 49 | ///Setup osx image 50 | InstallationPreparation.cloneOSXKVM(name: name); 51 | InstallationPreparation.fetchInstaller(version: version, name: name); 52 | InstallationPreparation.convertToIMG(name: name); 53 | 54 | ///Create virtual hdd 55 | if (flag != '-g') { 56 | size = ask('Enter size of install in GB (default 64)', 57 | defaultValue: '64', validator: Ask.integer); 58 | while (!checkSize(size)) { 59 | size = 60 | ask('Enter size of install in GB (default 64)', defaultValue: '64'); 61 | } 62 | } 63 | InstallationPreparation.createHDD(sizeGB: int.tryParse(size), name: name); 64 | echo(green('Virtual hard drive setup\n')); 65 | 66 | ///Setup high speed networking using tap 67 | InstallationPreparation.setupQuickNetworking(0, name: name); 68 | echo(green('Networking setup complete\n')); 69 | 70 | ///Start vm to run install wizard 71 | echo(orange( 72 | 'STARTING OSX. DO NOT TURN OFF THE VM OR CLOSE THIS TERMINAL UNTIL INSTALL IS FINISHED \n' 73 | 'GO TO https://github.com/relf108/OSX-KVM-installer#post-installation FOR GRAPHICAL INSTALL STEPS\n')); 74 | echo(green(flag)); 75 | if (flag == '-g') { 76 | echo('starting open core boot in $HOME/OSX-KVM-installer-$name/OSX-KVM'); 77 | './OpenCore-Boot.sh'.start( 78 | privileged: true, 79 | workingDirectory: '$HOME/OSX-KVM-installer-$name/OSX-KVM'); 80 | } else { 81 | './OpenCore-Boot.sh'.start( 82 | privileged: true, workingDirectory: '$HOME/OSX-KVM-installer/OSX-KVM'); 83 | } 84 | 85 | ///Install runner 86 | InstallationPreparation.setupEXE(name: name); 87 | echo(green( 88 | 'Setup complete. \n If you like this software please consider staring this project or donating')); 89 | } 90 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 1.0.8 2 | testing through gui 3 | new fetch edit method functioning as expected. 4 | to be tested new fetcher editing strat 5 | began work on support for gui client 6 | 7 | # 1.0.7 8 | echo export to rcs 9 | revert 10 | moved export to windows specific portion of codebase 11 | 12 | # 1.0.6 13 | 14 | # 1.0.5 15 | run installer after pulling from pub dev 16 | Dart updated to use "dart pub" instead of "pub" 17 | wsl 18 | wsl 19 | wsl 20 | wsl 21 | wsl 22 | wsl 23 | short term fix for $HOME net finding correct directory 24 | wsl 25 | wsl 26 | wsl 27 | fix merge issues 28 | Merge branch 'master' of https://github.com/relf108/OSX-KVM-installer 29 | wsl work 30 | WSL 2 detection fixed 31 | getting back into wsl2 support 32 | Update README.md 33 | 34 | # 1.0.3 35 | 36 | # 1.0.2 37 | 38 | # 1.0.1 39 | 40 | # 1.0.0 41 | 42 | # 1.0.0 43 | 44 | # 0.1.1 45 | Debian testing complete 46 | pub release 47 | Arch network setup issues should be fixed 48 | fix typo 49 | major testing on arch based distro support 50 | echo log messages 51 | Create FUNDING.yml 52 | fix pamac build 53 | Coloures messages 54 | WSL detected message only appears on windows systems now. 55 | update for big sur support and further testing 56 | fix recursive loop when networking can't be setup 57 | udpated bin 58 | Merge branch 'master' of https://github.com/relf108/OSX-KVM-installer 59 | Continued work on windows support 60 | Update README.md 61 | Update README.md 62 | Update README.md 63 | release 64 | fix + bin 65 | new bin 66 | small fix 67 | new binary 68 | Work on wsl functionality. Now attempts to fetch and run exe as well as change display variable in bashrc 69 | release beta 15 70 | Create flag -s to skip dependency install and attempted fix at pacman bug builing uml utils 71 | space 72 | fix bug created by resutructuring of install directory 73 | missing ! :/ 74 | bugfixes 75 | small bugfix for non git installs 76 | 77 | # 0.1.0 78 | Arch network setup issues should be fixed 79 | fix typo 80 | major testing on arch based distro support 81 | echo log messages 82 | Create FUNDING.yml 83 | fix pamac build 84 | Coloures messages 85 | WSL detected message only appears on windows systems now. 86 | update for big sur support and further testing 87 | fix recursive loop when networking can't be setup 88 | udpated bin 89 | Merge branch 'master' of https://github.com/relf108/OSX-KVM-installer 90 | Continued work on windows support 91 | Update README.md 92 | Update README.md 93 | Update README.md 94 | release 95 | fix + bin 96 | new bin 97 | small fix 98 | new binary 99 | Work on wsl functionality. Now attempts to fetch and run exe as well as change display variable in bashrc 100 | release beta 15 101 | Create flag -s to skip dependency install and attempted fix at pacman bug builing uml utils 102 | space 103 | fix bug created by resutructuring of install directory 104 | missing ! :/ 105 | bugfixes 106 | small bugfix for non git installs 107 | 108 | # 0.0.16 109 | fix + bin 110 | new bin 111 | small fix 112 | new binary 113 | Work on wsl functionality. Now attempts to fetch and run exe as well as change display variable in bashrc 114 | 115 | # 0.0.15 116 | Create flag -s to skip dependency install and attempted fix at pacman bug builing uml utils 117 | 118 | # 0.0.14 119 | 120 | # 0.0.13 121 | 122 | # 0.0.12 123 | 124 | # 0.0.11 125 | 126 | # 0.0.10 127 | bugfixes 128 | 129 | # 0.0.10 130 | 131 | # 0.0.9 132 | 133 | # 0.0.8 134 | Fixed dist detection 135 | Fixed dist detection 136 | Provided info on wsl setup on install. Moving away from setting up vm in favour of creating executable to start osx. 137 | 138 | # 0.0.7 139 | improved usability and bug fixes regarding setting up vm 140 | untested pacman suport and manual dependency install option for unsupported package managers 141 | 142 | # 0.0.6 143 | pub points 144 | 145 | # 0.0.5 146 | 147 | # 0.0.4 148 | 149 | # 0.0.3 150 | fixed bug with size casting 151 | 152 | # 0.0.2 153 | 154 | #0.0.1 155 | first release 156 | -------------------------------------------------------------------------------- /.packages: -------------------------------------------------------------------------------- 1 | # This file is deprecated. Tools should instead consume 2 | # `.dart_tools/package_config.json`. 3 | # 4 | # For more info see: https://dart.dev/go/dot-packages-deprecation 5 | # 6 | # Generated by pub on 2021-03-20 16:22:52.271654. 7 | _fe_analyzer_shared:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-14.0.0/lib/ 8 | analyzer:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/analyzer-0.41.2/lib/ 9 | archive:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/archive-2.0.13/lib/ 10 | args:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/args-1.6.0/lib/ 11 | async:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/ 12 | basic_utils:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/basic_utils-2.7.1/lib/ 13 | boolean_selector:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/ 14 | charcode:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/charcode-1.2.0/lib/ 15 | cli_util:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/cli_util-0.3.0/lib/ 16 | collection:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0/lib/ 17 | convert:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/lib/ 18 | coverage:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/coverage-0.15.2/lib/ 19 | crypto:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5/lib/ 20 | csv:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/csv-4.1.0/lib/ 21 | dcli:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/dcli-0.24.1/lib/ 22 | equatable:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.6/lib/ 23 | file:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file-5.2.1/lib/ 24 | file_utils:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file_utils-0.1.4/lib/ 25 | glob:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/glob-1.2.0/lib/ 26 | globbing:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/globbing-0.3.1/lib/ 27 | http:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/ 28 | http_multi_server:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.0.0/lib/ 29 | http_parser:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4/lib/ 30 | ini:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/ini-2.0.1/lib/ 31 | intl:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/ 32 | io:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/io-1.0.0/lib/ 33 | js:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/js-0.6.3/lib/ 34 | json_annotation:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/json_annotation-3.1.1/lib/ 35 | logger:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logger-0.9.4/lib/ 36 | logging:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logging-0.11.4/lib/ 37 | matcher:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.10/lib/ 38 | meta:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0/lib/ 39 | mime:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/mime-1.0.0/lib/ 40 | money2:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/money2-1.4.3/lib/ 41 | node_interop:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_interop-1.2.1/lib/ 42 | node_io:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_io-1.2.0/lib/ 43 | node_preamble:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_preamble-1.4.13/lib/ 44 | package_config:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/package_config-1.9.3/lib/ 45 | path:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/path-1.8.0/lib/ 46 | pedantic:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0/lib/ 47 | pointycastle:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pointycastle-2.0.1/lib/ 48 | pool:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pool-1.5.0/lib/ 49 | pub_semver:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pub_semver-1.4.4/lib/ 50 | pubspec:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pubspec-0.1.5/lib/ 51 | quiver:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/quiver-2.1.5/lib/ 52 | random_string:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/random_string-2.1.0/lib/ 53 | shelf:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf-0.7.9/lib/ 54 | shelf_packages_handler:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-2.0.1/lib/ 55 | shelf_static:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_static-0.2.9+2/lib/ 56 | shelf_web_socket:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.4+1/lib/ 57 | source_map_stack_trace:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-2.1.0/lib/ 58 | source_maps:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.10/lib/ 59 | source_span:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.0/lib/ 60 | stack_trace:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib/ 61 | stream_channel:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/ 62 | string_scanner:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/ 63 | system_info:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/system_info-0.1.3/lib/ 64 | term_glyph:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/lib/ 65 | test:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test-1.16.5/lib/ 66 | test_api:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19/lib/ 67 | test_core:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_core-0.3.15/lib/ 68 | typed_data:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0/lib/ 69 | uri:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uri-0.11.4/lib/ 70 | uuid:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.2/lib/ 71 | validators:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/validators-2.0.1/lib/ 72 | vin_decoder:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vin_decoder-0.1.3/lib/ 73 | vm_service:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vm_service-6.1.0+1/lib/ 74 | watcher:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.0/lib/ 75 | web_socket_channel:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.2.0/lib/ 76 | webkit_inspection_protocol:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/webkit_inspection_protocol-0.7.5/lib/ 77 | yaml:file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/yaml-2.2.1/lib/ 78 | osx_kvm_installer:lib/ 79 | -------------------------------------------------------------------------------- /lib/src/installation_preparation.dart: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env dcli 2 | 3 | import 'dart:io'; 4 | import 'package:dcli/dcli.dart'; 5 | import 'package:meta/meta.dart'; 6 | 7 | class InstallationPreparation { 8 | /// 9 | static void cloneOSXKVM({String name}) async { 10 | if (name == null) { 11 | if (exists('$HOME/OSX-KVM-installer/OSX-KVM')) { 12 | var allowed = ask( 13 | orange('OSX-KVM found, re-clone to ensure latest version?' 14 | ' \n [y(Y)/n(N)]'), 15 | defaultValue: 'n', 16 | validator: Ask.alpha); 17 | if (allowed.toLowerCase() == 'y') { 18 | 'rm -rf OSX-KVM-installer/OSX-KVM' 19 | .start(privileged: true, workingDirectory: '$HOME'); 20 | try { 21 | 'git clone https://github.com/kholia/OSX-KVM.git' 22 | .start(workingDirectory: '$HOME/OSX-KVM-installer'); 23 | } on Exception catch (_) { 24 | rethrow; 25 | } 26 | } else { 27 | echo(green('Continuing with local version\n')); 28 | } 29 | } else { 30 | try { 31 | 'git clone https://github.com/kholia/OSX-KVM.git' 32 | .start(workingDirectory: '$HOME/OSX-KVM-installer'); 33 | } on Exception catch (_) { 34 | rethrow; 35 | } 36 | } 37 | } else { 38 | 'git clone https://github.com/kholia/OSX-KVM.git' 39 | .start(workingDirectory: '$HOME/OSX-KVM-installer-$name'); 40 | var fetcher = 41 | File('$HOME/OSX-KVM-installer-$name/OSX-KVM/fetch-macOS-v2.py'); 42 | //await editFetcher(fetcher); 43 | } 44 | } 45 | 46 | static Future editFetcher(File fetcher) async { 47 | var lines = await fetcher.readAsLines(); 48 | var debugLine; 49 | for (int i = 0; i < lines.length; i++) { 50 | if (lines[i].toString().contains('debug = False')) { 51 | debugLine = i; 52 | } 53 | } 54 | lines[debugLine] = ' debug = True\n'; 55 | for (var line in lines) { 56 | fetcher.writeAsString(line, mode: FileMode.append); 57 | } 58 | } 59 | 60 | /// 61 | static void fetchInstaller({String version, String name}) { 62 | var command; 63 | var directory; 64 | if (version == null || name == null) { 65 | command = './fetch-macOS-v2.py'; 66 | directory = '$HOME/OSX-KVM-installer/OSX-KVM'; 67 | } else { 68 | command = './fetch-macOS-v2.py --action download -os "$version"'; 69 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM'; 70 | } 71 | try { 72 | echo( 73 | orange('Heads up, the installer has not been tested with Big Sur\n')); 74 | start(command, 75 | privileged: true, workingDirectory: directory, terminal: true); 76 | } on Exception catch (_) { 77 | rethrow; 78 | } 79 | } 80 | 81 | /// 82 | static void convertToIMG({String name}) { 83 | var directory; 84 | if (name == null) { 85 | directory = '$HOME/OSX-KVM-installer/OSX-KVM'; 86 | } else { 87 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM'; 88 | } 89 | try { 90 | 'dmg2img BaseSystem.dmg BaseSystem.img' 91 | .start(privileged: true, workingDirectory: directory); 92 | } on Exception catch (_) { 93 | rethrow; 94 | } 95 | } 96 | 97 | /// 98 | static void createHDD({@required int sizeGB, String name}) { 99 | var directory; 100 | if (name == null) { 101 | directory = '$HOME/OSX-KVM-installer/OSX-KVM'; 102 | } else { 103 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM'; 104 | } 105 | try { 106 | 'qemu-img create -f qcow2 mac_hdd_ng.img ${sizeGB.toString()}G' 107 | .start(privileged: true, workingDirectory: directory); 108 | } on Exception catch (_) { 109 | rethrow; 110 | } 111 | } 112 | 113 | /// 114 | static Future setupQuickNetworking(int retries, {String name}) async { 115 | var directory; 116 | if (name == null) { 117 | directory = '$HOME/OSX-KVM-installer/OSX-KVM'; 118 | } else { 119 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM'; 120 | } 121 | try { 122 | print(directory); 123 | 'ip tuntap add dev tap0 mode tap' 124 | .start(privileged: true, workingDirectory: directory); 125 | } on Exception catch (_) { 126 | echo(orange('tap0 unavailable freeing resource and retrying\n')); 127 | 'ip link delete tap0'.start(privileged: true); 128 | if (retries < 10) { 129 | if (name == null) { 130 | setupQuickNetworking(retries + 1); 131 | } else { 132 | setupQuickNetworking(retries + 1, name: name); 133 | } 134 | } else { 135 | echo(red( 136 | 'FATAL: Unable to setup networking after retry. There might be some issue other than unavailable resources\n')); 137 | exit(1); 138 | } 139 | } 140 | try { 141 | 'ip link set tap0 up promisc on' 142 | .start(privileged: true, workingDirectory: directory); 143 | 'ip link set dev virbr0 up' 144 | .start(privileged: true, workingDirectory: directory); 145 | 'ip link set dev tap0 master virbr0' 146 | .start(privileged: true, workingDirectory: directory); 147 | } on Exception catch (_) { 148 | try { 149 | 'virsh net-start default'.start(privileged: true); 150 | } on Exception catch (_) { 151 | try { 152 | echo(orange("default network not found, creating default\n")); 153 | 154 | 'systemctl enable libvirtd' 155 | .start(privileged: true, workingDirectory: directory); 156 | 'systemctl start libvirtd' 157 | .start(privileged: true, workingDirectory: directory); 158 | 159 | var defaultXml = 160 | await new File('$directory/default.xml').create(recursive: false); 161 | var stream = defaultXml.openWrite(); 162 | stream.write('\n'); 163 | stream.write(' default\n'); 164 | stream.write(' 9a05da11-e96b-47f3-8253-a3a482e445f5\n'); 165 | stream.write(' \n'); 166 | stream.write(' \n'); 167 | stream.write(' \n'); 168 | stream.write( 169 | ' \n'); 170 | stream.write(' \n'); 171 | stream.write( 172 | ' \n'); 173 | stream.write(' \n'); 174 | stream.write(' \n'); 175 | stream.write('\n'); 176 | stream.close(); 177 | 178 | 'virsh net-define --file default.xml' 179 | .start(privileged: true, workingDirectory: directory); 180 | //'virsh net-start default'.start(privileged: true); 181 | } on Exception catch (_) { 182 | if (retries < 10) { 183 | if (name == null) { 184 | setupQuickNetworking(retries + 1); 185 | } else { 186 | setupQuickNetworking(retries + 1, name: name); 187 | } 188 | } else { 189 | echo(red( 190 | 'FATAL: Unable to setup networking after retry. There might be some issue other than unavailable resources\n')); 191 | exit(1); 192 | } 193 | } 194 | } 195 | 196 | if (retries < 10) { 197 | if (name == null) { 198 | setupQuickNetworking(retries + 1); 199 | } else { 200 | setupQuickNetworking(retries + 1, name: name); 201 | } 202 | } else { 203 | echo(red( 204 | 'FATAL: Unable to setup networking after retry. There might be some issue other than unavailable resources\n')); 205 | exit(1); 206 | } 207 | } 208 | } 209 | 210 | /// 211 | static void libVirtManager({String name}) { 212 | var directory; 213 | if (name == null) { 214 | directory = '$HOME/OSX-KVM-installer/OSX-KVM'; 215 | } else { 216 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM'; 217 | } 218 | r'sed -i "s/CHANGEME/$USER/g" macOS-libvirt-Catalina.xml' 219 | .start(privileged: true, workingDirectory: directory); 220 | 'virt-xml-validate macOS-libvirt-Catalina.xml' 221 | .start(workingDirectory: directory); 222 | 'virsh --connect qemu:///system define macOS-libvirt-Catalina.xml' 223 | .start(workingDirectory: directory); 224 | } 225 | 226 | /// 227 | static void setupEXE({String name}) { 228 | var directory; 229 | if (name == null) { 230 | directory = '$HOME/OSX-KVM-installer/OSX-KVM-runner'; 231 | } else { 232 | directory = '$HOME/OSX-KVM-installer-$name/OSX-KVM-runner'; 233 | } 234 | if (!exists(directory)) { 235 | createDir('$directory'); 236 | } else { 237 | 'rm -rf OSX-KVM-runner' 238 | .start(workingDirectory: '$HOME/OSX-KVM-installer'); 239 | createDir(directory); 240 | } 241 | fetch( 242 | url: 243 | 'https://github.com/relf108/OSX-KVM-runner/releases/download/beta-2/OSX-KVM-runner', 244 | saveToPath: '$directory/osx_kvm_runner'); 245 | 246 | 'chmod +x osx_kvm_runner'.start(workingDirectory: directory); 247 | if (Shell.current.matchByName(BashShell.shellName)) { 248 | '$HOME/.bashrc'.append('PATH="\$PATH":"$directory"'); 249 | } 250 | if (Shell.current.matchByName(ZshShell.shellName)) { 251 | '$HOME/.zshrc'.append('PATH="\$PATH":"$directory"'); 252 | } 253 | } 254 | } 255 | 256 | /// 257 | bool checkSize(String size) { 258 | if (int.tryParse(size) < 30) { 259 | red('Fatal: Size must be at least 30GB'); 260 | return false; 261 | } 262 | return true; 263 | } 264 | -------------------------------------------------------------------------------- /.dart_tool/package_config_subset: -------------------------------------------------------------------------------- 1 | archive 2 | 2.0 3 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/archive-2.0.13/ 4 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/archive-2.0.13/lib/ 5 | args 6 | 2.3 7 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/args-1.6.0/ 8 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/args-1.6.0/lib/ 9 | async 10 | 2.12 11 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/ 12 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/async-2.5.0/lib/ 13 | basic_utils 14 | 2.1 15 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/basic_utils-2.7.1/ 16 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/basic_utils-2.7.1/lib/ 17 | boolean_selector 18 | 2.12 19 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/ 20 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0/lib/ 21 | characters 22 | 2.12 23 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/characters-1.1.0/ 24 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/characters-1.1.0/lib/ 25 | charcode 26 | 2.12 27 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/charcode-1.2.0/ 28 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/charcode-1.2.0/lib/ 29 | clock 30 | 2.12 31 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/clock-1.1.0/ 32 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/clock-1.1.0/lib/ 33 | collection 34 | 2.12 35 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0/ 36 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0/lib/ 37 | convert 38 | 1.17 39 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/ 40 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1/lib/ 41 | crypto 42 | 2.3 43 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5/ 44 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5/lib/ 45 | csv 46 | 2.0 47 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/csv-4.1.0/ 48 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/csv-4.1.0/lib/ 49 | dcli 50 | 2.6 51 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/dcli-0.24.1/ 52 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/dcli-0.24.1/lib/ 53 | equatable 54 | 2.0 55 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.6/ 56 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.6/lib/ 57 | fake_async 58 | 2.12 59 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/fake_async-1.2.0/ 60 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/fake_async-1.2.0/lib/ 61 | file 62 | 2.2 63 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file-5.2.1/ 64 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file-5.2.1/lib/ 65 | file_utils 66 | 2.3 67 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file_utils-0.1.4/ 68 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file_utils-0.1.4/lib/ 69 | glob 70 | 2.1 71 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/glob-1.2.0/ 72 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/glob-1.2.0/lib/ 73 | globbing 74 | 2.2 75 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/globbing-0.3.1/ 76 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/globbing-0.3.1/lib/ 77 | http 78 | 2.4 79 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/ 80 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http-0.12.2/lib/ 81 | http_parser 82 | 2.3 83 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4/ 84 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4/lib/ 85 | ini 86 | 2.0 87 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/ini-2.0.1/ 88 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/ini-2.0.1/lib/ 89 | intl 90 | 2.5 91 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/ 92 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/ 93 | js 94 | 2.12 95 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/js-0.6.3/ 96 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/js-0.6.3/lib/ 97 | json_annotation 98 | 2.7 99 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/json_annotation-3.1.1/ 100 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/json_annotation-3.1.1/lib/ 101 | logger 102 | 2.2 103 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logger-0.9.4/ 104 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logger-0.9.4/lib/ 105 | logging 106 | 2.0 107 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logging-0.11.4/ 108 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logging-0.11.4/lib/ 109 | matcher 110 | 2.12 111 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.10/ 112 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.10/lib/ 113 | meta 114 | 2.12 115 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0/ 116 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0/lib/ 117 | money2 118 | 2.1 119 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/money2-1.4.3/ 120 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/money2-1.4.3/lib/ 121 | node_interop 122 | 2.9 123 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_interop-1.2.1/ 124 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_interop-1.2.1/lib/ 125 | node_io 126 | 2.2 127 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_io-1.2.0/ 128 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_io-1.2.0/lib/ 129 | path 130 | 2.12 131 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/path-1.8.0/ 132 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/path-1.8.0/lib/ 133 | pedantic 134 | 2.12 135 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0/ 136 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0/lib/ 137 | pointycastle 138 | 2.1 139 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pointycastle-2.0.1/ 140 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pointycastle-2.0.1/lib/ 141 | pub_semver 142 | 2.0 143 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pub_semver-1.4.4/ 144 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pub_semver-1.4.4/lib/ 145 | pubspec 146 | 2.2 147 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pubspec-0.1.5/ 148 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pubspec-0.1.5/lib/ 149 | quiver 150 | 2.0 151 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/quiver-2.1.5/ 152 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/quiver-2.1.5/lib/ 153 | random_string 154 | 2.1 155 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/random_string-2.1.0/ 156 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/random_string-2.1.0/lib/ 157 | source_span 158 | 2.12 159 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.0/ 160 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.0/lib/ 161 | stack_trace 162 | 2.12 163 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/ 164 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0/lib/ 165 | stream_channel 166 | 2.12 167 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/ 168 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0/lib/ 169 | string_scanner 170 | 2.12 171 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/ 172 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0/lib/ 173 | system_info 174 | 2.0 175 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/system_info-0.1.3/ 176 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/system_info-0.1.3/lib/ 177 | term_glyph 178 | 2.12 179 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/ 180 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0/lib/ 181 | test_api 182 | 2.12 183 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19/ 184 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19/lib/ 185 | typed_data 186 | 2.12 187 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0/ 188 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0/lib/ 189 | uri 190 | 2.10 191 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uri-0.11.4/ 192 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uri-0.11.4/lib/ 193 | uuid 194 | 2.2 195 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.2/ 196 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.2/lib/ 197 | validators 198 | 2.0 199 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/validators-2.0.1/ 200 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/validators-2.0.1/lib/ 201 | vector_math 202 | 2.12 203 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.0/ 204 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.0/lib/ 205 | vin_decoder 206 | 2.1 207 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vin_decoder-0.1.3/ 208 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vin_decoder-0.1.3/lib/ 209 | yaml 210 | 2.4 211 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/yaml-2.2.1/ 212 | file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/yaml-2.2.1/lib/ 213 | sky_engine 214 | 2.12 215 | file:///home/tsutton/flutter/bin/cache/pkg/sky_engine/ 216 | file:///home/tsutton/flutter/bin/cache/pkg/sky_engine/lib/ 217 | flutter 218 | 2.12 219 | file:///home/tsutton/flutter/packages/flutter/ 220 | file:///home/tsutton/flutter/packages/flutter/lib/ 221 | flutter_test 222 | 2.12 223 | file:///home/tsutton/flutter/packages/flutter_test/ 224 | file:///home/tsutton/flutter/packages/flutter_test/lib/ 225 | osx_kvm_installer 226 | 2.6 227 | file:///home/tsutton/projects/OSX-KVM-installer/ 228 | file:///home/tsutton/projects/OSX-KVM-installer/lib/ 229 | 2 230 | -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | _fe_analyzer_shared: 5 | dependency: transitive 6 | description: 7 | name: _fe_analyzer_shared 8 | url: "https://pub.dartlang.org" 9 | source: hosted 10 | version: "14.0.0" 11 | analyzer: 12 | dependency: transitive 13 | description: 14 | name: analyzer 15 | url: "https://pub.dartlang.org" 16 | source: hosted 17 | version: "0.41.2" 18 | archive: 19 | dependency: transitive 20 | description: 21 | name: archive 22 | url: "https://pub.dartlang.org" 23 | source: hosted 24 | version: "2.0.13" 25 | args: 26 | dependency: "direct main" 27 | description: 28 | name: args 29 | url: "https://pub.dartlang.org" 30 | source: hosted 31 | version: "1.6.0" 32 | async: 33 | dependency: transitive 34 | description: 35 | name: async 36 | url: "https://pub.dartlang.org" 37 | source: hosted 38 | version: "2.5.0" 39 | basic_utils: 40 | dependency: transitive 41 | description: 42 | name: basic_utils 43 | url: "https://pub.dartlang.org" 44 | source: hosted 45 | version: "2.7.1" 46 | boolean_selector: 47 | dependency: transitive 48 | description: 49 | name: boolean_selector 50 | url: "https://pub.dartlang.org" 51 | source: hosted 52 | version: "2.1.0" 53 | charcode: 54 | dependency: transitive 55 | description: 56 | name: charcode 57 | url: "https://pub.dartlang.org" 58 | source: hosted 59 | version: "1.2.0" 60 | cli_util: 61 | dependency: transitive 62 | description: 63 | name: cli_util 64 | url: "https://pub.dartlang.org" 65 | source: hosted 66 | version: "0.3.0" 67 | collection: 68 | dependency: transitive 69 | description: 70 | name: collection 71 | url: "https://pub.dartlang.org" 72 | source: hosted 73 | version: "1.15.0" 74 | convert: 75 | dependency: transitive 76 | description: 77 | name: convert 78 | url: "https://pub.dartlang.org" 79 | source: hosted 80 | version: "2.1.1" 81 | coverage: 82 | dependency: transitive 83 | description: 84 | name: coverage 85 | url: "https://pub.dartlang.org" 86 | source: hosted 87 | version: "0.15.2" 88 | crypto: 89 | dependency: transitive 90 | description: 91 | name: crypto 92 | url: "https://pub.dartlang.org" 93 | source: hosted 94 | version: "2.1.5" 95 | csv: 96 | dependency: transitive 97 | description: 98 | name: csv 99 | url: "https://pub.dartlang.org" 100 | source: hosted 101 | version: "4.1.0" 102 | dcli: 103 | dependency: "direct main" 104 | description: 105 | name: dcli 106 | url: "https://pub.dartlang.org" 107 | source: hosted 108 | version: "0.24.1" 109 | equatable: 110 | dependency: transitive 111 | description: 112 | name: equatable 113 | url: "https://pub.dartlang.org" 114 | source: hosted 115 | version: "1.2.6" 116 | file: 117 | dependency: transitive 118 | description: 119 | name: file 120 | url: "https://pub.dartlang.org" 121 | source: hosted 122 | version: "5.2.1" 123 | file_utils: 124 | dependency: transitive 125 | description: 126 | name: file_utils 127 | url: "https://pub.dartlang.org" 128 | source: hosted 129 | version: "0.1.4" 130 | glob: 131 | dependency: transitive 132 | description: 133 | name: glob 134 | url: "https://pub.dartlang.org" 135 | source: hosted 136 | version: "1.2.0" 137 | globbing: 138 | dependency: transitive 139 | description: 140 | name: globbing 141 | url: "https://pub.dartlang.org" 142 | source: hosted 143 | version: "0.3.1" 144 | http: 145 | dependency: transitive 146 | description: 147 | name: http 148 | url: "https://pub.dartlang.org" 149 | source: hosted 150 | version: "0.12.2" 151 | http_multi_server: 152 | dependency: transitive 153 | description: 154 | name: http_multi_server 155 | url: "https://pub.dartlang.org" 156 | source: hosted 157 | version: "3.0.0" 158 | http_parser: 159 | dependency: transitive 160 | description: 161 | name: http_parser 162 | url: "https://pub.dartlang.org" 163 | source: hosted 164 | version: "3.1.4" 165 | ini: 166 | dependency: transitive 167 | description: 168 | name: ini 169 | url: "https://pub.dartlang.org" 170 | source: hosted 171 | version: "2.0.1" 172 | intl: 173 | dependency: transitive 174 | description: 175 | name: intl 176 | url: "https://pub.dartlang.org" 177 | source: hosted 178 | version: "0.16.1" 179 | io: 180 | dependency: transitive 181 | description: 182 | name: io 183 | url: "https://pub.dartlang.org" 184 | source: hosted 185 | version: "1.0.0" 186 | js: 187 | dependency: transitive 188 | description: 189 | name: js 190 | url: "https://pub.dartlang.org" 191 | source: hosted 192 | version: "0.6.3" 193 | json_annotation: 194 | dependency: transitive 195 | description: 196 | name: json_annotation 197 | url: "https://pub.dartlang.org" 198 | source: hosted 199 | version: "3.1.1" 200 | logger: 201 | dependency: transitive 202 | description: 203 | name: logger 204 | url: "https://pub.dartlang.org" 205 | source: hosted 206 | version: "0.9.4" 207 | logging: 208 | dependency: transitive 209 | description: 210 | name: logging 211 | url: "https://pub.dartlang.org" 212 | source: hosted 213 | version: "0.11.4" 214 | matcher: 215 | dependency: transitive 216 | description: 217 | name: matcher 218 | url: "https://pub.dartlang.org" 219 | source: hosted 220 | version: "0.12.10" 221 | meta: 222 | dependency: "direct main" 223 | description: 224 | name: meta 225 | url: "https://pub.dartlang.org" 226 | source: hosted 227 | version: "1.3.0" 228 | mime: 229 | dependency: transitive 230 | description: 231 | name: mime 232 | url: "https://pub.dartlang.org" 233 | source: hosted 234 | version: "1.0.0" 235 | money2: 236 | dependency: transitive 237 | description: 238 | name: money2 239 | url: "https://pub.dartlang.org" 240 | source: hosted 241 | version: "1.4.3" 242 | node_interop: 243 | dependency: transitive 244 | description: 245 | name: node_interop 246 | url: "https://pub.dartlang.org" 247 | source: hosted 248 | version: "1.2.1" 249 | node_io: 250 | dependency: transitive 251 | description: 252 | name: node_io 253 | url: "https://pub.dartlang.org" 254 | source: hosted 255 | version: "1.2.0" 256 | node_preamble: 257 | dependency: transitive 258 | description: 259 | name: node_preamble 260 | url: "https://pub.dartlang.org" 261 | source: hosted 262 | version: "1.4.13" 263 | package_config: 264 | dependency: transitive 265 | description: 266 | name: package_config 267 | url: "https://pub.dartlang.org" 268 | source: hosted 269 | version: "1.9.3" 270 | path: 271 | dependency: "direct main" 272 | description: 273 | name: path 274 | url: "https://pub.dartlang.org" 275 | source: hosted 276 | version: "1.8.0" 277 | pedantic: 278 | dependency: "direct dev" 279 | description: 280 | name: pedantic 281 | url: "https://pub.dartlang.org" 282 | source: hosted 283 | version: "1.11.0" 284 | pointycastle: 285 | dependency: transitive 286 | description: 287 | name: pointycastle 288 | url: "https://pub.dartlang.org" 289 | source: hosted 290 | version: "2.0.1" 291 | pool: 292 | dependency: transitive 293 | description: 294 | name: pool 295 | url: "https://pub.dartlang.org" 296 | source: hosted 297 | version: "1.5.0" 298 | pub_semver: 299 | dependency: transitive 300 | description: 301 | name: pub_semver 302 | url: "https://pub.dartlang.org" 303 | source: hosted 304 | version: "1.4.4" 305 | pubspec: 306 | dependency: transitive 307 | description: 308 | name: pubspec 309 | url: "https://pub.dartlang.org" 310 | source: hosted 311 | version: "0.1.5" 312 | quiver: 313 | dependency: transitive 314 | description: 315 | name: quiver 316 | url: "https://pub.dartlang.org" 317 | source: hosted 318 | version: "2.1.5" 319 | random_string: 320 | dependency: transitive 321 | description: 322 | name: random_string 323 | url: "https://pub.dartlang.org" 324 | source: hosted 325 | version: "2.1.0" 326 | shelf: 327 | dependency: transitive 328 | description: 329 | name: shelf 330 | url: "https://pub.dartlang.org" 331 | source: hosted 332 | version: "0.7.9" 333 | shelf_packages_handler: 334 | dependency: transitive 335 | description: 336 | name: shelf_packages_handler 337 | url: "https://pub.dartlang.org" 338 | source: hosted 339 | version: "2.0.1" 340 | shelf_static: 341 | dependency: transitive 342 | description: 343 | name: shelf_static 344 | url: "https://pub.dartlang.org" 345 | source: hosted 346 | version: "0.2.9+2" 347 | shelf_web_socket: 348 | dependency: transitive 349 | description: 350 | name: shelf_web_socket 351 | url: "https://pub.dartlang.org" 352 | source: hosted 353 | version: "0.2.4+1" 354 | source_map_stack_trace: 355 | dependency: transitive 356 | description: 357 | name: source_map_stack_trace 358 | url: "https://pub.dartlang.org" 359 | source: hosted 360 | version: "2.1.0" 361 | source_maps: 362 | dependency: transitive 363 | description: 364 | name: source_maps 365 | url: "https://pub.dartlang.org" 366 | source: hosted 367 | version: "0.10.10" 368 | source_span: 369 | dependency: transitive 370 | description: 371 | name: source_span 372 | url: "https://pub.dartlang.org" 373 | source: hosted 374 | version: "1.8.0" 375 | stack_trace: 376 | dependency: transitive 377 | description: 378 | name: stack_trace 379 | url: "https://pub.dartlang.org" 380 | source: hosted 381 | version: "1.10.0" 382 | stream_channel: 383 | dependency: transitive 384 | description: 385 | name: stream_channel 386 | url: "https://pub.dartlang.org" 387 | source: hosted 388 | version: "2.1.0" 389 | string_scanner: 390 | dependency: transitive 391 | description: 392 | name: string_scanner 393 | url: "https://pub.dartlang.org" 394 | source: hosted 395 | version: "1.1.0" 396 | system_info: 397 | dependency: transitive 398 | description: 399 | name: system_info 400 | url: "https://pub.dartlang.org" 401 | source: hosted 402 | version: "0.1.3" 403 | term_glyph: 404 | dependency: transitive 405 | description: 406 | name: term_glyph 407 | url: "https://pub.dartlang.org" 408 | source: hosted 409 | version: "1.2.0" 410 | test: 411 | dependency: "direct dev" 412 | description: 413 | name: test 414 | url: "https://pub.dartlang.org" 415 | source: hosted 416 | version: "1.16.5" 417 | test_api: 418 | dependency: transitive 419 | description: 420 | name: test_api 421 | url: "https://pub.dartlang.org" 422 | source: hosted 423 | version: "0.2.19" 424 | test_core: 425 | dependency: transitive 426 | description: 427 | name: test_core 428 | url: "https://pub.dartlang.org" 429 | source: hosted 430 | version: "0.3.15" 431 | typed_data: 432 | dependency: transitive 433 | description: 434 | name: typed_data 435 | url: "https://pub.dartlang.org" 436 | source: hosted 437 | version: "1.3.0" 438 | uri: 439 | dependency: transitive 440 | description: 441 | name: uri 442 | url: "https://pub.dartlang.org" 443 | source: hosted 444 | version: "0.11.4" 445 | uuid: 446 | dependency: transitive 447 | description: 448 | name: uuid 449 | url: "https://pub.dartlang.org" 450 | source: hosted 451 | version: "2.2.2" 452 | validators: 453 | dependency: transitive 454 | description: 455 | name: validators 456 | url: "https://pub.dartlang.org" 457 | source: hosted 458 | version: "2.0.1" 459 | vin_decoder: 460 | dependency: transitive 461 | description: 462 | name: vin_decoder 463 | url: "https://pub.dartlang.org" 464 | source: hosted 465 | version: "0.1.3" 466 | vm_service: 467 | dependency: transitive 468 | description: 469 | name: vm_service 470 | url: "https://pub.dartlang.org" 471 | source: hosted 472 | version: "6.1.0+1" 473 | watcher: 474 | dependency: transitive 475 | description: 476 | name: watcher 477 | url: "https://pub.dartlang.org" 478 | source: hosted 479 | version: "1.0.0" 480 | web_socket_channel: 481 | dependency: transitive 482 | description: 483 | name: web_socket_channel 484 | url: "https://pub.dartlang.org" 485 | source: hosted 486 | version: "1.2.0" 487 | webkit_inspection_protocol: 488 | dependency: transitive 489 | description: 490 | name: webkit_inspection_protocol 491 | url: "https://pub.dartlang.org" 492 | source: hosted 493 | version: "0.7.5" 494 | yaml: 495 | dependency: transitive 496 | description: 497 | name: yaml 498 | url: "https://pub.dartlang.org" 499 | source: hosted 500 | version: "2.2.1" 501 | sdks: 502 | dart: ">=2.12.0-0.0 <3.0.0" 503 | -------------------------------------------------------------------------------- /.dart_tool/package_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "configVersion": 2, 3 | "packages": [ 4 | { 5 | "name": "_fe_analyzer_shared", 6 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-14.0.0", 7 | "packageUri": "lib/", 8 | "languageVersion": "2.2" 9 | }, 10 | { 11 | "name": "analyzer", 12 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/analyzer-0.41.2", 13 | "packageUri": "lib/", 14 | "languageVersion": "2.7" 15 | }, 16 | { 17 | "name": "archive", 18 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/archive-2.0.13", 19 | "packageUri": "lib/", 20 | "languageVersion": "2.0" 21 | }, 22 | { 23 | "name": "args", 24 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/args-1.6.0", 25 | "packageUri": "lib/", 26 | "languageVersion": "2.3" 27 | }, 28 | { 29 | "name": "async", 30 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/async-2.5.0", 31 | "packageUri": "lib/", 32 | "languageVersion": "2.12" 33 | }, 34 | { 35 | "name": "basic_utils", 36 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/basic_utils-2.7.1", 37 | "packageUri": "lib/", 38 | "languageVersion": "2.1" 39 | }, 40 | { 41 | "name": "boolean_selector", 42 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0", 43 | "packageUri": "lib/", 44 | "languageVersion": "2.12" 45 | }, 46 | { 47 | "name": "charcode", 48 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/charcode-1.2.0", 49 | "packageUri": "lib/", 50 | "languageVersion": "2.12" 51 | }, 52 | { 53 | "name": "cli_util", 54 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/cli_util-0.3.0", 55 | "packageUri": "lib/", 56 | "languageVersion": "2.12" 57 | }, 58 | { 59 | "name": "collection", 60 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0", 61 | "packageUri": "lib/", 62 | "languageVersion": "2.12" 63 | }, 64 | { 65 | "name": "convert", 66 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/convert-2.1.1", 67 | "packageUri": "lib/", 68 | "languageVersion": "1.17" 69 | }, 70 | { 71 | "name": "coverage", 72 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/coverage-0.15.2", 73 | "packageUri": "lib/", 74 | "languageVersion": "2.7" 75 | }, 76 | { 77 | "name": "crypto", 78 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/crypto-2.1.5", 79 | "packageUri": "lib/", 80 | "languageVersion": "2.3" 81 | }, 82 | { 83 | "name": "csv", 84 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/csv-4.1.0", 85 | "packageUri": "lib/", 86 | "languageVersion": "2.0" 87 | }, 88 | { 89 | "name": "dcli", 90 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/dcli-0.24.1", 91 | "packageUri": "lib/", 92 | "languageVersion": "2.6" 93 | }, 94 | { 95 | "name": "equatable", 96 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/equatable-1.2.6", 97 | "packageUri": "lib/", 98 | "languageVersion": "2.0" 99 | }, 100 | { 101 | "name": "file", 102 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file-5.2.1", 103 | "packageUri": "lib/", 104 | "languageVersion": "2.2" 105 | }, 106 | { 107 | "name": "file_utils", 108 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/file_utils-0.1.4", 109 | "packageUri": "lib/", 110 | "languageVersion": "2.3" 111 | }, 112 | { 113 | "name": "glob", 114 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/glob-1.2.0", 115 | "packageUri": "lib/", 116 | "languageVersion": "2.1" 117 | }, 118 | { 119 | "name": "globbing", 120 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/globbing-0.3.1", 121 | "packageUri": "lib/", 122 | "languageVersion": "2.2" 123 | }, 124 | { 125 | "name": "http", 126 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http-0.12.2", 127 | "packageUri": "lib/", 128 | "languageVersion": "2.4" 129 | }, 130 | { 131 | "name": "http_multi_server", 132 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_multi_server-3.0.0", 133 | "packageUri": "lib/", 134 | "languageVersion": "2.12" 135 | }, 136 | { 137 | "name": "http_parser", 138 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.4", 139 | "packageUri": "lib/", 140 | "languageVersion": "2.3" 141 | }, 142 | { 143 | "name": "ini", 144 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/ini-2.0.1", 145 | "packageUri": "lib/", 146 | "languageVersion": "2.0" 147 | }, 148 | { 149 | "name": "intl", 150 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1", 151 | "packageUri": "lib/", 152 | "languageVersion": "2.5" 153 | }, 154 | { 155 | "name": "io", 156 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/io-1.0.0", 157 | "packageUri": "lib/", 158 | "languageVersion": "2.12" 159 | }, 160 | { 161 | "name": "js", 162 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/js-0.6.3", 163 | "packageUri": "lib/", 164 | "languageVersion": "2.12" 165 | }, 166 | { 167 | "name": "json_annotation", 168 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/json_annotation-3.1.1", 169 | "packageUri": "lib/", 170 | "languageVersion": "2.7" 171 | }, 172 | { 173 | "name": "logger", 174 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logger-0.9.4", 175 | "packageUri": "lib/", 176 | "languageVersion": "2.2" 177 | }, 178 | { 179 | "name": "logging", 180 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/logging-0.11.4", 181 | "packageUri": "lib/", 182 | "languageVersion": "2.0" 183 | }, 184 | { 185 | "name": "matcher", 186 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.10", 187 | "packageUri": "lib/", 188 | "languageVersion": "2.12" 189 | }, 190 | { 191 | "name": "meta", 192 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/meta-1.3.0", 193 | "packageUri": "lib/", 194 | "languageVersion": "2.12" 195 | }, 196 | { 197 | "name": "mime", 198 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/mime-1.0.0", 199 | "packageUri": "lib/", 200 | "languageVersion": "2.12" 201 | }, 202 | { 203 | "name": "money2", 204 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/money2-1.4.3", 205 | "packageUri": "lib/", 206 | "languageVersion": "2.1" 207 | }, 208 | { 209 | "name": "node_interop", 210 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_interop-1.2.1", 211 | "packageUri": "lib/", 212 | "languageVersion": "2.9" 213 | }, 214 | { 215 | "name": "node_io", 216 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_io-1.2.0", 217 | "packageUri": "lib/", 218 | "languageVersion": "2.2" 219 | }, 220 | { 221 | "name": "node_preamble", 222 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/node_preamble-1.4.13", 223 | "packageUri": "lib/", 224 | "languageVersion": "1.24" 225 | }, 226 | { 227 | "name": "package_config", 228 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/package_config-1.9.3", 229 | "packageUri": "lib/", 230 | "languageVersion": "2.7" 231 | }, 232 | { 233 | "name": "path", 234 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/path-1.8.0", 235 | "packageUri": "lib/", 236 | "languageVersion": "2.12" 237 | }, 238 | { 239 | "name": "pedantic", 240 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0", 241 | "packageUri": "lib/", 242 | "languageVersion": "2.12" 243 | }, 244 | { 245 | "name": "pointycastle", 246 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pointycastle-2.0.1", 247 | "packageUri": "lib/", 248 | "languageVersion": "2.1" 249 | }, 250 | { 251 | "name": "pool", 252 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pool-1.5.0", 253 | "packageUri": "lib/", 254 | "languageVersion": "2.12" 255 | }, 256 | { 257 | "name": "pub_semver", 258 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pub_semver-1.4.4", 259 | "packageUri": "lib/", 260 | "languageVersion": "2.0" 261 | }, 262 | { 263 | "name": "pubspec", 264 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/pubspec-0.1.5", 265 | "packageUri": "lib/", 266 | "languageVersion": "2.2" 267 | }, 268 | { 269 | "name": "quiver", 270 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/quiver-2.1.5", 271 | "packageUri": "lib/", 272 | "languageVersion": "2.0" 273 | }, 274 | { 275 | "name": "random_string", 276 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/random_string-2.1.0", 277 | "packageUri": "lib/", 278 | "languageVersion": "2.1" 279 | }, 280 | { 281 | "name": "shelf", 282 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf-0.7.9", 283 | "packageUri": "lib/", 284 | "languageVersion": "2.1" 285 | }, 286 | { 287 | "name": "shelf_packages_handler", 288 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-2.0.1", 289 | "packageUri": "lib/", 290 | "languageVersion": "2.8" 291 | }, 292 | { 293 | "name": "shelf_static", 294 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_static-0.2.9+2", 295 | "packageUri": "lib/", 296 | "languageVersion": "2.3" 297 | }, 298 | { 299 | "name": "shelf_web_socket", 300 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.4+1", 301 | "packageUri": "lib/", 302 | "languageVersion": "2.1" 303 | }, 304 | { 305 | "name": "source_map_stack_trace", 306 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-2.1.0", 307 | "packageUri": "lib/", 308 | "languageVersion": "2.12" 309 | }, 310 | { 311 | "name": "source_maps", 312 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.10", 313 | "packageUri": "lib/", 314 | "languageVersion": "2.12" 315 | }, 316 | { 317 | "name": "source_span", 318 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.0", 319 | "packageUri": "lib/", 320 | "languageVersion": "2.12" 321 | }, 322 | { 323 | "name": "stack_trace", 324 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0", 325 | "packageUri": "lib/", 326 | "languageVersion": "2.12" 327 | }, 328 | { 329 | "name": "stream_channel", 330 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0", 331 | "packageUri": "lib/", 332 | "languageVersion": "2.12" 333 | }, 334 | { 335 | "name": "string_scanner", 336 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0", 337 | "packageUri": "lib/", 338 | "languageVersion": "2.12" 339 | }, 340 | { 341 | "name": "system_info", 342 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/system_info-0.1.3", 343 | "packageUri": "lib/", 344 | "languageVersion": "2.0" 345 | }, 346 | { 347 | "name": "term_glyph", 348 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0", 349 | "packageUri": "lib/", 350 | "languageVersion": "2.12" 351 | }, 352 | { 353 | "name": "test", 354 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test-1.16.5", 355 | "packageUri": "lib/", 356 | "languageVersion": "2.12" 357 | }, 358 | { 359 | "name": "test_api", 360 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.19", 361 | "packageUri": "lib/", 362 | "languageVersion": "2.12" 363 | }, 364 | { 365 | "name": "test_core", 366 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/test_core-0.3.15", 367 | "packageUri": "lib/", 368 | "languageVersion": "2.12" 369 | }, 370 | { 371 | "name": "typed_data", 372 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0", 373 | "packageUri": "lib/", 374 | "languageVersion": "2.12" 375 | }, 376 | { 377 | "name": "uri", 378 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uri-0.11.4", 379 | "packageUri": "lib/", 380 | "languageVersion": "2.10" 381 | }, 382 | { 383 | "name": "uuid", 384 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/uuid-2.2.2", 385 | "packageUri": "lib/", 386 | "languageVersion": "2.2" 387 | }, 388 | { 389 | "name": "validators", 390 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/validators-2.0.1", 391 | "packageUri": "lib/", 392 | "languageVersion": "2.0" 393 | }, 394 | { 395 | "name": "vin_decoder", 396 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vin_decoder-0.1.3", 397 | "packageUri": "lib/", 398 | "languageVersion": "2.1" 399 | }, 400 | { 401 | "name": "vm_service", 402 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/vm_service-6.1.0+1", 403 | "packageUri": "lib/", 404 | "languageVersion": "2.12" 405 | }, 406 | { 407 | "name": "watcher", 408 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/watcher-1.0.0", 409 | "packageUri": "lib/", 410 | "languageVersion": "2.12" 411 | }, 412 | { 413 | "name": "web_socket_channel", 414 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.2.0", 415 | "packageUri": "lib/", 416 | "languageVersion": "2.10" 417 | }, 418 | { 419 | "name": "webkit_inspection_protocol", 420 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/webkit_inspection_protocol-0.7.5", 421 | "packageUri": "lib/", 422 | "languageVersion": "2.0" 423 | }, 424 | { 425 | "name": "yaml", 426 | "rootUri": "file:///home/tsutton/.pub-cache/hosted/pub.dartlang.org/yaml-2.2.1", 427 | "packageUri": "lib/", 428 | "languageVersion": "2.4" 429 | }, 430 | { 431 | "name": "osx_kvm_installer", 432 | "rootUri": "../", 433 | "packageUri": "lib/", 434 | "languageVersion": "2.6" 435 | } 436 | ], 437 | "generated": "2021-03-20T05:22:52.289354Z", 438 | "generator": "pub", 439 | "generatorVersion": "2.12.2" 440 | } 441 | --------------------------------------------------------------------------------