jamf / Notifier

Swift project which can post macOS alert or banner notifications on 10.15+ clients
Apache License 2.0
125 stars 22 forks source link

open with arguments #23

Closed mietzen closed 9 months ago

mietzen commented 2 years ago

I want to do something like that: ./Notifier --type alert --message "My Message" --messagebutton "Open" --messagebuttonaction "/System/Applications/Utilities/Terminal.app ~/test.sh"

Unfortunately everything this doesn't work. It would also be nice to be able to pass option to open, like:

Options: 
      -a                    Opens with the specified application.
      -b                    Opens with the specified application bundle identifier.
      -e                    Opens with TextEdit.
      -t                    Opens with default text editor.
      -f                    Reads input from standard input and opens with TextEdit.
      -F  --fresh           Launches the app fresh, that is, without restoring windows. Saved persistent state is lost, excluding Untitled documents.
      -R, --reveal          Selects in the Finder instead of opening.
      -W, --wait-apps       Blocks until the used applications are closed (even if they were already running).
          --args            All remaining arguments are passed in argv to the application's main() function instead of opened.
      -n, --new             Open a new instance of the application even if one is already running.
      -j, --hide            Launches the app hidden.
      -g, --background      Does not bring the application to the foreground.
      -h, --header          Searches header file locations for headers matching the given filenames, and opens them.
      -s                    For -h, the SDK to use; if supplied, only SDKs whose names contain the argument value are searched.
                            Otherwise the highest versioned SDK in each platform is used.
      -u, --url URL         Open this URL, even if it matches exactly a filepath
      -i, --stdin  PATH     Launches the application with stdin connected to PATH; defaults to /dev/null
      -o, --stdout PATH     Launches the application with /dev/stdout connected to PATH; 
          --stderr PATH     Launches the application with /dev/stderr connected to PATH to
          --env    VAR      Add an enviroment variable to the launched process, where VAR is formatted AAA=foo or just AAA for a null string value.
mietzen commented 2 years ago

I tried debugging it, but I don't really get it. When sending ncCenter.add(ncRequest) the argument is still there so ncRequest._content._userinfo doesn't know what to do with that argument? But throws no error?

And am I right that this:

func openItem(globalOpenItem: [String]?, verboseMode: Bool) {
    if verboseMode {
        NSLog("Notifier Log: alert - opening %@", String(describing: globalOpenItem))
    }
    openItem:
    do {
        let task = Process()
        task.launchPath = "/usr/bin/open"
        task.arguments = globalOpenItem
        let outputPipe = Pipe()
        let errorPipe = Pipe()
        task.standardOutput = outputPipe
        task.standardError = errorPipe
        task.launch()
        if verboseMode {
            NSLog("Notifier Log: alert - opened %@", String(describing: globalOpenItem))
        }
    }
}

Is only used pre 10.15 with NSUserNotification?

Sorry this is the first time I touch swift.

macmule commented 9 months ago

Addressed in 3.0