refactor: remove js2asar.py and port logic to JS in more readable / GN-style way (#16718)
* refactor: remove js2asar.py and port logic to JS in more readable / GN-style way * refactor: further clean up ASAR impl, add new node_action GN template
This commit is contained in:
parent
8582325e85
commit
b202ad1e24
9 changed files with 168 additions and 73 deletions
|
@ -1,51 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import errno
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__))
|
||||
|
||||
|
||||
def main():
|
||||
archive = sys.argv[1]
|
||||
folder_name = sys.argv[2]
|
||||
source_files = sys.argv[3:]
|
||||
|
||||
output_dir = tempfile.mkdtemp()
|
||||
copy_files(source_files, output_dir, folder_name)
|
||||
call_asar(archive, os.path.join(output_dir, folder_name))
|
||||
shutil.rmtree(output_dir)
|
||||
|
||||
|
||||
def copy_files(source_files, output_dir, folder_name):
|
||||
for source_file in source_files:
|
||||
output_path = os.path.join(output_dir, source_file)
|
||||
# Files that aren't in the default_app folder need to be put inside
|
||||
# the temp one we are making so they end up in the ASAR
|
||||
if not os.path.normpath(source_file).startswith(folder_name + os.sep):
|
||||
output_path = os.path.join(output_dir, folder_name, source_file)
|
||||
safe_mkdir(os.path.dirname(output_path))
|
||||
shutil.copy2(source_file, output_path)
|
||||
|
||||
|
||||
def call_asar(archive, output_dir):
|
||||
asar = os.path.join(SOURCE_ROOT, 'node_modules', '.bin', 'asar')
|
||||
if sys.platform in ['win32', 'cygwin']:
|
||||
asar += '.cmd'
|
||||
subprocess.check_call([asar, 'pack', output_dir, archive])
|
||||
|
||||
|
||||
def safe_mkdir(path):
|
||||
try:
|
||||
os.makedirs(path)
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
Loading…
Add table
Add a link
Reference in a new issue