From 44b5b474561992e52145fa9db5e168fa3153f4a9 Mon Sep 17 00:00:00 2001 From: plane000 Date: Tue, 30 Oct 2018 18:56:47 +0000 Subject: [PATCH 01/10] Logger now always logs verbosely to file --- src/commandmanagerspec.md | 3 +++ src/logger.js | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 src/commandmanagerspec.md diff --git a/src/commandmanagerspec.md b/src/commandmanagerspec.md new file mode 100644 index 0000000..8b7f994 --- /dev/null +++ b/src/commandmanagerspec.md @@ -0,0 +1,3 @@ +# Specification of command manager and modules + +- Ability to diff --git a/src/logger.js b/src/logger.js index 4691f83..7b2068d 100644 --- a/src/logger.js +++ b/src/logger.js @@ -46,25 +46,25 @@ export class Logger { static get WARN_LOGS() {return 3;} static database(message) { - if (LogLevel > 0) return; let d = moment().format(dateFormat); fs.appendFileSync(logPath, `[${d.toLocaleString()}] [${Dialect}] ${message} \n`); + if (LogLevel > 0) return; console.log('[' + d.toLocaleString() + '] [' + colours.magenta(Dialect) + '] ' + message); } static middleware(message) { - if (LogLevel > 0) return; let d = moment().format(dateFormat); fs.appendFileSync(logPath, `[${d.toLocaleString()}] [MIDDLEWARE] ${message} \n`); + if (LogLevel > 0) return; console.log('[' + d.toLocaleString() + '] [' + colours.blue('MIDDLEWARE') + '] ' + message); } static debug(message) { - if (LogLevel > 1) return; let d = moment().format(dateFormat); fs.appendFileSync(logPath, `[${d.toLocaleString()}] [DEBUG] ${message} \n`); + if (LogLevel > 1) return; console.log('[' + d.toLocaleString() + '] [' + colours.cyan('DEBUG') + '] ' + message); } @@ -77,17 +77,17 @@ export class Logger { } static info(message) { - if (LogLevel > 2) return; let d = moment().format(dateFormat); fs.appendFileSync(logPath, `[${d.toLocaleString()}] [INFO] ${message} \n`); + if (LogLevel > 2) return; console.log('[' + d.toLocaleString() + '] [' + colours.green('INFO') + '] ' + message); } static warn(message) { - if (LogLevel > 3) return; let d = moment().format(dateFormat); fs.appendFileSync(logPath, `[${d.toLocaleString()}] [WARN] ${message} \n`); + if (LogLevel > 3) return; console.log('[' + d.toLocaleString() + '] [' + colours.yellow('WARN') + '] ' + message); } From 0d2b9427fb9ca95a278c4783f37263908766c021 Mon Sep 17 00:00:00 2001 From: plane000 Date: Sat, 17 Nov 2018 16:35:44 +0000 Subject: [PATCH 02/10] MessageManager still wondering how to do the command manager and module loader --- ...ommandmanagerspec.md => CMDManagerSpec.md} | 0 src/commandmanager.js | 10 +++++++ src/events.js | 28 ++++++++----------- src/guildmanager.js | 2 -- src/logger.js | 2 +- src/messagemanager.js | 10 ++++++- 6 files changed, 31 insertions(+), 21 deletions(-) rename src/{commandmanagerspec.md => CMDManagerSpec.md} (100%) create mode 100644 src/commandmanager.js diff --git a/src/commandmanagerspec.md b/src/CMDManagerSpec.md similarity index 100% rename from src/commandmanagerspec.md rename to src/CMDManagerSpec.md diff --git a/src/commandmanager.js b/src/commandmanager.js new file mode 100644 index 0000000..8af950f --- /dev/null +++ b/src/commandmanager.js @@ -0,0 +1,10 @@ + +export class CommandLoader { + static async load() { + + } + + static async reload() { + + } +} diff --git a/src/events.js b/src/events.js index 704a695..6a63438 100644 --- a/src/events.js +++ b/src/events.js @@ -1,45 +1,45 @@ import {Logger} from './logger'; import {Config} from './config'; import {RateLimits} from './ratelimits' +import {MessageManager} from './messagemanager'; -export class Events extends RateLimits { // extends rate limits +export class Events extends RateLimits { constructor() { super(); } async init(client) { - this.client = client; - this.client.login(Config.Token); + this._client = client; + this._client.login(Config.Token); } get Client() {return this.client;} async handleEvents() { - this.client.on('ready', async () => { + this._client.on('ready', async () => { this.handle(undefined, [this.handleReady], - this.client + this._client ); }); - this.client.on('error', async (err) => { + this._client.on('error', async (err) => { this.handle(err, [this.handleError], - this.client + this._client ); }); - this.client.on('message', async (message) => { + this._client.on('message', async (message) => { this.handle(message, - [super.request, this.handleMessage], - this.client + [super.request, MessageManager.handleMessage], + this._client ); }); } - async handle(obj = [null], callbacks = [undefined], client) { let doNext = false; if (callbacks.length == 0) { @@ -70,10 +70,4 @@ export class Events extends RateLimits { // extends rate limits Logger.error(`An error occured with the Discord API: ${err}`); next(); } - - async handleMessage(message, client, next) { - if (client.user.id == message.author.id) return; - if (message.limiting) message.channel.send(`${message.author} You are being rate limited`); - next(); - } } diff --git a/src/guildmanager.js b/src/guildmanager.js index 26f7846..dbea12f 100644 --- a/src/guildmanager.js +++ b/src/guildmanager.js @@ -4,6 +4,4 @@ export class GuildManager { constructor() { } - - } diff --git a/src/logger.js b/src/logger.js index 7b2068d..a11840a 100644 --- a/src/logger.js +++ b/src/logger.js @@ -5,7 +5,7 @@ import fs from 'fs'; let LogLevel = 1; let Dialect = 'SQLITE'; let logPath = 'logs.log'; -let dateFormat = 'DD-MM-YY HH:MM:ss' +let dateFormat = 'DD-MM-YY HH:mm:ss' export class Logger { static init(path) { diff --git a/src/messagemanager.js b/src/messagemanager.js index a5ae72f..3836ca3 100644 --- a/src/messagemanager.js +++ b/src/messagemanager.js @@ -1,5 +1,13 @@ import {Logger} from './logger'; export class MessageManager { - + static async init() { + + } + + static async handleMessage(message, client, next) { + if (client.user.id == message.author.id) return; + if (message.limiting) message.channel.send(`${message.author} You are being rate limited`); + next(); + } } From 20238c67b83827c2e8f27998bc4c409d90b9b698 Mon Sep 17 00:00:00 2001 From: plane000 Date: Sat, 17 Nov 2018 22:38:08 +0000 Subject: [PATCH 03/10] Not sure what changed --- src/commandmanager.js | 2 +- src/messagemanager.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/commandmanager.js b/src/commandmanager.js index 8af950f..b3be909 100644 --- a/src/commandmanager.js +++ b/src/commandmanager.js @@ -1,5 +1,5 @@ -export class CommandLoader { +export class CommandManager { static async load() { } diff --git a/src/messagemanager.js b/src/messagemanager.js index 3836ca3..782e8b0 100644 --- a/src/messagemanager.js +++ b/src/messagemanager.js @@ -2,7 +2,7 @@ import {Logger} from './logger'; export class MessageManager { static async init() { - + } static async handleMessage(message, client, next) { From de220ab0ee0b126ed7623e89be1cc5336e775aac Mon Sep 17 00:00:00 2001 From: Ben Date: Mon, 19 Nov 2018 22:12:55 +0000 Subject: [PATCH 04/10] Database initialization broken, now fixed --- src/database/database.js | 2 +- src/database/guild.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/database/database.js b/src/database/database.js index 063f959..7dd7966 100644 --- a/src/database/database.js +++ b/src/database/database.js @@ -1,6 +1,6 @@ import Sequelize from 'sequelize'; -import {BaseDatabase} from './baseDatabase'; +import {BaseDatabase} from './basedatabase'; import {Logger} from '../logger'; export class Database extends BaseDatabase { diff --git a/src/database/guild.js b/src/database/guild.js index 69a975a..e97025f 100644 --- a/src/database/guild.js +++ b/src/database/guild.js @@ -1,6 +1,6 @@ import Sequelize from 'sequelize'; -import {BaseDatabase} from './baseDatabase'; +import {BaseDatabase} from './basedatabase'; import {Logger} from '../logger'; export class GuildTools extends BaseDatabase { From 523d26508f9c0a644c442d4460125f4a9ee9a08e Mon Sep 17 00:00:00 2001 From: Ben Date: Mon, 19 Nov 2018 22:48:57 +0000 Subject: [PATCH 05/10] fixed some minor linting issues --- src/database/basedatabase.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/database/basedatabase.js b/src/database/basedatabase.js index 6e4c65e..523905c 100644 --- a/src/database/basedatabase.js +++ b/src/database/basedatabase.js @@ -19,7 +19,7 @@ export class BaseDatabase { operatorsAliases: false, storage: './resources/database.sqlite', }); - + Guild = Connection.define('Guild', { id: { type: Sequelize.BIGINT, @@ -39,4 +39,3 @@ export class BaseDatabase { Logger.info('Connected to SQLite Database'); } } - From af49362441027606839f599d2c8fac6935aeaca8 Mon Sep 17 00:00:00 2001 From: Ben Date: Wed, 21 Nov 2018 18:05:07 +0000 Subject: [PATCH 06/10] dotnet install basg script --- dev-portal/dotnet-install.sh | 997 +++++++++++++++++++++++++ dev-portal/packages-microsoft-prod.deb | Bin 0 -> 2452 bytes 2 files changed, 997 insertions(+) create mode 100755 dev-portal/dotnet-install.sh create mode 100644 dev-portal/packages-microsoft-prod.deb diff --git a/dev-portal/dotnet-install.sh b/dev-portal/dotnet-install.sh new file mode 100755 index 0000000..fe0a6c2 --- /dev/null +++ b/dev-portal/dotnet-install.sh @@ -0,0 +1,997 @@ +#!/usr/bin/env bash +# Copyright (c) .NET Foundation and contributors. All rights reserved. +# Licensed under the MIT license. See LICENSE file in the project root for full license information. +# + +# Stop script on NZEC +set -e +# Stop script if unbound variable found (use ${var:-} if intentional) +set -u +# By default cmd1 | cmd2 returns exit code of cmd2 regardless of cmd1 success +# This is causing it to fail +set -o pipefail + +# Use in the the functions: eval $invocation +invocation='say_verbose "Calling: ${yellow:-}${FUNCNAME[0]} ${green:-}$*${normal:-}"' + +# standard output may be used as a return value in the functions +# we need a way to write text on the screen in the functions so that +# it won't interfere with the return value. +# Exposing stream 3 as a pipe to standard output of the script itself +exec 3>&1 + +# Setup some colors to use. These need to work in fairly limited shells, like the Ubuntu Docker container where there are only 8 colors. +# See if stdout is a terminal +if [ -t 1 ] && command -v tput > /dev/null; then + # see if it supports colors + ncolors=$(tput colors) + if [ -n "$ncolors" ] && [ $ncolors -ge 8 ]; then + bold="$(tput bold || echo)" + normal="$(tput sgr0 || echo)" + black="$(tput setaf 0 || echo)" + red="$(tput setaf 1 || echo)" + green="$(tput setaf 2 || echo)" + yellow="$(tput setaf 3 || echo)" + blue="$(tput setaf 4 || echo)" + magenta="$(tput setaf 5 || echo)" + cyan="$(tput setaf 6 || echo)" + white="$(tput setaf 7 || echo)" + fi +fi + +say_warning() { + printf "%b\n" "${yellow:-}dotnet_install: Warning: $1${normal:-}" +} + +say_err() { + printf "%b\n" "${red:-}dotnet_install: Error: $1${normal:-}" >&2 +} + +say() { + # using stream 3 (defined in the beginning) to not interfere with stdout of functions + # which may be used as return value + printf "%b\n" "${cyan:-}dotnet-install:${normal:-} $1" >&3 +} + +say_verbose() { + if [ "$verbose" = true ]; then + say "$1" + fi +} + +# This platform list is finite - if the SDK/Runtime has supported Linux distribution-specific assets, +# then and only then should the Linux distribution appear in this list. +# Adding a Linux distribution to this list does not imply distribution-specific support. +get_legacy_os_name_from_platform() { + eval $invocation + + platform="$1" + case "$platform" in + "centos.7") + echo "centos" + return 0 + ;; + "debian.8") + echo "debian" + return 0 + ;; + "debian.9") + echo "debian.9" + return 0 + ;; + "fedora.23") + echo "fedora.23" + return 0 + ;; + "fedora.24") + echo "fedora.24" + return 0 + ;; + "fedora.27") + echo "fedora.27" + return 0 + ;; + "fedora.28") + echo "fedora.28" + return 0 + ;; + "opensuse.13.2") + echo "opensuse.13.2" + return 0 + ;; + "opensuse.42.1") + echo "opensuse.42.1" + return 0 + ;; + "opensuse.42.3") + echo "opensuse.42.3" + return 0 + ;; + "rhel.7"*) + echo "rhel" + return 0 + ;; + "ubuntu.14.04") + echo "ubuntu" + return 0 + ;; + "ubuntu.16.04") + echo "ubuntu.16.04" + return 0 + ;; + "ubuntu.16.10") + echo "ubuntu.16.10" + return 0 + ;; + "ubuntu.18.04") + echo "ubuntu.18.04" + return 0 + ;; + "alpine.3.4.3") + echo "alpine" + return 0 + ;; + esac + return 1 +} + +get_linux_platform_name() { + eval $invocation + + if [ -n "$runtime_id" ]; then + echo "${runtime_id%-*}" + return 0 + else + if [ -e /etc/os-release ]; then + . /etc/os-release + echo "$ID.$VERSION_ID" + return 0 + elif [ -e /etc/redhat-release ]; then + local redhatRelease=$( /dev/null 2>&1 + return $? +} + + +check_min_reqs() { + local hasMinimum=false + if machine_has "curl"; then + hasMinimum=true + elif machine_has "wget"; then + hasMinimum=true + fi + + if [ "$hasMinimum" = "false" ]; then + say_err "curl (recommended) or wget are required to download dotnet. Install missing prerequisite to proceed." + return 1 + fi + return 0 +} + +check_pre_reqs() { + eval $invocation + + if [ "${DOTNET_INSTALL_SKIP_PREREQS:-}" = "1" ]; then + return 0 + fi + + if [ "$(uname)" = "Linux" ]; then + if [ ! -x "$(command -v ldconfig)" ]; then + echo "ldconfig is not in PATH, trying /sbin/ldconfig." + LDCONFIG_COMMAND="/sbin/ldconfig" + else + LDCONFIG_COMMAND="ldconfig" + fi + + local librarypath=${LD_LIBRARY_PATH:-} + LDCONFIG_COMMAND="$LDCONFIG_COMMAND -NXv ${librarypath//:/ }" + + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libunwind)" ] && say_warning "Unable to locate libunwind. Probable prerequisite missing; please install libunwind." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libssl)" ] && say_warning "Unable to locate libssl. Probable prerequisite missing; please install libssl." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep libicu)" ] && say_warning "Unable to locate libicu. Probable prerequisite missing; please install libicu." + [ -z "$($LDCONFIG_COMMAND 2>/dev/null | grep -F libcurl.so)" ] && say_warning "Unable to locate libcurl. Probable prerequisite missing; please install libcurl." + fi + + return 0 +} + +# args: +# input - $1 +to_lowercase() { + #eval $invocation + + echo "$1" | tr '[:upper:]' '[:lower:]' + return 0 +} + +# args: +# input - $1 +remove_trailing_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input%/}" + return 0 +} + +# args: +# input - $1 +remove_beginning_slash() { + #eval $invocation + + local input="${1:-}" + echo "${input#/}" + return 0 +} + +# args: +# root_path - $1 +# child_path - $2 - this parameter can be empty +combine_paths() { + eval $invocation + + # TODO: Consider making it work with any number of paths. For now: + if [ ! -z "${3:-}" ]; then + say_err "combine_paths: Function takes two parameters." + return 1 + fi + + local root_path="$(remove_trailing_slash "$1")" + local child_path="$(remove_beginning_slash "${2:-}")" + say_verbose "combine_paths: root_path=$root_path" + say_verbose "combine_paths: child_path=$child_path" + echo "$root_path/$child_path" + return 0 +} + +get_machine_architecture() { + eval $invocation + + if command -v uname > /dev/null; then + CPUName=$(uname -m) + case $CPUName in + armv7l) + echo "arm" + return 0 + ;; + aarch64) + echo "arm64" + return 0 + ;; + esac + fi + + # Always default to 'x64' + echo "x64" + return 0 +} + +# args: +# architecture - $1 +get_normalized_architecture_from_architecture() { + eval $invocation + + local architecture="$(to_lowercase "$1")" + case "$architecture" in + \) + echo "$(get_normalized_architecture_from_architecture "$(get_machine_architecture)")" + return 0 + ;; + amd64|x64) + echo "x64" + return 0 + ;; + arm) + echo "arm" + return 0 + ;; + arm64) + echo "arm64" + return 0 + ;; + esac + + say_err "Architecture \`$architecture\` not supported. If you think this is a bug, please report it at https://github.com/dotnet/cli/issues" + return 1 +} + +# version_info is a conceptual two line string representing commit hash and 4-part version +# format: +# Line 1: # commit_hash +# Line 2: # 4-part version + +# args: +# version_text - stdin +get_version_from_version_info() { + eval $invocation + + cat | tail -n 1 | sed 's/\r$//' + return 0 +} + +# args: +# version_text - stdin +get_commit_hash_from_version_info() { + eval $invocation + + cat | head -n 1 | sed 's/\r$//' + return 0 +} + +# args: +# install_root - $1 +# relative_path_to_package - $2 +# specific_version - $3 +is_dotnet_package_installed() { + eval $invocation + + local install_root="$1" + local relative_path_to_package="$2" + local specific_version="${3//[$'\t\r\n']}" + + local dotnet_package_path="$(combine_paths "$(combine_paths "$install_root" "$relative_path_to_package")" "$specific_version")" + say_verbose "is_dotnet_package_installed: dotnet_package_path=$dotnet_package_path" + + if [ -d "$dotnet_package_path" ]; then + return 0 + else + return 1 + fi +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# coherent - $4 +get_latest_version_info() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local coherent="$4" + + local version_file_url=null + if [[ "$runtime" == "dotnet" ]]; then + version_file_url="$uncached_feed/Runtime/$channel/latest.version" + elif [[ "$runtime" == "aspnetcore" ]]; then + version_file_url="$uncached_feed/aspnetcore/Runtime/$channel/latest.version" + elif [ -z "$runtime" ]; then + if [ "$coherent" = true ]; then + version_file_url="$uncached_feed/Sdk/$channel/latest.coherent.version" + else + version_file_url="$uncached_feed/Sdk/$channel/latest.version" + fi + else + say_err "Invalid value for \$runtime" + return 1 + fi + say_verbose "get_latest_version_info: latest url: $version_file_url" + + download "$version_file_url" + return $? +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# version - $4 +get_specific_version_from_version() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local version="$(to_lowercase "$4")" + + case "$version" in + latest) + local version_info + version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" false)" || return 1 + say_verbose "get_specific_version_from_version: version_info=$version_info" + echo "$version_info" | get_version_from_version_info + return 0 + ;; + coherent) + local version_info + version_info="$(get_latest_version_info "$azure_feed" "$channel" "$normalized_architecture" true)" || return 1 + say_verbose "get_specific_version_from_version: version_info=$version_info" + echo "$version_info" | get_version_from_version_info + return 0 + ;; + *) + echo "$version" + return 0 + ;; + esac +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +construct_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + + local osname + osname="$(get_current_os_name)" || return 1 + + local download_link=null + if [[ "$runtime" == "dotnet" ]]; then + download_link="$azure_feed/Runtime/$specific_version/dotnet-runtime-$specific_version-$osname-$normalized_architecture.tar.gz" + elif [[ "$runtime" == "aspnetcore" ]]; then + download_link="$azure_feed/aspnetcore/Runtime/$specific_version/aspnetcore-runtime-$specific_version-$osname-$normalized_architecture.tar.gz" + elif [ -z "$runtime" ]; then + download_link="$azure_feed/Sdk/$specific_version/dotnet-sdk-$specific_version-$osname-$normalized_architecture.tar.gz" + else + return 1 + fi + + echo "$download_link" + return 0 +} + +# args: +# azure_feed - $1 +# channel - $2 +# normalized_architecture - $3 +# specific_version - $4 +construct_legacy_download_link() { + eval $invocation + + local azure_feed="$1" + local channel="$2" + local normalized_architecture="$3" + local specific_version="${4//[$'\t\r\n']}" + + local distro_specific_osname + distro_specific_osname="$(get_legacy_os_name)" || return 1 + + local legacy_download_link=null + if [[ "$runtime" == "dotnet" ]]; then + legacy_download_link="$azure_feed/Runtime/$specific_version/dotnet-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + elif [ -z "$runtime" ]; then + legacy_download_link="$azure_feed/Sdk/$specific_version/dotnet-dev-$distro_specific_osname-$normalized_architecture.$specific_version.tar.gz" + else + return 1 + fi + + echo "$legacy_download_link" + return 0 +} + +get_user_install_path() { + eval $invocation + + if [ ! -z "${DOTNET_INSTALL_DIR:-}" ]; then + echo "$DOTNET_INSTALL_DIR" + else + echo "$HOME/.dotnet" + fi + return 0 +} + +# args: +# install_dir - $1 +resolve_installation_path() { + eval $invocation + + local install_dir=$1 + if [ "$install_dir" = "" ]; then + local user_install_path="$(get_user_install_path)" + say_verbose "resolve_installation_path: user_install_path=$user_install_path" + echo "$user_install_path" + return 0 + fi + + echo "$install_dir" + return 0 +} + +# args: +# install_root - $1 +get_installed_version_info() { + eval $invocation + + local install_root="$1" + local version_file="$(combine_paths "$install_root" "$local_version_file_relative_path")" + say_verbose "Local version file: $version_file" + if [ ! -z "$version_file" ] | [ -r "$version_file" ]; then + local version_info="$(cat "$version_file")" + echo "$version_info" + return 0 + fi + + say_verbose "Local version file not found." + return 0 +} + +# args: +# relative_or_absolute_path - $1 +get_absolute_path() { + eval $invocation + + local relative_or_absolute_path=$1 + echo "$(cd "$(dirname "$1")" && pwd -P)/$(basename "$1")" + return 0 +} + +# args: +# input_files - stdin +# root_path - $1 +# out_path - $2 +# override - $3 +copy_files_or_dirs_from_list() { + eval $invocation + + local root_path="$(remove_trailing_slash "$1")" + local out_path="$(remove_trailing_slash "$2")" + local override="$3" + local osname="$(get_current_os_name)" + local override_switch=$( + if [ "$override" = false ]; then + if [[ "$osname" == "linux-musl" ]]; then + printf -- "-u"; + else + printf -- "-n"; + fi + fi) + + cat | uniq | while read -r file_path; do + local path="$(remove_beginning_slash "${file_path#$root_path}")" + local target="$out_path/$path" + if [ "$override" = true ] || (! ([ -d "$target" ] || [ -e "$target" ])); then + mkdir -p "$out_path/$(dirname "$path")" + cp -R $override_switch "$root_path/$path" "$target" + fi + done +} + +# args: +# zip_path - $1 +# out_path - $2 +extract_dotnet_package() { + eval $invocation + + local zip_path="$1" + local out_path="$2" + + local temp_out_path="$(mktemp -d "$temporary_file_template")" + + local failed=false + tar -xzf "$zip_path" -C "$temp_out_path" > /dev/null || failed=true + + local folders_with_version_regex='^.*/[0-9]+\.[0-9]+[^/]+/' + find "$temp_out_path" -type f | grep -Eo "$folders_with_version_regex" | sort | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" false + find "$temp_out_path" -type f | grep -Ev "$folders_with_version_regex" | copy_files_or_dirs_from_list "$temp_out_path" "$out_path" "$override_non_versioned_files" + + rm -rf "$temp_out_path" + + if [ "$failed" = true ]; then + say_err "Extraction failed" + return 1 + fi +} + +# args: +# remote_path - $1 +# [out_path] - $2 - stdout if not provided +download() { + eval $invocation + + local remote_path="$1" + local out_path="${2:-}" + + if [[ "$remote_path" != "http"* ]]; then + cp "$remote_path" "$out_path" + return $? + fi + + local failed=false + if machine_has "curl"; then + downloadcurl "$remote_path" "$out_path" || failed=true + elif machine_has "wget"; then + downloadwget "$remote_path" "$out_path" || failed=true + else + failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Download failed: $remote_path" + return 1 + fi + return 0 +} + +downloadcurl() { + eval $invocation + local remote_path="$1" + local out_path="${2:-}" + + # Append feed_credential as late as possible before calling curl to avoid logging feed_credential + remote_path="${remote_path}${feed_credential}" + + local failed=false + if [ -z "$out_path" ]; then + curl --retry 10 -sSL -f --create-dirs "$remote_path" || failed=true + else + curl --retry 10 -sSL -f --create-dirs -o "$out_path" "$remote_path" || failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Curl download failed" + return 1 + fi + return 0 +} + +downloadwget() { + eval $invocation + local remote_path="$1" + local out_path="${2:-}" + + # Append feed_credential as late as possible before calling wget to avoid logging feed_credential + remote_path="${remote_path}${feed_credential}" + + local failed=false + if [ -z "$out_path" ]; then + wget -q --tries 10 -O - "$remote_path" || failed=true + else + wget --tries 10 -O "$out_path" "$remote_path" || failed=true + fi + if [ "$failed" = true ]; then + say_verbose "Wget download failed" + return 1 + fi + return 0 +} + +calculate_vars() { + eval $invocation + valid_legacy_download_link=true + + normalized_architecture="$(get_normalized_architecture_from_architecture "$architecture")" + say_verbose "normalized_architecture=$normalized_architecture" + + specific_version="$(get_specific_version_from_version "$azure_feed" "$channel" "$normalized_architecture" "$version")" + say_verbose "specific_version=$specific_version" + if [ -z "$specific_version" ]; then + say_err "Could not get version information." + return 1 + fi + + download_link="$(construct_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")" + say_verbose "download_link=$download_link" + + legacy_download_link="$(construct_legacy_download_link "$azure_feed" "$channel" "$normalized_architecture" "$specific_version")" || valid_legacy_download_link=false + + if [ "$valid_legacy_download_link" = true ]; then + say_verbose "legacy_download_link=$legacy_download_link" + else + say_verbose "Cound not construct a legacy_download_link; omitting..." + fi + + install_root="$(resolve_installation_path "$install_dir")" + say_verbose "install_root=$install_root" +} + +install_dotnet() { + eval $invocation + local download_failed=false + local asset_name='' + local asset_relative_path='' + + if [[ "$runtime" == "dotnet" ]]; then + asset_relative_path="shared/Microsoft.NETCore.App" + asset_name=".NET Core Runtime" + elif [[ "$runtime" == "aspnetcore" ]]; then + asset_relative_path="shared/Microsoft.AspNetCore.App" + asset_name="ASP.NET Core Runtime" + elif [ -z "$runtime" ]; then + asset_relative_path="sdk" + asset_name=".NET Core SDK" + else + say_err "Invalid value for \$runtime" + return 1 + fi + + # Check if the SDK version is already installed. + if is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then + say "$asset_name version $specific_version is already installed." + return 0 + fi + + mkdir -p "$install_root" + zip_path="$(mktemp "$temporary_file_template")" + say_verbose "Zip path: $zip_path" + + say "Downloading link: $download_link" + + # Failures are normal in the non-legacy case for ultimately legacy downloads. + # Do not output to stderr, since output to stderr is considered an error. + download "$download_link" "$zip_path" 2>&1 || download_failed=true + + # if the download fails, download the legacy_download_link + if [ "$download_failed" = true ]; then + say "Cannot download: $download_link" + + if [ "$valid_legacy_download_link" = true ]; then + download_failed=false + download_link="$legacy_download_link" + zip_path="$(mktemp "$temporary_file_template")" + say_verbose "Legacy zip path: $zip_path" + say "Downloading legacy link: $download_link" + download "$download_link" "$zip_path" 2>&1 || download_failed=true + fi + fi + + if [ "$download_failed" = true ]; then + say_err "Could not download $asset_name version $specific_version" + return 1 + fi + + say "Extracting zip from $download_link" + extract_dotnet_package "$zip_path" "$install_root" + + # Check if the SDK version is now installed; if not, fail the installation. + if ! is_dotnet_package_installed "$install_root" "$asset_relative_path" "$specific_version"; then + say_err "$asset_name version $specific_version failed to install with an unknown error." + return 1 + fi + + return 0 +} + +local_version_file_relative_path="/.version" +bin_folder_relative_path="" +temporary_file_template="${TMPDIR:-/tmp}/dotnet.XXXXXXXXX" + +channel="LTS" +version="Latest" +install_dir="" +architecture="" +dry_run=false +no_path=false +no_cdn=false +azure_feed="https://dotnetcli.azureedge.net/dotnet" +uncached_feed="https://dotnetcli.blob.core.windows.net/dotnet" +feed_credential="" +verbose=false +runtime="" +runtime_id="" +override_non_versioned_files=true + +while [ $# -ne 0 ] +do + name="$1" + case "$name" in + -c|--channel|-[Cc]hannel) + shift + channel="$1" + ;; + -v|--version|-[Vv]ersion) + shift + version="$1" + ;; + -i|--install-dir|-[Ii]nstall[Dd]ir) + shift + install_dir="$1" + ;; + --arch|--architecture|-[Aa]rch|-[Aa]rchitecture) + shift + architecture="$1" + ;; + --shared-runtime|-[Ss]hared[Rr]untime) + say_warning "The --shared-runtime flag is obsolete and may be removed in a future version of this script. The recommended usage is to specify '--runtime dotnet'." + if [ -z "$runtime" ]; then + runtime="dotnet" + fi + ;; + --runtime|-[Rr]untime) + shift + runtime="$1" + if [[ "$runtime" != "dotnet" ]] && [[ "$runtime" != "aspnetcore" ]]; then + say_err "Unsupported value for --runtime: '$1'. Valid values are 'dotnet' and 'aspnetcore'." + exit 1 + fi + ;; + --dry-run|-[Dd]ry[Rr]un) + dry_run=true + ;; + --no-path|-[Nn]o[Pp]ath) + no_path=true + ;; + --verbose|-[Vv]erbose) + verbose=true + ;; + --no-cdn|-[Nn]o[Cc]dn) + no_cdn=true + ;; + --azure-feed|-[Aa]zure[Ff]eed) + shift + azure_feed="$1" + ;; + --uncached-feed|-[Uu]ncached[Ff]eed) + shift + uncached_feed="$1" + ;; + --feed-credential|-[Ff]eed[Cc]redential) + shift + feed_credential="$1" + ;; + --runtime-id|-[Rr]untime[Ii]d) + shift + runtime_id="$1" + ;; + --skip-non-versioned-files|-[Ss]kip[Nn]on[Vv]ersioned[Ff]iles) + override_non_versioned_files=false + ;; + -?|--?|-h|--help|-[Hh]elp) + script_name="$(basename "$0")" + echo ".NET Tools Installer" + echo "Usage: $script_name [-c|--channel ] [-v|--version ] [-p|--prefix ]" + echo " $script_name -h|-?|--help" + echo "" + echo "$script_name is a simple command line interface for obtaining dotnet cli." + echo "" + echo "Options:" + echo " -c,--channel Download from the channel specified, Defaults to \`$channel\`." + echo " -Channel" + echo " Possible values:" + echo " - Current - most current release" + echo " - LTS - most current supported release" + echo " - 2-part version in a format A.B - represents a specific release" + echo " examples: 2.0; 1.0" + echo " - Branch name" + echo " examples: release/2.0.0; Master" + echo " -v,--version Use specific VERSION, Defaults to \`$version\`." + echo " -Version" + echo " Possible values:" + echo " - latest - most latest build on specific channel" + echo " - coherent - most latest coherent build on specific channel" + echo " coherent applies only to SDK downloads" + echo " - 3-part version in a format A.B.C - represents specific version of build" + echo " examples: 2.0.0-preview2-006120; 1.1.0" + echo " -i,--install-dir Install under specified location (see Install Location below)" + echo " -InstallDir" + echo " --architecture Architecture of dotnet binaries to be installed, Defaults to \`$architecture\`." + echo " --arch,-Architecture,-Arch" + echo " Possible values: x64, arm, and arm64" + echo " --runtime Installs a shared runtime only, without the SDK." + echo " -Runtime" + echo " Possible values:" + echo " - dotnet - the Microsoft.NETCore.App shared runtime" + echo " - aspnetcore - the Microsoft.AspNetCore.App shared runtime" + echo " --skip-non-versioned-files Skips non-versioned files if they already exist, such as the dotnet executable." + echo " -SkipNonVersionedFiles" + echo " --dry-run,-DryRun Do not perform installation. Display download link." + echo " --no-path, -NoPath Do not set PATH for the current process." + echo " --verbose,-Verbose Display diagnostics information." + echo " --azure-feed,-AzureFeed Azure feed location. Defaults to $azure_feed, This parameter typically is not changed by the user." + echo " --uncached-feed,-UncachedFeed Uncached feed location. This parameter typically is not changed by the user." + echo " --no-cdn,-NoCdn Disable downloading from the Azure CDN, and use the uncached feed directly." + echo " --feed-credential,-FeedCredential Azure feed shared access token. This parameter typically is not specified." + echo " --runtime-id Installs the .NET Tools for the given platform (use linux-x64 for portable linux)." + echo " -RuntimeId" + echo " -?,--?,-h,--help,-Help Shows this help message" + echo "" + echo "Obsolete parameters:" + echo " --shared-runtime The recommended alternative is '--runtime dotnet'." + echo " -SharedRuntime Installs just the shared runtime bits, not the entire SDK." + echo "" + echo "Install Location:" + echo " Location is chosen in following order:" + echo " - --install-dir option" + echo " - Environmental variable DOTNET_INSTALL_DIR" + echo " - $HOME/.dotnet" + exit 0 + ;; + *) + say_err "Unknown argument \`$name\`" + exit 1 + ;; + esac + + shift +done + +if [ "$no_cdn" = true ]; then + azure_feed="$uncached_feed" +fi + +check_min_reqs +calculate_vars + +if [ "$dry_run" = true ]; then + say "Payload URL: $download_link" + if [ "$valid_legacy_download_link" = true ]; then + say "Legacy payload URL: $legacy_download_link" + fi + say "Repeatable invocation: ./$(basename "$0") --version $specific_version --channel $channel --install-dir $install_dir" + exit 0 +fi + +check_pre_reqs +install_dotnet + +bin_path="$(get_absolute_path "$(combine_paths "$install_root" "$bin_folder_relative_path")")" +if [ "$no_path" = false ]; then + say "Adding to current process PATH: \`$bin_path\`. Note: This change will be visible only when sourcing script." + export PATH="$bin_path":"$PATH" +else + say "Binaries of dotnet can be found in $bin_path" +fi + +say "Installation finished successfully." diff --git a/dev-portal/packages-microsoft-prod.deb b/dev-portal/packages-microsoft-prod.deb new file mode 100644 index 0000000000000000000000000000000000000000..4f7f63d330c002a70a03c99fab6f7d6131c26486 GIT binary patch literal 2452 zcmai$c{CIX7r-saItF2=j8P~ljUlqk$XLdbEh5as*oMeHHFgo9C}A|yWC@Y7j4j#M z5;N8qlD$`!vG1Pc>%H&2zu)iNbMLw5o_qiMopYr$vHs5P2p$(#Cl9RmB_|JWtbY&$ z0#Ur8sCX5o3{`_cAkg3azgZCqRZ&)kKz_$RIP$<0pghh#-huu;UJ8L&e+69dfA6cR z{CmNXNAfWj%U`guFQ#KWN1?*80YwgeLrZSa!^FmcBq|cibTXeEZvUjH#CZqLmo|rm#I5KYXH>{B;eOW4A~= zuGbq#*HL2Z48K_LdL+o*?9h+Y)jv{kiYavcWaoDDkp44!rH{dIO|k1@)b8zwoI#uI-_-RqjpQ-P}nFvJJK4 zL}W~#f|p`qwz(!#Ov@QSUd1>_WtLSnlkP-0znAum{uvebWc79DLT8#QX|Q8H6xmf% zaKbuO@xXJUP=irM`UVP(^4)b1uN`A=s@XStJl$|uesy~ku+ zw??FhVN$5x-P}9C$m4xirBGzEJUwsFH}Q}5th+Q9&#~w|7Sl`jmK*^SFA$c;$4Rd6 zYO#6AVhksmK9OS96~d9Q`nJw@y#ED7y{FavI&ExmM%Oqm53c3Q>G4inO~190NyH?n z^LnojmD#!vscIK(Y%X&x@##-?ebu9OJ*~IZavgAB-#gEFQUlKr4{AGAYR&g%>^0et zU(yV*rLD9wMVnbAXo8=9{->3FxRDc{6=8Sd3-nwAM{m$1PxTT6YP~Fsruwgrz4=K4FR&7HoJH!sJjft6UnYc9UYYJxl(IZ|&VZG1hrI~gH=&xCn7No|jd`>BshWOo%r z#!Z69HA0~YV)c9t$OZDtb_H8^B8hk~+AW3pa=n_6;a3|GR3JDVfq1Z8T9_^g%BGnH zk#kwwML7E!P}5-E7fe!R1ovo()w?CC>`Ol!)8mj|w4G;}p9WHMm3{PB@S67uS5UR+ z5i$Ktf9Jt_`4%0YbRd^gLx*Anpi)C=6=PltC3(cr+$ILIH?2o7Co{g{2z?I)X#8ZT zwKRcUW8sa8-_`vGZxfT;cTR}fhn$44_XL2DJ!!x8)DdRS&Lv)(+j2-HV2lK^Xbfh} zRmQqT@%a($g^PGY@3GeAAYgOf&ZgNe0{86umOVE{Hx7Q384v;t!y8L-7UGKFMX-Wy zWCjXfAJhaq32b69+Qk?&7i~i|pLUF= zPPIOM?$5?Jj_l|3KW$8VYto3?3BT5idL-I7Z1}Uh7Sxv9MMr;ZHRS@s^hG}J2<^W? z!oacvlau-HrIShRj#Cnf$rUI$6em582Z7eo=lgNLPke{?p^h_jSfp;7OrefbPG4X6 zltL&A%met`VlpViJ`V5gad8!U0>xQ{4vZlibO}?{XaOf=zhu7@$+KE3P|y`Nz0kvG z>5iHDDmjuEEt977adMpi0Uo>aqZu=(i`?*SNi|tfB0X20?tzC4H`SS#cZaaI;rJLs ziDnU|nXA-?sc3Ai^YUdG+!>N|jJF1;Pj-EJd>Li%ohdZblEJTO{*$w_Wau;QY>cJO zWL^U1x@>OG$}P0i&700#ynwcdcc&GI_U9W6lU;acD(mhm#6IPpx;HH~dmH(-ioh{^ znn&G@+Cnw5iSoT?oeF(|WFQv26brb5Dl+zs!6ufMf|H1>GmjIjqZ?uX>Q(I*<4+L~ zX&-a6oIE49ELWACXa?I^fih6cZP!JDxE_@2sAl3K=V>r|RLO4Yt0Hoyi`y%!0o@94 z?hAWB&(@TT?<_+yD5Remx7UxPu9Lfxa|ie zDt^@#l(>i1N=*aj Date: Sat, 24 Nov 2018 10:59:37 +0000 Subject: [PATCH 07/10] Example command --- dev-portal/katoolin | 1 + dev-portal/packages-microsoft-prod.deb | Bin 2452 -> 0 bytes dev-portal/wifresti | 1 + src/commandmanager.js | 9 ++++++++- src/commands/common.js | 27 +++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 1 deletion(-) create mode 160000 dev-portal/katoolin delete mode 100644 dev-portal/packages-microsoft-prod.deb create mode 160000 dev-portal/wifresti create mode 100644 src/commands/common.js diff --git a/dev-portal/katoolin b/dev-portal/katoolin new file mode 160000 index 0000000..44202dc --- /dev/null +++ b/dev-portal/katoolin @@ -0,0 +1 @@ +Subproject commit 44202dc567ba45270c3de554485d0d5cb61ffb2c diff --git a/dev-portal/packages-microsoft-prod.deb b/dev-portal/packages-microsoft-prod.deb deleted file mode 100644 index 4f7f63d330c002a70a03c99fab6f7d6131c26486..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2452 zcmai$c{CIX7r-saItF2=j8P~ljUlqk$XLdbEh5as*oMeHHFgo9C}A|yWC@Y7j4j#M z5;N8qlD$`!vG1Pc>%H&2zu)iNbMLw5o_qiMopYr$vHs5P2p$(#Cl9RmB_|JWtbY&$ z0#Ur8sCX5o3{`_cAkg3azgZCqRZ&)kKz_$RIP$<0pghh#-huu;UJ8L&e+69dfA6cR z{CmNXNAfWj%U`guFQ#KWN1?*80YwgeLrZSa!^FmcBq|cibTXeEZvUjH#CZqLmo|rm#I5KYXH>{B;eOW4A~= zuGbq#*HL2Z48K_LdL+o*?9h+Y)jv{kiYavcWaoDDkp44!rH{dIO|k1@)b8zwoI#uI-_-RqjpQ-P}nFvJJK4 zL}W~#f|p`qwz(!#Ov@QSUd1>_WtLSnlkP-0znAum{uvebWc79DLT8#QX|Q8H6xmf% zaKbuO@xXJUP=irM`UVP(^4)b1uN`A=s@XStJl$|uesy~ku+ zw??FhVN$5x-P}9C$m4xirBGzEJUwsFH}Q}5th+Q9&#~w|7Sl`jmK*^SFA$c;$4Rd6 zYO#6AVhksmK9OS96~d9Q`nJw@y#ED7y{FavI&ExmM%Oqm53c3Q>G4inO~190NyH?n z^LnojmD#!vscIK(Y%X&x@##-?ebu9OJ*~IZavgAB-#gEFQUlKr4{AGAYR&g%>^0et zU(yV*rLD9wMVnbAXo8=9{->3FxRDc{6=8Sd3-nwAM{m$1PxTT6YP~Fsruwgrz4=K4FR&7HoJH!sJjft6UnYc9UYYJxl(IZ|&VZG1hrI~gH=&xCn7No|jd`>BshWOo%r z#!Z69HA0~YV)c9t$OZDtb_H8^B8hk~+AW3pa=n_6;a3|GR3JDVfq1Z8T9_^g%BGnH zk#kwwML7E!P}5-E7fe!R1ovo()w?CC>`Ol!)8mj|w4G;}p9WHMm3{PB@S67uS5UR+ z5i$Ktf9Jt_`4%0YbRd^gLx*Anpi)C=6=PltC3(cr+$ILIH?2o7Co{g{2z?I)X#8ZT zwKRcUW8sa8-_`vGZxfT;cTR}fhn$44_XL2DJ!!x8)DdRS&Lv)(+j2-HV2lK^Xbfh} zRmQqT@%a($g^PGY@3GeAAYgOf&ZgNe0{86umOVE{Hx7Q384v;t!y8L-7UGKFMX-Wy zWCjXfAJhaq32b69+Qk?&7i~i|pLUF= zPPIOM?$5?Jj_l|3KW$8VYto3?3BT5idL-I7Z1}Uh7Sxv9MMr;ZHRS@s^hG}J2<^W? z!oacvlau-HrIShRj#Cnf$rUI$6em582Z7eo=lgNLPke{?p^h_jSfp;7OrefbPG4X6 zltL&A%met`VlpViJ`V5gad8!U0>xQ{4vZlibO}?{XaOf=zhu7@$+KE3P|y`Nz0kvG z>5iHDDmjuEEt977adMpi0Uo>aqZu=(i`?*SNi|tfB0X20?tzC4H`SS#cZaaI;rJLs ziDnU|nXA-?sc3Ai^YUdG+!>N|jJF1;Pj-EJd>Li%ohdZblEJTO{*$w_Wau;QY>cJO zWL^U1x@>OG$}P0i&700#ynwcdcc&GI_U9W6lU;acD(mhm#6IPpx;HH~dmH(-ioh{^ znn&G@+Cnw5iSoT?oeF(|WFQv26brb5Dl+zs!6ufMf|H1>GmjIjqZ?uX>Q(I*<4+L~ zX&-a6oIE49ELWACXa?I^fih6cZP!JDxE_@2sAl3K=V>r|RLO4Yt0Hoyi`y%!0o@94 z?hAWB&(@TT?<_+yD5Remx7UxPu9Lfxa|ie zDt^@#l(>i1N=*aj Date: Sat, 24 Nov 2018 18:25:21 +0000 Subject: [PATCH 08/10] Not finished command managerand module loader --- .../Debug/netcoreapp2.1/dev-portal.deps.json | 50 ++++---- .../bin/Debug/netcoreapp2.1/dev-portal.dll | Bin 7680 -> 7680 bytes .../bin/Debug/netcoreapp2.1/dev-portal.pdb | Bin 1436 -> 1464 bytes .../dev-portal.runtimeconfig.dev.json | 6 +- .../netcoreapp2.1/dev-portal.assets.cache | Bin 111550 -> 109061 bytes .../dev-portal.csproj.CoreCompileInputs.cache | 2 +- .../dev-portal.csproj.FileListAbsolute.txt | 42 ++++--- .../dev-portal.csprojAssemblyReference.cache | Bin 191917 -> 524972 bytes .../obj/Debug/netcoreapp2.1/dev-portal.dll | Bin 7680 -> 7680 bytes .../obj/Debug/netcoreapp2.1/dev-portal.pdb | Bin 1436 -> 1464 bytes .../Debug/netcoreapp2.1/project.razor.json | 14 +++ dev-portal/obj/dev-portal.csproj.nuget.cache | 2 +- .../obj/dev-portal.csproj.nuget.g.props | 25 ++-- .../obj/dev-portal.csproj.nuget.g.targets | 14 +-- dev-portal/obj/project.assets.json | 107 ++++++++++++------ src/commandmanager.js | 55 ++++++++- src/commands/common.js | 21 +++- src/index.js | 6 +- src/messagemanager.js | 3 +- 19 files changed, 242 insertions(+), 105 deletions(-) create mode 100644 dev-portal/obj/Debug/netcoreapp2.1/project.razor.json diff --git a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json index f32ff56..fb75ab2 100644 --- a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json +++ b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json @@ -3187,7 +3187,7 @@ "Microsoft.NETCore.Platforms/2.1.0": { "type": "package", "serviceable": true, - "sha512": "sha512-TT+QCi9LcxGTjBssH7S7n5+8DVcwfG4DYgXX7Dk7+BfZ4oVHj8Q0CbYk9glzAlHLsSt3bYzol+fOdra2iu6GOw==", + "sha512": "sha512-aSTPL94NloSiQVL5Len8wbjFKOnoAX/vOh3s3DF6g3c7GUUMLCDvnBhmA72M2iN2AedyA8hpr7m89kzSAKUnJQ==", "path": "microsoft.netcore.platforms/2.1.0", "hashPath": "microsoft.netcore.platforms.2.1.0.nupkg.sha512" }, @@ -3208,7 +3208,7 @@ "Microsoft.AspNet.WebApi.Client/5.2.6": { "type": "package", "serviceable": true, - "sha512": "sha512-rMDlyePoxggkmN/qgha1+BR2Uy+dOr38xKCQOPfVNKGY07R2nYJGMTKJFE1XFgwD70RYUNazf2fqutjJF18XgQ==", + "sha512": "sha512-AIgEc1up4pvH8kXy+eG1x4Qfqd6piAq3yk11pveCQXWNkkYoiKdflSmcJZuWcerdMcAaoF0xC/mWGoTW4vF4Dg==", "path": "microsoft.aspnet.webapi.client/5.2.6", "hashPath": "microsoft.aspnet.webapi.client.5.2.6.nupkg.sha512" }, @@ -3684,7 +3684,7 @@ "Microsoft.AspNetCore.Razor.Design/2.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-f8PKGcxiezL1RVqmnmrazj24Mj4KCTSXqwdotl7Lc+82h8iLV7ItxEIShTJakG7M9iw0ZuCocM0J/IhYesdQrg==", + "sha512": "sha512-BOK5fckW9v7xWjpEI6bPGwkjw10OPVASZcAa8HoWJo/0Mmg4Azddj92v8noU+YgvD/6zNZ9o/RiRXXKxk5rYwQ==", "path": "microsoft.aspnetcore.razor.design/2.1.1", "hashPath": "microsoft.aspnetcore.razor.design.2.1.1.nupkg.sha512" }, @@ -3740,7 +3740,7 @@ "Microsoft.AspNetCore.Routing.Abstractions/2.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-+Yxsy/ZcCthcziktuhfC6WpQ/cZzgD/IsQ96xefNKrCzIm9jXjfNK3ONsoScvyFFihNohp7zAVPiic5J6CvUDw==", + "sha512": "sha512-9saJjHhST3JmFKuZ1mPU9FJcpgUyPNoJxRMSV2nkSjiEekQN4jxswtBBeIRVDonjq50KKqSWbcyyQtvV4tgKzw==", "path": "microsoft.aspnetcore.routing.abstractions/2.1.1", "hashPath": "microsoft.aspnetcore.routing.abstractions.2.1.1.nupkg.sha512" }, @@ -3845,7 +3845,7 @@ "Microsoft.AspNetCore.StaticFiles/2.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-3xumS58evfsC4cd8OXtYRafbwuVk5c37dsGQ1E1m0wZvRVUXScRWkTGdcPJcijoImlhoQK2pj6sY7NFMc5PfbQ==", + "sha512": "sha512-Jb4YKaDpPqrcSBxGChOCUmgkuqRKkwe3t5o6GWeoNUENf4hQDuobUvouXKHVw3KuEFIBVArZB984fuVGQW0eAw==", "path": "microsoft.aspnetcore.staticfiles/2.1.1", "hashPath": "microsoft.aspnetcore.staticfiles.2.1.1.nupkg.sha512" }, @@ -3873,14 +3873,14 @@ "Microsoft.CodeAnalysis.Common/2.8.0": { "type": "package", "serviceable": true, - "sha512": "sha512-lYUBqh3OD3iEQqxt9KB472VzgOnEKoUVG4Lx5Xw4oJe9dZtITkHFtct+T73jH3FOASFI1NSzzP5MBM0c9zZspA==", + "sha512": "sha512-A2a4NejNvWVz+8FPXkZK/cd2j4/P3laHwpz56UU3fDcOAVu4Xb98T6FXGAIgqE/LzSVpHnn9Cgg7rhT59qsO8w==", "path": "microsoft.codeanalysis.common/2.8.0", "hashPath": "microsoft.codeanalysis.common.2.8.0.nupkg.sha512" }, "Microsoft.CodeAnalysis.CSharp/2.8.0": { "type": "package", "serviceable": true, - "sha512": "sha512-+4CHAwHMwLO5GRqPJ7Khv2Ny//omhukPKP3Ny/d2XDpt11bX35zb9pTziwZN0eNvxj6a46joIdHEYQ1JsekI3w==", + "sha512": "sha512-+GGCTxkBjf9lFEZhVOG4iEO5YkuWCO5q+kUF787NJ8Twy3EOyLrjtZ8K7q+kH/PnSjSkN0AvWwL2NQCmT1H6mA==", "path": "microsoft.codeanalysis.csharp/2.8.0", "hashPath": "microsoft.codeanalysis.csharp.2.8.0.nupkg.sha512" }, @@ -4062,7 +4062,7 @@ "Microsoft.Extensions.DependencyInjection/2.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-2nshYaLTn73Ie+/yTkb7EZIXwQeFIXsYCBy/jSY9bMayYykGNjdWa25frayhuPAGVbZpEgfgp3d4JRVEuVyEqQ==", + "sha512": "sha512-ZPFcDUbSwaEVWMyef8+9GqiTAghHX+eLeIEW032i4LDFAdyM4J4brV0UzChlKtClT7cuip/Of6G+veDnO3/bCw==", "path": "microsoft.extensions.dependencyinjection/2.1.1", "hashPath": "microsoft.extensions.dependencyinjection.2.1.1.nupkg.sha512" }, @@ -4125,7 +4125,7 @@ "Microsoft.Extensions.Hosting/2.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-JCQMO9b49MO7b2e3myP6b0KsAJvRL9auv0A/Pn4w2Q1dt9D29tWvuji8b2jGfHVZcal9GRbtwwdnAD1mN4x3VQ==", + "sha512": "sha512-429Rqyy8tzVZq9UJCKqD+r/9XobPYn/xGxMPyQxmqOZJQPjXXzYAjjZhQ5onCWPFPWbfw430RKRyBTa341kCJA==", "path": "microsoft.extensions.hosting/2.1.1", "hashPath": "microsoft.extensions.hosting.2.1.1.nupkg.sha512" }, @@ -4258,49 +4258,49 @@ "Microsoft.IdentityModel.Logging/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-OgiaeDGsuTpXrx77a4gyN6Flp4y7jro4La92UtVEEVxnRb+TnRxawVYY3Z5EVme5fSwvE31vo2iNAwI/jBKjPg==", + "sha512": "sha512-D9uipmVVfJoNv1AzzLR4547+MiwrXElN6bVym3UqZm8/n2LUVdmbHUSQYwqC/gOjHK2vEzXP4NTwHnL+F54q5A==", "path": "microsoft.identitymodel.logging/5.2.0", "hashPath": "microsoft.identitymodel.logging.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Protocols/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-pakGqbE3FRort3vb0qqWI0Qfy84IOXs8sG7ygANUpoRT+544svQ62JfvCX4UPnqf5bCUpSxVc3rDh8yCQBtc7w==", + "sha512": "sha512-ZvW6FGD9M4JRJnU9GyCnK22vpWX4itIousHD7v9V/XWb6HUmzfKsb7S9QfzOfnNcNr2eK8nLV50S0v1QMR9ERg==", "path": "microsoft.identitymodel.protocols/5.2.0", "hashPath": "microsoft.identitymodel.protocols.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-hMjsfdvgI/Gk/HWPgyVnju6fy3iULralgn1XU6eL17KkkFN2rJ1fDzJX3RKrjr888Y5S+hTSQAUcGzb4Fe3aBA==", + "sha512": "sha512-IbrtvKFSJLGoCTnDEldkWodt/U3x1OduaFuuVxo8RtvCwZkSp/08OtIlVzdLeJG8bCzQs6p7FV6Xh/a52B0jdw==", "path": "microsoft.identitymodel.protocols.openidconnect/5.2.0", "hashPath": "microsoft.identitymodel.protocols.openidconnect.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Protocols.WsFederation/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-7yohKgLzTObwy+Yq/WNshe2ar+9MZJischkn+L+IIQhpZCKWixr0QFR0V/1TzvGVeXBR/AJY/luZRLx84RlzJw==", + "sha512": "sha512-tZJI6PD4/QPBXfTNy/FlGYzi+ebV3pUikoYjmEFApuxJ+RXZ2yuqTDR/gpF6m8TuR4jmX3y+ILqYTy0bPuJK9w==", "path": "microsoft.identitymodel.protocols.wsfederation/5.2.0", "hashPath": "microsoft.identitymodel.protocols.wsfederation.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Tokens/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-Uz1Dk5Gw/jgIHEzac9cXhq7pH0Hf5P73vf23hR6QJn0IamLbPG4qoHnGyPMn9qQXc+jDb/j3fWOhvWGrteJXtA==", + "sha512": "sha512-ptAbeNOZ++Ioq6eGFhSzcC/oCYMkB/XSuWp9jkaQHz8S2Lxm4wrB2yvYNqlYd88+7L56Ywa9WMCgx94heQvtIw==", "path": "microsoft.identitymodel.tokens/5.2.0", "hashPath": "microsoft.identitymodel.tokens.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Tokens.Saml/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-db9y9zHTxeVwTi91mqBu4u1h5tlseQxhXMlGBd7bousED/FcEuhRiVK1maXjoHyQTnYbFDGPvYKXxznDI5jBGQ==", + "sha512": "sha512-3XCXxwPFOG7uJkDx2hD4vv/5UTKWPnDdmh69jRcXUbEgEC8HVdTbViIrQJien+5WefScalMGYIwA4lnLooxRYw==", "path": "microsoft.identitymodel.tokens.saml/5.2.0", "hashPath": "microsoft.identitymodel.tokens.saml.5.2.0.nupkg.sha512" }, "Microsoft.IdentityModel.Xml/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-0WB90AfR16LT0ANCQTb+183yWrusPt4QK1F3f9eL59ZiDKeZLx2AeXgrkDUO+7kG55nCPqmeOUDjHDVK4gsRgA==", + "sha512": "sha512-Z1ID4pp3VhPVR1JKDw5KRqO1WchJEFSrEasiaQRnxstzUrbos4sd3Faro8nlIOtZxS1Dxu5v5UksaoNxlW7BYw==", "path": "microsoft.identitymodel.xml/5.2.0", "hashPath": "microsoft.identitymodel.xml.5.2.0.nupkg.sha512" }, @@ -4321,21 +4321,21 @@ "Newtonsoft.Json/11.0.2": { "type": "package", "serviceable": true, - "sha512": "sha512-IvJe1pj7JHEsP8B8J8DwlMEx8UInrs/x+9oVY+oCD13jpLu4JbJU2WCIsMRn5C4yW9+DgkaO8uiVE5VHKjpmdQ==", + "sha512": "sha512-znZGbws7E4BA9jxNZ7FuiIRI3C9hrgatVQSTKhIYZYNOud4M5VfGlTYi6RdYO5sQrebFuF/g9UEV3hOxDMXF6Q==", "path": "newtonsoft.json/11.0.2", "hashPath": "newtonsoft.json.11.0.2.nupkg.sha512" }, "Newtonsoft.Json.Bson/1.0.1": { "type": "package", "serviceable": true, - "sha512": "sha512-5PYT/IqQ+UK31AmZiSS102R6EsTo+LGTSI8bp7WAUqDKaF4wHXD8U9u4WxTI1vc64tYi++8p3dk3WWNqPFgldw==", + "sha512": "sha512-W5Ke5xei9yS0ljQZuT75VgSp5M43eCPm5hHAelvKyGGU4dV7hYCmtwdsxoADb/exO6pYHeu/Iki43TdYPzfESQ==", "path": "newtonsoft.json.bson/1.0.1", "hashPath": "newtonsoft.json.bson.1.0.1.nupkg.sha512" }, "Remotion.Linq/2.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-fK/76UmpC0FXBlGDFVPLJHQlDLYnGC+XY3eoDgCgbtrhi0vzbXDQ3n/IYHhqSKqXQfGw/u04A1drWs7rFVkRjw==", + "sha512": "sha512-twDAH8dAXXCAf3sRv1Tf94u66eEHvgU75hfn1nn2v4fSWXD50XoDOAk8WpSrbViNuMkB4kN1ElnOGm1c519IHg==", "path": "remotion.linq/2.2.0", "hashPath": "remotion.linq.2.2.0.nupkg.sha512" }, @@ -4545,7 +4545,7 @@ "System.Data.SqlClient/4.5.1": { "type": "package", "serviceable": true, - "sha512": "sha512-qXTvTFkBds7bnN+ntBMHGvmH3pCAkfT4TE1z2Xvfqo4wKMQC77O4aXsYCc7dzCESC+/Gom6l0GLuebpFx7MDvg==", + "sha512": "sha512-cTPUCClr34EGBnyazUeciMD6sNm9aiE/li3uGvJ7z5dGup9QxKwysUeKXIrCO0E5KtQQAzGORFEYmowyEpcL2A==", "path": "system.data.sqlclient/4.5.1", "hashPath": "system.data.sqlclient.4.5.1.nupkg.sha512" }, @@ -4629,14 +4629,14 @@ "System.IdentityModel.Tokens.Jwt/5.2.0": { "type": "package", "serviceable": true, - "sha512": "sha512-E8tNMfMWPvlSF5fvmMIVZZHlGuIZzE5uktuR+GN2gFdngh0k6xoZquxfjKC02d0NqfsshNQVTCdSKXD5e9/lpA==", + "sha512": "sha512-2cY4A17XCEdohJ8BsyASM09ZYXVPJirdUudD5rETIuNhS7awKkncO1ifCAQHjb10PpdzLmebJgRI+NHEozSEwQ==", "path": "system.identitymodel.tokens.jwt/5.2.0", "hashPath": "system.identitymodel.tokens.jwt.5.2.0.nupkg.sha512" }, "System.Interactive.Async/3.1.1": { "type": "package", "serviceable": true, - "sha512": "sha512-hZccYiIE5RS1/J9Tb/BNtosAGVggdlsJm4Ojdu+gDV0p4AIi+LUfUogMKkRacljQEJd2AG6vYzvcjhQFkqoZmw==", + "sha512": "sha512-x9y2omkjEudKbIVuhUzeWw7ZlouEzpk4W98woCEq1lq9gJxERBKRKDTHF5JPEws9E0f4/Uei/2vLxEy1IrfmMg==", "path": "system.interactive.async/3.1.1", "hashPath": "system.interactive.async.3.1.1.nupkg.sha512" }, @@ -4671,7 +4671,7 @@ "System.IO.Pipelines/4.5.0": { "type": "package", "serviceable": true, - "sha512": "sha512-Kq9eZWVKN9khHhkatLWLLxYCs3j9qSNMZELqn2YG1YsCMv6bPmAtaN0CfA6l7vxFbiV02C996Dy7yHO8DkaJLg==", + "sha512": "sha512-kPBg1oHIqNgZzzIbAFVTfMLmqYid6juXFJv7VnQf7m9K6ooLD8sGZq9rsB+4wZLrgKm0t3TuhBXyPE1StpjqvQ==", "path": "system.io.pipelines/4.5.0", "hashPath": "system.io.pipelines.4.5.0.nupkg.sha512" }, @@ -4706,7 +4706,7 @@ "System.Net.Http/4.3.0": { "type": "package", "serviceable": true, - "sha512": "sha512-sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "sha512": "sha512-Z1UfSF6dlpCdZdxh6LeoGlYH+q6ptG/iiIWgUUeKhE3DbQACmZkU7Sz2nOX0qdHjz72MOdYRbkSJ5Qwl6sZgvg==", "path": "system.net.http/4.3.0", "hashPath": "system.net.http.4.3.0.nupkg.sha512" }, @@ -4818,7 +4818,7 @@ "System.Runtime.CompilerServices.Unsafe/4.5.1": { "type": "package", "serviceable": true, - "sha512": "sha512-qUJMNWhbm9oZ3XaMFiEMiYmRPszbnXIkRIi7+4b2Md2xZ6JUOepf0/kY3S85qistRohl9OdMe4PsO+RdG2kTIQ==", + "sha512": "sha512-x/3d5xb+mc9e4I2GOOT+HPRWMZLbYjNN/kYKsb0fyUKcWizn/t1CIrGRLIBhv7H0ptYEt+WTTztdPmwSUMyKig==", "path": "system.runtime.compilerservices.unsafe/4.5.1", "hashPath": "system.runtime.compilerservices.unsafe.4.5.1.nupkg.sha512" }, diff --git a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.dll b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.dll index 5d06f313ae167bf614c252209f9dc2257ce84eed..6fba4e0e1aa1e53d9899cde8b50d9ee6a0c62217 100644 GIT binary patch delta 287 zcmZp$X|S2l!SakJ<=4a>8OE@QE5rGijTspH8Gyinfgy!;qN4C*MaFo>n8}Td^^E45 z8JXVm3oMCp-@UoS)^+8P%bN1;J$##lWSDr*oA18Iz~~#m1k_qESyM!w^^Oq(!=1^# zBFeER&+oI$`QG8Od*aslD_9StGXmAL;b<>AR#BXP4v`=m!+#rxzvW=4R%l z>*tl`8GTY=@#S{l_ciq=O<+Wl_r$}B~we1^NUgw3kr<%4D~1P7ZEdp+Q9M~ zY6HkMJnu}d9iD2dy*PbGoi@-{FyIPeD@;@rV>F*EC#uEzUzI_@VRE48=FNO!zgU?f Oj5iC)yl0$fzzzV$n_=1j delta 284 zcmZp$X|S2l!6Me{b7NwU45Qb?mEn9}jTjjG8Gyinfgy!;qN4C*MaFo>fXR)F^^BUE z8JXVm3-D%y7KzT8?b%Rgc4LpGoZ}`T87AI_JC&0e7<~hnfLfC#Yl_ITo&%b6ZnCe4 za{b4>D_^W!*W)>ncS+olcNxu$KsBybF#$#SS*gh-#W8uMIXML-MY>7(B{3gJsgcp%@|;o2tq9ZI!O3T zWm0y4p0MPxSIY6Vvc^Dbp}>5yfT%R1=42gFt;r#xyCxd&Y~~aD#meMkyjf7@J>x_J Fb^rvXU%>zX diff --git a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.pdb b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.pdb index 7c4dc6ca024dfb5f1c60009f318387ec6153a6aa..e85d5a0fc0fcde44039bbafd47bc7210c22a4578 100644 GIT binary patch delta 383 zcmbQky@Pu~fr1A!1B0?tPJR*t1H;Ml`z&+5cew1HxOM&t)&uG1&3E6MIHAH_h>?*& znURS>f{BqqlZlDpI*@(^q!}43fHIzpK&=c+40b?~5Fm~Q;v6PshW|h;%*@Q70>lPD zY%|%P@vzEUMi!uIMuyc)Y(SbFh#xR8Gpqm_#>^nVtNKECFbU4=B2aemFDCWloU;lXBJZv&}V44-f*YkLBorNFAaYh*+p{K zZ?{>$gvWVu`O(YAV?*9^v+XRHJdOE)TL5D!V`DC3V;^Hf6Jz6Y#)hSgjTg9rOA?Dp zN(=Ooi_wf~;uTq!dHl6^(b>X#E(H;bTV5$-t*Spfc{)oDFF!XUBO?c+E~6#TxXA*n o3K~MF?r7THbXep^G?UEV!?DTvTbv&peU-$1YGrNNncS+olcNxtMcPb}OoKWG;%E-td z$jHRN#>B`V#KgpK07#z$(u@phKpAsJpjHMZ26do_EfBi^aVQfr!($-+4#XVH%nTwx ztT5T1@vzEmMi!uIMusU&Y(SbFh#xR8GfV^;#?0`ANdZi5He(WG^k;Il;s_|p&q_@$ zDdx^A&B-Y!Dbh{KFX2i_Ez>Q?FDgmQ;R4F17bWKEB^PtYG+b}E)$q9CeZw!2%grYj z^ZXa!iP)GR<@b1M)wz1T36obaA8@o|Ol540W^AlsY-nO^oXXg+l(BIiS8z#UQAue5 ziYbl1MYe{ihX>g5>oe${S!(oeskBsP(Cf+TSaNs;xEUE4IT&>rErBLYR%caE=7rnd iw4iB?h(Yt`dGdZQ>)O}dx}C1XyHljDMPPD1t0w@D)pZyE diff --git a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json index 9bff1a4..210a1ae 100644 --- a/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json +++ b/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json @@ -1,9 +1,9 @@ { "runtimeOptions": { "additionalProbingPaths": [ - "C:\\Users\\Ben\\.dotnet\\store\\|arch|\\|tfm|", - "C:\\Users\\Ben\\.nuget\\packages", - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + "/home/ben/.dotnet/store/|arch|/|tfm|", + "/home/ben/.nuget/packages", + "/usr/share/dotnet/sdk/NuGetFallbackFolder" ] } } \ No newline at end of file diff --git a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.assets.cache b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.assets.cache index b3ddc27af6d041f3b932fa7f9c0cf523016909bc..1d3a82b8af6d23b105b202aba37e6f861f7e6876 100644 GIT binary patch literal 109061 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 literal 111550 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 diff --git a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache index 41c3505..46cbd7c 100644 --- a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache +++ b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -82c94cbdf01f77aeeb78261d8a61650605c0a650 +ba205d03ee43f8c307fa6bd85a60fa0922636378 diff --git a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.FileListAbsolute.txt b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.FileListAbsolute.txt index 4d89755..8bcba73 100644 --- a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.FileListAbsolute.txt +++ b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.FileListAbsolute.txt @@ -1,14 +1,28 @@ -E:\Projects\nullptr-bot\dev-portal\bin\Debug\netcoreapp2.1\dev-portal.deps.json -E:\Projects\nullptr-bot\dev-portal\bin\Debug\netcoreapp2.1\dev-portal.runtimeconfig.json -E:\Projects\nullptr-bot\dev-portal\bin\Debug\netcoreapp2.1\dev-portal.runtimeconfig.dev.json -E:\Projects\nullptr-bot\dev-portal\bin\Debug\netcoreapp2.1\dev-portal.dll -E:\Projects\nullptr-bot\dev-portal\bin\Debug\netcoreapp2.1\dev-portal.pdb -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.csprojAssemblyReference.cache -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.csproj.CoreCompileInputs.cache -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.RazorAssemblyInfo.cache -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.RazorAssemblyInfo.cs -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.AssemblyInfoInputs.cache -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.AssemblyInfo.cs -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.RazorTargetAssemblyInfo.cache -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.dll -E:\Projects\nullptr-bot\dev-portal\obj\Debug\netcoreapp2.1\dev-portal.pdb +E:/Projects/nullptr-bot/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json +E:/Projects/nullptr-bot/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.json +E:/Projects/nullptr-bot/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json +E:/Projects/nullptr-bot/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.dll +E:/Projects/nullptr-bot/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.pdb +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csprojAssemblyReference.cache +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorAssemblyInfo.cache +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorAssemblyInfo.cs +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.AssemblyInfoInputs.cache +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.AssemblyInfo.cs +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorTargetAssemblyInfo.cache +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.dll +E:/Projects/nullptr-bot/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.pdb +/home/ben/Desktop/Programming/nullptr/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.deps.json +/home/ben/Desktop/Programming/nullptr/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.json +/home/ben/Desktop/Programming/nullptr/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.runtimeconfig.dev.json +/home/ben/Desktop/Programming/nullptr/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.dll +/home/ben/Desktop/Programming/nullptr/dev-portal/bin/Debug/netcoreapp2.1/dev-portal.pdb +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csprojAssemblyReference.cache +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csproj.CoreCompileInputs.cache +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorAssemblyInfo.cache +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorAssemblyInfo.cs +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.AssemblyInfoInputs.cache +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.AssemblyInfo.cs +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.RazorTargetAssemblyInfo.cache +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.dll +/home/ben/Desktop/Programming/nullptr/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.pdb diff --git a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csprojAssemblyReference.cache b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.csprojAssemblyReference.cache index 450aa1a69a4b70fec4e22ded8124834a30bb39c0..6d222adeec7fc3a1188bd52b677db45d68fb0fff 100644 GIT binary patch literal 524972 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 M-eM(-ZP?2Be>Q;%yZ`_I literal 191917 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 Oj5iC)yl0$fzzzV$n_=1j delta 284 zcmZp$X|S2l!6Me{b7NwU45Qb?mEn9}jTjjG8Gyinfgy!;qN4C*MaFo>fXR)F^^BUE z8JXVm3-D%y7KzT8?b%Rgc4LpGoZ}`T87AI_JC&0e7<~hnfLfC#Yl_ITo&%b6ZnCe4 za{b4>D_^W!*W)>ncS+olcNxu$KsBybF#$#SS*gh-#W8uMIXML-MY>7(B{3gJsgcp%@|;o2tq9ZI!O3T zWm0y4p0MPxSIY6Vvc^Dbp}>5yfT%R1=42gFt;r#xyCxd&Y~~aD#meMkyjf7@J>x_J Fb^rvXU%>zX diff --git a/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.pdb b/dev-portal/obj/Debug/netcoreapp2.1/dev-portal.pdb index 7c4dc6ca024dfb5f1c60009f318387ec6153a6aa..e85d5a0fc0fcde44039bbafd47bc7210c22a4578 100644 GIT binary patch delta 383 zcmbQky@Pu~fr1A!1B0?tPJR*t1H;Ml`z&+5cew1HxOM&t)&uG1&3E6MIHAH_h>?*& znURS>f{BqqlZlDpI*@(^q!}43fHIzpK&=c+40b?~5Fm~Q;v6PshW|h;%*@Q70>lPD zY%|%P@vzEUMi!uIMuyc)Y(SbFh#xR8Gpqm_#>^nVtNKECFbU4=B2aemFDCWloU;lXBJZv&}V44-f*YkLBorNFAaYh*+p{K zZ?{>$gvWVu`O(YAV?*9^v+XRHJdOE)TL5D!V`DC3V;^Hf6Jz6Y#)hSgjTg9rOA?Dp zN(=Ooi_wf~;uTq!dHl6^(b>X#E(H;bTV5$-t*Spfc{)oDFF!XUBO?c+E~6#TxXA*n o3K~MF?r7THbXep^G?UEV!?DTvTbv&peU-$1YGrNNncS+olcNxtMcPb}OoKWG;%E-td z$jHRN#>B`V#KgpK07#z$(u@phKpAsJpjHMZ26do_EfBi^aVQfr!($-+4#XVH%nTwx ztT5T1@vzEmMi!uIMusU&Y(SbFh#xR8GfV^;#?0`ANdZi5He(WG^k;Il;s_|p&q_@$ zDdx^A&B-Y!Dbh{KFX2i_Ez>Q?FDgmQ;R4F17bWKEB^PtYG+b}E)$q9CeZw!2%grYj z^ZXa!iP)GR<@b1M)wz1T36obaA8@o|Ol540W^AlsY-nO^oXXg+l(BIiS8z#UQAue5 ziYbl1MYe{ihX>g5>oe${S!(oeskBsP(Cf+TSaNs;xEUE4IT&>rErBLYR%caE=7rnd iw4iB?h(Yt`dGdZQ>)O}dx}C1XyHljDMPPD1t0w@D)pZyE diff --git a/dev-portal/obj/Debug/netcoreapp2.1/project.razor.json b/dev-portal/obj/Debug/netcoreapp2.1/project.razor.json new file mode 100644 index 0000000..7abdd4c --- /dev/null +++ b/dev-portal/obj/Debug/netcoreapp2.1/project.razor.json @@ -0,0 +1,14 @@ +{ + "ProjectFilePath": "/home/ben/Desktop/Programming/nullptr/dev-portal/dev-portal.csproj", + "TargetFramework": "netcoreapp2.1", + "TagHelpers": [], + "Configuration": { + "ConfigurationName": "MVC-2.1", + "LanguageVersion": "2.1", + "Extensions": [ + { + "ExtensionName": "MVC-2.1" + } + ] + } +} \ No newline at end of file diff --git a/dev-portal/obj/dev-portal.csproj.nuget.cache b/dev-portal/obj/dev-portal.csproj.nuget.cache index 90bccf3..4d9e5bf 100644 --- a/dev-portal/obj/dev-portal.csproj.nuget.cache +++ b/dev-portal/obj/dev-portal.csproj.nuget.cache @@ -1,5 +1,5 @@ { "version": 1, - "dgSpecHash": "wQdsbnHmGUMpJblL2M6rryzAM/pmB+c5MuIaoeSlSPMIloAaL67AwTixJTWrHWCmnzABCPctDBg6zAu5t/209A==", + "dgSpecHash": "6dEGqxNtZbG6ntsUt4zsxQTDm+Az56mjtpk7O++Z7qk0QH2f/PuoKS/iDWr/An++PNvfBn7CvoDlnXQzMwE0yw==", "success": true } \ No newline at end of file diff --git a/dev-portal/obj/dev-portal.csproj.nuget.g.props b/dev-portal/obj/dev-portal.csproj.nuget.g.props index c04651c..61715ca 100644 --- a/dev-portal/obj/dev-portal.csproj.nuget.g.props +++ b/dev-portal/obj/dev-portal.csproj.nuget.g.props @@ -3,22 +3,25 @@ True NuGet - E:\Projects\nullptr-bot\dev-portal\obj\project.assets.json - $(UserProfile)\.nuget\packages\ - C:\Users\Ben\.nuget\packages\;C:\Program Files\dotnet\sdk\NuGetFallbackFolder + /home/ben/Desktop/Programming/nullptr/dev-portal/obj/project.assets.json + /home/ben/.nuget/packages/ + /home/ben/.nuget/packages/;/usr/share/dotnet/sdk/NuGetFallbackFolder PackageReference - 4.8.0 + 4.9.0 $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - - - + + + + + + + + + /home/ben/.nuget/packages/microsoft.aspnetcore.razor.design/2.1.1 + \ No newline at end of file diff --git a/dev-portal/obj/dev-portal.csproj.nuget.g.targets b/dev-portal/obj/dev-portal.csproj.nuget.g.targets index 2d7dd28..ce9dd6b 100644 --- a/dev-portal/obj/dev-portal.csproj.nuget.g.targets +++ b/dev-portal/obj/dev-portal.csproj.nuget.g.targets @@ -4,12 +4,12 @@ $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - - - - - - - + + + + + + + \ No newline at end of file diff --git a/dev-portal/obj/project.assets.json b/dev-portal/obj/project.assets.json index 968bb7d..56669ee 100644 --- a/dev-portal/obj/project.assets.json +++ b/dev-portal/obj/project.assets.json @@ -4338,10 +4338,11 @@ }, "libraries": { "Microsoft.AspNet.WebApi.Client/5.2.6": { - "sha512": "rMDlyePoxggkmN/qgha1+BR2Uy+dOr38xKCQOPfVNKGY07R2nYJGMTKJFE1XFgwD70RYUNazf2fqutjJF18XgQ==", + "sha512": "AIgEc1up4pvH8kXy+eG1x4Qfqd6piAq3yk11pveCQXWNkkYoiKdflSmcJZuWcerdMcAaoF0xC/mWGoTW4vF4Dg==", "type": "package", "path": "microsoft.aspnet.webapi.client/5.2.6", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/net45/System.Net.Http.Formatting.dll", "lib/net45/System.Net.Http.Formatting.xml", @@ -5170,10 +5171,12 @@ ] }, "Microsoft.AspNetCore.Razor.Design/2.1.1": { - "sha512": "f8PKGcxiezL1RVqmnmrazj24Mj4KCTSXqwdotl7Lc+82h8iLV7ItxEIShTJakG7M9iw0ZuCocM0J/IhYesdQrg==", + "sha512": "BOK5fckW9v7xWjpEI6bPGwkjw10OPVASZcAa8HoWJo/0Mmg4Azddj92v8noU+YgvD/6zNZ9o/RiRXXKxk5rYwQ==", "type": "package", "path": "microsoft.aspnetcore.razor.design/2.1.1", + "hasTools": true, "files": [ + ".nupkg.metadata", ".signature.p7s", "build/netstandard2.0/Microsoft.AspNetCore.Razor.Design.CodeGeneration.targets", "build/netstandard2.0/Microsoft.AspNetCore.Razor.Design.props", @@ -5283,10 +5286,11 @@ ] }, "Microsoft.AspNetCore.Routing.Abstractions/2.1.1": { - "sha512": "+Yxsy/ZcCthcziktuhfC6WpQ/cZzgD/IsQ96xefNKrCzIm9jXjfNK3ONsoScvyFFihNohp7zAVPiic5J6CvUDw==", + "sha512": "9saJjHhST3JmFKuZ1mPU9FJcpgUyPNoJxRMSV2nkSjiEekQN4jxswtBBeIRVDonjq50KKqSWbcyyQtvV4tgKzw==", "type": "package", "path": "microsoft.aspnetcore.routing.abstractions/2.1.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.dll", "lib/netstandard2.0/Microsoft.AspNetCore.Routing.Abstractions.xml", @@ -5471,10 +5475,11 @@ ] }, "Microsoft.AspNetCore.StaticFiles/2.1.1": { - "sha512": "3xumS58evfsC4cd8OXtYRafbwuVk5c37dsGQ1E1m0wZvRVUXScRWkTGdcPJcijoImlhoQK2pj6sY7NFMc5PfbQ==", + "sha512": "Jb4YKaDpPqrcSBxGChOCUmgkuqRKkwe3t5o6GWeoNUENf4hQDuobUvouXKHVw3KuEFIBVArZB984fuVGQW0eAw==", "type": "package", "path": "microsoft.aspnetcore.staticfiles/2.1.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/netstandard2.0/Microsoft.AspNetCore.StaticFiles.dll", "lib/netstandard2.0/Microsoft.AspNetCore.StaticFiles.xml", @@ -5523,10 +5528,11 @@ ] }, "Microsoft.CodeAnalysis.Common/2.8.0": { - "sha512": "lYUBqh3OD3iEQqxt9KB472VzgOnEKoUVG4Lx5Xw4oJe9dZtITkHFtct+T73jH3FOASFI1NSzzP5MBM0c9zZspA==", + "sha512": "A2a4NejNvWVz+8FPXkZK/cd2j4/P3laHwpz56UU3fDcOAVu4Xb98T6FXGAIgqE/LzSVpHnn9Cgg7rhT59qsO8w==", "type": "package", "path": "microsoft.codeanalysis.common/2.8.0", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/netstandard1.3/Microsoft.CodeAnalysis.dll", "lib/netstandard1.3/Microsoft.CodeAnalysis.pdb", @@ -5536,10 +5542,11 @@ ] }, "Microsoft.CodeAnalysis.CSharp/2.8.0": { - "sha512": "+4CHAwHMwLO5GRqPJ7Khv2Ny//omhukPKP3Ny/d2XDpt11bX35zb9pTziwZN0eNvxj6a46joIdHEYQ1JsekI3w==", + "sha512": "+GGCTxkBjf9lFEZhVOG4iEO5YkuWCO5q+kUF787NJ8Twy3EOyLrjtZ8K7q+kH/PnSjSkN0AvWwL2NQCmT1H6mA==", "type": "package", "path": "microsoft.codeanalysis.csharp/2.8.0", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.dll", "lib/netstandard1.3/Microsoft.CodeAnalysis.CSharp.pdb", @@ -5923,10 +5930,11 @@ ] }, "Microsoft.Extensions.DependencyInjection/2.1.1": { - "sha512": "2nshYaLTn73Ie+/yTkb7EZIXwQeFIXsYCBy/jSY9bMayYykGNjdWa25frayhuPAGVbZpEgfgp3d4JRVEuVyEqQ==", + "sha512": "ZPFcDUbSwaEVWMyef8+9GqiTAghHX+eLeIEW032i4LDFAdyM4J4brV0UzChlKtClT7cuip/Of6G+veDnO3/bCw==", "type": "package", "path": "microsoft.extensions.dependencyinjection/2.1.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/net461/Microsoft.Extensions.DependencyInjection.dll", "lib/net461/Microsoft.Extensions.DependencyInjection.xml", @@ -6048,10 +6056,11 @@ ] }, "Microsoft.Extensions.Hosting/2.1.1": { - "sha512": "JCQMO9b49MO7b2e3myP6b0KsAJvRL9auv0A/Pn4w2Q1dt9D29tWvuji8b2jGfHVZcal9GRbtwwdnAD1mN4x3VQ==", + "sha512": "429Rqyy8tzVZq9UJCKqD+r/9XobPYn/xGxMPyQxmqOZJQPjXXzYAjjZhQ5onCWPFPWbfw430RKRyBTa341kCJA==", "type": "package", "path": "microsoft.extensions.hosting/2.1.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", @@ -6276,10 +6285,12 @@ ] }, "Microsoft.IdentityModel.Logging/5.2.0": { - "sha512": "OgiaeDGsuTpXrx77a4gyN6Flp4y7jro4La92UtVEEVxnRb+TnRxawVYY3Z5EVme5fSwvE31vo2iNAwI/jBKjPg==", + "sha512": "D9uipmVVfJoNv1AzzLR4547+MiwrXElN6bVym3UqZm8/n2LUVdmbHUSQYwqC/gOjHK2vEzXP4NTwHnL+F54q5A==", "type": "package", "path": "microsoft.identitymodel.logging/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Logging.dll", "lib/net45/Microsoft.IdentityModel.Logging.xml", "lib/net451/Microsoft.IdentityModel.Logging.dll", @@ -6291,10 +6302,12 @@ ] }, "Microsoft.IdentityModel.Protocols/5.2.0": { - "sha512": "pakGqbE3FRort3vb0qqWI0Qfy84IOXs8sG7ygANUpoRT+544svQ62JfvCX4UPnqf5bCUpSxVc3rDh8yCQBtc7w==", + "sha512": "ZvW6FGD9M4JRJnU9GyCnK22vpWX4itIousHD7v9V/XWb6HUmzfKsb7S9QfzOfnNcNr2eK8nLV50S0v1QMR9ERg==", "type": "package", "path": "microsoft.identitymodel.protocols/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Protocols.dll", "lib/net45/Microsoft.IdentityModel.Protocols.xml", "lib/net451/Microsoft.IdentityModel.Protocols.dll", @@ -6306,10 +6319,12 @@ ] }, "Microsoft.IdentityModel.Protocols.OpenIdConnect/5.2.0": { - "sha512": "hMjsfdvgI/Gk/HWPgyVnju6fy3iULralgn1XU6eL17KkkFN2rJ1fDzJX3RKrjr888Y5S+hTSQAUcGzb4Fe3aBA==", + "sha512": "IbrtvKFSJLGoCTnDEldkWodt/U3x1OduaFuuVxo8RtvCwZkSp/08OtIlVzdLeJG8bCzQs6p7FV6Xh/a52B0jdw==", "type": "package", "path": "microsoft.identitymodel.protocols.openidconnect/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", "lib/net45/Microsoft.IdentityModel.Protocols.OpenIdConnect.xml", "lib/net451/Microsoft.IdentityModel.Protocols.OpenIdConnect.dll", @@ -6321,10 +6336,12 @@ ] }, "Microsoft.IdentityModel.Protocols.WsFederation/5.2.0": { - "sha512": "7yohKgLzTObwy+Yq/WNshe2ar+9MZJischkn+L+IIQhpZCKWixr0QFR0V/1TzvGVeXBR/AJY/luZRLx84RlzJw==", + "sha512": "tZJI6PD4/QPBXfTNy/FlGYzi+ebV3pUikoYjmEFApuxJ+RXZ2yuqTDR/gpF6m8TuR4jmX3y+ILqYTy0bPuJK9w==", "type": "package", "path": "microsoft.identitymodel.protocols.wsfederation/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Protocols.WsFederation.dll", "lib/net45/Microsoft.IdentityModel.Protocols.WsFederation.xml", "lib/net451/Microsoft.IdentityModel.Protocols.WsFederation.dll", @@ -6336,10 +6353,12 @@ ] }, "Microsoft.IdentityModel.Tokens/5.2.0": { - "sha512": "Uz1Dk5Gw/jgIHEzac9cXhq7pH0Hf5P73vf23hR6QJn0IamLbPG4qoHnGyPMn9qQXc+jDb/j3fWOhvWGrteJXtA==", + "sha512": "ptAbeNOZ++Ioq6eGFhSzcC/oCYMkB/XSuWp9jkaQHz8S2Lxm4wrB2yvYNqlYd88+7L56Ywa9WMCgx94heQvtIw==", "type": "package", "path": "microsoft.identitymodel.tokens/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Tokens.dll", "lib/net45/Microsoft.IdentityModel.Tokens.xml", "lib/net451/Microsoft.IdentityModel.Tokens.dll", @@ -6351,10 +6370,12 @@ ] }, "Microsoft.IdentityModel.Tokens.Saml/5.2.0": { - "sha512": "db9y9zHTxeVwTi91mqBu4u1h5tlseQxhXMlGBd7bousED/FcEuhRiVK1maXjoHyQTnYbFDGPvYKXxznDI5jBGQ==", + "sha512": "3XCXxwPFOG7uJkDx2hD4vv/5UTKWPnDdmh69jRcXUbEgEC8HVdTbViIrQJien+5WefScalMGYIwA4lnLooxRYw==", "type": "package", "path": "microsoft.identitymodel.tokens.saml/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Tokens.Saml.dll", "lib/net45/Microsoft.IdentityModel.Tokens.Saml.xml", "lib/net451/Microsoft.IdentityModel.Tokens.Saml.dll", @@ -6366,10 +6387,12 @@ ] }, "Microsoft.IdentityModel.Xml/5.2.0": { - "sha512": "0WB90AfR16LT0ANCQTb+183yWrusPt4QK1F3f9eL59ZiDKeZLx2AeXgrkDUO+7kG55nCPqmeOUDjHDVK4gsRgA==", + "sha512": "Z1ID4pp3VhPVR1JKDw5KRqO1WchJEFSrEasiaQRnxstzUrbos4sd3Faro8nlIOtZxS1Dxu5v5UksaoNxlW7BYw==", "type": "package", "path": "microsoft.identitymodel.xml/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Microsoft.IdentityModel.Xml.dll", "lib/net45/Microsoft.IdentityModel.Xml.xml", "lib/net451/Microsoft.IdentityModel.Xml.dll", @@ -6697,10 +6720,11 @@ ] }, "Microsoft.NETCore.Platforms/2.1.0": { - "sha512": "TT+QCi9LcxGTjBssH7S7n5+8DVcwfG4DYgXX7Dk7+BfZ4oVHj8Q0CbYk9glzAlHLsSt3bYzol+fOdra2iu6GOw==", + "sha512": "aSTPL94NloSiQVL5Len8wbjFKOnoAX/vOh3s3DF6g3c7GUUMLCDvnBhmA72M2iN2AedyA8hpr7m89kzSAKUnJQ==", "type": "package", "path": "microsoft.netcore.platforms/2.1.0", "files": [ + ".nupkg.metadata", ".signature.p7s", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", @@ -6895,10 +6919,12 @@ ] }, "Newtonsoft.Json/11.0.2": { - "sha512": "IvJe1pj7JHEsP8B8J8DwlMEx8UInrs/x+9oVY+oCD13jpLu4JbJU2WCIsMRn5C4yW9+DgkaO8uiVE5VHKjpmdQ==", + "sha512": "znZGbws7E4BA9jxNZ7FuiIRI3C9hrgatVQSTKhIYZYNOud4M5VfGlTYi6RdYO5sQrebFuF/g9UEV3hOxDMXF6Q==", "type": "package", "path": "newtonsoft.json/11.0.2", "files": [ + ".nupkg.metadata", + ".signature.p7s", "LICENSE.md", "lib/net20/Newtonsoft.Json.dll", "lib/net20/Newtonsoft.Json.xml", @@ -6923,10 +6949,12 @@ ] }, "Newtonsoft.Json.Bson/1.0.1": { - "sha512": "5PYT/IqQ+UK31AmZiSS102R6EsTo+LGTSI8bp7WAUqDKaF4wHXD8U9u4WxTI1vc64tYi++8p3dk3WWNqPFgldw==", + "sha512": "W5Ke5xei9yS0ljQZuT75VgSp5M43eCPm5hHAelvKyGGU4dV7hYCmtwdsxoADb/exO6pYHeu/Iki43TdYPzfESQ==", "type": "package", "path": "newtonsoft.json.bson/1.0.1", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/Newtonsoft.Json.Bson.dll", "lib/net45/Newtonsoft.Json.Bson.xml", "lib/netstandard1.3/Newtonsoft.Json.Bson.dll", @@ -6936,10 +6964,12 @@ ] }, "Remotion.Linq/2.2.0": { - "sha512": "fK/76UmpC0FXBlGDFVPLJHQlDLYnGC+XY3eoDgCgbtrhi0vzbXDQ3n/IYHhqSKqXQfGw/u04A1drWs7rFVkRjw==", + "sha512": "twDAH8dAXXCAf3sRv1Tf94u66eEHvgU75hfn1nn2v4fSWXD50XoDOAk8WpSrbViNuMkB4kN1ElnOGm1c519IHg==", "type": "package", "path": "remotion.linq/2.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net35/Remotion.Linq.XML", "lib/net35/Remotion.Linq.dll", "lib/net40/Remotion.Linq.XML", @@ -7635,10 +7665,11 @@ ] }, "System.Data.SqlClient/4.5.1": { - "sha512": "qXTvTFkBds7bnN+ntBMHGvmH3pCAkfT4TE1z2Xvfqo4wKMQC77O4aXsYCc7dzCESC+/Gom6l0GLuebpFx7MDvg==", + "sha512": "cTPUCClr34EGBnyazUeciMD6sNm9aiE/li3uGvJ7z5dGup9QxKwysUeKXIrCO0E5KtQQAzGORFEYmowyEpcL2A==", "type": "package", "path": "system.data.sqlclient/4.5.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", @@ -8287,10 +8318,12 @@ ] }, "System.IdentityModel.Tokens.Jwt/5.2.0": { - "sha512": "E8tNMfMWPvlSF5fvmMIVZZHlGuIZzE5uktuR+GN2gFdngh0k6xoZquxfjKC02d0NqfsshNQVTCdSKXD5e9/lpA==", + "sha512": "2cY4A17XCEdohJ8BsyASM09ZYXVPJirdUudD5rETIuNhS7awKkncO1ifCAQHjb10PpdzLmebJgRI+NHEozSEwQ==", "type": "package", "path": "system.identitymodel.tokens.jwt/5.2.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/System.IdentityModel.Tokens.Jwt.dll", "lib/net45/System.IdentityModel.Tokens.Jwt.xml", "lib/net451/System.IdentityModel.Tokens.Jwt.dll", @@ -8302,10 +8335,12 @@ ] }, "System.Interactive.Async/3.1.1": { - "sha512": "hZccYiIE5RS1/J9Tb/BNtosAGVggdlsJm4Ojdu+gDV0p4AIi+LUfUogMKkRacljQEJd2AG6vYzvcjhQFkqoZmw==", + "sha512": "x9y2omkjEudKbIVuhUzeWw7ZlouEzpk4W98woCEq1lq9gJxERBKRKDTHF5JPEws9E0f4/Uei/2vLxEy1IrfmMg==", "type": "package", "path": "system.interactive.async/3.1.1", "files": [ + ".nupkg.metadata", + ".signature.p7s", "lib/net45/System.Interactive.Async.dll", "lib/net45/System.Interactive.Async.xml", "lib/net46/System.Interactive.Async.dll", @@ -8540,10 +8575,11 @@ ] }, "System.IO.Pipelines/4.5.0": { - "sha512": "Kq9eZWVKN9khHhkatLWLLxYCs3j9qSNMZELqn2YG1YsCMv6bPmAtaN0CfA6l7vxFbiV02C996Dy7yHO8DkaJLg==", + "sha512": "kPBg1oHIqNgZzzIbAFVTfMLmqYid6juXFJv7VnQf7m9K6ooLD8sGZq9rsB+4wZLrgKm0t3TuhBXyPE1StpjqvQ==", "type": "package", "path": "system.io.pipelines/4.5.0", "files": [ + ".nupkg.metadata", ".signature.p7s", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", @@ -8794,10 +8830,12 @@ ] }, "System.Net.Http/4.3.0": { - "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", + "sha512": "Z1UfSF6dlpCdZdxh6LeoGlYH+q6ptG/iiIWgUUeKhE3DbQACmZkU7Sz2nOX0qdHjz72MOdYRbkSJ5Qwl6sZgvg==", "type": "package", "path": "system.net.http/4.3.0", "files": [ + ".nupkg.metadata", + ".signature.p7s", "ThirdPartyNotices.txt", "dotnet_library_license.txt", "lib/Xamarinmac20/_._", @@ -9622,10 +9660,11 @@ ] }, "System.Runtime.CompilerServices.Unsafe/4.5.1": { - "sha512": "qUJMNWhbm9oZ3XaMFiEMiYmRPszbnXIkRIi7+4b2Md2xZ6JUOepf0/kY3S85qistRohl9OdMe4PsO+RdG2kTIQ==", + "sha512": "x/3d5xb+mc9e4I2GOOT+HPRWMZLbYjNN/kYKsb0fyUKcWizn/t1CIrGRLIBhv7H0ptYEt+WTTztdPmwSUMyKig==", "type": "package", "path": "system.runtime.compilerservices.unsafe/4.5.1", "files": [ + ".nupkg.metadata", ".signature.p7s", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", @@ -11500,30 +11539,28 @@ ] }, "packageFolders": { - "C:\\Users\\Ben\\.nuget\\packages\\": {}, - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {} + "/home/ben/.nuget/packages/": {}, + "/usr/share/dotnet/sdk/NuGetFallbackFolder": {} }, "project": { "version": "1.0.0", "restore": { - "projectUniqueName": "E:\\Projects\\nullptr-bot\\dev-portal\\dev-portal.csproj", + "projectUniqueName": "/home/ben/Desktop/Programming/nullptr/dev-portal/dev-portal.csproj", "projectName": "dev-portal", - "projectPath": "E:\\Projects\\nullptr-bot\\dev-portal\\dev-portal.csproj", - "packagesPath": "C:\\Users\\Ben\\.nuget\\packages\\", - "outputPath": "E:\\Projects\\nullptr-bot\\dev-portal\\obj\\", + "projectPath": "/home/ben/Desktop/Programming/nullptr/dev-portal/dev-portal.csproj", + "packagesPath": "/home/ben/.nuget/packages/", + "outputPath": "/home/ben/Desktop/Programming/nullptr/dev-portal/obj/", "projectStyle": "PackageReference", "fallbackFolders": [ - "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder" + "/usr/share/dotnet/sdk/NuGetFallbackFolder" ], "configFilePaths": [ - "C:\\Users\\Ben\\AppData\\Roaming\\NuGet\\NuGet.Config", - "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config" + "/home/ben/.nuget/NuGet/NuGet.Config" ], "originalTargetFrameworks": [ "netcoreapp2.1" ], "sources": { - "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {}, "https://api.nuget.org/v3/index.json": {} }, "frameworks": { diff --git a/src/commandmanager.js b/src/commandmanager.js index 9cd061d..fc74b4f 100644 --- a/src/commandmanager.js +++ b/src/commandmanager.js @@ -1,11 +1,62 @@ +import fs from 'fs'; + import {Logger} from './logger'; -let modules; -let commands; +let modules = []; +let commands = {}; export class CommandManager { static async load() { + console.log(); + Logger.info('Loading Commands and Modules'); + if (!fs.existsSync('./src/commands/')) { + Logger.panic('No commands folder at /src/commands'); + } + + const moduleFiles = fs.readdirSync('./src/commands'); + const moduleCount = moduleFiles.length; + let commandCount = 0; + // Loops through all files and + for (let file of moduleFiles) { + let mod = require('./commands/' + file.split('.')[0]); + let modExports = Object.keys(mod); + + // TODO: This doesnt work, throws "Module is not defined" + // if (!modExports['Module']) { + // Logger.warn(`No module in file ${file}, is Module being exported?`); + // continue; + // } + if (!mod.Module.Name || !mod.Module.Author) { + Logger.panic(`Module ${file} has no Name field, make sure it has a getter for Name and Author`); + continue; + } + + modules.push({name: mod.Module.Name, module: mod, exports: modExports}); + Logger.info(`Loaded ${mod.Module.Name} from ${file}`); + + for (let command of modExports) { + if (command == 'Module') continue; + let current = mod[command] + + if ( !current.Command + || !current.Alias + || !current.Usage + || !current.Description + || !current.Module) { + Logger.warn(`Exported class ${command} in ${file} and module ${mod.Module.Name} is not a valid command`); + continue; + } + + + + Logger.info(`Loaded ${current.Command} from module ${mod.Module.Name}`); + commandCount++; + } + } + + Logger.info(`Loaded ${commandCount} commands from ${moduleCount} modules`); + console.log(); } static get Modules() {return modules;} diff --git a/src/commands/common.js b/src/commands/common.js index 7d73085..dcb9143 100644 --- a/src/commands/common.js +++ b/src/commands/common.js @@ -1,9 +1,22 @@ +export class Module { + static get Name() {return 'Generic module 1'} + static get Author() {return 'Ben (plane000)#8618'} + + static Init() { + + } + + static Dispose() { + + } +} export class Command1 { static get Command() {return 'command1'} static get Alias() {return ['alias1', 'alias2']} static get Usage() {return 'command1 [args]'} static get Description() {return 'Echos the users input'} + static get Module() {return Module;} static Init() { @@ -18,10 +31,10 @@ export class Command1 { } } +function HelperThatDoesntGetSeenByTheModuleLoader() { + +} + export class Command2 { } - -export class Command3 { - -} diff --git a/src/index.js b/src/index.js index ccb212f..3b3d383 100644 --- a/src/index.js +++ b/src/index.js @@ -4,6 +4,7 @@ import {Logger} from './logger'; import {Config} from './config'; import {Database} from './database/database'; import {Events} from './events'; +import {MessageManager} from './messagemanager'; let client; @@ -16,9 +17,12 @@ export async function init() { await Database.init(); + await MessageManager.init(); + client = new Discord.Client(); - + const eventHandler = new Events(); await eventHandler.init(client); eventHandler.handleEvents(); + } diff --git a/src/messagemanager.js b/src/messagemanager.js index 782e8b0..2e19b34 100644 --- a/src/messagemanager.js +++ b/src/messagemanager.js @@ -1,8 +1,9 @@ import {Logger} from './logger'; +import {CommandManager} from './commandmanager'; export class MessageManager { static async init() { - + CommandManager.load(); } static async handleMessage(message, client, next) { From d83951a8f078976091e4b47e639bb1f653e99a59 Mon Sep 17 00:00:00 2001 From: Ben Date: Sat, 24 Nov 2018 19:21:18 +0000 Subject: [PATCH 09/10] Command Manager working --- src/CMDManagerSpec.md | 3 --- src/commandmanager.js | 39 ++++++++++++++++++++++++++++++--------- src/commands/common.js | 12 +++++++----- src/index.js | 5 ++++- 4 files changed, 41 insertions(+), 18 deletions(-) delete mode 100644 src/CMDManagerSpec.md diff --git a/src/CMDManagerSpec.md b/src/CMDManagerSpec.md deleted file mode 100644 index 8b7f994..0000000 --- a/src/CMDManagerSpec.md +++ /dev/null @@ -1,3 +0,0 @@ -# Specification of command manager and modules - -- Ability to diff --git a/src/commandmanager.js b/src/commandmanager.js index fc74b4f..d479b35 100644 --- a/src/commandmanager.js +++ b/src/commandmanager.js @@ -3,11 +3,15 @@ import fs from 'fs'; import {Logger} from './logger'; let modules = []; -let commands = {}; +let commands = []; export class CommandManager { - static async load() { - console.log(); + static get Modules() {return modules;} + static get Commands() {return commands;} + + static async load(log) { + if (log != 1) console.log(); + Logger.info('Loading Commands and Modules'); if (!fs.existsSync('./src/commands/')) { Logger.panic('No commands folder at /src/commands'); @@ -32,7 +36,7 @@ export class CommandManager { continue; } - modules.push({name: mod.Module.Name, module: mod, exports: modExports}); + modules[mod.Module.Name] = {name: mod.Module.Name, module: mod, exports: modExports, file: file}; Logger.info(`Loaded ${mod.Module.Name} from ${file}`); for (let command of modExports) { @@ -43,12 +47,16 @@ export class CommandManager { || !current.Alias || !current.Usage || !current.Description - || !current.Module) { + || !current.Module + || !current.Init + || !current.Exec + || !current.Dispose) { Logger.warn(`Exported class ${command} in ${file} and module ${mod.Module.Name} is not a valid command`); continue; } - - + + await current.Init(); + commands[current.Command] = current; // Doesnt give support for alias commands Logger.info(`Loaded ${current.Command} from module ${mod.Module.Name}`); commandCount++; @@ -59,10 +67,23 @@ export class CommandManager { console.log(); } - static get Modules() {return modules;} - static get Commands() {return commands;} static async reload() { + console.log(); + Logger.info('Reloading Modules and Commands'); + + // Does not call dispose function + for (let command of commands) { + await command.Dispose(); + } + Logger.info('Disposed registerd commands'); + for (let mod of modules) { + await mod.module.Dispose(); + delete require.cache[require.resolve(mod.file)]; + } + Logger.info('Disposed registerd modules'); + + CommandManager.load(1); } } diff --git a/src/commands/common.js b/src/commands/common.js index dcb9143..5c458c8 100644 --- a/src/commands/common.js +++ b/src/commands/common.js @@ -1,3 +1,5 @@ +import {Logger} from "../logger"; + export class Module { static get Name() {return 'Generic module 1'} static get Author() {return 'Ben (plane000)#8618'} @@ -7,7 +9,7 @@ export class Module { } static Dispose() { - + Logger.error('module disposed') } } @@ -18,16 +20,16 @@ export class Command1 { static get Description() {return 'Echos the users input'} static get Module() {return Module;} - static Init() { + static async Init() { } - static Exec(message, client, next) { + static async Exec(message, client, next) { } - static Dispose() { - + static async Dispose() { + Logger.error('command disposed') } } diff --git a/src/index.js b/src/index.js index 3b3d383..912ec03 100644 --- a/src/index.js +++ b/src/index.js @@ -5,6 +5,7 @@ import {Config} from './config'; import {Database} from './database/database'; import {Events} from './events'; import {MessageManager} from './messagemanager'; +import {CommandManager} from './commandmanager'; let client; @@ -16,7 +17,8 @@ export async function init() { Config.load(); await Database.init(); - + + console.log(); await MessageManager.init(); client = new Discord.Client(); @@ -25,4 +27,5 @@ export async function init() { await eventHandler.init(client); eventHandler.handleEvents(); + CommandManager.reload(); } From 84342cefb1d0ff2bacbe77b56e67e5354d7c014c Mon Sep 17 00:00:00 2001 From: Ben Date: Sun, 25 Nov 2018 18:45:47 +0000 Subject: [PATCH 10/10] Commands now dispose properly --- src/commandmanager.js | 16 ++++++++++------ src/commands/common.js | 4 ---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/commandmanager.js b/src/commandmanager.js index d479b35..7dec935 100644 --- a/src/commandmanager.js +++ b/src/commandmanager.js @@ -72,18 +72,22 @@ export class CommandManager { console.log(); Logger.info('Reloading Modules and Commands'); - // Does not call dispose function - for (let command of commands) { - await command.Dispose(); + for (let command in commands) { + await commands[command].Dispose(); } Logger.info('Disposed registerd commands'); - for (let mod of modules) { - await mod.module.Dispose(); - delete require.cache[require.resolve(mod.file)]; + // This broke af lol ReeEEEEeeE + for (let mod in modules) { + // Logger.error(modules[mod].module); + // await modules[mod].module.Dispose(); + delete require.cache[require.resolve(modules[mod].mod)]; //file.split('.')[0])]; } Logger.info('Disposed registerd modules'); + modules = []; + commands = []; + CommandManager.load(1); } } diff --git a/src/commands/common.js b/src/commands/common.js index 5c458c8..1f2f8c3 100644 --- a/src/commands/common.js +++ b/src/commands/common.js @@ -7,10 +7,6 @@ export class Module { static Init() { } - - static Dispose() { - Logger.error('module disposed') - } } export class Command1 {