Add full Azure Pipeline CI (#32)

* Set up CI with Azure Pipelines

[skip ci]
This commit is contained in:
Anthony Lavado 2020-06-02 01:12:35 -07:00 committed by GitHub
parent 7dbb3fb24c
commit c38eb2a623
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 537 additions and 21 deletions

View File

@ -1,21 +1,139 @@
jobs:
- job: main_build
displayName: 'Main Build'
pool:
vmImage: 'macos-latest'
steps:
- task: Xcode@5
displayName: 'Build macOS Wrapper'
inputs:
actions: 'build'
configuration: 'Release'
sdk:
xcWorkspacePath: '**/*.xcodeproj'
destinationPlatformOption: 'macOS'
trigger:
- master
- task: PublishBuildArtifacts@1
displayName: 'Bundle Release'
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build/Release/'
ArtifactName: 'jellyfin-macos-wrapper.zip'
publishLocation: 'Container'
pool:
vmImage: 'macos-latest'
steps:
# Add all Apple signing material
- task: InstallAppleCertificate@2
inputs:
certSecureFile: 'MacAnthony2.p12'
certPwd: '$(CertificatePassword)'
keychain: 'temp'
- task: InstallAppleProvisioningProfile@1
inputs:
provisioningProfileLocation: 'secureFiles'
provProfileSecureFile: 'JellyfinMacProvision.provisionprofile'
# Compile the .app bundle
- task: Xcode@5
inputs:
actions: 'build'
configuration: 'Release'
sdk: 'macosx10.15'
xcWorkspacePath: '**/*.xcodeproj'
packageApp: false
signingOption: 'default'
destinationPlatformOption: 'macOS'
useXcpretty: true
# Get the latest Jellyfin release for mac
- task: DownloadGitHubRelease@0
inputs:
connection: 'Jellyfin Release Download'
userRepository: 'jellyfin/jellyfin'
defaultVersionType: 'latest'
itemPattern: '*macos.tar.gz'
downloadPath: '$(System.DefaultWorkingDirectory)/build/Release/'
# Extract them in to the working directory
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '*.gz'
destinationFolder: '$(System.DefaultWorkingDirectory)/build/Release/'
cleanDestinationFolder: false
# Download FFmpeg and extract it
- task: Bash@3
inputs:
targetType: 'inline'
script: 'curl https://www.zeranoe.com/builds/macos64/static/ffmpeg-4.2.3-macos64-static.zip -o ffmpeg.zip'
workingDirectory: '$(System.DefaultWorkingDirectory)/build/Release/'
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(System.DefaultWorkingDirectory)/build/Release/ffmpeg.zip'
destinationFolder: '$(System.DefaultWorkingDirectory)/build/Release/'
cleanDestinationFolder: false
- task: Bash@3
inputs:
targetType: 'inline'
script: |
# Rename the bundle
echo "[INFO] Renaming Jellyfin Server.app as Jellyfin.app..."
mv "Jellyfin Server.app" "Jellyfin.app"
# Read the extracted Jellyfin binary folder name, get version
echo "[INFO] Reading details from Jellyfin release..."
dir_name="$( find . -type d -name "jellyfin_*" -exec basename {} \; )"
version="$(awk -F'_' '{ print $NF }' <<<"${dir_name}")"
# Update the version number in the plist to be accurate
echo "[INFO] Updating .plist for version $version"
plutil -replace CFBundleVersion -string "$version" "Jellyfin.app/Contents/Info.plist"
# Copy FFmpeg in to the correct folder
echo "[INFO] Copying FFmpeg into server folder..."
cp ffmpeg*/bin/ffmpeg "$dir_name/"
cp ffmpeg*/bin/ffprobe "$dir_name/"
# Copy the latest Jellyfin binary in to the correct folder
echo "[INFO] Copying Jellyfin Server into bundle..."
cp -R "$dir_name/." "Jellyfin.app/Contents/MacOS/"
# Move the web files to the resource folder
echo "[INFO] Moving jellyfin-web to resources..."
mv "Jellyfin.app/Contents/MacOS/jellyfin-web" "Jellyfin.app/Contents/Resources/"
# Setup some variables
APP_NAME="Jellyfin.app"
ENTITLEMENTS="$BUILD_SOURCESDIRECTORY/deployment/Jellyfin_Server.entitlements"
SIGNING_IDENTITY="739426E195172DE44249548E1DC1CBFA797AEF3A" # matches Keychain Access certificate name
# Iterate through contents that should be signed, and sign them
find "$APP_NAME/Contents/MacOS" -type f | while read fname; do
echo "[INFO] Signing $fname"
codesign --force --timestamp --options=runtime --entitlements "$ENTITLEMENTS" --sign $SIGNING_IDENTITY "$fname"
done
find "$APP_NAME/Contents/Frameworks" -type f | while read fname; do
echo "[INFO] Signing $fname"
codesign --force --timestamp --options=runtime --entitlements "$ENTITLEMENTS" --sign $SIGNING_IDENTITY "$fname"
done
echo "[INFO] Signing complete app bundle..."
codesign --force --timestamp --options=runtime --entitlements "$ENTITLEMENTS" --sign $SIGNING_IDENTITY "$APP_NAME"
workingDirectory: '$(System.DefaultWorkingDirectory)/build/Release/'
- task: UseNode@1
inputs:
version: '12.x'
- task: Npm@1
inputs:
command: 'install'
workingDir: '$(Build.SourcesDirectory)'
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "[INFO] Moving resources inline..."
cp -R "$BUILD_SOURCESDIRECTORY/deployment/." "."
echo "[INFO] Creating DMG..."
npx appdmg "jfdmg.json" "Jellyfin.dmg"
echo "[INFO] Uploading for notarization..."
xcrun altool --notarize-app --primary-bundle-id "jellyfin-server-macos" --username "$DEVUSER" --password "$DEVPASS" --file "Jellyfin.dmg"
workingDirectory: '$(System.DefaultWorkingDirectory)/build/Release/'
env:
DEVUSER: $(AppleDevAccount)
DEVPASS: $(AppleDevPassword)
- task: PublishBuildArtifacts@1
displayName: 'Bundle Release'
inputs:
PathtoPublish: '$(System.DefaultWorkingDirectory)/build/Release/Jellyfin.dmg'
ArtifactName: 'jellyfin-macos-wrapper.zip'
publishLocation: 'Container'

3
.gitignore vendored
View File

@ -129,4 +129,5 @@ iOSInjectionProject/
### Xcode Patch ###
**/xcshareddata/WorkspaceSettings.xcsettings
# End of https://www.gitignore.io/api/xcode,macos,swift
# End of https://www.gitignore.io/api/xcode,macos,swift
node_modules

BIN
deployment/AppIcon.icns Normal file

Binary file not shown.

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
</dict>
</plist>

11
deployment/jfdmg.json Normal file
View File

@ -0,0 +1,11 @@
{
"title": "Jellyfin Server",
"icon": "AppIcon.icns",
"icon-size": 80,
"window": {
"size": { "width": 240, "height": 160 }
},
"contents": [
{ "x": 160, "y": 90, "type": "file", "path": "Jellyfin.app" }
]
}

349
package-lock.json generated Normal file
View File

@ -0,0 +1,349 @@
{
"name": "jellyfin-server-macos",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"appdmg": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/appdmg/-/appdmg-0.6.0.tgz",
"integrity": "sha512-vDz8cMf5c6BfoS72OmmHzzuxG5DFVDM6YCAkscjYh3GASGEBBRCZ10Bn515ZPSPHOpfI9Xu3MlApbd49C58pJg==",
"requires": {
"async": "^1.4.2",
"ds-store": "^0.1.5",
"execa": "^1.0.0",
"fs-temp": "^1.0.0",
"fs-xattr": "^0.3.0",
"image-size": "^0.7.4",
"is-my-json-valid": "^2.20.0",
"minimist": "^1.1.3",
"parse-color": "^1.0.0",
"path-exists": "^4.0.0",
"repeat-string": "^1.5.4"
}
},
"async": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
},
"base32-encode": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.1.1.tgz",
"integrity": "sha512-eqa0BeGghj3guezlasdHJhr3+J5ZbbQvxeprkcDMbRQrjlqOT832IUDT4Al4ofAwekFYMqkkM9KMUHs9Cu0HKA=="
},
"bplist-creator": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.8.tgz",
"integrity": "sha512-Za9JKzD6fjLC16oX2wsXfc+qBEhJBJB1YPInoAQpMLhDuj5aVOv1baGeIQSq1Fr3OCqzvsoQcSBSwGId/Ja2PA==",
"requires": {
"stream-buffers": "~2.2.0"
}
},
"color-convert": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz",
"integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0="
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
"requires": {
"nice-try": "^1.0.4",
"path-key": "^2.0.1",
"semver": "^5.5.0",
"shebang-command": "^1.2.0",
"which": "^1.2.9"
}
},
"ds-store": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/ds-store/-/ds-store-0.1.6.tgz",
"integrity": "sha1-0QJO90btDBPw9/7IXH6FjoxLfKc=",
"requires": {
"bplist-creator": "~0.0.3",
"macos-alias": "~0.2.5",
"tn1150": "^0.1.0"
}
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"requires": {
"once": "^1.4.0"
}
},
"execa": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
"integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
"requires": {
"cross-spawn": "^6.0.0",
"get-stream": "^4.0.0",
"is-stream": "^1.1.0",
"npm-run-path": "^2.0.0",
"p-finally": "^1.0.0",
"signal-exit": "^3.0.0",
"strip-eof": "^1.0.0"
}
},
"fmix": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz",
"integrity": "sha1-x7vxJN7ELJ0ZHPuUfQqXeN2YbAw=",
"requires": {
"imul": "^1.0.0"
}
},
"fs-temp": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/fs-temp/-/fs-temp-1.2.1.tgz",
"integrity": "sha512-okTwLB7/Qsq82G6iN5zZJFsOfZtx2/pqrA7Hk/9fvy+c+eJS9CvgGXT2uNxwnI14BDY9L/jQPkaBgSvlKfSW9w==",
"requires": {
"random-path": "^0.1.0"
}
},
"fs-xattr": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/fs-xattr/-/fs-xattr-0.3.1.tgz",
"integrity": "sha512-UVqkrEW0GfDabw4C3HOrFlxKfx0eeigfRne69FxSBdHIP8Qt5Sq6Pu3RM9KmMlkygtC4pPKkj5CiPO5USnj2GA=="
},
"generate-function": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz",
"integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
"requires": {
"is-property": "^1.0.2"
}
},
"generate-object-property": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"requires": {
"is-property": "^1.0.0"
}
},
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"requires": {
"pump": "^3.0.0"
}
},
"image-size": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz",
"integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g=="
},
"imul": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz",
"integrity": "sha1-nVhnFh6LPelsLDjV3HyxAvNeKsk="
},
"is-my-ip-valid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
"integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ=="
},
"is-my-json-valid": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz",
"integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==",
"requires": {
"generate-function": "^2.0.0",
"generate-object-property": "^1.1.0",
"is-my-ip-valid": "^1.0.0",
"jsonpointer": "^4.0.0",
"xtend": "^4.0.0"
}
},
"is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
},
"is-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
},
"jsonpointer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk="
},
"macos-alias": {
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/macos-alias/-/macos-alias-0.2.11.tgz",
"integrity": "sha1-/u6mwTuhGYFKQ/xDxHCzHlnvcYo=",
"requires": {
"nan": "^2.4.0"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
},
"murmur-32": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/murmur-32/-/murmur-32-0.2.0.tgz",
"integrity": "sha512-ZkcWZudylwF+ir3Ld1n7gL6bI2mQAzXvSobPwVtu8aYi2sbXeipeSkdcanRLzIofLcM5F53lGaKm2dk7orBi7Q==",
"requires": {
"encode-utf8": "^1.0.3",
"fmix": "^0.1.0",
"imul": "^1.0.0"
}
},
"nan": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw=="
},
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"requires": {
"path-key": "^2.0.0"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"p-finally": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
},
"parse-color": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/parse-color/-/parse-color-1.0.0.tgz",
"integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=",
"requires": {
"color-convert": "~0.5.0"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
"path-key": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
},
"random-path": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/random-path/-/random-path-0.1.2.tgz",
"integrity": "sha512-4jY0yoEaQ5v9StCl5kZbNIQlg1QheIDBrdkDn53EynpPb9FgO6//p3X/tgMnrC45XN6QZCzU1Xz/+pSSsJBpRw==",
"requires": {
"base32-encode": "^0.1.0 || ^1.0.0",
"murmur-32": "^0.1.0 || ^0.2.0"
}
},
"repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
},
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
},
"shebang-command": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"requires": {
"shebang-regex": "^1.0.0"
}
},
"shebang-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
},
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
"integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
},
"stream-buffers": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
"integrity": "sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ="
},
"strip-eof": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
},
"tn1150": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/tn1150/-/tn1150-0.1.0.tgz",
"integrity": "sha1-ZzUD0k1WuH3ouMd/7j/AhT1ZoY0=",
"requires": {
"unorm": "^1.4.1"
}
},
"unorm": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz",
"integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA=="
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"requires": {
"isexe": "^2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
}
}
}

23
package.json Normal file
View File

@ -0,0 +1,23 @@
{
"name": "jellyfin-server-macos",
"version": "1.0.0",
"description": "<h1 align=\"center\">Jellyfin for macOS</h1> <h3 align=\"center\">Part of the <a href=\"https://jellyfin.media\">Jellyfin Project</a></h3>",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/anthonylavado/jellyfin-server-macos.git"
},
"keywords": [],
"author": "Anthony Lavado",
"license": "MPL-2.0",
"bugs": {
"url": "https://github.com/anthonylavado/jellyfin-server-macos/issues"
},
"homepage": "https://github.com/anthonylavado/jellyfin-server-macos#readme",
"dependencies": {
"appdmg": "^0.6.0"
}
}