Code Monkey home page Code Monkey logo

hierosoft / hierosoft Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 510 KB

A launcher for applications that have no installer. Run those zip and gz programs with ease. Make icons and run them. Upgrade them in place and keep rollback data. A single-executable launcher (if compiled using PyInstaller) that runs an upgraded Python copy of itself (unless in --offline mode).

Home Page: https://hierosoft.com

License: MIT License

Python 92.30% Shell 0.13% Batchfile 0.01% Tcl 7.57%
installer-automation platform python

hierosoft's Introduction

Hierosoft Update

Solve Python distribution with a one-click install solution!

Integrate Python programs with the system in various ways:

  • Request an assigned directory where files can be placed such as for icons (pixmaps), shortcuts, or cache.
    • hierosoft.get_unique_path
      • Has an "allow_cloud" option to detect a Nextcloud or ownCloud directory containing a "profile" directory (for the "Configs:Unique" option)
  • Create a desktop shortcut in a way that works in any operating system.
    • from hierosoft.moreplatform import make_shortcut
  • Get more metadata such as for images.
    • hierosoft.moremeta
  • Emulate grep but also: Get a list of files; Process .gitignore files (and optionally get include and exclude filters for rsync).
    • from hierosoft.ggrep import (ggrep, gitignore_to_rsync_pair)
  • Emulate netcat but get callbacks during the upload.
    • from hierosoft.moreweb import netcat
  • See nonexistent paths that may be safe to remove from the environment's PATH variable.
    • hierosoft.checkpath
  • See if your repo's latest tag matches the version stored in your repo.
    • hierosoft.checkversion
  • Process URL requests in a Python 3 way regardless of the Python version.
    • hierosoft.moreweb

Filesystem shortcuts

Example projects

(using this module)

Core features

Hierosoft Update is the Python manager and virtualenv manager module to download or run a Python program such as an updated copy of:

  • itself
  • the Hierosoft Launcher (See Project Status).
  • any program (when used by the launcher or blendernightly)

Checkpath

To learn more, see the comment (docstring) at the top of checkpath.py.

Project Status

  • The gui_tk main function should be launched by the icon.
  • In Windows, Hierosoft Icon should be compiled as an exe such as using PyOxidizer so that it runs without having to install anything first.
  • Download and run itself (updated Python copy) as the main program which should run the launcher.
    • The process of installing apps should move to the launcher which should use the downloaded python version of this module.
  • Complete the launcher a separate project and run that instead of running a single program.
    • Potentially, nopackage could become the launcher or a component in the same virtualenv). It has the advantage of having download locations of icons for certain programs.
    • Make a special virtualenv named hierosoft-launcher that only contains what Hierosoft Launcher needs to operate, and a copy of Hierosoft Update.
  • Add https://pypi.org/project/eric-ide as a test case except use ~/.virtualenvs. Keep the eric7_venv directory if it exists in case manual steps were used prior.
    • Remember to include eric7_post_install.
  • Check for an existing venv directory such as if ~/venv/kivy were used according to manual instructions.

Development

Purpose

The purpose of Hierosoft Update is to ensure that the launcher can start, and serve as a platform for installing other Python programs as well. The way the Hierosoft Update works is by setting up a virtualenv for a program or set of programs after trying to detect the correct version of Python regardless of how the program is packaged.

The Python distribution dilemma is that programs are scripts users must open unless the author puts some custom system in place to install an icon and to do one of the following:

  • Ensure a correct Python version is installed, and where it is.
  • Compile the Python code into an exe such as using PyOxidizer.

The dilemma is that though solutions exist, there isn't a de facto standard other than solutions which already assume you have Python and require Command-Line Interface (CLI) commands.

hierosoft's People

Contributors

poikilos avatar

Stargazers

 avatar

Watchers

 avatar

hierosoft's Issues

Consider preventing multiple lines in split_before_newlines

Probably not, but would require the test change (in str and bytes versions of the test):

replace:

                self.assertEqual(split_before_newlines(" a\n "), (" a", "\n "))
                self.assertEqual(split_before_newlines("a \n "), ("a ", "\n "))

with

        # Pairs that should be rejected (allowing more lines causes more complexity)
        bad_pairs = [
            (" a\n ", (" a", "\n ")),
            ("a \n ", ("a ", "\n ")),
        ]
        for bad_pair in bad_pairs:
            arg, goodTuple = bad_pair
            good_exception = False
            try:
                self.assertEqual(split_before_newlines(arg), goodTuple)
            except ValueError as ex:
                if "more than one line" in str(ex):
                    good_exception = True
                else:
                    raise
            if not good_exception:
                raise AssertionError(
                    "split_before_newlines should reject more than one line"
                )

Make HTMLParser work in a PyInstaller build, or make DownloadPageParser use a different module.

The PyInstaller build says: ModuleNotFoundError: No module named 'html.parser'

See also:

Alternatives:

Make sure find_x.py files and find_x/__init__.py files do not have mass replace errors

  • Make sure find_x.py files and find_x/init.py files do not have mass replace errors like:
git clone https://github.com/mtanalyze/mtanalyze
  • caused by copying find_x from Hierosoft/hierosoft
  • also makes sure they don't say print("There is no {}".format(os.path.join(thisRepo, "linuxpreinstall")))
  • also make sure each has from __future__ import print_function

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.