Skip to content

Commit

Permalink
build: .Net Core
Browse files Browse the repository at this point in the history
  • Loading branch information
gretmn102 committed Aug 7, 2020
1 parent f55eb3e commit 4c38241
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 18 deletions.
20 changes: 16 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,22 @@
* Работать с проектом. К сожалению, сейчас оно работает с каждым исходником отдельно, и те друг о друге ничего не знают, хотя счастье так близко. Такая вот драма.

## Допустим, я хочу попробовать
Под Windows нужен .Net Framework >= 4.6.1 (скачать можно [тут](https://dotnet.microsoft.com/download/dotnet-framework), если лень гуглить), а под другие платформы [LSP](https://github.com/gretmn102/FParserQSP) пока не компилируется. Через Mono как-то можно, но лень. Да и чем компилировать исходники QSP'а, если известный [компилятор](http://qsp.su/index.php?option=com_content&task=view&id=52&Itemid=56) ([его исходники](https://github.com/QSPFoundation/qsp/tree/master/txt2gam)) — под Windows?
Под Windows нужен .Net Framework >= 4.6.1 (скачать можно [тут](https://dotnet.microsoft.com/download/dotnet-framework), если лень гуглить).

Под другие платформы нужен .Net Core:
* Под Linux в целом написано [тут](https://docs.microsoft.com/ru-ru/dotnet/core), для Ubuntu в частности — [тут](https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu)
На время написания инструкции достаточно было выполнить:
```bash
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb

sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-3.1
```

### Установка
Проста до безобразия:
Далее всё гораздо прозаичнее:
1. Установите [VS Code](https://code.visualstudio.com/Download)
2. Создайте новый файл с Hello World'ом:
```qsp
Expand All @@ -54,7 +66,7 @@
По-хорошему, я мог бы внедрить Watcher, чтобы он компилировал исходник каждый раз, когда его сохраняют, но обойдетесь.

### У меня уже есть игра, но скомпилирована в `.qsp`, как ее декомпилировать?
Запускаете (ох и ах) QGen. Жмете `Игра` -> `Экспорт` -> `Текстовый файл формата TXT2QSP...` и, собственно, сохраняете, куда душа пожелает. Не забудьте сменить расширение файла на `.qsps`.
Запускаете (ох и ах) QGen. Жмете `Игра` -> `Экспорт` -> `Текстовый файл формата TXT2GAM...` и, собственно, сохраняете, куда душа пожелает. Не забудьте сменить расширение файла на `.qsps`.

Кстати, существует отдельная программа [qsp2txt](http://qsp.su/index.php?option=com_agora&task=topic&id=1180&p=1&Itemid=57#p26046), но там же сообщением ниже пишут:
> Эта утилита экспортит не все локации. Если в игре много локаций, она бесполезна.
Expand Down
2 changes: 1 addition & 1 deletion build.fsx
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ Target.create "RunScript" (fun _ ->
)

Target.create "CopyFSAC" (fun _ ->
let fsacBin = sprintf "%s/bin/Debug/net461" fsacDir
let fsacBin = sprintf "%s/bin/Release/netcoreapp3.1" fsacDir
let releaseBin = "release/bin"
copyFSAC releaseBin fsacBin
)
Expand Down
6 changes: 3 additions & 3 deletions paket.lock
Original file line number Diff line number Diff line change
Expand Up @@ -564,13 +564,13 @@ NUGET
FSharp.Core (>= 4.3.4) - restriction: >= netstandard2.0
GIT
remote: https://github.com/gretmn102/FParserQSP
(c8dd4f5259dc8a211e8c266e969eeaf6951eb990)
(0b0b663b9239d8eb686dbc0632e14e614a0db20b)
build: build.cmd
os: win
(c8dd4f5259dc8a211e8c266e969eeaf6951eb990)
(0b0b663b9239d8eb686dbc0632e14e614a0db20b)
build: build.sh
os: linux
(c8dd4f5259dc8a211e8c266e969eeaf6951eb990)
(0b0b663b9239d8eb686dbc0632e14e614a0db20b)
build: build.sh
os: osx
GITHUB
Expand Down
45 changes: 35 additions & 10 deletions src/Core/LanguageService.fs
Original file line number Diff line number Diff line change
Expand Up @@ -536,24 +536,49 @@ Consider:
cl

let getOptions () = promise {
let spawnNetWin () =
let dotnetNotFound () = promise {
let msg = """
Cannot start QSP language services because `dotnet` was not found.
"""
let! result = vscode.window.showErrorMessage(msg)

return failwith "no `dotnet` binary found"
}
if Environment.isWin then
let fsautocompletePath =
// @"E:\Project\Qsp\QspVscodeExtension\release\bin\QspServer.exe"
VSCodeExtension.ionidePluginPath () + @"/bin/QspServer.exe"

// printfn "FSAC (NET): '%s'" fsautocompletePath
printfn "%A" fsautocompletePath
let args =
[
// if backgroundSymbolCache then yield "--background-service-enabled"
// if verbose then yield "--verbose"
] |> ResizeArray
let spawnNetWin =
createObj [
"command" ==> fsautocompletePath
"args" ==> args
"transport" ==> 0
]
return spawnNetWin
else
let spawnServer dotnet =
let fsautocompletePath =
[
VSCodeExtension.ionidePluginPath () + "/bin/qspserver.dll"
] |> ResizeArray

createObj [
"command" ==> fsautocompletePath
"args" ==> args
"transport" ==> 0
]
return spawnNetWin ()
createObj [
"command" ==> dotnet
"args" ==> fsautocompletePath
"transport" ==> 0
]

let! dotnet = Environment.dotnet
match dotnet with
| Some dotnet ->
return spawnServer dotnet
| None ->
return! dotnetNotFound ()
}
let decorate =
let decorationType =
Expand Down

0 comments on commit 4c38241

Please sign in to comment.