Merge pull request #54 from pulsar-edit/rebrand-and-bump-electron-to-12
Rebrand and bump to electron to 12
114
.cirrus.yml
Normal file
@ -0,0 +1,114 @@
|
||||
linux_task:
|
||||
container:
|
||||
image: node:lts-slim
|
||||
memory: 8G
|
||||
test_script:
|
||||
- apt-get update
|
||||
- export DEBIAN_FRONTEND="noninteractive"
|
||||
- apt-get install -y
|
||||
rpm
|
||||
build-essential
|
||||
git
|
||||
libsecret-1-dev
|
||||
fakeroot
|
||||
libx11-dev
|
||||
libxkbfile-dev
|
||||
libgdk-pixbuf2.0-dev
|
||||
libgtk-3-dev
|
||||
libxss-dev
|
||||
libasound2-dev
|
||||
libnss3
|
||||
xvfb
|
||||
- git submodule init
|
||||
- git submodule update
|
||||
- sed -i -e "s/[0-9]*-dev/`date -u +%Y%m%d%H`/g" package.json
|
||||
- yarn install || yarn install
|
||||
- yarn build
|
||||
- yarn run build:apm
|
||||
- Xvfb :99 & DISPLAY=:99 PLAYWRIGHT_JUNIT_OUTPUT_NAME=report.xml npx playwright test --reporter=junit,list
|
||||
always:
|
||||
videos_artifacts:
|
||||
path: ./tests/videos/**
|
||||
junit_artifacts:
|
||||
path: report.xml
|
||||
type: text/xml
|
||||
format: junit
|
||||
build_binary_script:
|
||||
- yarn dist || rm dist && yarn dist
|
||||
binary_artifacts:
|
||||
path: ./binaries/*
|
||||
|
||||
silicon_mac_task:
|
||||
macos_instance:
|
||||
image: ghcr.io/cirruslabs/macos-monterey-base:latest
|
||||
memory: 8G
|
||||
test_script:
|
||||
- sed -i -e "s/[0-9]*-dev/`date -u +%Y%m%d%H`/g" package.json
|
||||
- brew install node@16 yarn git python
|
||||
- git submodule init
|
||||
- git submodule update
|
||||
- ln -s /opt/homebrew/bin/python3 /opt/homebrew/bin/python
|
||||
- export PATH="/opt/homebrew/bin:/opt/homebrew/opt/node@16/bin:$PATH"
|
||||
- yarn install || yarn install
|
||||
- yarn build
|
||||
- yarn run build:apm
|
||||
- PLAYWRIGHT_JUNIT_OUTPUT_NAME=report.xml npx playwright test --reporter=junit,list
|
||||
always:
|
||||
videos_artifacts:
|
||||
path: ./tests/videos/**
|
||||
junit_artifacts:
|
||||
path: report.xml
|
||||
type: text/xml
|
||||
format: junit
|
||||
build_arm_binary_script:
|
||||
- export PATH="/opt/homebrew/bin:/opt/homebrew/opt/node@16/bin:$PATH"
|
||||
- yarn dist || rm dist && yarn dist
|
||||
binary_artifacts:
|
||||
path: ./binaries/*
|
||||
build_x86_dependencies_script:
|
||||
- echo A | softwareupdate --install-rosetta
|
||||
- arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
|
||||
- export PATH="/usr/local/bin:$PATH"
|
||||
- arch -x86_64 brew install node@16 yarn git python
|
||||
- export PATH="/usr/local/opt/node@16/bin:/usr/local/bin/python3:$PATH"
|
||||
- yarn install || yarn install
|
||||
- ln -s /usr/local/opt/python3 /usr/local/bin/python
|
||||
- arch -x86_64 npx yarn install || arch -x86_64 npx yarn install
|
||||
- arch -x86_64 npx yarn build
|
||||
- arch -x86_64 npx yarn run build:apm
|
||||
dist_x86_binary_script:
|
||||
- export PATH="/opt/homebrew/bin:/opt/homebrew/opt/node@16/bin:$PATH"
|
||||
- sudo rm -rf /Library/Developer/CommandLineTools
|
||||
- arch -x86_64 xcode-select --install
|
||||
- arch -x86_64 npx yarn dist || rm dist && arch -x86_64 npx yarn dist
|
||||
binary_artifacts:
|
||||
path: ./binaries/*
|
||||
|
||||
windows_task:
|
||||
windows_container:
|
||||
image: cirrusci/windowsservercore:visualstudio2019-2021.12.07
|
||||
env:
|
||||
CIRRUS_SHELL: bash
|
||||
PATH: C:\Python310\Scripts\;C:\Python310\;%PATH%;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Users\User\AppData\Local\Microsoft\WindowsApps;C:\Users\User\AppData\Roaming\npm;C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\
|
||||
install_deps_script:
|
||||
- git submodule init
|
||||
- git submodule update
|
||||
- choco install nodejs --version=16.16.0 -y
|
||||
- choco install python git visualstudio2019-workload-vctools -y
|
||||
- npm config set python 'C:\Python310\python.exe'
|
||||
build_apm_script:
|
||||
- cd apm; npx yarn install || sleep 1 && npx yarn install || sleep 2 && npx yarn cache clean; npx yarn install || sleep 2 && npx yarn install || sleep 2 && npx yarn cache clean; npx yarn install || sleep 2 && npx yarn install
|
||||
- ./node_modules/pulsar-package-manager/bin/npm rebuild || sleep 1 && ./node_modules/pulsar-package-manager/bin/npm rebuild || sleep 2 && ./node_modules/pulsar-package-manager/bin/npm rebuild || sleep 4 && ./node_modules/pulsar-package-manager/bin/npm rebuild
|
||||
test_script:
|
||||
- npx yarn install --ignore-scripts || sleep 1 && npx yarn install --ignore-scripts || sleep 2 && npx yarn cache clean; npx yarn install --ignore-scripts || sleep 2 && npx yarn install --ignore-scripts || echo "Giving up"
|
||||
- rm -R node_modules/electron
|
||||
- npx yarn install || sleep 1 && npx yarn install || sleep 2 && npx yarn cache clean; npx yarn install || sleep 2 && npx yarn install || echo "Giving up"
|
||||
- npx yarn build
|
||||
# - npx playwright test --reporter=list
|
||||
videos_artifacts:
|
||||
path: tests\videos\**
|
||||
build_binary_script:
|
||||
- sed -i -e "s/[0-9]*-dev/`date -u +%Y%m%d%H`/g" package.json
|
||||
- npx yarn dist || npx yarn dist || npx yarn dist
|
||||
binary_artifacts:
|
||||
path: .\binaries\*
|
91
.github/workflows/package-tests-linux.yml
vendored
Normal file
@ -0,0 +1,91 @@
|
||||
name: Package tests for Pulsar on Linux
|
||||
on:
|
||||
- push
|
||||
- pull_request
|
||||
env:
|
||||
APM_PATH: ./apm/node_modules/atom-package-manager/bin/apm
|
||||
jobs:
|
||||
setup:
|
||||
name: setup
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Install windows-build-tools
|
||||
if: ${{ matrix.os == 'windows-latest' }}
|
||||
run: |
|
||||
npm i --global windows-build-tools@4.0.0
|
||||
npm config set msvs_version 2019
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: install dependencies
|
||||
run: yarn install
|
||||
|
||||
- name: build dependencies
|
||||
run: yarn build
|
||||
|
||||
- name: build dependencies
|
||||
run: yarn build:apm
|
||||
|
||||
- name: cache node module
|
||||
id: cache-node
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: node_modules
|
||||
key: linux-modules-${{ hashFiles('package.json') }}
|
||||
|
||||
- name: cache APM module
|
||||
id: cache-apm
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: apm
|
||||
key: linux-apm-${{ hashFiles('apm/package.json') }}
|
||||
|
||||
test:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- filter: autocomplete|language
|
||||
descr: syntax-related
|
||||
- filter: dark|light
|
||||
descr: themes
|
||||
- filter: git-diff|go-to-line|grammar-selector|line-ending-selector|autoflow|autosave|symbols-view|spell-check|bracket-matcher|whitespace|wrap-guide|snippets|encoding-selector
|
||||
descr: editor related
|
||||
- filter: deprecation-cop|dev-live-reload|incompatible-packages|package-generator|exception-reporting|metrics|update-package-dependencies|styleguide
|
||||
descr: development helpers
|
||||
- filter: welcome|about|background-tips|tabs|tree-view|archive-view|markdown-preview|status-bar|settings-view|notifications
|
||||
descr: UI elements
|
||||
- filter: image-view|bookmarks|keybinding-resolver|link|timecop
|
||||
descr: others
|
||||
fail-fast: false
|
||||
|
||||
name: test ${{ matrix.descr }} packages
|
||||
runs-on: ubuntu-20.04
|
||||
needs: setup
|
||||
steps:
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: restore node module
|
||||
id: restore-node
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: node_modules
|
||||
key: linux-modules-${{ hashFiles('package.json') }}
|
||||
|
||||
- name: cache APM module
|
||||
id: restore-apm
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: apm
|
||||
key: linux-apm-${{ hashFiles('apm/package.json') }}
|
||||
|
||||
- name: Run ${{ matrix.descr }} packages' tests
|
||||
uses: GabrielBB/xvfb-action@v1
|
||||
with:
|
||||
run: node -e "require('./script/run-package-tests')(/${{ matrix.filter }}/)"
|
37
.github/workflows/package-tests.yml
vendored
@ -1,37 +0,0 @@
|
||||
name: Package tests for Pulsar
|
||||
on:
|
||||
- push
|
||||
- pull_request
|
||||
jobs:
|
||||
tests:
|
||||
name: tests
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-20.04, macos-latest, windows-2019]
|
||||
fail-fast: false
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v2-beta
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- name: install dependencies
|
||||
run: yarn install
|
||||
|
||||
- name: build dependencies
|
||||
run: yarn build
|
||||
|
||||
- name: Run the tests on sane OSes
|
||||
uses: GabrielBB/xvfb-action@v1
|
||||
if: ${{ !contains(matrix.os, 'windows') }}
|
||||
with:
|
||||
run: node script/run-package-tests.js
|
||||
|
||||
- name: Run the tests on Windows
|
||||
if: ${{ contains(matrix.os, 'windows') }}
|
||||
continue-on-error: true # due to https://github.com/atom/github/pull/2459#issuecomment-624725972
|
||||
run: node script\run-package-tests.js
|
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
[submodule "ppm"]
|
||||
path = ppm
|
||||
url = https://github.com/pulsar-edit/ppm.git
|
@ -21,8 +21,8 @@ RUN apt-get update && \
|
||||
npm && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Update npm and dependencies
|
||||
RUN npm install -g npm --loglevel error
|
||||
COPY . /pulsar
|
||||
WORKDIR /pulsar
|
||||
|
||||
# Use python2 by default
|
||||
RUN npm config set python /usr/bin/python2 -g
|
||||
|
@ -1,5 +0,0 @@
|
||||
target=v12.18.3
|
||||
node-version=12.18.3
|
||||
package-lock=true
|
||||
prefer-frozen-lockfile=true
|
||||
strict-peer-dependencies=false
|
@ -1,2 +0,0 @@
|
||||
This folder is where [apm](https://github.com/atom/apm) is installed to so that
|
||||
it is bundled with Atom.
|
4608
apm/package-lock.json
generated
@ -1,11 +0,0 @@
|
||||
{
|
||||
"name": "pulsar-bundled-apm",
|
||||
"description": "Pulsar's bundled apm",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pulsar-edit/pulsar.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"ppm": "https://github.com/pulsar-edit/ppm.git"
|
||||
}
|
||||
}
|
4078
apm/yarn.lock
@ -2,4 +2,4 @@
|
||||
|
||||
On this directory, we can include things that we found out how they work, and how do we want to handle that in the future
|
||||
|
||||
- [Tree Sitter](tree-sitter.md), the tokenizer for the Atom Text Editor
|
||||
- [Tree Sitter](tree-sitter.md), the tokenizer for the Pulsar Text Editor
|
||||
|
2
dot-atom/.gitignore
vendored
@ -5,4 +5,4 @@ storage
|
||||
.apm
|
||||
.node-gyp
|
||||
.npm
|
||||
.atom-socket-secret-*
|
||||
.pulsar-socket-secret-*
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Your init script
|
||||
#
|
||||
# Atom will evaluate this file each time a new window is opened. It is run
|
||||
# Pulsar will evaluate this file each time a new window is opened. It is run
|
||||
# after packages are loaded/activated and after the previous editor state
|
||||
# has been restored.
|
||||
#
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Your keymap
|
||||
#
|
||||
# Atom keymaps work similarly to style sheets. Just as style sheets use
|
||||
# selectors to apply styles to elements, Atom keymaps use selectors to associate
|
||||
# Pulsar keymaps work similarly to style sheets. Just as style sheets use
|
||||
# selectors to apply styles to elements, Pulsar keymaps use selectors to associate
|
||||
# keystrokes with events in specific contexts. Unlike style sheets however,
|
||||
# each selector can only be declared once.
|
||||
#
|
||||
# You can create a new keybinding in this file by typing "key" and then hitting
|
||||
# tab.
|
||||
#
|
||||
# Here's an example taken from Atom's built-in keymap:
|
||||
# Here's an example taken from Pulsar's built-in keymap:
|
||||
#
|
||||
# 'atom-text-editor':
|
||||
# 'enter': 'editor:newline'
|
||||
@ -28,5 +28,5 @@
|
||||
#
|
||||
# This file uses CoffeeScript Object Notation (CSON).
|
||||
# If you are unfamiliar with CSON, you can read more about it in the
|
||||
# Atom Flight Manual:
|
||||
# Pulsar Flight Manual:
|
||||
# http://flight-manual.atom.io/using-atom/sections/basic-customization/#configuring-with-cson
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Your snippets
|
||||
#
|
||||
# Atom snippets allow you to enter a simple prefix in the editor and hit tab to
|
||||
# Pulsar snippets allow you to enter a simple prefix in the editor and hit tab to
|
||||
# expand the prefix into a larger code block with templated values.
|
||||
#
|
||||
# You can create a new snippet in this file by typing "snip" and then hitting
|
||||
@ -17,5 +17,5 @@
|
||||
#
|
||||
# This file uses CoffeeScript Object Notation (CSON).
|
||||
# If you are unfamiliar with CSON, you can read more about it in the
|
||||
# Atom Flight Manual:
|
||||
# Pulsar Flight Manual:
|
||||
# http://flight-manual.atom.io/using-atom/sections/basic-customization/#_cson
|
||||
|
53
integration/helpers.js
Normal file
@ -0,0 +1,53 @@
|
||||
const os = require('os')
|
||||
const path = require('path')
|
||||
const p = require('playwright')
|
||||
const electron = p._electron
|
||||
const { expect } = require('@playwright/test')
|
||||
|
||||
async function openAtom(profilePath, videoName) {
|
||||
const env = process.env
|
||||
env.ATOM_HOME = path.join("tmp", profilePath)
|
||||
env.APM_PATH = path.join("apm", "node_modules", "pulsar-package-manager", "bin", "apm")
|
||||
|
||||
const config = {
|
||||
args: ["--no-sandbox", "."],
|
||||
cwd: ".",
|
||||
env: env,
|
||||
timeout: 10000
|
||||
}
|
||||
if(process.env.CI) {
|
||||
config.recordVideo = {
|
||||
dir: path.join('tests', 'videos', videoName)
|
||||
}
|
||||
}
|
||||
const app = await electron.launch(config)
|
||||
const page = await app.firstWindow()
|
||||
await expect(page.locator('.tab-bar').first()).toBeVisible()
|
||||
|
||||
return {app, page}
|
||||
}
|
||||
|
||||
async function runCommand({page}, command) {
|
||||
if(os.platform() === 'darwin') {
|
||||
await page.locator('atom-workspace').press('Meta+Shift+p')
|
||||
} else {
|
||||
await page.locator('atom-workspace').press('Control+Shift+p')
|
||||
}
|
||||
await expect(page.locator('atom-panel.modal:visible')).toBeVisible()
|
||||
const palette = page.locator('.command-palette atom-text-editor.is-focused')
|
||||
await palette.type(command)
|
||||
await page.locator('.selected div', { hasText: command }).first().click()
|
||||
await expect(page.locator('.modal:visible')).toBeHidden()
|
||||
}
|
||||
|
||||
async function typeInEditor({page}, locator, text) {
|
||||
const editor = page.locator(`${locator} atom-text-editor.is-focused`)
|
||||
await expect(editor).toBeVisible()
|
||||
await editor.type(text)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
openAtom,
|
||||
runCommand,
|
||||
typeInEditor
|
||||
}
|
0
integration/videos/.gitkeep
Normal file
113
integration/workspace.spec.js
Normal file
@ -0,0 +1,113 @@
|
||||
const os = require('os')
|
||||
const {openAtom, runCommand, typeInEditor} = require('./helpers')
|
||||
const { test, expect } = require('@playwright/test')
|
||||
|
||||
const languages = [
|
||||
{language: "JavaScript", code: 'function aFunction() { 10 }', checks: {numeric: '10', name: 'aFunction'}},
|
||||
{language: "Ruby", code: 'def a_function\n 10\nend', checks: {numeric: '10', name: 'a_function'}},
|
||||
{language: "Java", code: 'public int blah { return 10; }', checks: {numeric: '10', type: 'int'}},
|
||||
{language: "C", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Clojure", code: '10', checks: {numeric: '10'}},
|
||||
{language: "CoffeeScript", code: '10', checks: {numeric: '10'}},
|
||||
{language: "C#", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "css", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "gfm", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "git", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Go", code: '10', checks: {numeric: '10'}},
|
||||
{language: "HTML", code: '<foo type="10"></foo>', checks: {string: '10'}},
|
||||
{language: "XML", code: '<foo type="10"></foo>', checks: {string: '"10"'}},
|
||||
// {language: "hyperlink", code: '10', checks: {numeric: '10'}},
|
||||
{language: "JSON", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "less", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "make", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "mustache", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Objective C", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Perl", code: '10', checks: {numeric: '10'}},
|
||||
{language: "PHP", code: '<? 10 %>', checks: {numeric: '10'}},
|
||||
// {language: "property-list", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Python", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Ruby on Rails", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Rust", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "sass", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Shell Script", code: 'a="10"', checks: {variable: 'a', string: '"10"'}},
|
||||
// {language: "source", code: '10', checks: {numeric: '10'}},
|
||||
{language: "SQL", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "text", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "todo", code: '10', checks: {numeric: '10'}},
|
||||
// {language: "toml", code: '10', checks: {numeric: '10'}},
|
||||
{language: "Typescript", code: '10', checks: {numeric: '10'}},
|
||||
{language: "YAML", code: 'a: 10', checks: {numeric: '10'}},
|
||||
]
|
||||
|
||||
let editor
|
||||
test.describe('Opening Atom for the first time', () => {
|
||||
test.beforeAll(async () => {
|
||||
editor = await openAtom("atom-home-tests", "opening-first-time")
|
||||
})
|
||||
|
||||
test.afterAll(async () => {
|
||||
const closing = editor.app.close()
|
||||
await closing
|
||||
})
|
||||
|
||||
test('the editor opens at the welcome page', async () => {
|
||||
const workspace = editor.page.locator('atom-workspace')
|
||||
await expect(workspace).toHaveText(/A hackable text editor/, {
|
||||
useInnerText: true,
|
||||
})
|
||||
})
|
||||
|
||||
// FIXME: mock backend, Atom's servers are unreliable!
|
||||
// test('allows to search for packages', async () => {
|
||||
// await runCommand(editor, 'Settings View: Open')
|
||||
// await editor.page.locator('a.icon', { hasText: 'Install' }).click()
|
||||
// await typeInEditor(editor, '.packages', "language-javascript")
|
||||
// await expect(editor.page.locator('.package-name', { hasText: 'language-javascript' }).first())
|
||||
// .toBeVisible()
|
||||
// })
|
||||
|
||||
test.describe('the editor have syntax highlight', async () => {
|
||||
test.beforeAll(async () => {
|
||||
const workspace = editor.page.locator('atom-workspace')
|
||||
await expect(workspace).toHaveText(/A hackable text editor/, {
|
||||
useInnerText: true,
|
||||
})
|
||||
await runCommand(editor, 'Tabs: Close All Tabs')
|
||||
})
|
||||
|
||||
test.afterEach(async () => {
|
||||
if(os.platform() === 'darwin') {
|
||||
await editor.page.keyboard.press('Meta+a')
|
||||
} else {
|
||||
await editor.page.keyboard.press('Control+a')
|
||||
}
|
||||
await editor.page.keyboard.press('Delete')
|
||||
await runCommand(editor, 'Tabs: Close Tab')
|
||||
})
|
||||
|
||||
languages.forEach(({language, code, checks}) => {
|
||||
test(`for ${language}`, async () => {
|
||||
await runCommand(editor, 'Application: New File')
|
||||
await editor.page.locator('atom-text-editor.is-focused').type(code)
|
||||
|
||||
await editor.page.locator('grammar-selector-status').click()
|
||||
const modalInput = editor.page.locator(".modal:visible atom-text-editor.is-focused")
|
||||
await modalInput.type(language)
|
||||
await modalInput.press('Enter')
|
||||
|
||||
await Promise.all(
|
||||
Object.keys(checks).map(k =>
|
||||
expect(syntaxElement(k, checks[k])).toHaveText(checks[k])
|
||||
)
|
||||
)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
function syntaxElement(kind, text) {
|
||||
return editor.page.locator(
|
||||
`atom-text-editor.is-focused .syntax--${kind}`,
|
||||
{ hasText: text }
|
||||
)
|
||||
}
|
@ -6,7 +6,7 @@
|
||||
'shift-end': 'editor:select-to-end-of-line'
|
||||
|
||||
'atom-text-editor:not([mini])':
|
||||
# Atom Specific
|
||||
# Pulsar Specific
|
||||
'ctrl-shift-c': 'editor:copy-path'
|
||||
'alt-up': 'editor:select-larger-syntax-node'
|
||||
'alt-down': 'editor:select-smaller-syntax-node'
|
||||
|
@ -17,7 +17,7 @@
|
||||
'ctrl-h': 'core:backspace'
|
||||
'ctrl-d': 'core:delete'
|
||||
|
||||
# Atom Specific
|
||||
# Pulsar Specific
|
||||
'enter': 'core:confirm'
|
||||
'escape': 'core:cancel'
|
||||
'up': 'core:move-up'
|
||||
@ -83,12 +83,12 @@
|
||||
'cmd--': 'window:decrease-font-size'
|
||||
'cmd-0': 'window:reset-font-size'
|
||||
|
||||
'cmd-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
|
||||
'cmd-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
|
||||
'cmd-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
|
||||
'cmd-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
|
||||
'cmd-k cmd-w': 'pane:close' # Atom Specific
|
||||
'cmd-k alt-cmd-w': 'pane:close-other-items' # Atom Specific
|
||||
'cmd-k up': 'pane:split-up-and-copy-active-item' # Pulsar Specific
|
||||
'cmd-k down': 'pane:split-down-and-copy-active-item' # Pulsar Specific
|
||||
'cmd-k left': 'pane:split-left-and-copy-active-item' # Pulsar Specific
|
||||
'cmd-k right': 'pane:split-right-and-copy-active-item' # Pulsar Specific
|
||||
'cmd-k cmd-w': 'pane:close' # Pulsar Specific
|
||||
'cmd-k alt-cmd-w': 'pane:close-other-items' # Pulsar Specific
|
||||
'cmd-k cmd-p': 'window:focus-previous-pane'
|
||||
'cmd-k cmd-n': 'window:focus-next-pane'
|
||||
'cmd-k cmd-up': 'window:focus-pane-above'
|
||||
@ -128,7 +128,7 @@
|
||||
'ctrl-e': 'editor:move-to-end-of-line'
|
||||
'ctrl-k': 'editor:cut-to-end-of-line'
|
||||
|
||||
# Atom Specific
|
||||
# Pulsar Specific
|
||||
'ctrl-shift-w': 'editor:select-word'
|
||||
'cmd-ctrl-left': 'editor:move-selection-left'
|
||||
'cmd-ctrl-right': 'editor:move-selection-right'
|
||||
@ -163,7 +163,7 @@
|
||||
'ctrl-alt-delete': 'editor:delete-to-end-of-subword'
|
||||
|
||||
'atom-workspace atom-text-editor:not([mini])':
|
||||
# Atom specific
|
||||
# Pulsar specific
|
||||
'alt-cmd-z': 'editor:checkout-head-revision'
|
||||
'cmd-<': 'editor:scroll-to-cursor'
|
||||
'alt-cmd-ctrl-f': 'editor:fold-selection'
|
||||
@ -186,8 +186,8 @@
|
||||
|
||||
'cmd-alt-[': 'editor:fold-current-row'
|
||||
'cmd-alt-]': 'editor:unfold-current-row'
|
||||
'cmd-alt-{': 'editor:fold-all' # Atom Specific
|
||||
'cmd-alt-}': 'editor:unfold-all' # Atom Specific
|
||||
'cmd-alt-{': 'editor:fold-all' # Pulsar Specific
|
||||
'cmd-alt-}': 'editor:unfold-all' # Pulsar Specific
|
||||
'cmd-k cmd-0': 'editor:unfold-all'
|
||||
'cmd-k cmd-1': 'editor:fold-at-indent-level-1'
|
||||
'cmd-k cmd-2': 'editor:fold-at-indent-level-2'
|
||||
|
@ -1,5 +1,5 @@
|
||||
'body':
|
||||
# Atom Specific
|
||||
# Pulsar Specific
|
||||
'enter': 'core:confirm'
|
||||
'escape': 'core:cancel'
|
||||
'up': 'core:move-up'
|
||||
@ -65,12 +65,12 @@
|
||||
'ctrl-_': 'window:decrease-font-size'
|
||||
'ctrl-0': 'window:reset-font-size'
|
||||
|
||||
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k ctrl-w': 'pane:close' # Atom Specific
|
||||
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Atom Specific
|
||||
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k ctrl-w': 'pane:close' # Pulsar Specific
|
||||
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Pulsar Specific
|
||||
'ctrl-k ctrl-p': 'window:focus-previous-pane'
|
||||
'ctrl-k ctrl-n': 'window:focus-next-pane'
|
||||
'ctrl-k ctrl-up': 'window:focus-pane-above'
|
||||
@ -114,7 +114,7 @@
|
||||
'ctrl-l': 'editor:select-line'
|
||||
|
||||
'atom-workspace atom-text-editor:not([mini])':
|
||||
# Atom specific
|
||||
# Pulsar specific
|
||||
'ctrl-<': 'editor:scroll-to-cursor'
|
||||
'ctrl-alt-shift-[': 'editor:fold-selection'
|
||||
|
||||
@ -133,8 +133,8 @@
|
||||
|
||||
'ctrl-alt-[': 'editor:fold-current-row'
|
||||
'ctrl-alt-]': 'editor:unfold-current-row'
|
||||
'ctrl-alt-{': 'editor:fold-all' # Atom Specific
|
||||
'ctrl-alt-}': 'editor:unfold-all' # Atom Specific
|
||||
'ctrl-alt-{': 'editor:fold-all' # Pulsar Specific
|
||||
'ctrl-alt-}': 'editor:unfold-all' # Pulsar Specific
|
||||
'ctrl-k ctrl-0': 'editor:unfold-all'
|
||||
'ctrl-k ctrl-1': 'editor:fold-at-indent-level-1'
|
||||
'ctrl-k ctrl-2': 'editor:fold-at-indent-level-2'
|
||||
|
@ -3,7 +3,7 @@
|
||||
'ctrl-pageup': 'pane:show-previous-item'
|
||||
'ctrl-pagedown': 'pane:show-next-item'
|
||||
|
||||
# Atom Specific
|
||||
# Pulsar Specific
|
||||
'enter': 'core:confirm'
|
||||
'escape': 'core:cancel'
|
||||
'up': 'core:move-up'
|
||||
@ -70,12 +70,12 @@
|
||||
'ctrl-_': 'window:decrease-font-size'
|
||||
'ctrl-0': 'window:reset-font-size'
|
||||
|
||||
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
|
||||
'ctrl-k ctrl-w': 'pane:close' # Atom Specific
|
||||
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Atom Specific
|
||||
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Pulsar Specific
|
||||
'ctrl-k ctrl-w': 'pane:close' # Pulsar Specific
|
||||
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Pulsar Specific
|
||||
'ctrl-k ctrl-p': 'window:focus-previous-pane'
|
||||
'ctrl-k ctrl-n': 'window:focus-next-pane'
|
||||
'ctrl-k ctrl-up': 'window:focus-pane-above'
|
||||
@ -119,7 +119,7 @@
|
||||
'ctrl-l': 'editor:select-line'
|
||||
|
||||
'atom-workspace atom-text-editor:not([mini])':
|
||||
# Atom specific
|
||||
# Pulsar specific
|
||||
'ctrl-<': 'editor:scroll-to-cursor'
|
||||
'ctrl-alt-shift-[': 'editor:fold-selection'
|
||||
|
||||
@ -136,8 +136,8 @@
|
||||
|
||||
'ctrl-alt-[': 'editor:fold-current-row'
|
||||
'ctrl-alt-]': 'editor:unfold-current-row'
|
||||
'ctrl-alt-{': 'editor:fold-all' # Atom Specific
|
||||
'ctrl-alt-}': 'editor:unfold-all' # Atom Specific
|
||||
'ctrl-alt-{': 'editor:fold-all' # Pulsar Specific
|
||||
'ctrl-alt-}': 'editor:unfold-all' # Pulsar Specific
|
||||
'ctrl-k ctrl-0': 'editor:unfold-all'
|
||||
'ctrl-k ctrl-1': 'editor:fold-at-indent-level-1'
|
||||
'ctrl-k ctrl-2': 'editor:fold-at-indent-level-2'
|
||||
|
@ -1,8 +1,8 @@
|
||||
'menu': [
|
||||
{
|
||||
label: 'Atom'
|
||||
label: 'Pulsar'
|
||||
submenu: [
|
||||
{ label: 'About Atom', command: 'application:about' }
|
||||
{ label: 'About Pulsar', command: 'application:about' }
|
||||
{ label: 'View License', command: 'application:open-license' }
|
||||
{ label: 'VERSION', enabled: false }
|
||||
{ label: 'Restart and Install Update', command: 'application:install-update', visible: false}
|
||||
@ -22,11 +22,11 @@
|
||||
{ type: 'separator' }
|
||||
{ label: 'Services', role: 'services', submenu: [] }
|
||||
{ type: 'separator' }
|
||||
{ label: 'Hide Atom', command: 'application:hide' }
|
||||
{ label: 'Hide Pulsar', command: 'application:hide' }
|
||||
{ label: 'Hide Others', command: 'application:hide-other-applications' }
|
||||
{ label: 'Show All', command: 'application:unhide-all-applications' }
|
||||
{ type: 'separator' }
|
||||
{ label: 'Quit Atom', command: 'application:quit' }
|
||||
{ label: 'Quit Pulsar', command: 'application:quit' }
|
||||
]
|
||||
}
|
||||
{
|
||||
|
@ -199,7 +199,7 @@
|
||||
{ label: 'Report Issue', command: 'application:report-issue' }
|
||||
{ label: 'Search Issues', command: 'application:search-issues' }
|
||||
{ type: 'separator' }
|
||||
{ label: 'About Atom', command: 'application:about' }
|
||||
{ label: 'About Pulsar', command: 'application:about' }
|
||||
{ type: 'separator' }
|
||||
]
|
||||
}
|
||||
|
@ -202,7 +202,7 @@
|
||||
{ label: 'Report Issue', command: 'application:report-issue' }
|
||||
{ label: 'Search Issues', command: 'application:search-issues' }
|
||||
{ type: 'separator' }
|
||||
{ label: 'About Atom', command: 'application:about' }
|
||||
{ label: 'About Pulsar', command: 'application:about' }
|
||||
{ type: 'separator' }
|
||||
]
|
||||
}
|
||||
|
36
package.json
@ -1,6 +1,8 @@
|
||||
{
|
||||
"name": "atom",
|
||||
"productName": "Atom",
|
||||
"name": "pulsar",
|
||||
"author": "Pulsar-Edit",
|
||||
"productName": "Pulsar",
|
||||
"author": "Pulsar Community <noreply@pulsar-edit.com>",
|
||||
"version": "1.63.0-dev",
|
||||
"description": "A hackable text editor for the 21st Century.",
|
||||
"branding": {
|
||||
@ -12,13 +14,13 @@
|
||||
"main": "./src/main-process/main.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/atom/atom.git"
|
||||
"url": "https://github.com/pulsar-edit/pulsar.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/atom/atom/issues"
|
||||
"url": "https://github.com/pulsar-edit/pulsar/issues"
|
||||
},
|
||||
"license": "MIT",
|
||||
"electronVersion": "11.5.0",
|
||||
"electronVersion": "12.2.3",
|
||||
"dependencies": {
|
||||
"@atom/fuzzy-native": "^1.2.1",
|
||||
"@atom/source-map-support": "^0.3.4",
|
||||
@ -39,8 +41,8 @@
|
||||
"autocomplete-plus": "https://codeload.github.com/atom/autocomplete-plus/legacy.tar.gz/refs/tags/v2.42.4",
|
||||
"autocomplete-snippets": "https://codeload.github.com/atom/autocomplete-snippets/legacy.tar.gz/refs/tags/v1.12.1",
|
||||
"autoflow": "file:packages/autoflow",
|
||||
"babel-preset-atomic": "^5.0.0",
|
||||
"autosave": "https://codeload.github.com/atom/autosave/legacy.tar.gz/refs/tags/v0.24.6",
|
||||
"babel-preset-atomic": "^5.0.0",
|
||||
"background-tips": "https://codeload.github.com/atom/background-tips/legacy.tar.gz/refs/tags/v0.28.0",
|
||||
"base16-tomorrow-dark-theme": "file:packages/base16-tomorrow-dark-theme",
|
||||
"base16-tomorrow-light-theme": "file:packages/base16-tomorrow-light-theme",
|
||||
@ -91,6 +93,7 @@
|
||||
"language-csharp": "file:packages/language-csharp",
|
||||
"language-gfm": "file:packages/language-gfm",
|
||||
"language-git": "file:packages/language-git",
|
||||
"language-go": "file:packages/language-go",
|
||||
"language-html": "file:packages/language-html",
|
||||
"language-hyperlink": "file:packages/language-hyperlink",
|
||||
"language-java": "file:packages/language-java",
|
||||
@ -119,7 +122,7 @@
|
||||
"language-yaml": "file:packages/language-yaml",
|
||||
"keybinding-resolver": "https://codeload.github.com/atom/keybinding-resolver/legacy.tar.gz/refs/tags/v0.39.1",
|
||||
"language-c": "file:packages/language-c",
|
||||
"language-css": "https://codeload.github.com/atom/language-css/legacy.tar.gz/refs/tags/v0.45.1",
|
||||
"language-css": "file:packages/language-css",
|
||||
"less-cache": "1.1.0",
|
||||
"line-ending-selector": "file:packages/line-ending-selector",
|
||||
"line-top-index": "0.3.1",
|
||||
@ -240,10 +243,10 @@
|
||||
"language-clojure": "file:./packages/language-clojure",
|
||||
"language-coffee-script": "file:./packages/language-coffee-script",
|
||||
"language-csharp": "file:./packages/language-csharp",
|
||||
"language-css": "0.45.1",
|
||||
"language-css": "file:./packages/language-css",
|
||||
"language-gfm": "file:./packages/language-gfm",
|
||||
"language-git": "file:./packages/language-git",
|
||||
"language-go": "0.47.2",
|
||||
"language-go": "file:./packages/language-go",
|
||||
"language-html": "file:./packages/language-html",
|
||||
"language-hyperlink": "file:./packages/language-hyperlink",
|
||||
"language-java": "file:./packages/language-java",
|
||||
@ -276,8 +279,9 @@
|
||||
"preinstall": "node -e 'process.exit(0)'",
|
||||
"test": "node script/test",
|
||||
"build": "electron-rebuild",
|
||||
"build:apm": "cd apm && yarn install && ./node_modules/ppm/bin/npm rebuild && cd ./node_modules/git-utils && npm run prepare && npm install",
|
||||
"start": "electron --enable-logging . -f"
|
||||
"build:apm": "cd ppm && yarn install",
|
||||
"start": "electron --enable-logging . -f",
|
||||
"dist": "node script/electron-builder.js"
|
||||
},
|
||||
"standard-engine": "./script/node_modules/standard",
|
||||
"standard": {
|
||||
@ -293,9 +297,13 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "11.5.0",
|
||||
"@playwright/test": "1.22.2",
|
||||
"electron": "12.2.3",
|
||||
"electron-builder": "23.3.1",
|
||||
"electron-rebuild": "3.2.7",
|
||||
"random-seed": "^0.3.0",
|
||||
"webdriverio": "^7.20.9"
|
||||
"random-seed": "0.3.0",
|
||||
"webdriverio": "7.20.9",
|
||||
"playwright": "1.22.2",
|
||||
"playwright-core": "1.22.2"
|
||||
}
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ module.exports = class AboutStatusBar extends EtchComponent {
|
||||
this.subscriptions.add(
|
||||
atom.tooltips.add(this.element, {
|
||||
title:
|
||||
'An update will be installed the next time Atom is relaunched.<br/><br/>Click the squirrel icon for more information.'
|
||||
'An update will be installed the next time Pulsar is relaunched.<br/><br/>Click the squirrel icon for more information.'
|
||||
})
|
||||
);
|
||||
}
|
||||
|
@ -200,8 +200,8 @@ module.exports = class AboutView extends EtchComponent {
|
||||
{ className: 'about-credits group-item' },
|
||||
$.span({ className: 'inline' }, 'And the awesome '),
|
||||
$.a(
|
||||
{ href: 'https://github.com/atom/atom/contributors' },
|
||||
'Atom Community'
|
||||
{ href: 'https://github.com/pulsar-edit/pulsar/contributors' },
|
||||
'Pulsar community'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
@ -50,7 +50,7 @@ module.exports = class UpdateView extends EtchComponent {
|
||||
'about-updates-item is-shown about-default-update-message'
|
||||
},
|
||||
this.props.updateManager.getAutoUpdatesEnabled()
|
||||
? 'Atom will check for updates automatically'
|
||||
? 'Pulsar will check for updates automatically'
|
||||
: 'Automatic updates are disabled please check manually'
|
||||
);
|
||||
break;
|
||||
@ -96,7 +96,7 @@ module.exports = class UpdateView extends EtchComponent {
|
||||
$.span({ className: 'icon icon-check' }),
|
||||
$.span(
|
||||
{ className: 'about-updates-label is-strong' },
|
||||
'Atom is up to date!'
|
||||
'Pulsar is up to date!'
|
||||
)
|
||||
);
|
||||
break;
|
||||
|
@ -133,8 +133,8 @@ let UpdateManager = class UpdateManager {
|
||||
}
|
||||
|
||||
const releaseRepo =
|
||||
appVersion.indexOf('nightly') > -1 ? 'atom-nightly-releases' : 'atom';
|
||||
return `https://github.com/atom-ide-community/${releaseRepo}/releases/tag/${appVersion}`;
|
||||
appVersion.indexOf('nightly') > -1 ? 'pulsar-nightly-releases' : 'pulsar';
|
||||
return `https://github.com/pulsar-edit/${releaseRepo}/releases/tag/${appVersion}`;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "base16-tomorrow-dark-theme",
|
||||
"theme": "syntax",
|
||||
"version": "1.6.0",
|
||||
"description": "Base16 dark theme for Pulsar",
|
||||
"description": "Base16 dark theme developed for Atom, repurposed for Pulsar",
|
||||
"keywords": [
|
||||
"base16",
|
||||
"dark",
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "base16-tomorrow-light-theme",
|
||||
"theme": "syntax",
|
||||
"version": "1.6.0",
|
||||
"description": "Base16 light theme for Pulsar",
|
||||
"description": "Base16 light theme developed for Atom, repurposed for Pulsar",
|
||||
"keywords": [
|
||||
"base16",
|
||||
"light",
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "dalek",
|
||||
"main": "./lib/main",
|
||||
"version": "0.2.2",
|
||||
"description": "EXTERMINATEs built-in packages installed in ~/.atom/packages",
|
||||
"description": "EXTERMINATEs built-in packages installed in ~/.pulsar/packages",
|
||||
"keywords": [],
|
||||
"repository": "https://github.com/pulsar-edit/pulsar",
|
||||
"license": "MIT",
|
||||
|
@ -20,14 +20,14 @@ describe('dalek', function() {
|
||||
'an-unduplicated-installed-package': path.join(
|
||||
'Users',
|
||||
'username',
|
||||
'.atom',
|
||||
'.pulsar',
|
||||
'packages',
|
||||
'an-unduplicated-installed-package'
|
||||
),
|
||||
'duplicated-package': path.join(
|
||||
'Users',
|
||||
'username',
|
||||
'.atom',
|
||||
'.pulsar',
|
||||
'packages',
|
||||
'duplicated-package'
|
||||
),
|
||||
@ -40,7 +40,7 @@ describe('dalek', function() {
|
||||
|
||||
atom.devMode = false;
|
||||
bundledPackages = ['duplicated-package', 'unduplicated-package'];
|
||||
packageDirPaths = [path.join('Users', 'username', '.atom', 'packages')];
|
||||
packageDirPaths = [path.join('Users', 'username', '.pulsar', 'packages')];
|
||||
sandbox = sinon.createSandbox();
|
||||
sandbox
|
||||
.stub(dalek, 'realpath')
|
||||
@ -88,7 +88,7 @@ describe('dalek', function() {
|
||||
const packagePath = path.join(
|
||||
'Users',
|
||||
'username',
|
||||
'.atom',
|
||||
'.pulsar',
|
||||
'packages',
|
||||
'duplicated-package'
|
||||
);
|
||||
|
@ -114,6 +114,7 @@ export default class DeprecationCopView {
|
||||
if (packageNames.length === 0) {
|
||||
return <li className="list-item">No deprecated calls</li>;
|
||||
} else {
|
||||
//TODO_PULSAR: Validate 'atom core'
|
||||
return packageNames.sort().map(packageName => (
|
||||
<li className="deprecation list-nested-item collapsed">
|
||||
<div
|
||||
@ -481,8 +482,8 @@ export default class DeprecationCopView {
|
||||
const packagePaths = this.getPackagePathsByPackageName();
|
||||
for (const [packageName, packagePath] of packagePaths) {
|
||||
if (
|
||||
packagePath.includes('.atom/dev/packages') ||
|
||||
packagePath.includes('.atom/packages')
|
||||
packagePath.includes('.pulsar/dev/packages') ||
|
||||
packagePath.includes('.pulsar/packages')
|
||||
) {
|
||||
packagePaths.set(packageName, fs.absolute(packagePath));
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "dev-live-reload",
|
||||
"main": "./lib/main",
|
||||
"version": "0.48.1",
|
||||
"description": "Live reload atom themes and packages.",
|
||||
"description": "Live reload Pulsar themes and packages.",
|
||||
"repository": "https://github.com/pulsar-edit/pulsar",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
@ -29,7 +29,7 @@ export default class Reporter {
|
||||
return {
|
||||
apiKey: API_KEY,
|
||||
notifier: {
|
||||
name: 'Atom',
|
||||
name: 'Pulsar',
|
||||
version: LIB_VERSION,
|
||||
url: 'https://www.atom.io'
|
||||
},
|
||||
@ -239,7 +239,7 @@ export default class Reporter {
|
||||
) {
|
||||
this.requestPrivateMetadataConsent(
|
||||
error,
|
||||
'The Atom team would like to collect the following information to resolve this error:',
|
||||
'The Pulsar team would like to collect the following information to resolve this error:',
|
||||
error => this.reportUncaughtException(error)
|
||||
);
|
||||
return;
|
||||
@ -263,7 +263,7 @@ export default class Reporter {
|
||||
) {
|
||||
this.requestPrivateMetadataConsent(
|
||||
error,
|
||||
'The Atom team would like to collect some information to resolve an unexpected condition:',
|
||||
'The Pulsar team would like to collect some information to resolve an unexpected condition:',
|
||||
error => this.reportFailedAssertion(error)
|
||||
);
|
||||
return;
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "exception-reporting",
|
||||
"main": "./lib/main",
|
||||
"version": "0.43.1",
|
||||
"description": "Reports uncaught Atom exceptions to the Atom team via bugsnag.com",
|
||||
"description": "Reports uncaught Pulsar exceptions to the Pulsar team via bugsnag.com",
|
||||
"repository": "https://github.com/pulsar-edit/pulsar",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
|
@ -44,7 +44,7 @@ describe('Reporter', () => {
|
||||
});
|
||||
|
||||
describe('.reportUncaughtException(error)', () => {
|
||||
it('posts errors originated inside Atom Core to BugSnag', () => {
|
||||
it('posts errors originated inside Pulsar Core to BugSnag', () => {
|
||||
const repositoryRootPath = path.join(__dirname, '..');
|
||||
reporter = new Reporter({
|
||||
request: (url, options) =>
|
||||
@ -68,7 +68,7 @@ describe('Reporter', () => {
|
||||
expect(request.url).toBe('https://notify.bugsnag.com');
|
||||
expect(request.headers.get('Content-Type')).toBe('application/json');
|
||||
let body = JSON.parse(request.body);
|
||||
// Delete `inProject` field because tests may fail when run as part of Atom core
|
||||
// Delete `inProject` field because tests may fail when run as part of Pulsar Core
|
||||
// (i.e. when this test file will be located under `node_modules/exception-reporting/spec`)
|
||||
delete body.events[0].exceptions[0].stacktrace[0].inProject;
|
||||
|
||||
@ -112,7 +112,7 @@ describe('Reporter', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('posts errors originated outside Atom Core to BugSnag', () => {
|
||||
it('posts errors originated outside Pulsar Core to BugSnag', () => {
|
||||
fs.getHomeDirectory = () => path.join(__dirname, '..', '..');
|
||||
|
||||
let error = new Error();
|
||||
@ -129,7 +129,7 @@ describe('Reporter', () => {
|
||||
expect(request.url).toBe('https://notify.bugsnag.com');
|
||||
expect(request.headers.get('Content-Type')).toBe('application/json');
|
||||
let body = JSON.parse(request.body);
|
||||
// Delete `inProject` field because tests may fail when run as part of Atom core
|
||||
// Delete `inProject` field because tests may fail when run as part of Pulsar Core
|
||||
// (i.e. when this test file will be located under `node_modules/exception-reporting/spec`)
|
||||
delete body.events[0].exceptions[0].stacktrace[0].inProject;
|
||||
|
||||
@ -335,7 +335,7 @@ describe('Reporter', () => {
|
||||
expect(request.url).toBe('https://notify.bugsnag.com');
|
||||
expect(request.headers.get('Content-Type')).toBe('application/json');
|
||||
let body = JSON.parse(request.body);
|
||||
// Delete `inProject` field because tests may fail when run as part of Atom core
|
||||
// Delete `inProject` field because tests may fail when run as part of Pulsar Core
|
||||
// (i.e. when this test file will be located under `node_modules/exception-reporting/spec`)
|
||||
delete body.events[0].exceptions[0].stacktrace[0].inProject;
|
||||
|
||||
|
@ -66,9 +66,9 @@ export default class IncompatiblePackagesComponent {
|
||||
return (
|
||||
<div className={'alert icon ' + alertClass}>
|
||||
{this.rebuiltPackageCount} of {this.incompatiblePackages.length}{' '}
|
||||
packages were rebuilt successfully. Reload Atom to activate them.
|
||||
packages were rebuilt successfully. Reload Pulsar to activate them.
|
||||
<button ref="reloadButton" className="btn pull-right">
|
||||
Reload Atom
|
||||
Reload Pulsar
|
||||
</button>
|
||||
</div>
|
||||
);
|
||||
@ -76,7 +76,7 @@ export default class IncompatiblePackagesComponent {
|
||||
return (
|
||||
<div className="alert alert-danger icon icon-bug">
|
||||
Some installed packages could not be loaded because they contain
|
||||
native modules that were compiled for an earlier version of Atom.
|
||||
native modules that were compiled for an earlier version of Pulsar.
|
||||
<button
|
||||
ref="rebuildButton"
|
||||
className="btn pull-right"
|
||||
|
@ -1 +1 @@
|
||||
See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
|
||||
See the [Pulsar contributing guide](https://github.com/pulsar-edit/.github/blob/main/CONTRIBUTING.md)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# C/C++ language support in Atom
|
||||
# C/C++ language support in Pulsar
|
||||
![CI Status](https://github.com/atom/language-c/actions/workflows/main.yml/badge.svg)
|
||||
|
||||
Adds syntax highlighting and snippets to C/C++ files in Atom.
|
||||
Adds syntax highlighting and snippets to C/C++ files in Pulsar.
|
||||
|
||||
Originally [converted](http://flight-manual.atom.io/hacking-atom/sections/converting-from-textmate)
|
||||
from the [C TextMate bundle](https://github.com/textmate/c.tmbundle).
|
||||
|
@ -20,7 +20,7 @@
|
||||
"node": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"tree-sitter-c": "0.20.1",
|
||||
"tree-sitter-c": "0.20.2",
|
||||
"tree-sitter-cpp": "0.20.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -1,7 +1,7 @@
|
||||
# Clojure language support in Atom
|
||||
# Clojure language support in Pulsar
|
||||
[![macOS Build Status](https://travis-ci.org/atom/language-clojure.svg?branch=master)](https://travis-ci.org/atom/language-clojure) [![Build status](https://ci.appveyor.com/api/projects/status/6kd5fs48y5hixde6/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-clojure/branch/master) [![Dependency Status](https://david-dm.org/atom/language-clojure.svg)](https://david-dm.org/atom/language-clojure)
|
||||
|
||||
Adds syntax highlighting to Clojure files in Atom.
|
||||
Adds syntax highlighting to Clojure files in Pulsar.
|
||||
|
||||
Originally [converted](http://flight-manual.atom.io/hacking-atom/sections/converting-from-textmate)
|
||||
from the [Clojure TextMate bundle](https://github.com/mmcgrana/textmate-clojure).
|
||||
|
@ -1,8 +1,8 @@
|
||||
# CoffeeScript language support in Atom
|
||||
# CoffeeScript language support in Pulsar
|
||||
[![macOS Build Status](https://travis-ci.org/atom/language-coffee-script.svg?branch=master)](https://travis-ci.org/atom/language-coffee-script)
|
||||
[![Windows Build status](https://ci.appveyor.com/api/projects/status/4j9aak7iwn2f2x7a/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-coffee-script/branch/master) [![Dependency Status](https://david-dm.org/atom/language-coffee-script.svg)](https://david-dm.org/atom/language-coffee-script)
|
||||
|
||||
Adds syntax highlighting and snippets to CoffeeScript files in Atom.
|
||||
Adds syntax highlighting and snippets to CoffeeScript files in Pulsar.
|
||||
|
||||
Originally [converted](http://flight-manual.atom.io/hacking-atom/sections/converting-from-textmate) from the [CoffeeScript TextMate bundle](https://github.com/jashkenas/coffee-script-tmbundle).
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
# C# language support in Atom
|
||||
# C# language support in Pulsar
|
||||
[![macOS Build Status](https://travis-ci.org/atom/language-csharp.svg?branch=master)](https://travis-ci.org/atom/language-csharp)
|
||||
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/j1as3753y5t90obn/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-csharp/branch/master) [![Dependency Status](https://david-dm.org/atom/language-csharp.svg)](https://david-dm.org/atom/language-csharp)
|
||||
|
||||
Adds syntax highlighting and snippets to C# files in Atom.
|
||||
Adds syntax highlighting and snippets to C# files in Pulsar.
|
||||
|
||||
The C# grammar comes from the [.NET Foundation's C# grammar](https://github.com/dotnet/csharp-tmLanguage)
|
||||
|
||||
|
@ -1 +1 @@
|
||||
See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
|
||||
See the [Pulsar contributing guide](https://github.com/pulsar-edit/.github/blob/main/CONTRIBUTING.md)
|
||||
|
@ -1,7 +1,7 @@
|
||||
# CSS language support in Atom
|
||||
# CSS language support in Pulsar
|
||||
![CI Status](https://github.com/atom/language-css/actions/workflows/main.yml/badge.svg)
|
||||
|
||||
Adds syntax highlighting, completions, and snippets to CSS files in Atom.
|
||||
Adds syntax highlighting, completions, and snippets to CSS files in Pulsar.
|
||||
|
||||
Originally [converted](http://flight-manual.atom.io/hacking-atom/sections/converting-from-textmate)
|
||||
from the [CSS TextMate bundle](https://github.com/textmate/css.tmbundle).
|
||||
|
@ -1 +1 @@
|
||||
See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
|
||||
See the [Pulsar contributing guide](https://github.com/pulsar-edit/.github/blob/main/CONTRIBUTING.md)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# GitHub flavored Markdown package
|
||||
[![OS X Build Status](https://travis-ci.org/atom/language-gfm.svg?branch=master)](https://travis-ci.org/atom/language-gfm) [![Windows Build Status](https://ci.appveyor.com/api/projects/status/rpub8qjyd8lt7wai/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-gfm/branch/master) [![Dependency Status](https://david-dm.org/atom/language-gfm.svg)](https://david-dm.org/atom/language-gfm)
|
||||
|
||||
Adds syntax highlighting and snippets to [GitHub flavored Markdown](https://help.github.com/articles/github-flavored-markdown) files in Atom.
|
||||
Adds syntax highlighting and snippets to [GitHub flavored Markdown](https://help.github.com/articles/github-flavored-markdown) files in Pulsar.
|
||||
|
||||
Contributions are greatly appreciated. Please fork this repository and open a pull request to add snippets, make grammar tweaks, etc.
|
||||
|
@ -1 +1 @@
|
||||
See the [Atom contributing guide](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
|
||||
See the [Pulsar contributing guide](https://github.com/pulsar-edit/.github/blob/main/CONTRIBUTING.md)
|
||||
|
@ -1,11 +1,11 @@
|
||||
# Git editing support in Atom
|
||||
# Git editing support in Pulsar
|
||||
[![macOS Build Status](https://travis-ci.org/atom/language-git.svg?branch=master)](https://travis-ci.org/atom/language-git)
|
||||
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/481319gyrr1feo8b/branch/master?svg=true)](https://ci.appveyor.com/project/Atom/language-git/branch/master)
|
||||
[![Dependency Status](https://david-dm.org/atom/language-git.svg)](https://david-dm.org/atom/language-git)
|
||||
|
||||
Adds syntax highlighting to Git commit, merge, and rebase messages edited in Atom.
|
||||
Adds syntax highlighting to Git commit, merge, and rebase messages edited in Pulsar.
|
||||
|
||||
You can configure Atom to be your Git editor with the following command:
|
||||
You can configure Pulsar to be your Git editor with the following command:
|
||||
|
||||
```sh
|
||||
git config --global core.editor "atom --wait"
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "one-light-syntax",
|
||||
"theme": "syntax",
|
||||
"version": "1.8.4",
|
||||
"description": "Pulsar One light syntax theme",
|
||||
"description": "One light syntax theme developed for Atom, repurposed for Pulsar",
|
||||
"keywords": [
|
||||
"light",
|
||||
"syntax"
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "one-light-ui",
|
||||
"theme": "ui",
|
||||
"version": "1.12.5",
|
||||
"description": "Pulsar One light UI theme",
|
||||
"description": "One light UI theme developed for Atom, repurposed for Pulsar",
|
||||
"keywords": [
|
||||
"light",
|
||||
"adaptive",
|
||||
|
@ -380,7 +380,7 @@ export default class GuideView {
|
||||
|
||||
getApplicationMenuName() {
|
||||
if (process.platform === 'darwin') {
|
||||
return 'Atom';
|
||||
return 'Pulsar';
|
||||
} else if (process.platform === 'linux') {
|
||||
return 'Edit';
|
||||
} else {
|
||||
@ -450,17 +450,17 @@ export default class GuideView {
|
||||
|
||||
didClickStylingButton() {
|
||||
this.props.reporterProxy.sendEvent('clicked-styling-cta');
|
||||
atom.workspace.open('atom://.atom/stylesheet', { split: 'left' });
|
||||
atom.workspace.open('atom://.pulsar/stylesheet', { split: 'left' });
|
||||
}
|
||||
|
||||
didClickInitScriptButton() {
|
||||
this.props.reporterProxy.sendEvent('clicked-init-script-cta');
|
||||
atom.workspace.open('atom://.atom/init-script', { split: 'left' });
|
||||
atom.workspace.open('atom://.pulsar/init-script', { split: 'left' });
|
||||
}
|
||||
|
||||
didClickSnippetsButton() {
|
||||
this.props.reporterProxy.sendEvent('clicked-snippets-cta');
|
||||
atom.workspace.open('atom://.atom/snippets', { split: 'left' });
|
||||
atom.workspace.open('atom://.pulsar/snippets', { split: 'left' });
|
||||
}
|
||||
|
||||
didClickTeletypeButton() {
|
||||
|
@ -99,7 +99,7 @@ export default class WelcomeView {
|
||||
<ul>
|
||||
<li>
|
||||
The{' '}
|
||||
// TODO: Update to our docs or test {atom.branding.urlWeb}+"/docs"
|
||||
{/* // TODO_PULSAR: Update to our docs or test {atom.branding.urlWeb}+"/docs" */}
|
||||
<a
|
||||
href="https://www.atom.io/docs"
|
||||
dataset={{ event: 'atom-docs' }}
|
||||
|
8
playwright.config.ts
Normal file
@ -0,0 +1,8 @@
|
||||
module.exports = {
|
||||
testDir: 'integration',
|
||||
timeout: 60000,
|
||||
expect: {
|
||||
timeout: 25000,
|
||||
toMatchSnapshot: {threshold: 0.2},
|
||||
}
|
||||
}
|
1
ppm
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 46d8338fb258d5265ab2248f3218b01f750d802f
|
@ -10,13 +10,13 @@ else
|
||||
fi
|
||||
|
||||
case $(basename $0) in
|
||||
atom-beta)
|
||||
pulsar-beta)
|
||||
CHANNEL=beta
|
||||
;;
|
||||
atom-nightly)
|
||||
pulsar-nightly)
|
||||
CHANNEL=nightly
|
||||
;;
|
||||
atom-dev)
|
||||
pulsar-dev)
|
||||
CHANNEL=dev
|
||||
;;
|
||||
*)
|
||||
@ -87,7 +87,7 @@ if [ $REDIRECT_STDERR ]; then
|
||||
exec 2> /dev/null
|
||||
fi
|
||||
|
||||
ATOM_HOME="${ATOM_HOME:-$HOME/.atom}"
|
||||
ATOM_HOME="${ATOM_HOME:-$HOME/.pulsar}"
|
||||
mkdir -p "$ATOM_HOME"
|
||||
|
||||
if [ $OS == 'Mac' ]; then
|
||||
@ -110,13 +110,13 @@ if [ $OS == 'Mac' ]; then
|
||||
else
|
||||
# Else choose it from the inferred channel name
|
||||
if [ "$CHANNEL" == 'beta' ]; then
|
||||
ATOM_EXECUTABLE_NAME="Atom Beta"
|
||||
ATOM_EXECUTABLE_NAME="Pulsar Beta"
|
||||
elif [ "$CHANNEL" == 'nightly' ]; then
|
||||
ATOM_EXECUTABLE_NAME="Atom Nightly"
|
||||
ATOM_EXECUTABLE_NAME="Pulsar Nightly"
|
||||
elif [ "$CHANNEL" == 'dev' ]; then
|
||||
ATOM_EXECUTABLE_NAME="Atom Dev"
|
||||
ATOM_EXECUTABLE_NAME="Pulsar Dev"
|
||||
else
|
||||
ATOM_EXECUTABLE_NAME="Atom"
|
||||
ATOM_EXECUTABLE_NAME="Pulsar"
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -127,10 +127,10 @@ if [ $OS == 'Mac' ]; then
|
||||
elif [ -x "$HOME/Applications/$ATOM_APP_NAME" ]; then
|
||||
ATOM_PATH="$HOME/Applications"
|
||||
else
|
||||
# We haven't found an Atom.app, use spotlight to search for Atom
|
||||
ATOM_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'com.github.atom'" | grep -v ShipIt | head -1 | xargs -0 dirname)"
|
||||
# We haven't found an Pulsar.app, use spotlight to search for Pulsar
|
||||
ATOM_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'com.github.pulsar'" | grep -v ShipIt | head -1 | xargs -0 dirname)"
|
||||
|
||||
# Exit if Atom can't be found
|
||||
# Exit if Pulsar can't be found
|
||||
if [ ! -x "$ATOM_PATH/$ATOM_APP_NAME" ]; then
|
||||
echo "Cannot locate ${ATOM_APP_NAME}, it is usually located in /Applications. Set the ATOM_PATH environment variable to the directory containing ${ATOM_APP_NAME}."
|
||||
exit 1
|
||||
@ -155,27 +155,27 @@ elif [ $OS == 'Linux' ]; then
|
||||
|
||||
case $CHANNEL in
|
||||
beta)
|
||||
ATOM_PATH="$USR_DIRECTORY/share/atom-beta/atom"
|
||||
ATOM_PATH="$USR_DIRECTORY/share/pulsar-beta/pulsar"
|
||||
;;
|
||||
nightly)
|
||||
ATOM_PATH="$USR_DIRECTORY/share/atom-nightly/atom"
|
||||
ATOM_PATH="$USR_DIRECTORY/share/pulsar-nightly/pulsar"
|
||||
;;
|
||||
dev)
|
||||
ATOM_PATH="$USR_DIRECTORY/share/atom-dev/atom"
|
||||
ATOM_PATH="$USR_DIRECTORY/share/pulsar-dev/pulsar"
|
||||
;;
|
||||
*)
|
||||
ATOM_PATH="$USR_DIRECTORY/share/atom/atom"
|
||||
ATOM_PATH="$USR_DIRECTORY/share/pulsar/pulsar"
|
||||
;;
|
||||
esac
|
||||
|
||||
#Will allow user to get context menu on cinnamon desktop enviroment
|
||||
if [[ "$(expr substr $(printenv | grep "DESKTOP_SESSION=") 17 8)" == "cinnamon" ]]; then
|
||||
cp "resources/linux/desktopenviroment/cinnamon/atom.nemo_action" "/usr/share/nemo/actions/atom.nemo_action"
|
||||
cp "resources/linux/desktopenviroment/cinnamon/pulsar.nemo_action" "/usr/share/nemo/actions/pulsar.nemo_action"
|
||||
fi
|
||||
|
||||
: ${TMPDIR:=/tmp}
|
||||
|
||||
[ -x "$ATOM_PATH" ] || ATOM_PATH="$TMPDIR/atom-build/Atom/atom"
|
||||
[ -x "$ATOM_PATH" ] || ATOM_PATH="$TMPDIR/pulsar-build/Pulsar/pulsar"
|
||||
|
||||
if [ $EXPECT_OUTPUT ]; then
|
||||
"$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@"
|
||||
@ -196,13 +196,13 @@ elif [ $OS == 'Linux' ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
# Exits this process when Atom is used as $EDITOR
|
||||
# Exits this process when Pulsar is used as $EDITOR
|
||||
on_die() {
|
||||
exit 0
|
||||
}
|
||||
trap 'on_die' SIGQUIT SIGTERM
|
||||
|
||||
# If the wait flag is set, don't exit this process until Atom kills it.
|
||||
# If the wait flag is set, don't exit this process until Pulsar kills it.
|
||||
if [ $WAIT ]; then
|
||||
WAIT_FIFO="$ATOM_HOME/.wait_fifo"
|
||||
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 148 KiB |
Before Width: | Height: | Size: 146 KiB After Width: | Height: | Size: 146 KiB |
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 150 KiB After Width: | Height: | Size: 150 KiB |
@ -9,4 +9,4 @@ Architecture: <%= arch %>
|
||||
Installed-Size: <%= installedSize %>
|
||||
Maintainer: GitHub <atom@github.com>
|
||||
Description: <%= description %>
|
||||
Atom is a free and open source text editor that is modern, approachable, and hackable to the core.
|
||||
Pulsar is a free and open source text editor that is modern, approachable, and hackable to the core.
|
||||
|
@ -1,9 +1,9 @@
|
||||
[Nemo Action]
|
||||
Active=true
|
||||
Name=Open in Atom
|
||||
Comment=Open in Atom
|
||||
Name=Open in Pulsar
|
||||
Comment=Open in Pulsar
|
||||
#%U is the current selected file, this will also work on current directory
|
||||
Exec=atom -n %U
|
||||
Icon-Name=atom
|
||||
Exec=pulsar -n %U
|
||||
Icon-Name=pulsar
|
||||
Selection=any
|
||||
Extensions=any
|
@ -3,7 +3,7 @@
|
||||
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
|
||||
"http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd">
|
||||
<policyconfig>
|
||||
<vendor>Atom</vendor>
|
||||
<vendor>Pulsar</vendor>
|
||||
<action id="atom.pkexec.dd">
|
||||
<description gettext-domain="atom">Admin privileges required</description>
|
||||
<message gettext-domain="atom">Please enter your password to save this file</message>
|
@ -26,7 +26,7 @@ mkdir -p "%{buildroot}/<%= installDir %>/share/<%= appFileName %>/"
|
||||
cp -r "<%= appName %>"/* "%{buildroot}/<%= installDir %>/share/<%= appFileName %>/"
|
||||
mkdir -p "%{buildroot}/<%= installDir %>/bin/"
|
||||
ln -sf "../share/<%= appFileName %>/resources/app/apm/node_modules/.bin/apm" "%{buildroot}/<%= installDir %>/bin/<%= apmFileName %>"
|
||||
cp atom.sh "%{buildroot}/<%= installDir %>/bin/<%= appFileName %>"
|
||||
cp pulsar.sh "%{buildroot}/<%= installDir %>/bin/<%= appFileName %>"
|
||||
chmod 755 "%{buildroot}/<%= installDir %>/bin/<%= appFileName %>"
|
||||
mkdir -p "%{buildroot}/<%= installDir %>/share/applications/"
|
||||
cp "<%= appFileName %>.desktop" "%{buildroot}/<%= installDir %>/share/applications/"
|
@ -5,15 +5,15 @@
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Atom Helper</string>
|
||||
<string>Pulsar Helper</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Atom Helper</string>
|
||||
<string>Pulsar Helper</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.github.atom.helper</string>
|
||||
<string>com.github.pulsar.helper</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Atom Helper</string>
|
||||
<string>Pulsar Helper</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
|
@ -3,15 +3,15 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Atom</string>
|
||||
<string>Pulsar</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>atom.icns</string>
|
||||
<string>pulsar.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.github.atom</string>
|
||||
<string>com.github.pulsar</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Atom</string>
|
||||
<string>Pulsar</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
@ -43,10 +43,10 @@
|
||||
<dict>
|
||||
<key>CFBundleURLSchemes</key>
|
||||
<array>
|
||||
<string>atom</string>
|
||||
<string>pulsar</string>
|
||||
</array>
|
||||
<key>CFBundleURLName</key>
|
||||
<string>Atom Shared Session Protocol</string>
|
||||
<string>Pulsar Shared Session Protocol</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleDocumentTypes</key>
|
BIN
resources/pulsar.png
Normal file
After Width: | Height: | Size: 416 KiB |
@ -47,5 +47,5 @@ IF "%EXPECT_OUTPUT%"=="YES" (
|
||||
"%~dp0\..\..\<%= atomExeName %>" %*
|
||||
)
|
||||
) ELSE (
|
||||
"%~dp0\..\app\apm\bin\node.exe" "%~dp0\atom.js" "<%= atomExeName %>" %*
|
||||
"%~dp0\..\app\apm\bin\node.exe" "%~dp0\pulsar.js" "<%= atomExeName %>" %*
|
||||
)
|
@ -2,8 +2,8 @@
|
||||
# Get current path in Windows format
|
||||
if command -v "cygpath" > /dev/null; then
|
||||
# We have cygpath to do the conversion
|
||||
ATOMCMD=$(cygpath "$(dirname "$0")/atom.cmd" -a -w)
|
||||
ARGS=( $(cygpath -a -w "$@" | tr '\n' ' ') )
|
||||
ATOMCMD=$(cygpath "$(dirname "$0")/pulsar.cmd" -a -w)
|
||||
ARGS=( $(cygpath -a -w "$@" | tr '\n' ' ') )
|
||||
else
|
||||
ARGS=$@
|
||||
pushd "$(dirname "$0")" > /dev/null
|
||||
@ -13,10 +13,10 @@ else
|
||||
# If different root mount point defined in /etc/wsl.conf, use that instead
|
||||
eval $(grep "^root" /etc/wsl.conf | sed -e "s/ //g")
|
||||
root="$(echo $root | sed 's|/|\\/|g')"
|
||||
ATOMCMD="$(echo $PWD | sed 's/\/mnt\/\([a-z]*\)\(.*\)/\1:\2/')/atom.cmd"
|
||||
ATOMCMD="$(echo $PWD | sed 's/\/mnt\/\([a-z]*\)\(.*\)/\1:\2/')/pulsar.cmd"
|
||||
else
|
||||
# We don't have cygpath or WSL so try pwd -W
|
||||
ATOMCMD="$(pwd -W)/atom.cmd"
|
||||
ATOMCMD="$(pwd -W)/pulsar.cmd"
|
||||
fi
|
||||
popd > /dev/null
|
||||
fi
|
@ -29,7 +29,7 @@ const argv = yargs
|
||||
.help('help')
|
||||
.describe(
|
||||
'existing-binaries',
|
||||
'Use existing Atom binaries (skip clean/transpile/cache)'
|
||||
'Use existing Pulsar binaries (skip clean/transpile/cache)'
|
||||
)
|
||||
.describe('code-sign', 'Code-sign executables (macOS and Windows only)')
|
||||
.describe('test-sign', 'Test-sign executables (macOS only)')
|
||||
@ -38,10 +38,10 @@ const argv = yargs
|
||||
.describe('create-rpm-package', 'Create .rpm package (Linux only)')
|
||||
.describe(
|
||||
'compress-artifacts',
|
||||
'Compress Atom binaries (and symbols on macOS)'
|
||||
'Compress Pulsar binaries (and symbols on macOS)'
|
||||
)
|
||||
.describe('generate-api-docs', 'Only build the API documentation')
|
||||
.describe('install', 'Install Atom')
|
||||
.describe('install', 'Install Pulsar')
|
||||
.string('install')
|
||||
.describe(
|
||||
'ci',
|
||||
@ -227,7 +227,7 @@ async function build() {
|
||||
compressArtifacts(packagedAppPath);
|
||||
} else {
|
||||
console.log(
|
||||
'Skipping artifacts compression. Specify the --compress-artifacts option to compress Atom binaries (and symbols on macOS)'
|
||||
'Skipping artifacts compression. Specify the --compress-artifacts option to compress Pulsar binaries (and symbols on macOS)'
|
||||
.gray
|
||||
);
|
||||
}
|
||||
@ -236,7 +236,7 @@ async function build() {
|
||||
installApplication(packagedAppPath, argv.install);
|
||||
} else {
|
||||
console.log(
|
||||
'Skipping installation. Specify the --install option to install Atom'
|
||||
'Skipping installation. Specify the --install option to install Pulsar'
|
||||
.gray
|
||||
);
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ const path = require('path');
|
||||
const spawnSync = require('./lib/spawn-sync');
|
||||
|
||||
const repositoryRootPath = path.resolve(__dirname, '..');
|
||||
const apmRootPath = path.join(repositoryRootPath, 'apm');
|
||||
const apmRootPath = path.join(repositoryRootPath, 'ppm');
|
||||
const scriptRootPath = path.join(repositoryRootPath, 'script');
|
||||
const scriptRunnerRootPath = path.join(scriptRootPath, 'script-runner');
|
||||
const scriptRunnerModulesPath = path.join(scriptRunnerRootPath, 'node_modules');
|
||||
@ -18,7 +18,7 @@ const symbolsPath = path.join(buildOutputPath, 'symbols');
|
||||
const electronDownloadPath = path.join(repositoryRootPath, 'electron');
|
||||
const homeDirPath = process.env.HOME || process.env.USERPROFILE;
|
||||
const atomHomeDirPath =
|
||||
process.env.ATOM_HOME || path.join(homeDirPath, '.atom');
|
||||
process.env.ATOM_HOME || path.join(homeDirPath, '.pulsar');
|
||||
|
||||
const appMetadata = require(path.join(repositoryRootPath, 'package.json'));
|
||||
const apmMetadata = require(path.join(apmRootPath, 'package.json'));
|
||||
@ -36,10 +36,10 @@ if (process.env.npm_config_jobs === undefined) {
|
||||
process.env.npm_config_jobs = 'max';
|
||||
}
|
||||
|
||||
const REPO_OWNER = process.env.REPO_OWNER || 'atom';
|
||||
const MAIN_REPO = process.env.MAIN_REPO || 'atom';
|
||||
const REPO_OWNER = process.env.REPO_OWNER || 'pulsar-edit';
|
||||
const MAIN_REPO = process.env.MAIN_REPO || 'pulsar';
|
||||
const NIGHTLY_RELEASE_REPO =
|
||||
process.env.NIGHTLY_RELEASE_REPO || 'atom-nightly-releases';
|
||||
process.env.NIGHTLY_RELEASE_REPO || 'pulsar-nightly-releases';
|
||||
|
||||
module.exports = {
|
||||
appMetadata,
|
||||
@ -71,13 +71,13 @@ module.exports = {
|
||||
};
|
||||
|
||||
function getChannelName(channel) {
|
||||
return channel === 'stable' ? 'atom' : `atom-${channel}`;
|
||||
return channel === 'stable' ? 'pulsar' : `pulsar-${channel}`;
|
||||
}
|
||||
|
||||
function getChannel(version) {
|
||||
const match = version.match(/\d+\.\d+\.\d+(-([a-z]+)(\d+|-\w{4,})?)?$/);
|
||||
if (!match) {
|
||||
throw new Error(`Found incorrectly formatted Atom version ${version}`);
|
||||
throw new Error(`Found incorrectly formatted Pulsar version ${version}`);
|
||||
} else if (match[2]) {
|
||||
return match[2];
|
||||
}
|
||||
@ -87,8 +87,8 @@ function getChannel(version) {
|
||||
|
||||
function getAppName(channel) {
|
||||
return channel === 'stable'
|
||||
? 'Atom'
|
||||
: `Atom ${process.env.ATOM_CHANNEL_DISPLAY_NAME ||
|
||||
? 'Pulsar'
|
||||
: `Pulsar ${process.env.ATOM_CHANNEL_DISPLAY_NAME ||
|
||||
channel.charAt(0).toUpperCase() + channel.slice(1)}`;
|
||||
}
|
||||
|
||||
@ -96,9 +96,9 @@ function getExecutableName(channel, appName) {
|
||||
if (process.platform === 'darwin') {
|
||||
return appName;
|
||||
} else if (process.platform === 'win32') {
|
||||
return channel === 'stable' ? 'atom.exe' : `atom-${channel}.exe`;
|
||||
return channel === 'stable' ? 'pulsar.exe' : `pulsar-${channel}.exe`;
|
||||
} else {
|
||||
return 'atom';
|
||||
return 'pulsar';
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +118,7 @@ function getApmBinPath() {
|
||||
return path.join(
|
||||
apmRootPath,
|
||||
'node_modules',
|
||||
'atom-package-manager',
|
||||
'pulsar-package-manager',
|
||||
'bin',
|
||||
apmBinName
|
||||
);
|
||||
|
135
script/electron-builder.js
Normal file
@ -0,0 +1,135 @@
|
||||
const path = require('path')
|
||||
const normalizePackageData = require('normalize-package-data');
|
||||
const fs = require("fs/promises");
|
||||
const generateMetadata = require('./generate-metadata-for-builder')
|
||||
|
||||
// Monkey-patch to not remove things I explicitly didn't say so
|
||||
// See: https://github.com/electron-userland/electron-builder/issues/6957
|
||||
let transformer = require('app-builder-lib/out/fileTransformer')
|
||||
const builder_util_1 = require("builder-util");
|
||||
|
||||
transformer.createTransformer = function(srcDir, configuration, extraMetadata, extraTransformer) {
|
||||
const mainPackageJson = path.join(srcDir, "package.json");
|
||||
const isRemovePackageScripts = configuration.removePackageScripts !== false;
|
||||
const isRemovePackageKeywords = configuration.removePackageKeywords !== false;
|
||||
const packageJson = path.sep + "package.json";
|
||||
return file => {
|
||||
if (file === mainPackageJson) {
|
||||
return modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts, isRemovePackageKeywords);
|
||||
}
|
||||
if (extraTransformer != null) {
|
||||
return extraTransformer(file);
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
async function modifyMainPackageJson(file, extraMetadata, isRemovePackageScripts, isRemovePackageKeywords) {
|
||||
const mainPackageData = JSON.parse(await fs.readFile(file, "utf-8"));
|
||||
if (extraMetadata != null) {
|
||||
builder_util_1.deepAssign(mainPackageData, extraMetadata);
|
||||
return JSON.stringify(mainPackageData, null, 2);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
/// END Monkey-Patch
|
||||
|
||||
const builder = require("electron-builder")
|
||||
const Platform = builder.Platform
|
||||
|
||||
const generate = require('./lib/generate-metadata.js')
|
||||
|
||||
const pngIcon = 'resources/app-icons/nightly/png/1024.png'
|
||||
const icoIcon = 'resources/app-icons/nightly/pulsar.ico'
|
||||
|
||||
let options = {
|
||||
"appId": "link.mauricioszabo.pulsar",
|
||||
"npmRebuild": false,
|
||||
"publish": null,
|
||||
files: [
|
||||
"package.json",
|
||||
"docs/**/*",
|
||||
"dot-atom/**/*",
|
||||
"exports/**/*",
|
||||
"keymaps/**/*",
|
||||
"menus/**/*",
|
||||
"node_modules/**/*",
|
||||
"resources/**/*",
|
||||
"script/**/*",
|
||||
"src/**/*",
|
||||
"static/**/*",
|
||||
"vendor/**/*",
|
||||
"!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}",
|
||||
"!**/node_modules/*.d.ts",
|
||||
"!**/node_modules/.bin",
|
||||
"!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}",
|
||||
"!.editorconfig",
|
||||
"!**/._*",
|
||||
"!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}",
|
||||
"!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}",
|
||||
"!**/{appveyor.yml,.travis.yml,circle.yml}",
|
||||
"!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}"
|
||||
],
|
||||
"extraResources": [
|
||||
{
|
||||
"from": "ppm",
|
||||
"to": "app/apm"
|
||||
}, {
|
||||
"from": pngIcon,
|
||||
"to": "pulsar.png"
|
||||
},
|
||||
],
|
||||
compression: "normal",
|
||||
"linux": {
|
||||
"icon": pngIcon,
|
||||
"category": "Development",
|
||||
"synopsis": "A hackable text editor for the 22nd century",
|
||||
"target": [
|
||||
{
|
||||
"target": "appimage",
|
||||
"arch": "x64"
|
||||
},
|
||||
{
|
||||
"target": "deb",
|
||||
"arch": "x64"
|
||||
},
|
||||
{
|
||||
"target": "rpm",
|
||||
"arch": "x64"
|
||||
}
|
||||
]
|
||||
},
|
||||
"mac": {
|
||||
"icon": pngIcon,
|
||||
"category": "Development"
|
||||
},
|
||||
"win": {
|
||||
"icon": icoIcon,
|
||||
"target": [
|
||||
{ "target": "nsis" },
|
||||
{ "target": "portable" }
|
||||
]
|
||||
},
|
||||
"extraMetadata": {
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const package = await fs.readFile('package.json', "utf-8")
|
||||
options.extraMetadata = generateMetadata(JSON.parse(package))
|
||||
builder.build({
|
||||
//targets: Platform.LINUX.createTarget(),
|
||||
config: options
|
||||
}).then((result) => {
|
||||
console.log("Built binaries")
|
||||
fs.mkdir('binaries').catch(() => "")
|
||||
Promise.all(result.map(r => fs.copyFile(r, path.join('binaries', path.basename(r)))))
|
||||
}).catch((error) => {
|
||||
console.error("Error building binaries")
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
||||
}
|
||||
|
||||
main()
|
15
script/generate-app-image.js
Normal file
@ -0,0 +1,15 @@
|
||||
const path = require('path');
|
||||
const fs = require('fs');
|
||||
const { createCanvas, loadImage, registerFont } = require('canvas');
|
||||
|
||||
const imageCanvas = createCanvas(1024, 1024);
|
||||
const context = imageCanvas.getContext('2d');
|
||||
|
||||
const channel = 'dev';
|
||||
|
||||
loadImage(path.resolve(__dirname, '..', 'resources', 'app-icons', channel, 'png', '1024.png')).then((background) => {
|
||||
context.drawImage(background, 0, 0, imageCanvas.width, imageCanvas.height)
|
||||
|
||||
const buffer = imageCanvas.toBuffer('image/png')
|
||||
fs.writeFileSync(path.resolve(__dirname, '..', 'resources', 'pulsar.png'), buffer);
|
||||
})
|
209
script/generate-metadata-for-builder.js
Normal file
@ -0,0 +1,209 @@
|
||||
'use strict';
|
||||
|
||||
const CSON = require('season');
|
||||
const fs = require('fs-plus');
|
||||
const normalizePackageData = require('normalize-package-data');
|
||||
const path = require('path');
|
||||
const semver = require('semver');
|
||||
|
||||
module.exports = function(packageJSON) {
|
||||
return {
|
||||
_atomPackages: buildBundledPackagesMetadata(packageJSON),
|
||||
_atomMenu: buildPlatformMenuMetadata(packageJSON),
|
||||
_atomKeymaps: buildPlatformKeymapsMetadata(packageJSON)
|
||||
}
|
||||
};
|
||||
|
||||
function buildBundledPackagesMetadata(packageJSON) {
|
||||
const packages = {};
|
||||
for (let packageName of Object.keys(packageJSON.packageDependencies)) {
|
||||
const packagePath = path.join('node_modules', packageName);
|
||||
const packageMetadataPath = path.join(packagePath, 'package.json');
|
||||
const packageMetadata = JSON.parse(fs.readFileSync(packageMetadataPath, 'utf8'));
|
||||
normalizePackageData(
|
||||
packageMetadata,
|
||||
msg => {
|
||||
if (!msg.match(/No README data$/)) {
|
||||
console.warn(
|
||||
`Invalid package metadata. ${packageMetadata.name}: ${msg}`
|
||||
);
|
||||
}
|
||||
},
|
||||
true
|
||||
);
|
||||
if (
|
||||
packageMetadata.repository &&
|
||||
packageMetadata.repository.url &&
|
||||
packageMetadata.repository.type === 'git'
|
||||
) {
|
||||
packageMetadata.repository.url = packageMetadata.repository.url.replace(
|
||||
/^git\+/,
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
delete packageMetadata['_from'];
|
||||
delete packageMetadata['_id'];
|
||||
delete packageMetadata['dist'];
|
||||
delete packageMetadata['readme'];
|
||||
delete packageMetadata['readmeFilename'];
|
||||
|
||||
const packageModuleCache = packageMetadata._atomModuleCache || {};
|
||||
if (
|
||||
packageModuleCache.extensions &&
|
||||
packageModuleCache.extensions['.json']
|
||||
) {
|
||||
const index = packageModuleCache.extensions['.json'].indexOf(
|
||||
'package.json'
|
||||
);
|
||||
if (index !== -1) {
|
||||
packageModuleCache.extensions['.json'].splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
const packageNewMetadata = {
|
||||
metadata: packageMetadata,
|
||||
keymaps: {},
|
||||
menus: {},
|
||||
grammarPaths: [],
|
||||
settings: {}
|
||||
};
|
||||
|
||||
packageNewMetadata.rootDirPath = packagePath;
|
||||
|
||||
if (packageMetadata.main) {
|
||||
const mainPath = require.resolve(
|
||||
path.resolve(packagePath, packageMetadata.main)
|
||||
);
|
||||
packageNewMetadata.main = path.relative(
|
||||
'static',
|
||||
mainPath
|
||||
);
|
||||
// Convert backward slashes to forward slashes in order to allow package
|
||||
// main modules to be required from the snapshot. This is because we use
|
||||
// forward slashes to cache the sources in the snapshot, so we need to use
|
||||
// them here as well.
|
||||
packageNewMetadata.main = packageNewMetadata.main.replace(/\\/g, '/');
|
||||
}
|
||||
|
||||
const packageKeymapsPath = path.join(packagePath, 'keymaps');
|
||||
if (fs.existsSync(packageKeymapsPath)) {
|
||||
for (let packageKeymapName of fs.readdirSync(packageKeymapsPath)) {
|
||||
const packageKeymapPath = path.join(
|
||||
packageKeymapsPath,
|
||||
packageKeymapName
|
||||
);
|
||||
if (
|
||||
packageKeymapPath.endsWith('.cson') ||
|
||||
packageKeymapPath.endsWith('.json')
|
||||
) {
|
||||
packageNewMetadata.keymaps[packageKeymapPath] = CSON.readFileSync(
|
||||
packageKeymapPath
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const packageMenusPath = path.join(packagePath, 'menus');
|
||||
if (fs.existsSync(packageMenusPath)) {
|
||||
for (let packageMenuName of fs.readdirSync(packageMenusPath)) {
|
||||
const packageMenuPath = path.join(packageMenusPath, packageMenuName);
|
||||
if (
|
||||
packageMenuPath.endsWith('.cson') ||
|
||||
packageMenuPath.endsWith('.json')
|
||||
) {
|
||||
packageNewMetadata.menus[packageMenuPath] = CSON.readFileSync(
|
||||
packageMenuPath
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const packageGrammarsPath = path.join(packagePath, 'grammars');
|
||||
for (let packageGrammarPath of fs.listSync(packageGrammarsPath, [
|
||||
'json',
|
||||
'cson'
|
||||
])) {
|
||||
packageNewMetadata.grammarPaths.push(packageGrammarPath);
|
||||
}
|
||||
|
||||
const packageSettingsPath = path.join(packagePath, 'settings');
|
||||
for (let packageSettingPath of fs.listSync(packageSettingsPath, [
|
||||
'json',
|
||||
'cson'
|
||||
])) {
|
||||
packageNewMetadata.settings[packageSettingPath] = CSON.readFileSync(
|
||||
packageSettingPath
|
||||
);
|
||||
}
|
||||
|
||||
const packageStyleSheetsPath = path.join(packagePath, 'styles');
|
||||
let styleSheets = null;
|
||||
if (packageMetadata.mainStyleSheet) {
|
||||
styleSheets = [fs.resolve(packagePath, packageMetadata.mainStyleSheet)];
|
||||
} else if (packageMetadata.styleSheets) {
|
||||
styleSheets = packageMetadata.styleSheets.map(name =>
|
||||
fs.resolve(packageStyleSheetsPath, name, ['css', 'less', ''])
|
||||
);
|
||||
} else {
|
||||
const indexStylesheet = fs.resolve(packagePath, 'index', ['css', 'less']);
|
||||
if (indexStylesheet) {
|
||||
styleSheets = [indexStylesheet];
|
||||
} else {
|
||||
styleSheets = fs.listSync(packageStyleSheetsPath, ['css', 'less']);
|
||||
}
|
||||
}
|
||||
|
||||
packageNewMetadata.styleSheetPaths = styleSheets.map(styleSheetPath =>
|
||||
path.relative(packagePath, styleSheetPath)
|
||||
);
|
||||
|
||||
packages[packageMetadata.name] = packageNewMetadata;
|
||||
if (packageModuleCache.extensions) {
|
||||
for (let extension of Object.keys(packageModuleCache.extensions)) {
|
||||
const paths = packageModuleCache.extensions[extension];
|
||||
if (paths.length === 0) {
|
||||
delete packageModuleCache.extensions[extension];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return packages;
|
||||
}
|
||||
|
||||
function buildPlatformMenuMetadata(packageJSON) {
|
||||
const menuPath = path.join(
|
||||
'menus',
|
||||
`${process.platform}.cson`
|
||||
);
|
||||
if (fs.existsSync(menuPath)) {
|
||||
return CSON.readFileSync(menuPath);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function buildPlatformKeymapsMetadata(packageJSON) {
|
||||
const invalidPlatforms = [
|
||||
'darwin',
|
||||
'freebsd',
|
||||
'linux',
|
||||
'sunos',
|
||||
'win32'
|
||||
].filter(p => p !== process.platform);
|
||||
const keymapsPath = 'keymaps';
|
||||
const keymaps = {};
|
||||
for (let keymapName of fs.readdirSync(keymapsPath)) {
|
||||
const keymapPath = path.join(keymapsPath, keymapName);
|
||||
if (keymapPath.endsWith('.cson') || keymapPath.endsWith('.json')) {
|
||||
const keymapPlatform = path.basename(
|
||||
keymapPath,
|
||||
path.extname(keymapPath)
|
||||
);
|
||||
if (invalidPlatforms.indexOf(keymapPlatform) === -1) {
|
||||
keymaps[path.basename(keymapPath)] = CSON.readFileSync(keymapPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
return keymaps;
|
||||
}
|
@ -15,10 +15,10 @@ module.exports = function() {
|
||||
path.join(CONFIG.atomHomeDirPath, '.npm'),
|
||||
path.join(CONFIG.atomHomeDirPath, 'compile-cache'),
|
||||
path.join(CONFIG.atomHomeDirPath, 'snapshot-cache'),
|
||||
path.join(CONFIG.atomHomeDirPath, 'atom-shell'),
|
||||
path.join(CONFIG.atomHomeDirPath, 'pulsar-shell'),
|
||||
path.join(CONFIG.atomHomeDirPath, 'electron'),
|
||||
path.join(os.tmpdir(), 'atom-build'),
|
||||
path.join(os.tmpdir(), 'atom-cached-atom-shells')
|
||||
path.join(os.tmpdir(), 'pulsar-build'),
|
||||
path.join(os.tmpdir(), 'pulsar-cached-pulsar-shells')
|
||||
];
|
||||
const rmPromises = [];
|
||||
for (let path of cachePaths) {
|
||||
|
@ -14,7 +14,7 @@ module.exports = function(packagedAppPath) {
|
||||
if (process.platform === 'darwin') {
|
||||
const symbolsArchivePath = path.join(
|
||||
CONFIG.buildOutputPath,
|
||||
'atom-mac-symbols.zip'
|
||||
'pulsar-mac-symbols.zip'
|
||||
);
|
||||
compress(CONFIG.symbolsPath, symbolsArchivePath);
|
||||
}
|
||||
@ -23,11 +23,11 @@ module.exports = function(packagedAppPath) {
|
||||
function getArchiveName() {
|
||||
switch (process.platform) {
|
||||
case 'darwin':
|
||||
return 'atom-mac.zip';
|
||||
return 'pulsar-mac.zip';
|
||||
case 'win32':
|
||||
return `atom-${process.arch === 'x64' ? 'x64-' : ''}windows.zip`;
|
||||
return `pulsar-${process.arch === 'x64' ? 'x64-' : ''}windows.zip`;
|
||||
default:
|
||||
return `atom-${getLinuxArchiveArch()}.tar.gz`;
|
||||
return `pulsar-${getLinuxArchiveArch()}.tar.gz`;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,7 +39,7 @@ module.exports = function() {
|
||||
// We do this to ensure that symlinked repo-local bundled packages get
|
||||
// copied to the output folder correctly. We dereference only the top-level
|
||||
// symlinks and not nested symlinks to avoid issues where symlinked binaries
|
||||
// are duplicated in Atom's installation packages (see atom/atom#18490).
|
||||
// are duplicated in Pulsar's installation packages (see atom/atom#18490).
|
||||
const nodeModulesPath = path.join(CONFIG.repositoryRootPath, 'node_modules');
|
||||
glob
|
||||
.sync(path.join(nodeModulesPath, '*'))
|
||||
@ -69,7 +69,7 @@ module.exports = function() {
|
||||
'png',
|
||||
'1024.png'
|
||||
),
|
||||
path.join(CONFIG.intermediateAppPath, 'resources', 'atom.png')
|
||||
path.join(CONFIG.intermediateAppPath, 'resources', 'pulsar.png')
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -10,9 +10,9 @@ const CONFIG = require('../config');
|
||||
|
||||
module.exports = function(packagedAppPath) {
|
||||
console.log(`Creating Debian package for "${packagedAppPath}"`);
|
||||
const atomExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'atom' : `atom-${CONFIG.channel}`;
|
||||
const apmExecutableName =
|
||||
const editorExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'pulsar' : `pulsar-${CONFIG.channel}`;
|
||||
const pkgMgrExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'apm' : `apm-${CONFIG.channel}`;
|
||||
const appDescription = CONFIG.appMetadata.description;
|
||||
const appVersion = CONFIG.appMetadata.version;
|
||||
@ -29,7 +29,7 @@ module.exports = function(packagedAppPath) {
|
||||
|
||||
const outputDebianPackageFilePath = path.join(
|
||||
CONFIG.buildOutputPath,
|
||||
`atom-${arch}.deb`
|
||||
`pulsar-${arch}.deb`
|
||||
);
|
||||
const debianPackageDirPath = path.join(
|
||||
os.tmpdir(),
|
||||
@ -44,7 +44,7 @@ module.exports = function(packagedAppPath) {
|
||||
);
|
||||
const debianPackageAtomDirPath = path.join(
|
||||
debianPackageShareDirPath,
|
||||
atomExecutableName
|
||||
editorExecutableName
|
||||
);
|
||||
const debianPackageApplicationsDirPath = path.join(
|
||||
debianPackageShareDirPath,
|
||||
@ -57,7 +57,7 @@ module.exports = function(packagedAppPath) {
|
||||
const debianPackageDocsDirPath = path.join(
|
||||
debianPackageShareDirPath,
|
||||
'doc',
|
||||
atomExecutableName
|
||||
editorExecutableName
|
||||
);
|
||||
|
||||
if (fs.existsSync(debianPackageDirPath)) {
|
||||
@ -97,14 +97,14 @@ module.exports = function(packagedAppPath) {
|
||||
|
||||
console.log(`Copying binaries into "${debianPackageBinDirPath}"`);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'atom.sh'),
|
||||
path.join(debianPackageBinDirPath, atomExecutableName)
|
||||
path.join(CONFIG.repositoryRootPath, 'pulsar.sh'),
|
||||
path.join(debianPackageBinDirPath, editorExecutableName)
|
||||
);
|
||||
fs.symlinkSync(
|
||||
path.join(
|
||||
'..',
|
||||
'share',
|
||||
atomExecutableName,
|
||||
editorExecutableName,
|
||||
'resources',
|
||||
'app',
|
||||
'apm',
|
||||
@ -112,7 +112,7 @@ module.exports = function(packagedAppPath) {
|
||||
'.bin',
|
||||
'apm'
|
||||
),
|
||||
path.join(debianPackageBinDirPath, apmExecutableName)
|
||||
path.join(debianPackageBinDirPath, pkgMgrExecutableName)
|
||||
);
|
||||
|
||||
fs.chmodSync(path.join(debianPackageAtomDirPath, 'chrome-sandbox'), '4755');
|
||||
@ -131,7 +131,7 @@ module.exports = function(packagedAppPath) {
|
||||
)
|
||||
);
|
||||
const controlFileContents = template(controlFileTemplate)({
|
||||
appFileName: atomExecutableName,
|
||||
appFileName: editorExecutableName,
|
||||
version: appVersion,
|
||||
arch: arch,
|
||||
installedSize: packageSizeInKilobytes,
|
||||
@ -150,20 +150,20 @@ module.exports = function(packagedAppPath) {
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'linux',
|
||||
'atom.desktop.in'
|
||||
'pulsar.desktop.in'
|
||||
)
|
||||
);
|
||||
const desktopEntryContents = template(desktopEntryTemplate)({
|
||||
appName: CONFIG.appName,
|
||||
appFileName: atomExecutableName,
|
||||
appFileName: editorExecutableName,
|
||||
description: appDescription,
|
||||
installDir: '/usr',
|
||||
iconPath: atomExecutableName
|
||||
iconPath: editorExecutableName
|
||||
});
|
||||
fs.writeFileSync(
|
||||
path.join(
|
||||
debianPackageApplicationsDirPath,
|
||||
`${atomExecutableName}.desktop`
|
||||
`${editorExecutableName}.desktop`
|
||||
),
|
||||
desktopEntryContents
|
||||
);
|
||||
@ -175,9 +175,9 @@ module.exports = function(packagedAppPath) {
|
||||
'resources',
|
||||
'app.asar.unpacked',
|
||||
'resources',
|
||||
'atom.png'
|
||||
'pulsar.png'
|
||||
),
|
||||
path.join(debianPackageIconsDirPath, `${atomExecutableName}.png`)
|
||||
path.join(debianPackageIconsDirPath, `${editorExecutableName}.png`)
|
||||
);
|
||||
|
||||
console.log(`Copying license into "${debianPackageDocsDirPath}"`);
|
||||
@ -190,12 +190,12 @@ module.exports = function(packagedAppPath) {
|
||||
`Copying polkit configuration into "${debianPackageShareDirPath}"`
|
||||
);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'linux', 'atom.policy'),
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'linux', 'pulsar.policy'),
|
||||
path.join(
|
||||
debianPackageShareDirPath,
|
||||
'polkit-1',
|
||||
'actions',
|
||||
`atom-${CONFIG.channel}.policy`
|
||||
`pulsar-${CONFIG.channel}.policy`
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -10,16 +10,16 @@ const CONFIG = require('../config');
|
||||
|
||||
module.exports = function(packagedAppPath) {
|
||||
console.log(`Creating rpm package for "${packagedAppPath}"`);
|
||||
const atomExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'atom' : `atom-${CONFIG.channel}`;
|
||||
const apmExecutableName =
|
||||
const editorExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'pulsar' : `pulsar-${CONFIG.channel}`;
|
||||
const pkgMgrExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'apm' : `apm-${CONFIG.channel}`;
|
||||
const appName = CONFIG.appName;
|
||||
const appDescription = CONFIG.appMetadata.description;
|
||||
// RPM versions can't have dashes or tildes in them.
|
||||
// (Ref.: https://twiki.cern.ch/twiki/bin/view/Main/RPMAndDebVersioning)
|
||||
const appVersion = CONFIG.appMetadata.version.replace(/-/g, '.');
|
||||
const policyFileName = `atom-${CONFIG.channel}.policy`;
|
||||
const policyFileName = `pulsar-${CONFIG.channel}.policy`;
|
||||
|
||||
const rpmPackageDirPath = path.join(CONFIG.homeDirPath, 'rpmbuild');
|
||||
const rpmPackageBuildDirPath = path.join(rpmPackageDirPath, 'BUILD');
|
||||
@ -65,20 +65,20 @@ module.exports = function(packagedAppPath) {
|
||||
);
|
||||
|
||||
console.log(`Writing rpm package spec file into "${rpmPackageSpecsDirPath}"`);
|
||||
const rpmPackageSpecFilePath = path.join(rpmPackageSpecsDirPath, 'atom.spec');
|
||||
const rpmPackageSpecFilePath = path.join(rpmPackageSpecsDirPath, 'pulsar.spec');
|
||||
const rpmPackageSpecsTemplate = fs.readFileSync(
|
||||
path.join(
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'linux',
|
||||
'redhat',
|
||||
'atom.spec.in'
|
||||
'pulsar.spec.in'
|
||||
)
|
||||
);
|
||||
const rpmPackageSpecsContents = template(rpmPackageSpecsTemplate)({
|
||||
appName: appName,
|
||||
appFileName: atomExecutableName,
|
||||
apmFileName: apmExecutableName,
|
||||
appFileName: editorExecutableName,
|
||||
apmFileName: pkgMgrExecutableName,
|
||||
description: appDescription,
|
||||
installDir: '/usr',
|
||||
version: appVersion,
|
||||
@ -92,30 +92,30 @@ module.exports = function(packagedAppPath) {
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'linux',
|
||||
'atom.desktop.in'
|
||||
'pulsar.desktop.in'
|
||||
)
|
||||
);
|
||||
const desktopEntryContents = template(desktopEntryTemplate)({
|
||||
appName: appName,
|
||||
appFileName: atomExecutableName,
|
||||
appFileName: editorExecutableName,
|
||||
description: appDescription,
|
||||
installDir: '/usr',
|
||||
iconPath: atomExecutableName
|
||||
iconPath: editorExecutableName
|
||||
});
|
||||
fs.writeFileSync(
|
||||
path.join(rpmPackageBuildDirPath, `${atomExecutableName}.desktop`),
|
||||
path.join(rpmPackageBuildDirPath, `${editorExecutableName}.desktop`),
|
||||
desktopEntryContents
|
||||
);
|
||||
|
||||
console.log(`Copying atom.sh into "${rpmPackageBuildDirPath}"`);
|
||||
console.log(`Copying pulsar.sh into "${rpmPackageBuildDirPath}"`);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'atom.sh'),
|
||||
path.join(rpmPackageBuildDirPath, 'atom.sh')
|
||||
path.join(CONFIG.repositoryRootPath, 'pulsar.sh'),
|
||||
path.join(rpmPackageBuildDirPath, 'pulsar.sh')
|
||||
);
|
||||
|
||||
console.log(`Copying atom.policy into "${rpmPackageBuildDirPath}"`);
|
||||
console.log(`Copying pulsar.policy into "${rpmPackageBuildDirPath}"`);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'linux', 'atom.policy'),
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'linux', 'pulsar.policy'),
|
||||
path.join(rpmPackageBuildDirPath, policyFileName)
|
||||
);
|
||||
|
||||
@ -137,7 +137,7 @@ module.exports = function(packagedAppPath) {
|
||||
);
|
||||
const outputRpmPackageFilePath = path.join(
|
||||
CONFIG.buildOutputPath,
|
||||
`atom.${generatedArch}.rpm`
|
||||
`pulsar.${generatedArch}.rpm`
|
||||
);
|
||||
console.log(
|
||||
`Copying "${generatedPackageFilePath}" into "${outputRpmPackageFilePath}"`
|
||||
|
@ -20,7 +20,7 @@ module.exports = packagedAppPath => {
|
||||
authors: 'GitHub Inc.',
|
||||
iconUrl: `https://raw.githubusercontent.com/${REPO_OWNER}/${MAIN_REPO}/master/resources/app-icons/${
|
||||
CONFIG.channel
|
||||
}/atom.ico`,
|
||||
}/pulsar.ico`,
|
||||
loadingGif: path.join(
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
@ -32,13 +32,13 @@ module.exports = packagedAppPath => {
|
||||
remoteReleases: `${updateUrlPrefix}/api/updates${archSuffix}?version=${
|
||||
CONFIG.computedAppVersion
|
||||
}`,
|
||||
setupExe: `AtomSetup${process.arch === 'x64' ? '-x64' : ''}.exe`,
|
||||
setupExe: `PulsarSetup${process.arch === 'x64' ? '-x64' : ''}.exe`,
|
||||
setupIcon: path.join(
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'app-icons',
|
||||
CONFIG.channel,
|
||||
'atom.ico'
|
||||
'pulsar.ico'
|
||||
)
|
||||
};
|
||||
|
||||
@ -49,7 +49,7 @@ module.exports = packagedAppPath => {
|
||||
}
|
||||
|
||||
let appName =
|
||||
CONFIG.channel === 'stable' ? 'atom' : `atom-${CONFIG.channel}`;
|
||||
CONFIG.channel === 'stable' ? 'pulsar' : `pulsar-${CONFIG.channel}`;
|
||||
for (let nupkgPath of glob.sync(
|
||||
`${CONFIG.buildOutputPath}/${appName}-*.nupkg`
|
||||
)) {
|
||||
@ -60,7 +60,7 @@ module.exports = packagedAppPath => {
|
||||
fs.unlinkSync(nupkgPath);
|
||||
} else {
|
||||
if (process.arch === 'x64') {
|
||||
// Use the original .nupkg filename to generate the `atom-x64` name by inserting `-x64` after `atom`
|
||||
// Use the original .nupkg filename to generate the `pulsar-x64` name by inserting `-x64` after `pulsar`
|
||||
const newNupkgPath = nupkgPath.replace(
|
||||
`${appName}-`,
|
||||
`${appName}-x64-`
|
||||
|
@ -34,7 +34,7 @@ module.exports = {
|
||||
/\.\d+$/,
|
||||
''
|
||||
);
|
||||
const apmVersion = CONFIG.apmMetadata.dependencies['atom-package-manager'];
|
||||
const apmVersion = CONFIG.apmMetadata.dependencies['pulsar-package-manager'];
|
||||
const body =
|
||||
electronVersion +
|
||||
apmVersion +
|
||||
|
@ -9,7 +9,7 @@ module.exports = function(downloadURL, destinationPath) {
|
||||
const response = syncRequest('GET', downloadURL, {
|
||||
headers: {
|
||||
Accept: 'application/vnd.github.v3.raw',
|
||||
'User-Agent': 'Atom Build',
|
||||
'User-Agent': 'Pulsar Build',
|
||||
Authorization: `token ${process.env.GITHUB_TOKEN}`
|
||||
}
|
||||
});
|
||||
|
@ -10,7 +10,7 @@ const path = require('path');
|
||||
const CONFIG = require('../config');
|
||||
|
||||
module.exports = function() {
|
||||
const generatedJSONPath = path.join(CONFIG.docsOutputPath, 'atom-api.json');
|
||||
const generatedJSONPath = path.join(CONFIG.docsOutputPath, 'pulsar-api.json');
|
||||
console.log(`Generating API docs at ${generatedJSONPath}`);
|
||||
|
||||
// Unfortunately, correct relative paths depend on a specific working
|
||||
|
@ -13,7 +13,7 @@ let appName = CONFIG.appMetadata.name;
|
||||
if (process.platform === 'win32') {
|
||||
// Use the channel name in the app name on Windows so that the installer will
|
||||
// place it in a different folder in AppData\Local
|
||||
appName = CONFIG.channel === 'stable' ? 'atom' : `atom-${CONFIG.channel}`;
|
||||
appName = CONFIG.channel === 'stable' ? 'pulsar' : `pulsar-${CONFIG.channel}`;
|
||||
}
|
||||
|
||||
module.exports = function() {
|
||||
|
@ -76,19 +76,19 @@ module.exports = function(packagedAppPath, installDir) {
|
||||
});
|
||||
}
|
||||
} else {
|
||||
const atomExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'atom' : 'atom-' + CONFIG.channel;
|
||||
const apmExecutableName =
|
||||
const editorExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'pulsar' : 'pulsar-' + CONFIG.channel;
|
||||
const pkgMgrExecutableName =
|
||||
CONFIG.channel === 'stable' ? 'apm' : 'apm-' + CONFIG.channel;
|
||||
const appName =
|
||||
CONFIG.channel === 'stable'
|
||||
? 'Atom'
|
||||
: startCase('Atom ' + CONFIG.channel);
|
||||
? 'Pulsar'
|
||||
: startCase('Pulsar ' + CONFIG.channel);
|
||||
const appDescription = CONFIG.appMetadata.description;
|
||||
const prefixDirPath =
|
||||
installDir !== '' ? handleTilde(installDir) : path.join('/usr', 'local');
|
||||
const shareDirPath = path.join(prefixDirPath, 'share');
|
||||
const installationDirPath = path.join(shareDirPath, atomExecutableName);
|
||||
const installationDirPath = path.join(shareDirPath, editorExecutableName);
|
||||
const applicationsDirPath = path.join(shareDirPath, 'applications');
|
||||
|
||||
const binDirPath = path.join(prefixDirPath, 'bin');
|
||||
@ -101,7 +101,7 @@ module.exports = function(packagedAppPath, installDir) {
|
||||
{
|
||||
// Install icons
|
||||
const baseIconThemeDirPath = findBaseIconThemeDirPath();
|
||||
const fullIconName = atomExecutableName + '.png';
|
||||
const fullIconName = editorExecutableName + '.png';
|
||||
|
||||
let existingIconsFound = false;
|
||||
fs.readdirSync(baseIconThemeDirPath).forEach(size => {
|
||||
@ -156,7 +156,7 @@ module.exports = function(packagedAppPath, installDir) {
|
||||
// Install xdg desktop file
|
||||
const desktopEntryPath = path.join(
|
||||
applicationsDirPath,
|
||||
`${atomExecutableName}.desktop`
|
||||
`${editorExecutableName}.desktop`
|
||||
);
|
||||
if (fs.existsSync(desktopEntryPath)) {
|
||||
console.log(
|
||||
@ -170,51 +170,51 @@ module.exports = function(packagedAppPath, installDir) {
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'linux',
|
||||
'atom.desktop.in'
|
||||
'pulsar.desktop.in'
|
||||
)
|
||||
);
|
||||
const desktopEntryContents = template(desktopEntryTemplate)({
|
||||
appName,
|
||||
appFileName: atomExecutableName,
|
||||
appFileName: editorExecutableName,
|
||||
description: appDescription,
|
||||
installDir: prefixDirPath,
|
||||
iconPath: atomExecutableName
|
||||
iconPath: editorExecutableName
|
||||
});
|
||||
fs.writeFileSync(desktopEntryPath, desktopEntryContents);
|
||||
}
|
||||
|
||||
{
|
||||
// Add atom executable to the PATH
|
||||
const atomBinDestinationPath = path.join(binDirPath, atomExecutableName);
|
||||
if (fs.existsSync(atomBinDestinationPath)) {
|
||||
// Add pulsar executable to the PATH
|
||||
const editorBinDestinationPath = path.join(binDirPath, editorExecutableName);
|
||||
if (fs.existsSync(editorBinDestinationPath)) {
|
||||
console.log(
|
||||
`Removing existing executable at "${atomBinDestinationPath}"`
|
||||
`Removing existing executable at "${editorBinDestinationPath}"`
|
||||
);
|
||||
fs.removeSync(atomBinDestinationPath);
|
||||
fs.removeSync(editorBinDestinationPath);
|
||||
}
|
||||
console.log(`Copying atom.sh to "${atomBinDestinationPath}"`);
|
||||
console.log(`Copying pulsar.sh to "${editorBinDestinationPath}"`);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'atom.sh'),
|
||||
atomBinDestinationPath
|
||||
path.join(CONFIG.repositoryRootPath, 'pulsar.sh'),
|
||||
editorBinDestinationPath
|
||||
);
|
||||
}
|
||||
|
||||
{
|
||||
// Link apm executable to the PATH
|
||||
const apmBinDestinationPath = path.join(binDirPath, apmExecutableName);
|
||||
const pkgMgrBinDestinationPath = path.join(binDirPath, pkgMgrExecutableName);
|
||||
try {
|
||||
fs.lstatSync(apmBinDestinationPath);
|
||||
fs.lstatSync(pkgMgrBinDestinationPath);
|
||||
console.log(
|
||||
`Removing existing executable at "${apmBinDestinationPath}"`
|
||||
`Removing existing executable at "${pkgMgrBinDestinationPath}"`
|
||||
);
|
||||
fs.removeSync(apmBinDestinationPath);
|
||||
fs.removeSync(pkgMgrBinDestinationPath);
|
||||
} catch (e) {}
|
||||
console.log(`Symlinking apm to "${apmBinDestinationPath}"`);
|
||||
console.log(`Symlinking apm to "${pkgMgrBinDestinationPath}"`);
|
||||
fs.symlinkSync(
|
||||
path.join(
|
||||
'..',
|
||||
'share',
|
||||
atomExecutableName,
|
||||
editorExecutableName,
|
||||
'resources',
|
||||
'app',
|
||||
'apm',
|
||||
@ -222,7 +222,7 @@ module.exports = function(packagedAppPath, installDir) {
|
||||
'.bin',
|
||||
'apm'
|
||||
),
|
||||
apmBinDestinationPath
|
||||
pkgMgrBinDestinationPath
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ const CONFIG = require('../config.js');
|
||||
|
||||
module.exports = function() {
|
||||
if (process.platform === 'win32') {
|
||||
// Use START as a way to ignore error if Atom.exe isnt running
|
||||
// Use START as a way to ignore error if Pulsar.exe isnt running
|
||||
childProcess.execSync(`START taskkill /F /IM ${CONFIG.executableName}`);
|
||||
} else {
|
||||
childProcess.execSync(`pkill -9 ${CONFIG.appMetadata.productName} || true`);
|
||||
|
@ -1,7 +1,7 @@
|
||||
const notarize = require('electron-notarize').notarize;
|
||||
|
||||
module.exports = async function(packagedAppPath) {
|
||||
const appBundleId = 'com.github.atom';
|
||||
const appBundleId = 'com.github.pulsar';
|
||||
const appleId = process.env.AC_USER;
|
||||
const appleIdPassword = process.env.AC_PASSWORD;
|
||||
console.log(`Notarizing application at ${packagedAppPath}`);
|
||||
|
@ -22,7 +22,8 @@ module.exports = function() {
|
||||
} with app name "${appName}"`
|
||||
);
|
||||
return runPackager({
|
||||
appBundleId: 'com.github.atom',
|
||||
appBundleId: 'com.github.pulsar',
|
||||
//TODO_PULSAR: Check to see if we should/need to migrate away from GitHub as a CompanyName
|
||||
appCopyright: `Copyright © 2014-${new Date().getFullYear()} GitHub, Inc. All rights reserved.`,
|
||||
appVersion: CONFIG.appMetadata.version,
|
||||
arch: process.platform === 'darwin' ? 'x64' : HOST_ARCH, // OS X is 64-bit only
|
||||
@ -36,25 +37,26 @@ module.exports = function() {
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'mac',
|
||||
'atom-Info.plist'
|
||||
'pulsar-Info.plist'
|
||||
),
|
||||
helperBundleId: 'com.github.atom.helper',
|
||||
helperBundleId: 'com.github.pulsar.helper',
|
||||
icon: path.join(
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'app-icons',
|
||||
CONFIG.channel,
|
||||
'atom'
|
||||
'pulsar'
|
||||
),
|
||||
name: appName,
|
||||
out: CONFIG.buildOutputPath,
|
||||
overwrite: true,
|
||||
platform: process.platform,
|
||||
// Atom doesn't have devDependencies, but if prune is true, it will delete the non-standard packageDependencies.
|
||||
// Pulsar doesn't have devDependencies, but if prune is true, it will delete the non-standard packageDependencies.
|
||||
prune: false,
|
||||
win32metadata: {
|
||||
//TODO_PULSAR: Check to see if we should/need to migrate away from GitHub as a CompanyName
|
||||
CompanyName: 'GitHub, Inc.',
|
||||
FileDescription: 'Atom',
|
||||
FileDescription: 'Pulsar',
|
||||
ProductName: CONFIG.appName
|
||||
}
|
||||
}).then(packagedAppPath => {
|
||||
@ -109,8 +111,8 @@ function copyNonASARResources(packagedAppPath, bundledResourcesPath) {
|
||||
)
|
||||
);
|
||||
fs.copySync(
|
||||
path.join(CONFIG.repositoryRootPath, 'atom.sh'),
|
||||
path.join(bundledResourcesPath, 'app', 'atom.sh')
|
||||
path.join(CONFIG.repositoryRootPath, 'pulsar.sh'),
|
||||
path.join(bundledResourcesPath, 'app', 'pulsar.sh')
|
||||
);
|
||||
}
|
||||
if (process.platform === 'darwin') {
|
||||
@ -128,12 +130,12 @@ function copyNonASARResources(packagedAppPath, bundledResourcesPath) {
|
||||
'png',
|
||||
'1024.png'
|
||||
),
|
||||
path.join(packagedAppPath, 'atom.png')
|
||||
path.join(packagedAppPath, 'pulsar.png')
|
||||
);
|
||||
} else if (process.platform === 'win32') {
|
||||
[
|
||||
'atom.sh',
|
||||
'atom.js',
|
||||
'pulsar.sh',
|
||||
'pulsar.js',
|
||||
'apm.cmd',
|
||||
'apm.sh',
|
||||
'file.ico',
|
||||
@ -145,7 +147,7 @@ function copyNonASARResources(packagedAppPath, bundledResourcesPath) {
|
||||
)
|
||||
);
|
||||
|
||||
// Customize atom.cmd for the channel-specific atom.exe name (e.g. atom-beta.exe)
|
||||
// Customize pulsar.cmd for the channel-specific pulsar.exe name (e.g. pulsar-beta.exe)
|
||||
generateAtomCmdForChannel(bundledResourcesPath);
|
||||
}
|
||||
|
||||
@ -162,11 +164,11 @@ function setAtomHelperVersion(packagedAppPath) {
|
||||
const frameworksPath = path.join(packagedAppPath, 'Contents', 'Frameworks');
|
||||
const helperPListPath = path.join(
|
||||
frameworksPath,
|
||||
'Atom Helper.app',
|
||||
'Pulsar Helper.app',
|
||||
'Contents',
|
||||
'Info.plist'
|
||||
);
|
||||
console.log(`Setting Atom Helper Version for ${helperPListPath}`);
|
||||
console.log(`Setting Pulsar Helper Version for ${helperPListPath}`);
|
||||
spawnSync('/usr/libexec/PlistBuddy', [
|
||||
'-c',
|
||||
`Add CFBundleVersion string ${CONFIG.appMetadata.version}`,
|
||||
@ -197,7 +199,7 @@ function buildAsarUnpackGlobExpression() {
|
||||
path.join('**', 'node_modules', 'dugite', 'git', '**'),
|
||||
path.join('**', 'node_modules', 'github', 'bin', '**'),
|
||||
path.join('**', 'node_modules', 'vscode-ripgrep', 'bin', '**'),
|
||||
path.join('**', 'resources', 'atom.png')
|
||||
path.join('**', 'resources', 'pulsar.png')
|
||||
];
|
||||
|
||||
return `{${unpack.join(',')}}`;
|
||||
@ -207,9 +209,9 @@ function getAppName() {
|
||||
if (process.platform === 'darwin') {
|
||||
return CONFIG.appName;
|
||||
} else if (process.platform === 'win32') {
|
||||
return CONFIG.channel === 'stable' ? 'atom' : `atom-${CONFIG.channel}`;
|
||||
return CONFIG.channel === 'stable' ? 'pulsar' : `pulsar-${CONFIG.channel}`;
|
||||
} else {
|
||||
return 'atom';
|
||||
return 'pulsar';
|
||||
}
|
||||
}
|
||||
|
||||
@ -236,7 +238,7 @@ function renamePackagedAppDir(packageOutputDirPath) {
|
||||
);
|
||||
} else if (process.platform === 'linux') {
|
||||
const appName =
|
||||
CONFIG.channel !== 'stable' ? `atom-${CONFIG.channel}` : 'atom';
|
||||
CONFIG.channel !== 'stable' ? `pulsar-${CONFIG.channel}` : 'pulsar';
|
||||
let architecture;
|
||||
if (HOST_ARCH === 'ia32') {
|
||||
architecture = 'i386';
|
||||
@ -264,13 +266,13 @@ function renamePackagedAppDir(packageOutputDirPath) {
|
||||
|
||||
function generateAtomCmdForChannel(bundledResourcesPath) {
|
||||
const atomCmdTemplate = fs.readFileSync(
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'win', 'atom.cmd')
|
||||
path.join(CONFIG.repositoryRootPath, 'resources', 'win', 'pulsar.cmd')
|
||||
);
|
||||
const atomCmdContents = template(atomCmdTemplate)({
|
||||
atomExeName: CONFIG.executableName
|
||||
});
|
||||
fs.writeFileSync(
|
||||
path.join(bundledResourcesPath, 'cli', 'atom.cmd'),
|
||||
path.join(bundledResourcesPath, 'cli', 'pulsar.cmd'),
|
||||
atomCmdContents
|
||||
);
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ const CONFIG = require('../config');
|
||||
|
||||
module.exports = function(packagePath, ci, stdioOptions) {
|
||||
const installEnv = Object.assign({}, process.env);
|
||||
// Set resource path so that apm can load metadata related to Atom.
|
||||
// Set resource path so that apm can load metadata related to Pulsar.
|
||||
installEnv.ATOM_RESOURCE_PATH = CONFIG.repositoryRootPath;
|
||||
|
||||
childProcess.execFileSync(CONFIG.getApmBinPath(), [ci ? 'ci' : 'install'], {
|
||||
|
@ -64,7 +64,7 @@ function transpilePackagesWithCustomTranspilerPaths() {
|
||||
pathsToCompile.forEach(transpilePath);
|
||||
}
|
||||
|
||||
// Now that we've transpiled everything in-place, we no longer want Atom to try to transpile
|
||||
// Now that we've transpiled everything in-place, we no longer want Pulsar to try to transpile
|
||||
// the same files when they're being required.
|
||||
delete metadata.atomTranspilers;
|
||||
fs.writeFileSync(
|
||||
|