mirror of
https://github.com/ytdl-org/youtube-dl.git
synced 2025-08-22 22:34:01 -07:00
Working on pybuilder flow, main build + unittests working
This commit is contained in:
parent
6fece0a96b
commit
bd75a6b1ce
3 changed files with 168 additions and 0 deletions
165
build.py
Normal file
165
build.py
Normal file
|
@ -0,0 +1,165 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from pybuilder.core import use_plugin, init, task
|
||||
from enum import Enum
|
||||
import glob
|
||||
import shutil
|
||||
import warnings
|
||||
import sys
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
use_plugin("python.core")
|
||||
#use_plugin("python.unittest")
|
||||
use_plugin("python.flake8")
|
||||
use_plugin("python.coverage")
|
||||
use_plugin("exec")
|
||||
|
||||
name = "youtube-dl"
|
||||
default_task = ["clean", "analyze","offlinetest","build"]
|
||||
version = "0.0.0"
|
||||
|
||||
OS = Enum('OS',['Linux','MacOS', 'Windows'])
|
||||
|
||||
|
||||
@init
|
||||
def set_properties(project):
|
||||
project.set_property("dir_source_main_python", "youtube_dl")
|
||||
project.set_property("dir_source_unittest_python", "test")
|
||||
project.set_property("dir_source_main_scripts", "devscripts")
|
||||
#project.set_property("unittest_module_glob", "test*")
|
||||
project.set_property('coverage_break_build', False)
|
||||
sys.path.append("./youtube_dl")
|
||||
from version import __version__
|
||||
project.version = __version__
|
||||
type = OS.Linux
|
||||
if sys.platform == "linux" or sys.platform == "linux2":
|
||||
type = OS.Linux
|
||||
elif sys.platform == "darwin":
|
||||
type = OS.MacOS
|
||||
elif sys.platform == "win32":
|
||||
type = OS.Windows
|
||||
project.os = type
|
||||
|
||||
|
||||
def delete(logger, path):
|
||||
if (os.path.exists(path)):
|
||||
logger.info("Deleting: " + path)
|
||||
if (os.path.isfile(path)):
|
||||
os.remove(path)
|
||||
elif (os.path.isdir(path)):
|
||||
shutil.rmtree(path)
|
||||
|
||||
@task
|
||||
def clean(logger, project):
|
||||
delete_patterns = [
|
||||
"*/__pycache__",
|
||||
"*/testdata",
|
||||
"*.pyc",
|
||||
"*.class",
|
||||
"*.dump",
|
||||
"*.part*",
|
||||
"*.ytdl",
|
||||
"*.info.json",
|
||||
"*.mp4",
|
||||
"*.m4a",
|
||||
"*.flv",
|
||||
"*.mp3",
|
||||
"*.avi",
|
||||
"*.mkv",
|
||||
"*.webm",
|
||||
"*.3gp",
|
||||
"*.wav",
|
||||
"*.ape",
|
||||
"*.swf",
|
||||
"*.jpg",
|
||||
"*.png",
|
||||
]
|
||||
|
||||
for pat in delete_patterns:
|
||||
for file in glob.glob(pat):
|
||||
delete(logger, file)
|
||||
|
||||
delete_files = [
|
||||
'youtube-dl.1.temp.md',
|
||||
'youtube-dl.1',
|
||||
'youtube-dl.bash-completion',
|
||||
'README.txt',
|
||||
'MANIFEST',
|
||||
'build/',
|
||||
'dist/',
|
||||
'.coverage',
|
||||
'cover/',
|
||||
'youtube-dl.tar.gz',
|
||||
'youtube-dl.zsh',
|
||||
'youtube-dl.fish',
|
||||
'youtube_dl/extractor/lazy_extractors.py',
|
||||
'CONTRIBUTING.md.tmp',
|
||||
'youtube-dl',
|
||||
'youtube-dl.exe'
|
||||
]
|
||||
|
||||
for file in delete_files:
|
||||
delete(logger, file)
|
||||
|
||||
|
||||
@task
|
||||
## build for the current operating system
|
||||
def build(logger, project):
|
||||
if (project.os == OS.Linux or project.os == OS.MacOS):
|
||||
buildUnix(logger, project)
|
||||
elif project.os == OS.Windows:
|
||||
buildWin32(logger, project)
|
||||
else:
|
||||
logger.error("Operating system detection failed, please manually select an OS to build for!")
|
||||
logger.error("$ pyb buildUnix or $ pyb buildWin32")
|
||||
|
||||
|
||||
def mkdir_p(path):
|
||||
try:
|
||||
return os.mkdir(path)
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
@task
|
||||
def buildUnix(logger, project):
|
||||
logger.info(project.version)
|
||||
mkdir_p("zip")
|
||||
source_dirs = [
|
||||
"youtube_dl", "youtube_dl/downloader", "youtube_dl/extractor", "youtube_dl/postprocessor"
|
||||
]
|
||||
for dir in source_dirs:
|
||||
mkdir_p("zip/"+dir)
|
||||
subprocess.run("cp -pPr "+dir+"/*.py zip/"+dir+"/", shell=True)
|
||||
subprocess.run("touch -t 200001010101 zip/youtube_dl/*.py zip/youtube_dl/*/*.py", shell=True)
|
||||
subprocess.run("mv zip/youtube_dl/__main__.py zip/",shell=True)
|
||||
subprocess.run("cd zip ; zip -q ../youtube-dl youtube_dl/*.py youtube_dl/*/*.py __main__.py",shell=True)
|
||||
subprocess.run("rm -rf zip", shell=True)
|
||||
subprocess.run("echo '#!/usr/bin/env python' > youtube-dl ; cat youtube-dl.zip >> youtube-dl ; rm youtube-dl.zip; chmod a+x youtube-dl", shell=True)
|
||||
|
||||
|
||||
@task
|
||||
def buildWin32(logger, project):
|
||||
subprocess.run("python -m setup.py py2exe")
|
||||
|
||||
@task
|
||||
def offlinetest(logger,project):
|
||||
subprocess.run("python -m nose --verbose test \
|
||||
--exclude test_age_restriction.py \
|
||||
--exclude test_download.py \
|
||||
--exclude test_iqiyi_sdk_interpreter.py \
|
||||
--exclude test_socks.py \
|
||||
--exclude test_subtitles.py \
|
||||
--exclude test_write_annotations.py \
|
||||
--exclude test_youtube_lists.py \
|
||||
--exclude test_youtube_signature.py",
|
||||
shell=True)
|
||||
|
||||
@task
|
||||
def test(logger, project):
|
||||
subprocess.run("nosetests --with-coverage \
|
||||
--cover-package=youtube_dl \
|
||||
--cover-html \
|
||||
--verbose \
|
||||
--processes 4 test",
|
||||
shell=True)
|
||||
|
3
pyproject.toml
Normal file
3
pyproject.toml
Normal file
|
@ -0,0 +1,3 @@
|
|||
[build-system]
|
||||
requires = ["pybuilder>=0.12.0"]
|
||||
build-backend = "pybuilder.pep517"
|
0
setup.py
Normal file → Executable file
0
setup.py
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue