Skip to content

Commit

Permalink
Prepare for public release
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewMusser committed Nov 21, 2023
0 parents commit 60ce945
Show file tree
Hide file tree
Showing 41 changed files with 5,095 additions and 0 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: LPM Installer Publish
run-name: LPM Installer Publish
on:
push:
tags:
- '*'
jobs:
Explore-GitHub-Actions:
runs-on: windows-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
with:
submodules: true
token: ${{ secrets.GH_LPM_ASPYTHON_TOKEN }}
- name: Download + Install Inno
uses: pwall2222/[email protected]
- name: Create the EXE Installer
working-directory: ./utils
run: |
./BuildInstaller.bat
- name: Code Signing Setup - Setup Certificate
run: |
echo "${{secrets.SM_CLIENT_CERT_FILE_B64 }}" | base64 --decode > /d/Certificate_pkcs12.p12
cat /d/Certificate_pkcs12.p12
shell: bash
- name: Code Signing Setup - Set variables
id: variables
run: |
echo "::set-output name=version::${GITHUB_REF#refs/tags/v}"
echo "SM_HOST=${{ secrets.SM_HOST }}" >> "$GITHUB_ENV"
echo "SM_API_KEY=${{ secrets.SM_API_KEY }}" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_FILE=D:\\Certificate_pkcs12.p12" >> "$GITHUB_ENV"
echo "SM_CLIENT_CERT_PASSWORD=${{ secrets.SM_CLIENT_CERT_PASSWORD }}" >> "$GITHUB_ENV"
echo "C:\Program Files (x86)\Windows Kits\10\App Certification Kit" >> $GITHUB_PATH
echo "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools" >> $GITHUB_PATH
echo "C:\Program Files\DigiCert\DigiCert One Signing Manager Tools" >> $GITHUB_PATH
shell: bash
- name: Code Signing Setup - Setup SSM KSP on windows latest
run: |
curl -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:%SM_API_KEY%" -o smtools-windows-x64.msi
msiexec /i smtools-windows-x64.msi /quiet /qn
smksp_registrar.exe list
smctl.exe keypair ls
C:\Windows\System32\certutil.exe -csp "DigiCert Signing Manager KSP" -key -user
smksp_cert_sync.exe
shell: cmd
- name: Code Signing Setup - Sign using Signtool
run: |
signtool.exe sign /sha1 ${{ secrets.SM_CODE_SIGNING_CERT_SHA1_HASH }} /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 "./build/LPM-Setup.exe"
signtool.exe verify /v /pa "./build/LPM-Setup.exe"
- name: Upload Installer to S3
run: |
aws configure set aws_access_key_id ${{ secrets.LPM_S3_ACCESS_KEY_ID }}
aws configure set aws_secret_access_key ${{ secrets.LPM_S3_SECRET_ACCESS_KEY }}
aws s3 cp ./build/LPM-Setup.exe s3://loupe-lpm-assets/releases/latest/LPM-Setup.exe --region us-west-2
aws s3 cp ./build/LPM-Setup.exe s3://loupe-lpm-assets/releases/${{ github.ref_name }}/LPM-Setup.exe --region us-west-2
133 changes: 133 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
ignore/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# Exclude temp directory (for testing)
/temp
5 changes: 5 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

[submodule "src/ASPython"]
path = src/ASPython
url = https://github.com/loupeteam/ASPython.git
branch = main
18 changes: 18 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"args": ["install","[email protected]","-src"],
"cwd": "${workspaceFolder}/test"
}
]
}
43 changes: 43 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Change log

- 1.0.0 - Public release

- 0.5.3 - Add supporting files in preparation for open-sourcing
- Add automatic code signing of installers to Github workflow

- 0.5.2 - Deploy LPM as Python source instead of compiled binaries

- 0.5.1 - Improve the functionality for retrieving a package type

- 0.5.0 - Simplify login process by only requiring a token to be entered
- Add LPM view and info commands to get individual package info
- Add LPM viewall command to get a list of all available packages

- 0.4.2 - Fix casing bug for dependency names

- 0.4.1 - Add support for HMI package types

- 0.4.0 - Add support for new package types (package vs. library vs. project)
- Add support for project level-configuration settings (i.e. deployment configurations)
- Add convenience command to open an AS project
- Add support for deploying packages in an AS project

- 0.3.1 - Update copy command to address deprecation warning

- 0.3.0 - Add support for LPM usage by Jenkins in CI contexts
- Add support for installing source via LPM
- Update ASPython dependency

- 0.2.0 - Add more capabilities to the publish workflow

- 0.1.5 - Roll out publish and full authentication functionality

- 0.1.4 - Rename the starter AS project

- 0.1.3 - Add support for bootstrapping a starter AS project

- 0.1.2 - Update ASPython dependency

- 0.1.1 - Improve anti-virus compatibility by changing packaging tool from PyInstaller to Nuitka

- 0.1.0 - Initial version
23 changes: 23 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
MIT License
===========

Copyright (c) 2023 Loupe
https://loupe.team/

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Info
This tool is provided by Loupe.
https://loupe.team
[email protected]
1-800-240-7042

# Description

LPM is the Loupe Package Manager. This tool is designed to make it easy to interact with Loupe packages within the Automation Studio and webHMI ecosystems. It provides a command line interface for installing packages in a project, and for managing their lifecycle (version update, dependency checks, removal, etc).

# Documentation

Documentation for LPM use, including installation instructions and use cases, can be found [here](https://loupeteam.github.io/LoupeDocs/tools/lpm.html).

# Licensing
This project is licensed under the [MIT License](LICENSE.md).
Empty file added docs/POSTINSTALL.txt
Empty file.
Empty file added docs/PREINSTALL.txt
Empty file.
Binary file added files/favicon.ico
Binary file not shown.
11 changes: 11 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
certifi==2023.5.7
charset-normalizer==3.1.0
idna==3.4
inquirerpy==0.3.4
ordered-set==4.1.0
pfzy==0.3.4
prompt-toolkit==3.0.38
requests==2.30.0
termcolor==2.3.0
urllib3==2.0.2
wcwidth==0.2.6
Loading

0 comments on commit 60ce945

Please sign in to comment.