102 lines
2.9 KiB
GDScript
102 lines
2.9 KiB
GDScript
# ----------------------------------------------
|
|
# ~{ GitHub Integration }~
|
|
# [Author] Nicolò "fenix" Santilio
|
|
# [github] fenix-hub/godot-engine.github-integration
|
|
# [version] 0.2.9
|
|
# [date] 09.13.2019
|
|
|
|
|
|
|
|
# -----------------------------------------------
|
|
|
|
tool
|
|
extends Control
|
|
|
|
|
|
onready var gitignore = $VBoxContainer/HBoxContainer5/gitignore
|
|
onready var privacy = $VBoxContainer/HBoxContainer3/privacy
|
|
onready var readme = $VBoxContainer/HBoxContainer4/readme
|
|
onready var license = $VBoxContainer/HBoxContainer6/license
|
|
onready var nome = $VBoxContainer/HBoxContainer/nome
|
|
onready var descrizione = $VBoxContainer/HBoxContainer2/descrizione
|
|
|
|
enum REQUESTS { REPOS = 0, GISTS = 1, END = -1 }
|
|
var requesting
|
|
var new_repo = HTTPRequest.new()
|
|
var repo_body
|
|
|
|
var LICENSES = ["afl-3.0","apache-2.0","artistic-2.0","bsl-1.0","bsd-2-clause","bsd-3-clause","bsd-3-clause-clear","cc","cc0-1.0","cc-by-4.0","cc-by-sa-4.0","wtfpl","ecl-2.0","epl-1.0","eupl-1.1",
|
|
"agpl-3.0","gpl","gpl-2.0","gpl-3.0","lgpl","lgpl-2.1","lgpl-3.0","isc","lppl-1.3c","ms-pl","mit","mpl-2.0","osl-3.0","postgresql","ofl-1.1","ncsa","unlicense","zlib"]
|
|
|
|
#var GITIGNORE = ["Haskell","Godot"]
|
|
|
|
onready var error = $VBoxContainer/error
|
|
|
|
func _ready():
|
|
call_deferred("add_child",new_repo)
|
|
new_repo.connect("request_completed",self,"request_completed")
|
|
gitignore.select(0)
|
|
license.select(0)
|
|
error.hide()
|
|
load_metadata()
|
|
|
|
func load_metadata():
|
|
for l in range(0,license.get_item_count()):
|
|
license.set_item_metadata(l,LICENSES[l])
|
|
# for g in range(0,gitignore.get_item_count()):
|
|
# gitignore.set_item_metadata(g,GITIGNORE[g])
|
|
|
|
func request_completed(result, response_code, headers, body ):
|
|
if result == 0:
|
|
match requesting:
|
|
REQUESTS.REPOS:
|
|
if response_code == 201:
|
|
hide()
|
|
get_parent().print_debug_message("created new repository...")
|
|
get_parent().UserPanel.request_repositories(get_parent().UserPanel.REQUESTS.UP_REPOS)
|
|
get_parent().loading(false)
|
|
elif response_code == 422:
|
|
error.text = "Error: "+JSON.parse(body.get_string_from_utf8()).result.errors[0].message
|
|
error.show()
|
|
REQUESTS.GISTS:
|
|
if response_code == 200:
|
|
pass
|
|
|
|
func load_body() -> Dictionary:
|
|
var priv
|
|
if privacy.get_selected_id() == 0:
|
|
priv = true
|
|
else:
|
|
priv = false
|
|
|
|
var read
|
|
if readme.pressed:
|
|
read = true
|
|
else:
|
|
read = false
|
|
|
|
var gitignor = gitignore.get_item_text(gitignore.get_selected_id())
|
|
var licens = license.get_item_metadata(license.get_selected_id())
|
|
|
|
repo_body = {
|
|
"name": nome.get_text(),
|
|
"description": descrizione.get_text(),
|
|
"private": priv,
|
|
"has_issues": true,
|
|
"has_projects": true,
|
|
"has_wiki": true,
|
|
"auto_init": read,
|
|
"gitignore_template": gitignor,
|
|
"license_template": licens
|
|
}
|
|
|
|
return repo_body
|
|
|
|
func _on_NewRepo_confirmed():
|
|
get_parent().loading(true)
|
|
error.hide()
|
|
requesting = REQUESTS.REPOS
|
|
new_repo.request("https://api.github.com/user/repos",UserData.header,false,HTTPClient.METHOD_POST,JSON.print(load_body()))
|
|
|
|
|